Testing Emails in Spring Boot with Testcontainers and Mailpit
Testing email functionality is often painful. SMTP servers are external, tests become slow or flaky, and local setups differ from CI environments. As a result, many teams either[...]
One Query, Complete Object Graphs: Nested DTOs with jOOQ MULTISET
In my previous post about Open Session in View, I explored how this default Spring Boot setting can hide serious performance problems. The N+1 query problem sits behind a system[...]
The Hidden Performance Killer: Understanding Open Session in View in Spring Boot
If you’ve ever wondered why your Spring Boot application feels sluggish under load despite appearing to work perfectly during development, there’s a good chance[...]
SPAs Are the New Client/Server Applications
Single Page Applications promise modernity. But in reality, they bring back all the classic client/server problems. With Vaadin, we can avoid them.
Why Vaadin Is Perfect for AI-Driven Development
AI-driven development is changing how we build software. Instead of writing every line of code by hand, developers increasingly use AI tools and agents to generate, test, and even[...]
Why I Don’t Use Mocking Frameworks and Why You Might Not Need Them Either
“I never use mocking frameworks like Mockito. Why? Either I have my test data under control, or I write the methods in a functional way.” When I say this, it usually[...]
The Simon Martinelli Stack: A Pragmatic Approach to Full-Stack Java Development
In the fast-paced world of software development, developers are often overwhelmed by endless framework choices and architectural trends. Over the years, I have refined a stack[...]
Using java.time Classes with JAXB
JAXB (Jakarta XML Binding) is a popular way to bind XML schemas to Java objects. However, out of the box, JAXB doesn’t support the modern Java 8+ java.time API like LocalDate or[...]
How to Deploy a Vaadin Application as a WAR on Tomcat 11
If you want to run a Vaadin application on an external servlet container like Apache Tomcat 11, you need to package your application as a WAR (Web Application Archive) instead of[...]
Effortless Cloud Deployment of a Vaadin App with Virtuozzo
As a developer who values simplicity, automation, and data residency in Switzerland, I recently started using Hidora to host my Java application. In this post, I’ll show you how[...]
Configuring the Entra Spring Boot Starter Behind a Proxy
I recently encountered a challenge when using the Spring Boot integration for Microsoft Entra (spring-cloud-azure-starter-active-director) behind a corporate proxy. It was a pain[...]
Securing Vaadin Applications with One-Time Token
Logging into an application should be simple for users but still safe and secure. Traditional logins with usernames and passwords work, but they can be inconvenient and sometimes[...]


