Writing
Longer articles and short notes. The older pieces are mostly about Java, Spring and testing; the newer ones are about working with AI agents on real codebases.
2026
2025
2024
- Integrating Ollama AI Models Into Spring Applications21 Sept 2024
Even though many people call it a bubble about to burst, it's increasingly obvious that LLM's are here to stay in some form or another for the long term. Previously, working with generative AI applications was mostly a domain reserved for python developers but is getting more and more ubiquitous across many programming languages.

- Java Testing in 2024: Elevate your Spring Tests with these Patterns17 Feb 2024
Over the years, I have seen many different ways of writing Tests with Spring in Java. In this opinionated post I want to share some of the insights I had working with many different approaches in various projects. To start things of I would like to share some of my opinions about testing in general, so you can see if you agree and if the following advice is useful to you. As in all things, there exist trade offs. So it's important to keep in mind what you want to optimise for.

- Java 21 Factory Pattern Revisited19 Jan 2024
The factory pattern has been a tried and tested pattern for creating objects ever since my fellow landsman Erich Gamma and his colleagues wrote the book on Design patterns. However, the way we impleent it in Java has changed quite a bit over the years. In this article, we will look at how easy it has become in Java 21.

- First Year of Blogging12 Jan 2024
At the beginning of 2023, I decided to start this blog and see where it goes. Time to look back and share some insights and thoughts about the last year as well as look forward to what's coming next.

2023
- The 5 most exciting features of Java 2119 Sept 2023
With Java 21 just released today, it’s the perfect time to have a closer look and evaluate it’s new features and improvements. Let’s have a closer look at some of the new features like Virtual Threads, Record Patterns, Sequenced Collections and Unnamed Classes.

- Introducing the new Spring Rest Client17 Sept 2023
Since the release of 6.1 we get the RestClient in Spring, a brand new synchronous HTTP client. This client is based on the RestTemplate and combines the fluentApi of WebClient with the infrastructure of RestTemplate. There already exist 2 viable options in the spring framework for making http calls. The RestTemplate that was introduced fourteen (!) years ago, and the WebClient introduced in Spring Framework 5. Both come with certain drawbacks however. Let’s look at them.

- Spring Transaction Fundamentals12 May 2023
In this article we’ll have a closer look at Spring Transaction Management, a topic that is fundamental to real word projects and a big reason to use the Spring Framework in your enterprise applications. However, when first starting out the topic can be a bit daunting. But as always, let’s start with the basics and work our way up from there.

- Next Level Integration Testing2 Mar 2023
I’ve already written about how to write simple Testcontainers Integrationtests for Kotlin in my previous blogpost. However, there were still some parts that I wasn’t all to happy about. This blogpost shows you how you can improve on the previous exampe and take your integrationtests to the next level by using custom Annotations such as @IntegrationTest to set up everything you need for your Testcontainers test.

- How to present your Code10 Feb 2023
Over the years I have noticed a familiar pattern while attending various tech talks or internal Company talks in the industry – After setting the scene, mostly via powerpoint, and making interesting points about a new technology/concept we hit the bullet point called “live demo”. The speaker switches out of powerpoint, opens his Code editor – and puts the whole audience collectively to sleep at the exact same point in time. It doesn’t have to be this way, read along to find out how to gently guide your audience through your Code with these 5 tips.

- Integration Testing made easy7 Feb 2023
In this blogpost we will have a closer look at the Testcontainers Library. At first we will see a small introduction to the library and its benefits & drawbacks, before jumping into a complete project that uses the library to write easy and intuitive integration tests. We will set up a very basic Kotlin web application with Spring Boot 3 that integrates with a Kafka & Postgresql Testcontainer to produce and consume different Messages. To test that everything works as expected, we will spin up an integration test using the Testcontainers library.

- Project Loom - A guide to Virtual Threads19 Jan 2023
Project Loom has been talked about for quite some time now, what implications does it have on the java language and handling concurrency? Will it really kill reactive programming? And doesn’t Kotlin already have coroutines since the beginning of time so why even bother? Continue to read to find out. The problem with Java’s Concurrency Model Many applications that are written in Java use some form of concurrency, like servers or databases that are required to serve many requests at the same time. Java operates on a Thread-per-request model, which simply means that every request uses a platform Thread which…

2022
- Google Tink - How to encrypt your data23 Nov 2022
Whenever we store data that contains sensitive information about our users, we need to make sure that we handle this in a secure way, because you know, its the responsible adult thing to do. After you have thought carefully and decided that you do in fact need to store the data (after all, an attacker can’t steal what is not there, points to temple) , encryption is a way to add an aditional security layer and make things harder for an attacker. In your typical Spring application there exist multiple ways of achieving this. Let’s dive into it.

- Examining new Java 17 features1 Oct 2022
Java has had exciting development over the last couple of years, while yes, it can be argued that it is still leagues behind newer languages like Kotlin in terms of conciseness, it is still to be applauded how the developers managed to evolve Java in this new direction while making sure it retains it’s backwards compatibility. Lets have a look at some of the new features that were implemented since Java 8

