Fake Jobs List 2016

May 19th, 2016 No comments

Fake Jobs

Fake jobs gives a bad name for the information technology contracting industry.

It is just a scam to scavenge and harvest CVs from hapless developers, designers and architects and then to source the leads (human network communication) for recruitment agents.

It starts for me, at least, with the recruiter refusing to give the name of their client. They often claim the existence of a confidentiality clause, NDA or fear that another recruiter from a rival company will jump in on their exclusive. (They aren’t really exclusive if a job is sourced from a public or commercial bulletin board: hidden job market)

So here is Fake Job #1

Job 1

Source: Job Serve Ad

Trigger: applied via JobServe

Event: the agent phoned me on 19/05/2016 at 14:56 about my job application. Agent said he would not reveal the client’s identity until the process got to the interview stage. Agent proceeded to ask for two references before he would put forward my CV to the client. I refused. I said that “this process ends here, because I have been in the busy for 20 years or so.” I politely hung up.

Text copy of the job ad for digital preservation:

Senior Java Developer
London – £600/Day
Posted: Wednesday, 18 May 2016
Square One Resources

Senior Java Developer
6 months
The Java developer will take responsibility over the review and potential transition of an already existing codebase. This codebase is focused around API manage
ment, mapping and transmission of data through Tomcat application Servers.
The key aspects of the role are
– Undertake code reviews to understand process, flow and application setup
– To create and maintain documentation where not available
– To define standards where not available, at both a code and process level.
– To ensure that existing corporate standards are being adhered to.
– Working with the release manager to ensure that CI/CD process is optimal
– Refactoring of code to meet the above requirements or other platform changes.
Mandatory Skills
– 3-5 years Java experience
– Refactoring experience.
– Strong experience of Continuous Integration/Deployment – ie Jenkins/Git/etc.
– Strong written and oral skills with both development teams and client management.
Code portfolio would be a bonus.
Notwithstanding any guidelines given to years of experience sought, we will consider candidates from outside this range if they can demonstrate the necessary competencies.
Square One is acting as both an employment agency and an employment business, and is an equal opportunities recruitment business. Square One embraces diversity and will treat everyone equally: Please see our website for our full diversity statement.
LocationLondon, UK
Duration6 months
Start Date31/05/16
Employment BusinessSquare One Resources
ContactCharlie Dibble
EmailContact This Employment Business
Posted Date18/05/2016 09:11:46
Facebook Google+ Twitter LinkedIn


(I am quite sure more will be added)



I am reachable on Twitter or by email.



Digital Development Java EE 7 Workshop – London – June 2016 – Agenda

May 4th, 2016 No comments

Several people have wondered about workshop / training course on Java EE 7 development with a modern web architectural focus, in particularly, I know some people have asked for information on building sustainable and adaptive software digitally.

I am announcing a two day training course in London on Monday 6th and Tuesday 7th June 2016 course. The content is loosely based on my recent book Digital Java EE 7. Attendance is limited. It runs just before Devoxx UK conference. If you are attending in London, you could be also interested in this workshop / training course. I will know need to the relative attendee number of interested / registered ASAP in order to fire ahead and book the venue please. So please get in touch very soon.



Book signing at Devoxx UK 2014 organised by the Java Community Process 



London Workshop Agenda

Here is the prototypical agenda:-

  • This so-called Digital New World Order
  • Java EE Fundamentals Modern digital web architecture
  • Inversion of control including CDI Interceptors
  • Writing controllers
  • Java EE Persistence Transactions
  • Remote Endpoints
  • Java RESTful Services including JAX-RS
  • WebSocket
  • Testing Java EE code like a Pro
  • Integration testing
  • View Technology
  • HTML5 and CSS
  • JavaServer Faces, Facelets and UI templating
  • Bean Validation
  • Client side Validation
  • AJAX Fundamentals
  • Modern JavaScript and JavaScript Frameworks
  • Single page architecture applications
  • Java EE 8 MVC
  • Professionalism in IT
  • Hints and tips on dealing with Agile business in your team
  • Dealing with fearless change and “how to keep on getting good”
  • Coping with failing Agile project with a big “A”
  • Essential architecture and principles
  • The road to Micro-services Architecture through Components



