My evolution as a developer: becoming a Full stack developer

evolution of a developer

Is the time of the year to have some time to reflect.


Entering the IT

Around 2000 I entered the IT world, first as a Domino Administrator, but after a good talk with a former colleague I made the switch to become a Developer.

So I became Domino Developer and learned Formula language and later Lotusscript. Did some certifications.

When the browser became more important I moved more and more to web development and did some great projects, for example I build the public website of a big insurance company. Was a lot of fun and challenges on such a high traffic website.


Learning Java

Along with these web development projects there was also an increasing amount of Java projects, so I learned Java and did a few nice Java projects. It was really nice to do these Java backend projects, but Front end development was   screaming for my attention



In 2008 IBM introduced XPages, and implementation of JSF. They took 1.1 version and ripped out all the unnecessary parts and added much needed features, which are still not native in the latest greatest version of JSF, like partial refresh. Which the XPages developer took for granted.

I was an early adapter, and despite of the lack of Documentation I liked it. At that time, It was a perfect combination, Java in de the back end, combined with Front end development, like HTML, JS and CSS.

I have build nice solutions.


Going freelance

In 2014 I made the decision to start my own business and became a freelance developer. As a freelancer I followed the money and in the Netherlands there is high demand of Java developer, especially in the enterprise world. So I moved more and more to the JEE world, learned a lot of new tooling, like Maven, Jenkins, JUnit testing and much more…

Most of the applications I build was based on JSF, with a lot of Spring Framework.

Meanwhile there was also time to build more XPages based applications, like the HR Assistant which was our entry of the ICS Development Competition, where we used Cloudant as datastore and IBM Watson to analyse.

I also found some time to learn more of the Salesforce platform, I heard good things about it. I must admit I liked the way Salesforce helping to get new Developers on board, via their Trailhead platform


Full stack

The last months I was looking around to new technology, had a short look at ReactJS. Looks good and very lightweight, the developer descide what should be loaded. Created a very small application.

But now AngularJS 2 has been gone gold, I am learning as much as possible. Took our HR Assistant application as an example and I am busy to rebuild it in AngularJS 2. It is a steep learning curve, but I can get the data from Cloudant, so what could go wrong 😉


Next step

First of January 2017 I will start as full stack Java developer, at a new customer. It will be a very interesting project with lots of new technology like Java, AngularJS, Docker, Salesforce, Websphere Liberty. They are also looking to the cloud, and Bluemix was mentioned.

So interesting times are ahead and I am looking forward to this new step in my career.

twittergoogle_plusredditpinterestlinkedintumblrby feather

My slides of my Cloudant session at Sutol 2016

Today I did a session at Sutol conference in Prague.

It was about how to get started with Cloudant as an XPages developer.

In my session I mentioned my Cloudant OSGi plugin, which can be find at
twittergoogle_plusredditpinterestlinkedintumblrby feather

HR Assistant now as project at OpenNTF


Today I have added our winning application, HR Assistant, as project at OpenNTF.

I have added the source code in a zip as the release, but I encourage you to go to the Github repository directly.

Included a notice and license file, which is required for every project on OpenNTF.

And last but not least, there are screenshots and….. documentation 😉


Have fun with it. And a demo is in the making.


twittergoogle_plusredditpinterestlinkedintumblrby feather

Cloudant connector plugin update: manage Design documents


Yesterday I was helping out Patrick Kwinten with some he had with my Cloudant Connector plugin on Slack. He asked also about the possibility to add or modify Design Documents, I found there foundation was already there.


Design Documents

Design documents can be seen as the schema in your Cloudant database, which specify what is in the view and how the ftSearch index is build.

Below is an example of a Design Document. As everything in Cloudant the syntax is JSON.

Cloudant Design Document


New methods

As I wrote before, the foundation was already laid in the plugin, the only I had to do was to expose them to the outside world. With this new methods you can programmatically create or update Design Documents.

  • connector.getDocumentConnector().createDesignDocument(final Map<String, String> updates, final String designDocument)
  • connector.getDocumentConnector().updateDesignDocument(final Map<String, String> updates, final String designDocument)

updates, map of updates, where the value of the map is the javascript of the selection designDocument:

updates.put("newUpdateHandler", "function (doc, req) { ... }");

the name of the designDocument to create or update



Everything, including an updated ReadMe is in the BitBucket repository.

Thanks to Patrick for the great blogpost with boilerplate, where you can see the plugin in action.

When you need help with the plugin, let me know or reach out to me on Slack as Patrick did.

When you have feature request, please create an issue in the BitBucket Repository and I will have look if it will make it to the plugin.

twittergoogle_plusredditpinterestlinkedintumblrby feather

