NL Portal, a open source project

Since August 2023 I do a project at the city of The Hague, to rebuild their portal for their citizens. They use modules from the NL Portal open source project in their the new portal and custom integrations. In the future this custom integrations should apply to the general structure based on NL Portal.

NL Portal overview

NL Portal project can be found on Github and is open source maintained by Ritense. The NL Portal is an initiative of the VNG, The Association of Netherlands Municipalities. It is based on the Common Ground principle

Common ground principle

The Common ground principle consist of 5 layer principle.

  • Layer 1: Storage
  • Layer 2: Service, api’s
  • Layer 3: Integration
  • Layer 4: Business prosesses, like BPMN
  • Layer 5: Interaction

NL Portal structure

On Github of NL Portal you can see a list of repositories

NL Portal Backend Libraries

I am contributing mainly to the NL Portal Backend libraries, which is written in Kotlin and used Spring and GraphQL, based on the Spring auto configuration. When using the library you can choose only the modules necessary for your own project.

Here a list of modules in the backend library

  • Authentication: use the Spring security oAuth with Keycloack, but can be used with any oAuth provider
  • Cases API (OpenZaak): cases for citizens
  • Tasks: tasks for the citizen, based on objects API,
  • Objects API: for generic objects based on jsonschema
  • Documenten API
  • Payment
  • Open Klant: user registration with communication preferences and contact moments
  • BRP API: personal information from central registry
  • KVK API: company information from chamber of commerce registry

My personal experience

I am really happy to work with Kotlin. It is Java on steriods, so much nice features to write less code. Learning a lot about open source projects and how to maintain it. For every new feature you need to keep in mind that it should be as generic as possible. Spring is a great help with all the configuration properties.

10th anniversary as a freelancer and more…

This month I celebrate my 10th anniversary as a freelancer. What an incredible journey it was.

In the last 10 year I did some great projects. Mostly in the Java space, upgraded many applications from Java 8 via 11 and 17 to 21. Learned a lot about the Spring Framework and really appreciate the great work of all the people moving the various Spring projects to the next level.

Had the opportunity to speak and attend several international conferences and user groups. Sometimes combined with a road trip. Visited a lot of interesting places in Europe and the USA.

This month I will speak (again) at Engage User group event in Antwerp about frontend technologies. A new and updated version of a session I did in 2019 in Brussels.

Hope to see you in Antwerp on 23 – 24 April 2024, more information about Engage

10th anniversary as freelancer

Engage 2020: Hello are you listening, There is stream for everything

Today I have gave a presentation at Engage Usergroup in Burgers Zoo, Arnhem.

My presentation

I was in the emerging technology track to share information about Spring Cloud Stream and how easy it is to connect to a message broker like RabbitMQ or Kafka.

Engage 2020: Hello are you listening, There is stream for everything from Frank van der Linden

Demo application

The demo application is showing the use of Spring Cloud Stream in a application. For demo purposes I created also a nodeJS application, so there are more flavours in the github repository.

https://github.com/flinden68/streams-demo

Check it out and let me know what you think of have any questions

Spring Cloud Function on Azure run locally

I am busy with a demo application to show the power of Cloud Functions in general and specific Spring Cloud Function.

I was already able to deploy the Demo application on IBM Cloud, next step is to run in it on Azure.

Prepare the application

I found a very good article by Microsoft which explain how to prepare your Spring Cloud Function application before it can be deployed to Azure.

First run it locally

After the preparations I tried to run the application locally. Microsoft did a great job to make this possible. Helps speed up the development of the application before the actual deployment.

But when I tried to run the application locally it failed with a stack trace. After some searching on the internet I found the solution.

I need to the Main Class to the local.settings.json file, which point to the start class of the application. After I added this line I was able to run my demo application locally.

{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "",
"FUNCTIONS_WORKER_RUNTIME": "java",
"AzureWebJobsDashboard": "",
"MAIN_CLASS":"nl.elstarit.nl.demo.functions.demo.DemoFunction"
}
}

The last step, the actual deployment to Azure was very easy.

Deploy Spring Cloud Function to IBM Cloud

Lately I was playing around with Spring Cloud Functions by building a small demo application.

Locally It runs without any problems. The Spring Cloud team did a great job. Easy to use like most of the Spring Framework projects.

Run it on IBM Cloud

But why run it locally, it should run in the Cloud. Why not run it on IBM Cloud.

To run a JVM based application you need a manifest file with a few settings about the application like host and memory. And push it to the cloud

cf push appname

In the beginning it looks like it was delaying, but it ended with an error, complaining about the build pack. Apparently during deployment it is not possible to determine which build pack needs to be used.

Solution

The solution was pretty easy, by adding the build pack with -b parameter

cf push appname -b liberty-for-java

Happy coding

Speaking (again) at Engage in a Zoo

Today I received a positive confirmation about one of my abstracts for Engage 2020. So after speaking at the Zoo of Antwerp it will be once again in Zoo.

Looking forward to meet all the people, see who they are doing.

My session

Title: Em02. Hello, are you listening! There is stream for everything

Abstract

The world is changing in a event driven world
Event driven architecture is not a new technology. IBM MQ is already 25 years old.
The popularity is increasing, because it is a robust, decoupled way to exchange data.
Today there are new popular ‘new kids on the block’. Kafka is one of them and gets lots of attention also in the enterprise.
The principle however are still the same, called Pub Sub principle.
HCL will add to the App Dev pack the possibility to consume and produce to a broker/stream.
There are frameworks who helps you to focus on the business logic.
In this session I will explain this principle and show you that is not that difficult to make use of it. Connect your existing code to a service bus or queue, producing and consuming.

Looking forward to see you on Wednesday March 4th around 13:30.

engage 2020

Congratulations, you’re an IBM Champion (again)!

Yesterday I received an email from IBM with the above subject, especially from Libby Ingrassia. For me it came as unexpected suprise.

So I will be an IBM Champion again in 2020. This now for the fourth time in row, but for the sixth time in total.

It remains an extreme honour to get such a recognition from IBM. In 2020 I will continue to share my knowledge about development topics.

IBM Champion

Spring One Platform as a first timer

Last week it was the first time I attend Spring One Platform conference in Austin. It is the conference all around the Spring Framework. A very vibrant open source framework which coordinates by Pivotal.

Road to Austin

A friend of my has joined me (again), so we flew on a direct KLM flight to Houston and drove over to Austin. We stayed in a very pleasant hide-away in the very nice neighbourhood Travis Heights. The swimming pool was very useful as the weather was very hot even for Austin.

AirBnB

Spring boot runs everywhere

The power of Spring Boot application was the ability to run almost everywhere. Now they expand it even further.

Good to see that Spring Boots app not only requires a Cloud Foundry environment, as the applications will also natively on Google Cloud, Azure, AWS and even Heroku.

Everything is reactive

The overall theme was reactive. The last years there was a rise of non-blocking way of communicating between front end and back end. Pivotal is taking it to the next level, with introducing the Reactive way in all the Spring modules.

The project Reactor is the base of the JVM based projects. But also by using Rsocket, which is an alternative for http communication. This protocol opens up lots of new possibilities like 2 way communications. And it can ends the use of connection pools.

On the database connection, R2DBC is a new project which makes even the calls and transactions to a relational datastore non-blocking.

In all these Reactive projects Pivotal is heavily involved.

Streams everywhere

Another big topic was Streams. Pivotal have introduced Spring Cloud Stream to make it super easy to connect your application to a Business Event Bus, like Kafka or RabbitMQ.

Eventually it is nothing more a binder. You only have to focus on your business logic and let the Framework worry about to connect.

Conference overall

Over the past years I attend a lot of conferences, like IBM Think or IBM Connect. I must say it was a pleasant new experience. Well organised, good food. BUT the coffee was typical ‘see-through’ American style.

The customer stories were very interesting. JP Morgan shared their shift to Devops on a large scale in the financial world, which has their own compliance challenges. Dick’s Sport Goods did a live failover of their Search service during a key note with a top quote ‘Or we learned something or we are the hero’s.

Netflix shared their experiences with the Spring framework and services they initially developed, who are now inside the core of Spring Cloud. For example Hystrix and Circuit Breaker

Nevertheless I enjoyed it very much and looking forward for Spring One 2020 in Seattle (21-24 September).

Sessions recordings

On YouTube you can view all the sessions, which will be available or in the near future.

Spring One

Unconferencing

After a busy conference I like it do something else before heading home. This year we drove down to Galveston to stay on the beach for more then a day.

On Friday the temperature dropped dramatically with 20 degrees, but nevertheless it was worth to enjoy the beach before we flew back from Houston back home

Galveston

Going electric

At the end of 2018 we were looking around for a replacement for our Skoda Octavia. A very nice car, but as we are almost commute to work by bicycle and train, the car is a not making lots of kilometers. Then a diesel car not to expensive to have in operation.

But what next

A few years ago we had installed solar panels, may be an electric car? The downside was always the actieradius of the a full battery. I was always amazed by Tesla and their different approach on electric cars. They really disrupt the car industry. But the price….

End of 2018 there was new promising models on the market in the Netherlands. Hyundai has their Kona and their sister company Kia has a bit larger e-Niro. Both with a ideal range around 400 km. Now we are talking 😉

And the price was very attractive, below 50.000 euros. Which gives you here in the Netherlands a very attractive tax cut.

Will I fit

The next step was to see if I fit in the car, and my kids could still sit comfortably at the back bench. In the Kia that was the case. So we did a test drive.

Driving electric is very different experience compared to the traditional cars. In short we made a reservation for the next batch, expected end of 2019. No problem at that time.

Times goes on

In the first half year we did not expect any news from Kia about our e-Niro. After our great vacation through Central America we returned end of August back home.

I was wondering what the status of our reservation. Still no good news. They have really delivery problems, to keep up with the demand. Especially after the government has announced new plans around the popular electric cars.

New plans

As Kia good not meet the expectations I was reading about other electric cars. And there was Tesla again. Their Model 3 was very popular as their other models.

In 2019 they decreased the price below the important 50.000 level, but the most important thing was THEY COULD DELIVER.

So we went to Tesla in Amsterdam, because the first requirement was that I must fit with enough room for the rest of the family. I was really surprised by inner room of the Model 3. I could easily fit in the driver seat, and it leaves enough room in the back so my 15 years, not so short, daughter could sit comfortable. Will I get a real Tesla of my own??

Lets order the car

So fast forward, I ordered the car. A Standard Range, which easily meets our range requirements.

At Tesla almost everything goes through your account. Upload of required documents and so on.

Will it be delivered

Yesterday I received a SMS, and later an email, that next Saturday I am invite to get my Tesla Model 3 at the Tesla Delivery Center in Tilburg.

Now it is time to read the manual and looking at video’s about what to expect and how to drive the car.

A very good blog, in Dutch, about everything around a Model 3

Referral Program

Tesla has a referral program to promote Tesla. If you order through such a referral URL you get free Tesla supercharger kilometers. But also the person who’s referral code you use will get extra supercharger kilometers. Very nice program.

So if you want to order a Tesla, feel free to use my referral code 😉

https://ts.la/frank28712

5 years as a freelancer

As of today I have my 5 years anniversary as a freelancer

How it starts

In the beginning of 2014 I was thinking to go freelance. At Lotusphere, or what ever name it has back then, in Orlando I remember I had a short conversation with Stuart McIntyre and later via Skype a longer one with Bruce Elgort.

These 2 conventions gave me the confidence to make the big step to go freelance

Times flies when you having fun

See now it is already 5 years. I enjoyed till now every day. Learned a lot, did a lot of interesting projects. Had a great and long holidays with my family to destinations around the globe.

Next

Tomorrow I will start a new project at a small bank in Amsterdam after almost 3 years at Rabobank.

And will continue to enjoy life and planning our next family adventure.