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.

 

snuog

twittergoogle_plusredditpinterestlinkedintumblrby feather

I will be speaking at EntwicklerCamp, again

entwicklercamp

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.

twittergoogle_plusredditpinterestlinkedintumblrby feather

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

 

 

twittergoogle_plusredditpinterestlinkedintumblrby feather

Talk to an IBM Champion and get a discount for IBM Think

IBM Think

If you want to attend IBM Think in Las Vegas and looking for a discount. Talk to me or any IBM Champion 2018.

Hope to see you in Vegas.

twittergoogle_plusredditpinterestlinkedintumblrby feather

IBM Champion 2018

Today when I came back from an early morning ride on the mountain bike there was a message from IBM to inform me that I will be a returning IBM Champion.

Feel honoured to be part of an amazing group of dedicated people.

Thanks to everyone who nominate me and the people at IBM who had the task to choose the new class

Also many thanks to Alan Hamilton, program manager of ICS, but also to Libby Ingrassia, the overall IBM Champion program manager

Hope to meet in Las Vegas during IBM Think more fellow IBM Champions as I did last year at IBM InterConnect.

 

twittergoogle_plusredditpinterestlinkedintumblrby feather

Look back to 2017 and looking ahead

2017

 

 

 

 

 

 

 

 

 

 

Last week I was thinking about 2017, business and personal wise. Speaking, running, backpacking, being a IBM Champion and more….

Speaking in 2017

Last year I had the opportunity to speak at IBM Connect in San Francisco, IBM InterConnect in Las Vegas and Engage in Antwerp. I enjoyed it very much. Especially InterConnect was one of the highlights. A real big conference, lots of attendees. Learnt a lot new things from other IBM parts then ICS. Engage, organised by Theo and Hilde ( and team ) is always top notch. I am always happy to be there, as a speaker or attendee.

Projects in 2017

In 2017 I started at Rabobank as a Full Stack Developer in very nice team. We had a lot of fun, but also delivered some nice new features to the business. Technologies we used, Angular4, SpringBoot, Thymeleaf. But also some older technologies.

With Belsoft Collaboration we added some cool new features to the HR Assistant application. Added Document Conversion, but also multi language support. HR Assistant runs now on Domino and Bluemix. Deployed it at customer and made a few custom features for this customer.

Started in December with a former team member a totally new project. Technologies we will use, Spring Boot, Thymeleaf, Spring Security, MyBatis, Lombok, Docker and certainly more new goodies.

Holiday in 2017

During the summer I backpacked with my family through Indonesia, spent time on some bounty islands. Made a stopover in Singapore, which was a nice start and finish of the journey.

Sport in 2017

In did not that many sports in 2017 as wanted to. In the spring I had small knee problems. In the fall my health was not that stable. Fortunately I can commute every day on the bike to Rabobank.

Looking ahead

In 2018 I will attending, may be speaking, IBM Think. The new all-in-one conference in Las Vegas in March. Looking forward to be back in Las Vegas and meet everyone. I also will run the 12K at the St Patricks Day Run.

This week I also submitted an abstract for Engage, this year on the s.s. Rotterdam in Rotterdam. I also found the courage to submit an abstract for Spring IO in Barcelona. About to move an XPages application to Spring Boot. What I learn and the challenges. As I am busy moving HR Assistant as a business case.

In 2018 I will continue to learn more of Spring Boot and all the nice extra’s Pivotal is offering.

It will be an interesting year, and looking forward to learn and share more.

 

twittergoogle_plusredditpinterestlinkedintumblrby feather

Document Conversion API now open source

opensource

Last Friday I wrote how we implemented Document Conversion in HR Assistant.

Part of the solution was a new project, Document Conversion API

We decided to open source it. Below I copied the details from the previous post about this new project.

Details

It is a Spring boot application, which can run stand alone. I have added also Docker support.

See the ReadMe for more details

Endpoints

Url: /api/convert-to-plain-text
Method: POST
Consumes: File
Produces: JSON
{
“convertedText”: “text”,
“message”: “information or error message”
}

document conversion request

Url: /api/convert-data-to-plain-text
Method: POST
Consumes: JSON
{
“mediaType”: “text”,
“data”: “base64 encoded representation of text/file”
}
Produces: JSON
{
“convertedText”: “text”,
“message”: “information or error message”
}

Swagger

To make it easy to test the api I have added Swagger

swagger

Repository

The Document Conversion API can be found in a public repository on Bitbucket. Feel free to use it or improve it. Better let me know if there are new feature request or add it your self and submit a Pull Request

twittergoogle_plusredditpinterestlinkedintumblrby feather

HR Assistant – Document Conversion but different

Document conversion was one of the top items on our backlog which didn’t make it in the final contest version.

 

What is Watson Document Conversion

On the Document Conversion API documentation page is the following stated about this service

