Recent Post
The Production Outage — Where the Fix Was Worse Than the Bug
One missing property line.
Two production outages.
The hot fix between them made the second one inevitable.
Read moreThreads, @Async, @Transactional, and Virtual Threads: What Actually Happens Inside a Spring Boot Backend
A webhook fires. One HTTP request comes in.
Ten seconds later, half the app is returning 503s.
The bug is not in the webhook.
Read moreA Customer Couldn’t Upload an Invoice. The Fix Re-Taught Me XSD, JAXB, and Maven.
A Polish customer reports their invoice won’t upload.
The file looks valid. Other Polish customers upload fine.
Three days later I’ve read more of the Polish Tax Code than I’d like to admit.
Read moreWhat Jackson Doesn’t Deserialize for Free: The Empty Array That Took Down a Production Endpoint
A 503. Every 30 seconds, on the dot.
Sentry was empty. The application logs said the request was fine.
Then we looked at what Jackson was actually parsing.
Read moreJackson From First Principles: What ObjectMapper Does, What It Doesn’t, and When to Write a Custom Serializer
I’ve used ObjectMapper for years without really understanding what it does for free, what it refuses to do, and when you actually need to step in with a custom serializer.
One Email. Two Invoices. The 10-Month Bug Hiding Behind a Slack Alert.
A Slack alert said “duplicate notification.”
A 2-line fix would have shipped it the same day.
Both were wrong.
Read more






