bug API

A sorting bug

Lately, I succumbed to nostalgia, and agreed to do some consulting for a customer. The job was to audit the internal quality of an application, and finally to make recommandations to improve the code base and reimburse the technical debt. While parsing the source code, I couldn’t help but notice a bug in the implementation of a Comparator. This post is to understand how sorting works in Java, what is a Comparator, and how to prevent fellow developers to fall into the same trap. Even if it

OpenData

Challenges of Open Data

In my talk Introduction to Data Streaming, I demo an application that displays the location of all public transports in Switzerland in near real-time. Here’s a sample recording: The demo is entirely based on Open principles: the code and its dependencies are Open Source, and the data is read from an Open Data endpoint. In order to develop the demo, I had to overcome some issues by leveraging Open Data. In this post, I’d like share those issues, and ease the path to fellow devel

license open source apache MIT BSD

On Open Source, licenses and changes

The subject of Open Source and OS licenses has been waxing and waning over time. Recently, it became hot again. In this post, I’d like to do a quick recap to set the stage. Then, I’ll analyze reasons for license changes. The rise of Open Source Before I actually started my career - even I was before even born - software was provided with its source code. The value was in the hardware. Most customers - if not every one of them - modified and adapted the source code to their hardwar

hibernate query cache performance

Digging into Hibernate's Query Cache

I haven’t used Hibernate for a long time, and I haven’t blogged about it for even longer. Recently, I was working on a blog post in the context of my job on setting up an evergreen cache. When I was coding the demo, I faced some issue regarding Hibernate’s Query Cache: it didn’t work as I expected it to. Finally, after some time, I managed to fix the issue. This post aims to dig deeper into Hibernate’s Query Cache in order to help fellow developpers confronted with

architecture system architecture state

The illusion of statelessness

Some libraries, frameworks, components, and architectures either encourage statelessness, or make it a requirement. While statelessness has a lot of benefits, it’s unfortunately rarely possible in the real world. In this post, I’d like to detail this stance of mine a bit. State in Functional Programming Functional Programming is based on a set of principles. Among those principles are pure functions: A pure function is a function that has the following properties: Its return

Project Loom threading parallelism reactive coroutines

On Project Loom, the Reactive model and coroutines

Java 15 will see the first release of Project Loom. I believe this will be a game-changer for the JVM. In this post, I’d like to dive a bit into the reasons that lead me to believe that. First, we need to understand the core problem. Then, I will try to describe how previous technologies try to solve it. Afterwards, we will see the approach taken by Project Loom. Finally, I’ll extrapolate on what effects the latter could have on the ecosystem. Threading We first have to remember

Vaadin productivity GUI

Why I (still) love Vaadin

It’s funny how things come in sequences. Recently, on three separate occasions, I stumbled upon questions asking what people used for front-end technologies. Every time, my answer was Vaadin. Unfortunately, some places, e.g. Twitter, are too limiting to explain my answer in depth. In this blog, I’ve no such limitations. In one sentence, Vaadin is a framework to create GUI using plain Java, or any JVM-based language for that matter. One develop in Java, and the framework takes care o

streams

Changing coding habits to be stream-friendly

Because of the recent worldly travel restrictions, I recently found myself writing more code than usual. After having reviewed it, I noticed I was not very satisfied with it. I believe that comes from the fact that Java is an 'old' language, but it has evolved a lot, especially in its latest versions. While working with a language for a long time, one is bound to get habits, whether good or bad. When the language changes, it takes a conscious effort to change those habits. Yet, this is necessary,

automation workflow architecture

Automating a conference submission workflow: deploying to production

In the first post of this series, we detailed the setup of a software to automate submissions to conferences. In the second one, we configured the integration endpoints. This third post is dedicated to the deployment of the solution to production. To Cloud or not to Cloud? To decide what to do, the first step is to ask oneself whether to host: On-premiseIn the CloudOr even use my own machine First, let’s remove on-premise from the options. It wouldn’t make sense, as I’m th