HR Assistant – what happened since last year

Last year I won together with Frédéric Dehédin the ICS Developer Contest 2016 with our HR Assistant application, a cognitive solution to help the HR department with of IBM Watson services.

As required the code was open sourced at a public Github repository.

What happened with HR Assistant since that moment?

From public to closed

First thing was to take the code back 😉

In the final stage of the development we were not able to include all the features we wanted upfront. So we skipped some features in favour of stability.

We move over to a closed repository at a GIT server, with the goal to make a real product out of it together with Belsoft Collaboration

Share the knowledge

I had the opportunity to speak at several conferences to share the knowledge I had learned in this contest.

At Sutol and Meet IT I spoke about Cloudant and the similarities with the NSF on Domino.

In 2017 I had the opportunity to share some technical insight of the HR Assistant application at IBM Connect in San Francisco, IBM InterConnect in Las Vegas and last but not least Engage in Antwerp. For slides see Slideshare.

Adding new features

We had a backlog of features we would like to include in the product. The next period I will write blogs about these new features we have added to HR Assistant over time

  • Watson Document Conversion
  • Run it on Domino
  • Multi language support
  • and more….

 

IBM Watson services

 

Contact

If you want to know more about HR Assistant, let me know. I can give a demo.

Domino Version 10 and Beyond – a few toughts

Yesterday  announced the strategic partnership between IBM and HCL to move the Notes and Domino Family forward. In 2018 a brand new version, 10, will be released.

For lots of customers who have invested in Domino applications it is very good news. Less need to move away to other products.

IBM will be organising jams, to define the future of the product. It is a great opportunity to show interest in the product and what you think is most important in the product. Sign up know to keep informed.

My thoughts about the way forward

I am a developer and nowadays develop mostly outside the ICS space, I have some thoughts to get back.

Deprecate Lotusscript

Lotusscript is nice but will not move the product forward. Deprecate is, so the application is still backwards compatible, but stop investing time in a newer version. It makes the product not compatible with other products.

 

Cut the wire

As soon as possible, remove the relation between the Notes Client and the Domino Designer. This relationship slows down the big steps forward the Domino Designer needs.

 

No fat client

Who needs a fat client, in my opinion there is less need of a fat client, like the Notes Client. Most of customers can do their business with a web based solution. So give most love to the Domino Designer and Admin and NOT the Notes Client. Migrate it your self of use the Aveedo or Darwino

 

Make the Designer flexible

Make the the Domino Designer available as flexible as possible. For example available as a Eclipse or IntelliJ plugin. And of course remove the restriction to run the Domino Designer needs Windows.

 

So lots of things to improve, hope to see you at the jam, in person or virtual.

 

Lets jam and make the future bright again.

DominoJam

IBM Champion nominations 2018 are open

It is the time of the year again. Time to thanks your favourite IBM technology expert by nominate them as IBM Champion 2018.

More details on this blog post by the Libby Ingrassia, the overall IBM Champion manager, or watch the video below.

 

The deadline to nominate is November 13th, so start nominating today, https://www.ibm.com/developerworks/champion/?ca=dw-_-IBMChampion-_-dwtv-Featured-_-category

 

IBM Champion logo

Spring boot and Thymeleaf – rapid application development

springboot and thymleaf

At one of my customers I was able to use to build an application with preview functionality of a business critical application.
As usual the business wants this application as soon as possible. So the obvious choice was Spring boot in combination with Thymeleaf.

Spring Boot

Spring boot created spring based applications which can run as a runnable jar, with embedded a Tomcat server. But a Spring boot application can with a few tweaks run on a Websphere Application Server or Websphere Liberty Profile, and in a Docker or on Cloudfoundry (Bluemix or Pivotal).

Google and you will find tons of examples

Thymeleaf

Thymeleaf a templating engine based on Java. It supports layouts and fragments. Fragments are very useful, because you can reuse these fragments in different layouts. The code in one place.

There is an extensive documentation available

Get started

To get started the best way is to head over to the Spring Initializr. You choose your Group, ArtefactId, Package name, packaging and java version.

The big plus of the Spring Initializr is to specify all the additional projects you need for your application. I can reccommand to switch to full version, where you can see which projects you can choose. From SQL, Web, Templating and Cloud projects.

Last thing is to generate the project. It will deliver a downloadable zip file with the correct Java project inside.

Unpack the zip file, open the project in your favourite Java editor, like Eclipse or in my case IntelliJ

Run the code

In IntelliJ under Spring Boot just double click the SpringBoot application. Or in my case I created a Maven run/debug configuration, ‘Spring Boot Run’, with the command line command ‘spring-boot:run’.

