Spring Boot Micronaut Cloud Native

From Spring Boot to Micronaut

In the last couple of years, I’ve been playing a bit with a generation of tools in the Java world, namely Micronaut, Quarkus and GraalVM. While I’m a Spring Boot fan since its beginning, I believe this quite an eye-opening opportunity. In this post, I’d like to see how easy, or how hard, it is to port a simple Spring Boot application to Micronaut. Setting up the context The JVM is an great piece of technology. Modern versions compile the running bytecode to native code, depe

Reactive Programming Kotlin coroutines Project Reactor

From Reactor to Coroutines

Last September, I wrote how to migrate from an Imperative Programming codebase to a Reactive Programming one in a step-by-step process. Because of its popularity, I illustrated the post with a Spring Boot demo. The final result uses Mono and Flux from Project Reactor. I also made sure that no step in the processing pipeline is blocking thanks to Blockhound. I wrote the code in Java so that it could be accessible to the largest audience. But I’m still a Kotlin fan at heart. Hence, I ported

jigsaw modules modularization JPMS

Update on the state of Java modularization

At the beginning of 2019, I wrote about the state of Java modularization. I took a sample of widespread libraries, and for each of them, I checked whether: It supports the module system i.e. it provides an automatic module name in the manifestIt’s a full-fledged module i.e. it provides a module-info The results were interesting. 14 out of those 29 libraries supported the module system, while 2 were modules in their own right. Nearly 2 years later, and with Java 16 looming around the cor


Do's and don'ts for conference organizers, a speaker's point-of-view

My job requires me to speak at conferences. Despite the current situation, this hasn’t changed much. At the time of this writing, I submitted 439 different proposals to 215 unique conferences in 2020. I already wrote some advice for junior conference speakers. As a follow-up, I’d like to offer my view on the organization of conferences, from my speaker’s point-of-view. While the online and the on-site experiences are quite different, most of my feedback applies to both. DO s

programming language learning

On learning a new programming language

When I started my career, books with titles such as 'Teach Yourself C in 21 Days', and 'Learn Java in 7 Days' were pretty popular. I was impressed that people could read such books. I never thought I could learn a new language in such a small amount of time myself. Time has passed. I’ve come to realize that I’m not alone in that case. Those books just happen to stretch the definition of learning a new programming language - and I’m being polite. In this post, I’d like to d

xml json yaml configuration data exchange

In defense of XML

When I started my career, XML was ubiquitous. The meta-information in a Java JAR file - the manifest - follows a proprietary format. But Java EE designers built it from the ground up on XML: meta-information of all artifacts is in XML format e.g. web.xml, ejb-jar.xml, application.xml, etc. Java EE is one example I experienced personally. But XML was everywhere in the enterprise world at the time. Its prevalence manifested itself in two areas: configuration and data transfer. Ever since then,

Continuous Integration GitHub Action

Customizing your GitHub profile - Building

In the previous post, we had a look on how to write a Kotlin script to automatically write a README that dynamically aggregates various data sources. In this follow-up post, we will describe how to run this script through the use of GitHub Actions. Yet another Continuous Integration tool It has been some time since Hudson, now known as Jenkins, was the leading (only?) Continuous Integration server available on the market. The last years has seen an precambrian explosion of alternatives: Atlas

GitHub Kotlin Kotlin Scripting Freemarker

Customizing your GitHub profile - Scripting

Recently, GitHub allowed users to customize the appearance of their profile page. This is different from GitHub Pages: it allows to add extra content to one’s GitHub profile. Since that feature is available, a lot of developers have decided to customize their page. I think this is fun, so I also wanted to do the same, in my own way. I wanted to describe it, so fellow developers can take inspiration. Since the whole process is a bit long, I’ve split this post in two parts. This par

software development fixed price time and materials build or buy

On house building and software development projects

Not long ago, I came upon a LinkedIn post. It’s in French, but the theme is about sharing risk between the customer and the contractor in software development projects. To sum it up, the author is advocating for the Agile way: fixed-price contracting puts risk on the shoulders of the contractor, while time-and-material gives responsibility to the customer. Some commenters showed surprised that we, software developers, are not able to precisely assess risks by ourselves. They compare softw