I will be speaking at Sutol 2016 in Prague

Sutol 2016

Yesterday I received an email that my session has been accepted for the upcoming Sutol Conference in Prague.

It is the first time I will be at SUTOL, so I am looking forward to it. I heard some very good things about this conference.


Hope to see you in Prague next month, may be we can go for a short run through the city. ( The best way, in my opinion, to explore a city ;-))

twittergoogle_plusredditpinterestlinkedintumblrby feather

Speaking at MeetIT in Milan


I will be speaking at MeetIT, formerly known as DominoPoint Days, in Milan. Looking forward to return to Milan for this great event after a few years.

My session will be about Cloudant, what else 😉
A (XPages) developers guide to Cloudant
NoSQL databases getting more popular recently, especially MongoDb. But there is another popular NoSQL, Cloudant. It is the cloud version of CouchDb. Cloudant has lots of similarities with good old NSF, but a lot faster.
We have build a web based application which stores it data in Cloudant and use the XPages runtime to display the data.
I want to share my experiences when developing this application, by setting up the Cloudant database, add search indexes, perform the common CRUD operations, search for specific data. I will also show more about my Cloudant connector OSGi plugin which is used heavily in this project.
In the end you will only use the XPages/Java design elements in the NSF for the Front end.

twittergoogle_plusredditpinterestlinkedintumblrby feather

Heads up for Salesforces Trailhead

Lately I noticed the increasing demand of Salesforce developers in The Netherlands and I like to explore new technologies.

So I was looking for a way to start learning Salesforce, Rene Winkelmeyer, pointed me to Trailhead.

I can confirm it is very refreshing way to learn a new platform, there a variaty of trails, Admins or Developers. You can earn batches if you complete a module.

twittergoogle_plusredditpinterestlinkedintumblrby feather

XPages Quick tip: Move Java files for a better Source Control experiences

Over the last months we build the HR Assistant for the ICS World Wide Development Competition.

The backend of the code is totally written in Java. The XPages and custom controls only serves the data to the browser, nothing more.


The Problem

We have all the Java classes in the application as Java Design Elements, which give you, like any other Domino Designer Element, an metadata file. I noticed that the runtime is mirroring the java files to a java directory under the WebContent –> WEB-INF, which went sometimes gone wrong in 8.5.x


This metadata files was causing the most annoying conflicts when using GIT during the development, as we developed everything on our local machine and the GIT repository the linking factor.


My experience

Today I was looking about moving the Java files to the correct location. For the development we had a debug application with a subset of the classes to test the connectivity with Cloudant.

So I found it a good candidate to do the move first.

Note: below everything happens in the Package Explorer ( found under Menu bar –> Window –> Show Eclipse Views

Step 1: Create in the NSF under WebContent –> WEB-INF a folder, called ‘java’


And make it as source folder, by right clicking on the folder



Step 2: Move the Java files

Locate the Code/Java folder, keep in mind it is not under Code as displayed in the Applications view


And copy and paste them in the new source folder


Remove the files under Code/Java.


Build the application and everything should work as before the move.

A big benefit it is there is much less metadata files which can causing conflicts when using Source Control. Another benefit is that you remove the tight integration of the Domino Designer and you can also move the Java files to a OSGi plugin to make it more flexible.


BTW, In my opinion you should get used to the Package Explorer, as you do Java development, so no pretty panes. In the JEE world where they use the plain Eclipse everything happens in the Package Explorer

twittergoogle_plusredditpinterestlinkedintumblrby feather

And the winner is…… HR Assistant


Last Friday during the closing session of Icon UK in London Inhi Suh announced, with a little help of Alan Hamilton, the results of the ICS Developer competition 2016. To my big surprise our submission, HR Assistant was selected as winner. Frédéric, my partner in crime in this competition was also very surprised a few timezones to the east from us.


HR Assistant

Frédéric Dehédin from the Swiss IBM Business Partner Belsoft Collaboration and I formed a team, Fred & Frank, to build this application.

HR Assistant is an application which can help the HR employee to screen and analyse Job Applications, with the help of several IBM Watson services, like the Tone Analyser, Personality Insight and Alchemy Language.

The analysis results are displayed in charts and stored in Cloudant database.

See it in action on IBM Bluemix,


HR dashboard



Job applicant dashboard



Job application with Alchemy Language keywords


Expect in the near future more technical blog posts about the application.


BTW, a big shout out to my former employer which one of the runners up with their application Join. Well done…

twittergoogle_plusredditpinterestlinkedintumblrby feather

My session slides of Icon UK 2016

At Icon UK I did a session about Servlets.

The demo code can be found in a GIT repository on Bitbucket,

twittergoogle_plusredditpinterestlinkedintumblrby feather