Building software with agents
Hi, I'm Fabian. I'm a software engineer working mostly with Java and Spring. This is where I write about what I'm learning and building.
Lately, I've been spending a lot of time working with coding agents: figuring out what to delegate, how to test the results, and how to stay familiar with the code. You'll find notes on that here, alongside articles on Java, Spring and testing.
Latest
Keeping Up with the Code My Agents Write
How I work with coding agents today, from running several sessions to reviewing their changes and keeping the tests useful.
Read the article →

Currently
- Designing and building backend systems on the JVM, mostly Java and Spring.
- Working with AI coding agents every day, and building the guardrails that make them trustworthy.
- Turning what I learn into short notes and reusable agent skills.
Selected writing
- Coding in the Age of AI - Lessons From a Year With AI Assistants
Over the last year, I’ve spent a large portion of my working hours interacting with AI assistants. Since we mainly use JetBrains products, this has meant working with the integrated AI support powered by either ChatGPT or Claude Sonnet (No relevant experience with agents yet). Here are some of my observations after a year of using these tools in practice.

- Integrating Ollama AI Models Into Spring Applications
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.

- The 5 most exciting features of Java 21
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.

- Spring Transaction Fundamentals
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.

- Integration Testing made easy
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 Threads
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…
