Quick tip: test HTML pages on a local webserver with NodeJS

At a customer we are building lots of microservices with Spring boot which runs on Pivotal Cloud Foundry hosted at the Azure platform.

Some of these microservices are called from web pages with certain specific information, like field info.

So in our projects we have most of the time a test html page to mimic the actual behavior.

NodeJS http-server to the rescue

there is a very nice NPM package, http-server, to host this test page with a minimal of effort

Easiest way is to install it globally by the following command in a command line.

[dropshadowbox align=”none” effect=”lifted-both” width=”auto” height=”” background_color=”#ffffff” border_width=”1″ border_color=”#dddddd” ]npm install http-server -g[/dropshadowbox]

Now you can use it everywhere.

Next step is to go to the directory in the command line, where the test page is located.

There fire the commando

[dropshadowbox align=”none” effect=”lifted-both” width=”auto” height=”” background_color=”#ffffff” border_width=”1″ border_color=”#dddddd” ]http-server[/dropshadowbox]

In the command line you will see the http server starting and on which port the page is available

nodejs http-server

Quick tip: run your Cloudant data everywhere with CouchDb

I moved our HR Assistant application to a Spring boot to run everywhere, but the data was still stored in a Cloudant database running on IBM Cloud. No problem, but not that flexible.

So I was looking for a way to to store the data somewhere with minimum impact.

Step 1: Get CouchDb running

I found Apache CouchDb and I followed the instructions from this github repository to setup a local version in Docker

By starting the docker container I was able to access the familiar web UI via http://localhost:5984/_utils/

Step 2: Replication

To get all my data from the Cloudant database I created a new Replication and keep the Replication Type on ‘One Time’

CouchDb replication

Step 3: change the properties

Next I need to point the HR Assistant application to my local CouchDb database. For CouchDb account can be empty


Step 4: check the application

After I started the application and logged in I see the same as I was seeing when my data was loaded from Cloudant.



So with no code changes I am able to run the HR Assistant application everywhere, with the data on a location where I want, in the cloud via Cloudant or local with CouchDb

A small open source project: Cloudant REST API

At IBM Think John Jardin and Paul Withers had a session, Tips and Tricks: Domino and JavaScript Development Master Class. It was great session about React, web sockets and Domino REST API.

At the end of this session I got an idea to provide a Cloudant REST API, with the same endpoints of the Domino API but storing everything in Cloudant or CoucheDb.

Cloudant REST API

I created an new module in the Git repo of this session and start coding. Which results in a Spring Boot application. All the endpoints of the Domino REST API are available in this new REST API.

I used Spring Boot to show the power to build fast new REST API’s. There is built-in support for Swagger.

The service can create on the fly databases and manage the access control of the database. And all the CRUD operations you would expect for the Todos


Run everywhere

With Spring boot you can run it everywhere. Out-of-the-box the application will run as runnable jar. But I also added support for Docker and Kubernetes.

There is also a manifest file present to push your application to any Cloud Foundry platform, like IBM Cloud or Pivotal Cloud Foundry.

Open source

The code is open source and part of the Git Repository used for this session. So you can reuse it or use it as a starting point for something new. Have fun with the code.



Paul Withers will do a rerun of the IBM Think Session at Engage later this month in Rotterdam. I think a must attend session if you want to learn some cool new technologies.

BTW I will also be presenting at Engage, my session on Tuesday at 17:00 in the Sky Room. I will talk about Spring Boot and Thymeleaf


I will be speaking at Engage, ship ahoy!

Earlier this week I got the confirmation from Theo Heselmans that my session proposal was accepted.

I am extremely proud to speaking again at Engage. The agenda is, again, top notch.

Engage is always a special place for me, because Theo gave me, in 2012, the opportunity to speak for the first time at such a conference.

My session

On Tuesday May 22 at 17:00 in the Sky Room I will speaking about Spring boot and Thymeleaf.

Dev03. Spring forward: an introduction to Spring boot and Thymeleaf for (XPages) developers

The world of (XPages) developer is moving fast. Customers rethinking platforms and solutions. Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can “just run”. In combination with Thymeleaf can it be good alternative for your XPages applications.
In this session I give an introduction of Spring Boot and Thymeleaf and how to get started. I will show the differences and simularities between Spring Boot in combination with Thymeleaf and XPages.
I will explain the challenges I faced when moving an application.


Happy to be back and hope to see you all in Rotterdam.

The next period I need to run more, to be prepared for all the chocolate 😉



Quick tip: Front end frameworks and Maven dependencies

Lately I am only building application with Spring Boot, where I use Thymeleaf front end templating engine.

A very powerful combination, but sometimes you need other Front end frameworks, like Bootstrap or JQuery and more.


You can add all the required files of the desired front end frameworks to the resource directories for your static files, like css and javascript.

I found out is a lot of work to get all these files, but some of these projects has dependencies with other projects. Then it gets messy.


Head over to WebJars, to find your needed frameworks. Select the version and the Build tool and you get the required code to add to your build file. In my case it Maven. So I added the Dependency code to my pom.xml and run a ‘mvn clean install’ and voila all the files are added to my project.


When there is an update of project, just increase the version number and rerun the ‘mvn clean install’ to get up to date.

How to use

The files are not visible under the resource folder. But can used directly in your html files.


What I am thinking about IBM Think

2 weeks ago I have attended IBM Think in Las Vegas. The super conference of IBM by merging all the other conferences, like InterConnect, Edge, Amplify, World Of Watson and Connect/Lotusphere


Overall impression

Last year I was at IBM InterConnect, so I was prepared for the amount of attendees. And yes on Monday when Partnerworld and the Showcase where not running, it was a bit crowded in the hallways. Food was not bad, but the coffee, as an European, was a lacking caffeine 😉

The showcase was huge. The set up with lots of Think Tanks and Theaters was a good approach. A more informal way to deliver content.

As a developer the Dev Zone was a sort of coming home. Had a few good discussions with IBM developers.

Meeting lots of other IBM Champions and the ‘feeling special’ feeling provided by Libby and her wranglers made it worth to attend IBM Think

Domino and the future

The development of Domino and Notes where moved to HCL, and lots of IBM-ers have followed the code. In the past month the Jams and webinars shows a increasing interest to make Domino Great again.

At Think they announced the support of iOS, in other words all the Notes applications will run natively on a iPad.

In my opinion this is good news for the Notes apps, but modernisation of the apps is still needed. Lots of Notes apps do not have the sexy look and feel, so they will not look any better on an iPad.

My worry is the Notes developers. They might be thinking they stay on Lotusscript and @Fomulas forever. I think it is not career proof strategy.

The announcement of NodeJS support of Domino is very good one. Now we can make cutting edge front end / mobile apps with the latest and greatest frontend frameworks, like Angular/React/Vue……


Collaboration sessions

Collaboration solutions has an own morning with very good sessions. Especially the session of Rene Schimmer about IBM Connections was good. Lots of great new features on the horizon and Rene presented it very relaxed in a steady pace.

Almost all the ‘other’ ICS sessions where in room Surf B. Very well planned, so ICS has almost their own room to gather. Smart move.


Handson labs

I did a few hands-on labs, for me the best way to learn. I did one about IoT and Node-Red, one about Blockchain and one about deploy Microservices via Kubernetes.

I must say these where the best things at IBM Think.

Community and Champion day

At Sunday IBM Think started with Community and Champion day. A day full of content about User groups and more. Lots of sessions were presented by my fellow IBM Champions.


Next year IBM Think will be moved to San Francisco to fill the Moscone Center. Mark the date, February 12th till 15th 2019. Hope to see you there

IBM Think: my topics

With IBM Think 2018 just around the corner, it is time to finalise my schedule.

I am fortunately to be already in Las Vegas to run a 12K tomorrow near the Hoover Dam.

There are so many sessions at IBM Think, that it could be overwhelming.

Pick topics

As at IBM InterConnect I picked a few topics of my interest. What do I want know more of

  • Blockchain, not just the theory, but I want to know more what is in it for me as developer
  • Microservices, what are the best practices, share thoughts on microservices
  • Kubernetes, I run already Springboot apps in Docker containers, but I want to learn more about to manage
  • Java, what is the latest and greatest in Java 10.

Of course I will be frequently at the DevZone. The place to be to talk to IBM devs

Session conflicts

With so many concurrent session there is always the problem of session conflicts.

I just plan the sessions I want to attent. Which will cause may be conflicts.

No problem for me, that way I can choose which session I will attend at the moment. More flexible to me.


Hope to see you at IBM Think

Viva Las Vegas

IBM Think


I am speaking at SNoUG, see you in Zurich

End of last week I received an very pleasent email from Andrew Magerman.

My session has been accepted for SNoUG 2018 in Zurich on April 18th.

My session

Title: Spring forward: an introduction to Spring boot and Thymeleaf for (Xpages) developers.

The world of (Xpages) developer is moving fast. Customers rethinking platforms and solutions. Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can “just run”. In combination with Thymeleaf can it be good alternative for your Xpages applications. In this session I will give an introduction of Spring Boot and Thymeleaf and how to get started. I will show the differences and simularities between Spring Boot in combination with Thymeleaf and Xpages. I will explain the challenges I faced when moving an application.


Hope see you all in Zurich.



I will be speaking at EntwicklerCamp, again


I am pleased to return to EntwicklerCamp in Germany. This year it will be April 23rd till April 25th.

My sessions

At EntwicklerCamp I will do an enhanced session about HR Assistant, focused on the development part. I will show the latest enhancements.

In my second session I will give an introduction to Spring Boot and Thymeleaf, focused on XPages developers. Will show the similarities and the differences. And lots of code examples.


Hope to see you end of April in Gelsenkirschen.

Make the NSF modern again with OpenNTF Domino API

Currently the Domino Jam 2025 on  underway, both on premise or online, where you can have a say about the missing features for the next Domino releases.

Go participate today, https://www.ibm.com/developerworks/community/groups/community/domino2025.

One of the idea posted by my fellow IBM Champion Daniele Grillo about moving the NSF to a more modern NoSQL approach. I totally agree with him.

Domino/NSF has some very cool features like security. But also a few but very annoying limitations.

MongoDb and CouchDb (or Cloudant) to mention a few very popular NoSQL datastore has overtaken Domino/NSF. The documents are stored as JSON, which makes it very flexible.

Make it modern with OpenNTF Domino API

For HR Assistant we store everything in a Cloudant datastore running on Bluemix. With a OSGi plugin who do the conversion from Java objects to JSON both ways, we store all the data.

A customer had the requirement to save all the data in a NSF, which was not our preferred way. One plus was they were not using the Notes Client to view the data.

So I was looking around who to do it and I found a solution, thanks to Paul Withers (as always ;-))

OpenNTF Domino API has a build in mechanism to convert a field to RichText if the stored data is too big for a normal field.

That was the solution to store all the JSON data direct in 1 notes field, in a document. Almost the way we store the data in a Cloudant datastore. In the end I created a DominoJSONService class with a few CRUD methods

A small code example which shows I can feed the method every object

DominoJSONService example

I store all the data in ‘json’ field, with Jackson Json Mapper to convert the Java objects to JSON.

For this purpose I also store the dataType, which is used in the selection formula of the view.


This opens up lots of possibilities for the ‘old’ NSF.

Happy coding