Last week, I described a use-case for a custom Stream Collector. I received a intriguing comment on Twitter: Interesting article. For completness' sake this specific problem could also be solved using the standard teeing collector— Miguel Martins (@Miguucm) May 3, 2021 Hats off t … | Continue reading
I’ve been using minikube as my local cluster since I started to learn Kubernetes. But I’ve decided to let it go in favor of kind. Here’s the story. A couple of weeks ago, I gave my talk on Zero Downtime on Kubernetes. A demo is included in the talk, as with most of my presentatio … | Continue reading
I was a student in France when I discovered the Internet and the World Wide Web. At that time, I didn’t realize the value of the thing, even though I taught myself HTML from what was available at the time (even if I don’t remember the sites - they probably have disappeared into L … | Continue reading
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 h … | Continue reading
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 … | Continue reading
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 … | Continue reading
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 passe … | Continue reading
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 … | Continue reading
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 … | Continue reading
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 tech … | Continue reading
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 … | Continue reading
In Java, annotations and annotation processors are surrounded by a shroud of mystery for most. They seem like a subject reserved for 'experts''. On top of that, I believe there’s also some FUD around them. This post aims to dig into the subject, in the most neutral way possible. … | Continue reading
In February, before the lockdown, I presented my Fast logs talk at ConFoo. At the end, I had an interesting question I had to cut short because of the timing. This blog post aims to describe the relevant points of the talk, the question, as well as some possible answer. One impro … | Continue reading
I started teaching in higher education organizations when I was still a student. That was more than 20 years ago. I’ve never stopped since then. I’ve taught in different kind of organizations (i.e. engineering schools, universities, and applied science schools) and two different … | Continue reading
The last two blog posts were focused on how to write a custom Kubernetes controller in Java. As usual, I’m writing a demo along with the posts: that allows me to face real issues, and be able to detail them. In this context, I had to handle a couple of them when implementing the … | Continue reading
In the previous post, we laid out the foundations to create our own custom Kubernetes controller. We detailed what a controller was, and that its only requirement is to be able to communicate with HTTP/JSON. In this post, we are going to finally start developing it. The technolog … | Continue reading
It’s hard nowadays to ignore Kubernetes. It has become the ubiquitous platform of choice to deploy containerized applications. In a few years, Kubernetes has entrenched itself deeply in the DevOps landscape under the tutelage of the Cloud Native Computing Foundation. One could sp … | Continue reading
This is the 2nd post in the Stream Processing focus series. Last week, we had a look at what is stream processing. In this post, I’d like to address one possible use-case for stream processing: the computation of mathematical approximations. | Continue reading
Last week, I wrote about the creative use one can make of Filters by grading assignments of students. About, there’s another recurring issue that warrants a blog post: servlet mappings. While servlet mappings seem easy on the surface, they sometimes can be the cause of huge heada … | Continue reading
Most tutorials about Git history rewriting state that history should never ever be rewritten. Like all principles, it depends mostly on the exact context. The principle should probably be updated like this: Public Git history should not be rewritten The reason is that once the Gi … | Continue reading
In this post, I’d like to tackle some widespread thought found in software development’s circles: the magical creatures known as 10x developers. If you’ve been working in a software development team, even for a short period of time, you probably came to the conclusion that some d … | Continue reading
A couple of years ago, I wrote a post focused on how to avoid sequences of if-else statements. In that post, I demo several alternatives: the usage of proper OOP designmapswhen there’s no return, switch statements in a case. Recently, I stumbled upon a slightly more complex use-c … | Continue reading
Java is the first language that I learned and used professionally. It has been my bread and butter for about a decade and half years. And yet, it’s not the only language I’ve learned nor used in all my years: for example, a long time ago, I’ve had to develop JavaScript code to im … | Continue reading
This post is neither a recommendation, nor even a suggestion. It’s just me toying with an idea: Implement it at your own risk! The main benefit of Docker containers is that they are self-contained. For developers, that means one just needs to inherit from the desired Docker image … | Continue reading
Some years ago, I started my journey on the conference circuit. I did that on my own, in my free time. Without mentorship on how to do that, and with my gut feeling as the only guidance, I made plenty of mistakes… and I still regularly do. However, I now have a couple of hard-ea … | Continue reading
This is the 19th post in the Exercises in Programming Style focus series. In the last episode of Exercises in Programming Style, we solved the word frequency problem with the Hazelcast library. This time, we are going to use MapReduce for that. MapReduce is a process consisting o … | Continue reading
This is the 17th post in the Exercises in Programming Style focus series. Last week, we solved the word count problem using the Actor model: objects running on different threads and communicating through messages. This week, we will drop objects, and use data structures that are … | Continue reading
This is the 12th post in the Exercises in Programming Style focus series. This week, we will focus on Aspect-Oriented Programming, a powerful programming technique: In computing, Aspect-Oriented Programming is a programming paradigm that aims to increase modularity by allowing th … | Continue reading
This is the 11th post in the Exercises in Programming Style focus series. This week's post is dedicated to reflection: In computer science, reflection is the ability of a process to examine, introspect, and modify its own structure and behavior. The original Python solution is ha … | Continue reading
This is the 10th post in the Exercises in Programming Style focus series. In last week's post, we solved the now familiar top-25-word-frequencies-in-a-text-file problem by using Event-Driven Programming. When the number of observer-subject pairs grows, an alternative is to migrat … | Continue reading