Cost and Price

The workshop costs £299.99 excluding VAT (United Kingdom 20% tax) per day. This is the introductory offer (NEW LOWER PRICE)! I will need to have at least three delegates to confirm the training course. There are 10 places to secure, first come, first served. Please contact me or register with me on peter (dot) pilgrim (at) gmail (dot) com for further information. You will need to bring your own professional grade workstation laptop. I would strongly suggest the following profile: Microsoft Windows 7 or 10, Apple Mac OS X Yosemite or better; or working modern Linux    


I am the author two books available from Packt Publishing:

  • Java EE 7 Development Handbook – essential coverage of the enterprise edition platform from the point of view of the server-side engineer (September 2013)



I am of course the instructor of the course and a Java Champion #91. I have been developing professional Java software since 1997/1998. I am also VAT registered with a trading UK limited company.



Standing with Mark Reinhold, the architect of the Java platform




The 555 timer was and is an silicon integrated circuit (IC) chip with eight pins. It was popular for beginners, secondary school children and undergraduate students learning about practical electronics in the 1970s and 1980s. Originally invented by Hans Camenzind, in 1971 if was the one of the best loved devices, because it was economical, general and versatile oscillator and a great little electronic timer, built by Texas Instruments. The 555 Timer IC was so great that other manufacturers copied its design, there was a even model produced in the USSR behind the iron-curtain at the height the Cold War.

The timer chip was able to produce sound through an oscillator, transistor amplifier and a small 3″ loudspeaker. The timer acted as a very sensitive a switch through a bistable circuit called a Schmidt Trigger, you build an elementary burglary alarm with a photoelectric resistor. The timer chip could even count button presses one by one and if you wired it up specially through special breadboard you could create your microelectronic “disco” with red LED lights. The 555 IC was fun to experiment with, and it was terrific for electronics novices like me. Once upon I time, I was also a beginner. That is the entire point of the reminiscence and also the price of the workshop/course.

Amazingly, the 555 is s still available, it is still being manufactured in the 21st century, so you can still buy one for about £1.50p from several online electronic stores. The BBC produces a design and technology description of the 555’s internal operations. Go and find your inner electronics dreams!






I’m standing next to a genius,  James Gosling, the Father of Java, the man responsible for all of our professional working lives.


+PP+ 2016


Al Coda

The Next Digital Transformation Engagement

April 27th, 2016 Comments off

This is just a note to say, get in touch, especially, if you are looking for help with Java modernisation, moving from Java 7 to 8 and beyond and digital transformation of services. I am available for contract hire from May 2016.

See my Linked-in Profile (new windows) for more information and how my strong adaptive development skills could be appropriate for your current needs.