And voila, your application is up and running via localhost:8080

 

Quick NPM tip: don’t forget to uninstall node modules

NPM is great tool to have all your Node modules in your front end project, and don’t have to worry about dependencies.

When you find a useful module for your project just do ‘npm install <node-module> –save-dev’ and you are ready to go, but….. it can pollute your node_modules directory with unused node modules.

Just uninstall your unused node module by ‘npm uninstall <node-module>’

Angular 4 bug in combination with latest Typescript

When we upgraded our Angular app to the latest version. We noticed everything worked with version 4.2.3 and Typescript 2.4.

The problem

After we reinstalled all the nom packages the Angular version was upgraded to 4.2.4, because we had in our package.json ‘^4.2.3’ for Angular packages.

When we package everything and republished the app to the page, we got errors, huh!!!!
[dropshadowbox align=”none” effect=”lifted-both” width=”auto” height=”” background_color=”#ffffff” border_width=”1″ border_color=”#dddddd” ][/dropshadowbox]

 

The solution

After some search I found it has to do with the combination of Typescript and Angular version. After I set Typescript fixed to version 2.3.4 everything works fine again

Angular and base64 encoding and decoding

Currently I am busy building a Proof of Concept at my customer.
We are using Springboot for the Backend services, which get data from Tridion and store data in a Oracle database..

The Front end is build with Angular. We started with version 2 with Grunt as build tool, but quickly we changed it to Angular 4 with Webpack.
The overall feeling of Angular 4 and Webpack was much better. Another plus was the smaller footprint.

Base64

Last request was to store some information in Cookie. Overall no rocket science, but to encode the value and afterwards decode to reuse it was even more easy, thanks to build in base64 encode/decode functions.

btoa() and atop() are very powerful

let encodedCookie:string = boa("Password");
let cookie:string = atop("cGFzc3dvcmQ=");

Happy coding

The slides of my session at Engage

Here are my slides of my session at Engage.

 

Learn, share and Engage in Antwerp

Next week it is time for Engage Usergroup again. This time Theo Heselmans has chosen a very special location, next to the ZOO of Antwerp. Looking forward to meet everyone again and see what the sponsors have to offer.

Theo and his team has put together a amazing agenda with top notch speakers and IBM Champions.

This year I am very privileged to be a speaker again.

My session

Dev03. How Watson, Bluemix, Cloudant, and XPages Can Work Together In A Real World Application

The role of a human resources employee can be hard work when it comes to filtering hundreds or thousands of job applications. Often, the cover letters are submitted in unstructured formats making keeping data in order and identifying interesting job applications difficult.
In this session we will give a look behind the scenes of the award winning HR Assistant application which uses a combination of IBM Bluemix, Watson and a Cloudant database to improve the recruitment process. We will explain how we integrate the different technologies and display the content graphically using XPages along with how the development progressed and the challenges we faced.

  • My session on Tuesday May 9th at 9 AM in Room A (Okapi 3).

 

Hope to see and meet you next week in Antwerp. And hope to learn more about IBM Think 2018 in Las Vegas

Bulk import in a Cloudant database

After some issues with HR Assistant I was thinking it would be a good idea to create a separate database with only the Design documents as schema database.

So I replicated all the documents from the original database to a brand new one and called it hrassistant_schema. After the successful replication I kept all only the design documents.

 

Today I got a question about the schemas and discovered it should also be a good idea to add all the configuration documents to the schema database of HR Assistant

In that case I have a basic set up and can use it all the time to generate a new instance of the database.

 

Prepare the JSON

In a Cloudant database it easy to get all the documents in JSON format from a certain view via the build in REST API. In my case I needed the configurations view JSON.

The documentation of Cloudant helped me to prepare the JSON to a certain format to remove everything before the doc entry and the } add the end of each document entry in the JSON. Include all the entries in array and assign it to docs keyword.

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

 

Insert the JSON in Cloudant

Using Postman on my MacBook to post the JSON directly into the Cloudant database. You need the url to the database on Cloudant and add to the url ‘/_bulk_docs’

At the authorization, select Basic Authentication and add your username and password.

In the Request body you add the prepared JSON and press post. In the Response body you get feedback of the operation. In my case all the documents, 24, are inserted successfull.

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

 

Meanwhile in Cloudant

When I checked the configuration view in the hrassistant_schema database I see all the new documents.

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

 

Happy coding and come to see me at my session at Engage on 9:00 Tuesday 9th of May, where I will show more technical details about the development of HR Assistant.