“The IBM Watson™ Document conversion service converts a single HTML, PDF, or Microsoft Word™ document into a normalized HTML, plain text, or a set of JSON-formatted Answer units that can be used with other Watson services. Carefully inspect output to make sure that it contains all elements and metadata required by your or your organization’s security standards.”

 

How we use it.

In HR Assistant we use the Watson Document Conversion Service in the Job Application part.

A job applicant upload a resume in PDF or docx format.The data is stored in the document on Cloudant.

When someone is analysing the data of the job application.

Step1: if there is an attachment, it will be send to the Watson Document Conversion to get the text representation in return.

flow Watson Document Conversion Service

Step 2: combine the text from Document with other text of the job application and send to the various Watson services we use in HR Assistant.

Change of plans

Watson Document Conversion is already deprecated. For stand alone conversion as we do in HR Assistant there is no migration to other Watson services. IBM recommands to use Apache Tika for this sort of operations.

So we have  to refactor the current Document Conversion service in HR Assistant.

 

StHello Document Conversion API

Due to security restrictions in Domino, I created a simple Spring Boot application, with 2 end points. I deployed it via the command line to Bluemix. And secured the endpoints via the build-in API Management.

Endpoints

Url: /api/convert-to-plain-text
Method: POST
Consumes: File
Produces: JSON
{
“convertedText”: “text”,
“message”: “information or error message”
}

File request

Url: /api/convert-data-to-plain-text
Method: POST
Consumes: JSON
{
“mediaType”: “text”,
“data”: “base64 encoded representation of text/file”
}
Produces: JSON
{
“convertedText”: “text”,
“message”: “information or error message”
}

Swagger

To make it easy to test the api I have added Swagger

swagger

Bonus

As a bonus I have added also Docker support, so it can run everywhere. You can find the Instruction in the ReadMe.

The Document Conversion API can be found in a public repository on Bitbucket.Feel free to use it. Better let me know if there are new feature request or add it your self and submit a Pull Request

twittergoogle_plusredditpinterestlinkedintumblrby feather

Quick tip: access the application log files on Bluemix

Last night when I deployed a new version of HR Assistant to Bluemix I ran in some troubles.

When the application was deployed and tried to access it via de Application URL I got a 500 internal error.

Find the log

First step was to open the log page, but was not very explanatory.

Log files on Bluemix

Next step was to open Kibana. There I found more information.

Kibana log

As you can see, I need to consult the error-log-0.xml file for more information

The challenge is where to find this log file.

Solution

I started, in my case, a Terminal window, to login on Bluemix.

Terminal login

Next was to start a SSH session for my app. This can be done by

bx cf ssh HRAssistant

 

After that I was able to open the error-log-0.xml file with the command

cat app/notesdata/domino/workspace/logs/error-log-0.xml

Now it was easy to find the cause of the Internal Error.

 

After I fix the issue, I uploaded a new version, which runs without problems.

twittergoogle_plusredditpinterestlinkedintumblrby feather

HR Assistant – Hello Domino….

While we developed HR Assistant it ran smoothly on a Domino server, but it was not using some strength of Domino, security.

Run on Domino

I made HR Assistant aware of the runtime it runs on, it ‘knows’ when it runs on Bluemix.

If that is the case our own developed login features comes in place, but…

When it runs on Domino it will enforce the ACL, which gave great advantages, by assign groups to the 3 roles of the application, HR, JobApplicant and Administrator. In the end you are elevating the security of the application

Store on Domino

Another feature we wanted to implement, which was on the wish list, was the ability to store the data in the NSF file.

With the great feature of the OpenNTF Domino API, I was able to store the document as JSON in field. Just the way I store the data in the Cloudant database. This feature give the ability to store what ever in a field and it will converted automatically if the data will reach the field limit

To achieve this, I created a new DominoJSONStore which do the same as the CloudantService, store the data in the respective NoSQL store

Choose your NoSQL datastore

I thought it would be nice to be in control of which NoSQL datastore to be used, without the need of the Domino Designer.

I found a great NAPIUtility file created by Sven Hasselbach. More details on his blog and it works very well.

I created a settings page where I load my custom property file, which ‘lives’ in the application.

On this page you can select the dataStorage to use for the application.

After saving the settings page, you need to re-authenticate to have the new settings effective.

Bonus

As you see, there are more settings, like the cloudant username and password. Now I can connect the applications directly to another Cloudant database.

It opens new possibilities. For example by adding the credentials of the various Watson Services. There is no need anymore to store these credentials in the Faces-config.xml.

Be aware

The settings page is not available on the current instance running on Bluemix as the login functionality is not that strict as on Domino. On Domino the settings page is only available for the users with the Administrator role.

Contact

If you want more information about HR Assistant and all the functionalities, let me know.

twittergoogle_plusredditpinterestlinkedintumblrby feather