I should have exactly said what I am looking for in my next contract:

  • Projects with Java 8 with a license [permission] to program with Lambdas
  • If Java is not available, I can also code professional in Scala, because I worked for GOV.UK on their illustrious examplar project, the Registered Traveller
  • I prefer to develop components over added more technical debt to a monolithic application that runs on an legacy application server
  • I will you modernise your system from the monolith with the provisio budget, person power and desire (the longer you leave it, the bigger the price will be.*
  • I can write a lot of server side Java EE  code, I dipped my toes in HTML5, JavaScript and CSS at Digitas LBi
  • I can coach and mentor others on Java EE, Java and effective unit testing
  • Although I have worked as a SCRUM master, I would help as an interim. A SCRUM master is suited to a full time project managers, especially if the scale and scope of your project is large to very large.
  • I am working my way to the chief engineer of something X so a little angle of technical leadership will helpful. I prefer to code over team management
  • I will participate in design arguments, decisions about frameworks and library. I can lend a hand in technical architectural discussions


Hope that helps (HTH)


*Modularisation with Modernisation

I believe the forthcoming Java 9 release including Project Jigsaw will eventually be the game-changer. Because, we, ultimately, can modulate your big backside legacy out of the picture if your application is modular. Because, the JDK and JRE will be module, we can finally remove ancient old code like java.util.Date and java.util.Calendar. In short, eventually, the most popular open source and close source projects, libraries and framework will take advantage of this exciting capability. However, if you are stuck with programming against Java 6 code, because of a hardwired third-party dependency and you choose not to upgrade, encircle or modernise, then I wish you the very best of luck in the your recruitment of future talented engineers in the new world of Java 9 and beyond. Finally, component design and implementations are the first steps to moving a monolith to a micro-services architecture (MSA). If you think actually that you can readily purchase a quality third-party off-the-shelf product that can immediately turn a good old application monolith into a MSA overnight, then DON’T BELIEVE HYPE.



Categories: Agile, Contracting, Development, Digital, JavaEE Tags:

Digital Java EE 7 2016 Series 1 Episode 7 Debugging XenTracker AngularJS inside IDEA

March 5th, 2016 Comments off

This episode is a show-and-tell that you explains clearly and succintly how to debug the XenTracker AngularJS application inside JetBrain’s IDEA. You will learn how to configure the GlassFish server runtime configuration so that you benefit from JVM HOTSWAP, which is critical for fast interactive modern digital development.






Feedback is always welcomed with comments or directly to me on @peter_pilgrim.



Crested Butte, Colorado; Winter Tech Forum


Digital Java EE 7 2016 Series 1 Episode 6 Execute Arquillian Integration Test inside IDEA

March 5th, 2016 Comments off

Using the source code from the Java EE 7 Developer Handbook, I demonstrate how to execute an Arquillian integration test inside IDEA. You learn how to create a runtime configuration and with this knowledge you will be able to debug and verify functionality, and accelerate iterative engineering.






Feedback is always welcomed with comments or directly to me on @peter_pilgrim.



Crested Butte, Colorado; Winter Tech Forum


Categories: Course, JavaEE, javaee7, programming, testing, Training Tags:

Digital Java EE 7 2016 Series 1 Episode 5 Import Gradle Project into IDEA

March 5th, 2016 Comments off

Using the source code from the Java EE 7 Developer Handbook, I demonstrate how to import a Gradle project into IDEA 15.






Feedback is always welcomed with comments or directly to me on @peter_pilgrim.



Crested Butte, Colorado; Winter Tech Forum


Categories: Gradle, JavaEE, javaee7, Training Tags:

Digital Java EE 7 2016 Series 1 Episode 4 Mac OS X Gradle and Xen Tracker

March 1st, 2016 Comments off

A few of you have been waiting for an instructional video for building the XenTracker application from my first book. XenTracker is a fully compliant Java EE 7 web application that demonstrates AngularJS v1.0 invoking JAX-RS remote service endpoints.

I have recently upgraded the Gradle build system for Java EE 7 Developer Handbook to use a proper multiple-module structure.
So now it is much easier to get started. The following video explains for Apple Mac OS X users:



Feedback is always welcomed with comments or directly to me on @peter_pilgrim.



Crested Butte, Colorado; Winter Tech Forum


Digital Java EE 7 2016 Series 1 Episode 3 Windows 10 Gradle

February 29th, 2016 Comments off

A few of you have been waiting for an instructional video for building the XenTracker application from my first book. XenTracker is a fully compliant Java EE 7 web application that demonstrates AngularJS v1.0 invoking JAX-RS remote service endpoints.

I have recently upgraded the Gradle build system for Java EE 7 Developer Handbook to use a proper multiple-module structure.
So now it is much easier to get started. The following video explains for Windows 10 users.



Feedback is always welcomed with comments or directly to me on @peter_pilgrim.



Crested Butte, Colorado; Winter Tech Forum


Upgrade DeltaSpike, Gradle and CDI Container with Test Module

February 16th, 2016 Comments off

I am puzzled by the Java EE 7 Developer Handbook that I wrote about two years ago. Well I researched it in 2013 and published it. I was looking at the code for Chapter 2, which has an old example of Apache DeltaSpike, JBoss Weld and Gradle. I want to upgrade it to work with the latest stable releases circa 2016.

So where am I? I am stuck for once, because I received this exception whilst executing gradle build --stacktracer.


Feb 16, 2016 2:50:34 PM org.apache.deltaspike.testcontrol.api.junit.CdiTestSuiteRunner$LogRunListener testFailure
INFO: [failed] je7hb.standalone.CreditProcessorTest#null message: WELD-ENV-002000: Weld SE container STATIC_INSTANCE is already running!

java.lang.IllegalStateException: WELD-ENV-002000: Weld SE container STATIC_INSTANCE is already running!

	at org.jboss.weld.environment.se.WeldContainer.initialize(WeldContainer.java:138)
	at org.jboss.weld.environment.se.Weld.initialize(Weld.java:562)
	at org.apache.deltaspike.cdise.weld.WeldContainerControl.boot(WeldContainerControl.java:68)
	at org.apache.deltaspike.cdise.weld.WeldContainerControl.boot(WeldContainerControl.java:76)
	at org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner$ContainerAwareTestContext.applyBeforeClassConfig(CdiTestRunner.java:463)
	at org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner$BeforeClassStatement.evaluate(CdiTestRunner.java:366)
	at org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner$AfterClassStatement.evaluate(CdiTestRunner.java:393)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner.run(CdiTestRunner.java:142)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:27)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)


