How I solved SMTP Timeouts with Mailpit and JavaMail

Development
en

When I started testing email sending in my Spring Boot app with Mailpit and Testcontainers, I ran into a frustrating problem: sending mail locally to localhost often hung for[...]

A View Is Not a Table: It Is a Controlled Integration Contract

Development
en

The recent article “Your Database Table is an awful API” claims that exposing database tables (or database-derived structures) as integration boundaries between systems is a[...]

Why Vaadin and jOOQ Are a Natural Fit for AI Driven Development

Development
en

Over the last two years, I have been working heavily with AI-assisted and agent-based development. One observation keeps coming back: the choice of technology stack matters far[...]

Component Models Matter: Why UI Development Gets Faster with the Right Abstractions

Development
en

When developing business applications, the discussion around productivity often focuses on backend frameworks, persistence, or architecture. Yet one of the biggest productivity[...]

Testing Emails in Spring Boot with Testcontainers and Mailpit

Development
en

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

Development
en

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

Development
en

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

Development
en

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

Development
en

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

Development
en

“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

Development
en

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

Development
en

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[...]

Go to Top