Recent Post
Your Message Broker Has a Schema: Freezing RabbitMQ Topology in a Build-Time Manifest
Every backend engineer knows you don’t change a column type by editing the entity and shipping. You write a migration, it gets reviewed as a migration, and Flyway refuses to let history rewrite itself.
Then the same engineer changes an exchange from topic to direct in a @Bean method, and nothing anywhere blinks.
The Deploy That Took Down Prod and Staging at Once: a RabbitMQ 406 War Story
11:09, a routine deploy goes out.
11:14, every web and worker dyno on production is crash-looping. So is staging.
The database is fine. Memory is fine. The app simply refuses to boot.
Read moreThe 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 more