They say always run on the command line, and so I did. I also verified this also issue inside IDEA 15.0.3.

The unit test code is actually the simplest in the book:


package je7hb.standalone;

import org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner;
import org.junit.Test;
import org.junit.runner.RunWith;

import javax.inject.Inject;

import static org.junit.Assert.*;

public class CreditProcessorTest {
    private @Inject @Economy CreditProcessor agent;

    public void shouldInjectStreetCredit() {
        System.out.printf("agent=%s\n", agent );


I threw out my older AbstractCdiContainerTest implementation, because Delta Spike has replaced it with a new JUnit 4 Runner implementation. I upgraded to JBoss Weld 2.3.2 against Delta Spike 1.5.2.

At the moment, I am refactoring the Gradle build into a proper MULTI-MODULE build for all the students. There is something strange going on? The codebase is help on GitHub.

Extract of the build file is:

archivesBaseName = 'ch02-cdi-standalone'

dependencies {    
    compile     "javax:javaee-api:${javaeeVersion}"

    compile     "org.slf4j:slf4j-simple:${slf4jVersion}"
    compile     "org.apache.deltaspike.cdictrl:deltaspike-cdictrl-api:${deltaspikeVersion}"
    compile     "org.apache.deltaspike.cdictrl:deltaspike-cdictrl-weld:${deltaspikeVersion}"

    compile     "org.jboss.weld.se:weld-se-core:${weldSEVersion}"
    compile     "org.apache.deltaspike.modules:deltaspike-test-control-module-api:${deltaspikeVersion}"

    testCompile     "org.apache.deltaspike.modules:deltaspike-test-control-module-impl:${deltaspikeVersion}"

test {
    testLogging.showStandardStreams = true

    // set heap size for the test JVM(s)
    minHeapSize = "128m"
    maxHeapSize = "768m"

    // Ensure that the working directory for the test is the same as the project directory in order to run the Spike Delta container tests
    // *PP* 11/02/2016
    workingDir = project.projectDir

The dependencies are now set in the root Gradle project. Here is the extract:

allprojects {
    apply plugin: 'java'
    apply plugin: 'maven'
    apply plugin: 'eclipse'
    apply plugin: 'idea'

    // Define equivalent Maven GAV coordinates.
    group = 'uk.co.xenonique.javaee7handbook'
    version = '1.0-SNAPSHOT'

    ext {
        arquillianVersion                   = "1.1.11.Final"
        arquillianJunitVersion              = "1.1.11.Final"
        arquillianPersistenceVersion        = "1.0.0.Alpha6"
        arquillianGlassfishEmbeddedVersion  = "1.0.0.Final-SNAPSHOT"
        arquillianGlassfishManagedVersion   = "1.0.0.CR4"
        arquillianGlassfishRemoteVersion    = "1.0.0.CR4"
        deltaspikeVersion                   = "1.5.2"
        glassfishVersion                    = "4.1"
        hamcrestVersion                     = "1.3"
        javaeeVersion                       = "7.0"
        jodaTimeVersion                     = "2.2"
        junitVersion                        = "4.12"
        ozarkVersion                        = "1.0.0-m01"
        mockitoVersion                      = "1.10.19"
        shrinkWrapVersion                   = "1.0.1"

        slf4jVersion                        = "1.7.14"
        weldEEEmbeddedVersion               = "1.0.0.CR3" 
        weldSEVersion                       = "2.3.2.Final"

    repositories {
        maven {
            url 'https://maven.java.net/content/groups/promoted'
        maven {
            url 'http://repository.jboss.org/nexus/content/groups/public'

    // Java version compatibility to use when compiling Java source 
    sourceCompatibility = '1.8'
    // Java version to generate classes
    targetCompatibility = '1.8'

This failure is a complete mystery, why code that worked in 2013 and no longer executes in 2016. However, I am sure that it will be revealed.


I was chatting on the DeltaSpike IRC and @os890 informed me about a trick that works around the issue.

You can also find a description in the Java EE 7 Tutorial about the @Priority annotation and Alternatives.

“The alternatives that you specify in the beans.xml file apply only to classes in the same archive. Use the @Priority annotation to specify alternatives globally for an application that consists of multiple modules …”

And also

“The alternative with higher priority value is selected if several alternative beans that implement the same interface are annotated with @Priority. You do not need to specify the alternative in the beans.xml file when you use the @Priority annotation.”

To work around the issue, I use the @Priority and Gradle builds everything fine.

public class XenoniqueFoodProcessor implements FoodProcessor {
    public String sayBrand() {
        return "Xenonique";

I added the above annotation to the Weld specific project, then I executed the test successfully.

I do not believe DeltaSpike is broken and so the question remains, is the Java EE 7 reference implementation of CDI 1.1 specification correct or incorrect with respect with Alternative configured in a beans.xml?

I also created source code to exercise Open Web Beans container as a parallel sub-project, see standalone-owb in Github. Indeed removed the @Priority annotation from the XenoniqueFoodProcessor bean and Gradle builds successfully! Ah ha this is an issue with JBoss Weld 1.5.3! It is not respecting @Alternatives as CDI 1.0 specification according to my examples.




Categories: Configuration, Gradle, javaee7 Tags:

Digital Java EE 7 and Development Handbook Double e-Book Promotion Offer

February 2nd, 2016 Comments off

My publisher, Packt Pub, has very kindly proposed a promotional offer for both of my Java EE 7 e-books. You can get a copy of Digital Java EE 7 and Java EE 7 Developer Handbook now.



OFFERBuy either of the eBooks for 50% off and a 50% off on the purchase of both the e-Books together

You have until the 1st March 2016 to take advantage of this offer. Get them whilst they are hot! That is the whole of the month of February to get involved, get into it with Java EE 7. You know it makes sense!

On Packt Pub website, add the books to your shopping cart and in the checkout process apply the promotion code: XENONIQUE50 to get the discount.

See here or:

Also stay tuned for more announcements soon.





Categories: Book, JavaEE, javaee7, Writing Tags: