The 4th of November, the J-Fall conference was organized by the NLJUG. J-Fall is the largest one-day Java conference in the Netherlands. I attended the conference and with this post, I want to share some of my impressions. Enjoy!

1. Introduction

It was already the 18th edition of J-Fall and it was a live event. Of course, some COVID measures were in place, but it was a relief that it was finally possible again to attend a live event. J-Fall was held at the Pathé cinema theater at Ede which is a great location for such an event. The main room 9 is really impressive! Due to COVID measures, only 1.300 participants were allowed instead of the usual 1.500. You had to be quick to register because the event was sold out in nearly one day. More than 60 sessions were held, which makes choosing where to go quite a difficult task. But, do not worry, all sessions are recorded and will be made available via the NLUG YouTube channel. As said before, it is a one-day conference, although they cheated a bit this year because also a pre-conference was held :-).

Enough for this introduction. In the remaining paragraphs, I will give some impressions of the talks I attended. And if you are a music lover, do watch the two ladies playing the electrical violin when opening the event.

2. What Makes a High Performance Team Tick?

by Michel Schudel

Michel Schudel has been working at the Rabobank Lending & Insurance team and wanted to share some of the successes and failures while trying to improve the performance of the team. Many of the items he showed to us, were very recognizable to me because I have a similar experience with a team I was part of the past few years. So, do watch this keynote, it only takes 30 minutes but it is worth viewing it. The 8 tips that were provided are:

  1. Do Just-In-Time kickoffs;
  2. Have at least one PO that is always available;
  3. Create T-shaped developers by pairing different disciplines;
  4. Do team code reviews;
  5. Keep your pipelines in great shape;
  6. Technical Debt should be zero at all times;
  7. Drop rituals that give you no added value;
  8. Have a good mix of experience and personality in your team.

3. Migrating to a Clean and Flexible Product Portfolio Architecture With GraphQL

by Arthur Arts and Miel van Welzen

This talk was a story from the Dutch Chamber of Commerce (KVK) and how they transformed their complex architecture to a clean and flexible solution, using GraphQL. The problem with the earlier architecture was that different components were using different domain languages and different authorization approaches for example. Every team was doing its own thing. By creating a cluster of teams instead of individual teams and by migrating the architecture, the problems were solved. They started using GraphQL after a small experiment was executed. Important is that you are given the time to experiment. Large part of the talk was a live demo and some kind of roleplay where Arthur acted as being someone representing the business, the security officer, etc. This was kinda funny and entertaining. The takeaway here is that GraphQL is a good solution when you need flexibility. If flexibility is less needed in your architecture, it will only give you unnessary overhead. As always, choose the solution which solves your problem.

4. Fairies, Fakers and Factories: Boost Your Tests With Better Test Data

by Jaap Coomans

How do you create your test data? Manually and using the same data over and over again? There is a better approach by generating your test data. In this talk, Jaap explained that you need to use representative and randomized test data. Representative, because you want to use test data which ressembles production data the most. Randomized, because using different test data each run can reveal bugs. Beware that randomized is something different than random. Next, three tools were demonstrated:

  • Easy Random: easy to use, but does not create randomized data. Besides that, the project is in maintenance mode.
  • Java Faker: this library uses fakers in order to generate randomized data. Fakers like Address, Name, Number, etc are available.
  • jFairy: this library uses profiles like Person to generate the test data.

The libraries were compared in the talk and the conclusion was that Java Faker is probably the one with the most potential. Also, a comparison was shown based on the star rating on GitHub. This can easily be done with this star history website which is now in my browser bookmarks folder ;-). For the above libraries, this gives you the following result:

It is also advised to use Test Data Factories. From the audience, another great advise was given to use builders in order to generate the test data.

5. The Zen of Programming. A Personal Journey Towards Writing Beautiful Code

by Sander Hoogendoorn

In this new keynote talk, Sander gave an inspiring talk about his journey towards writing beautiful code. You should definitely watch this keynote, it will take you only one hour. It contains many quotes and will give you some food for thought. I was too focused listening that I forgot to take notes 🙂

6. Artificial Intelligence on Quarkus: I Love It When an OptaPlan Comes Together

by Geoffrey De Smet

This talk was mainly a live demonstration on how to code a highschool timetabling application using Quarkus and OptaPlanner. Geoffrey demonstrated the power of Quarkus and the ease-of-use of OptaPlanner. This was quite interesting because in the past I have done quite some things with planning optimization tools. The power of Quarkus was shown by means of its amazing fast startup time:

  • The application was running;
  • Something in the code was changed;
  • A request was made from the frontend application;
  • Quarkus notices the code change and restarts (no hot deploy, but a restart);
  • The results were sent to the fronted.

The time between sending the request and retrieving the response was less than 1.5s on an average laptop. This is really fast!

7. Releasing at the Speed of Light

by Andres Almiray

Lately, I often saw tweets passing by about JReleaser, so I was quite curious what JReleaser could do. This talk also was mainly a live demonstration. It was shown how JReleaser can create releases, publish the binaries and announce the new release to e.g. Twitter. It was an interesting demonstration, but I do not yet see a use case for the things I am doing right now. But I am happy to have gained some more information about what JReleaser can do for you.

8. API-First: From Design to Development

by Vasco Veloso

How to keep your API design and development consistent with eachother? The answer is quite simple: consider the API specification as your single source of truth. Code and tests can be generated out of the API spec. For generating the code, the Open API Generator Maven plugin can be used, for generating tests, Restler and Schemathesis can be used. What are the reasons for not first developing the code and to generate the API spec out of the code?

  • The API spec is not anymore the single source of truth, and you will first design the API;
  • You will need to have a prototype first;
  • Your thinking will be more in terms of the implementation instead of in terms of the design;
  • Besides that, the API specification will become less valuable.

I will definitely take a closer look at this approach.

9. Conclusion

Thanks to the people of NLJUG for organizing J-Fall as a live event. It was a great day and fantastic to attend a live event again! Now I need to find some time to process all this information :-).