posts
- Every Route Registered. Every Request 404'd.
A registered Micronaut route returning 404 under load. The route matched. The controller ran. Mono.zip ate the response.
- Four Bugs That Needed Real Postgres to Exist
A code review found zero bugs. The benchmark found four. Each one required concurrent load against real Postgres to exist.
- Six OOMs and a Connection Pool
A Spring Boot imperative app OOM'd six different ways at 256MB. Each HTTP client swap revealed what was actually eating the heap.
- The numbers lied until we fixed the ports
Same reactive app on Micronaut, Spring Boot, and Quarkus. The numbers lied until we fixed the harness AND the ports.
- Two ways to mistranslate a retry
Porting @Retryable to Quarkus and Spring produced two silent retry bugs. One was a fix that broke parity. Both passed every test.
- 1% CPU and 6-Second Latency
A Quarkus reactive app hit 18.8 req/s while CPU idled at 1%. Two stacked bottlenecks — a transaction annotation and a connection pool default — explained the 5x gap with Spring.
- -Xmx Won't Save Your Native Image
JAVA_TOOL_OPTIONS is a no-op on a native binary. The 256MB OOM that docker stats couldn't see.
- Quarkus 12,563 vs Spring 820 (Both Numbers Are Wrong)
A Prometheus counter that resets on OOM crash-loops turned a 5x throughput advantage into a 15x deficit. The fix is six lines of awk.
- Four Bugs, Three Exit Codes From a Benchmark Orchestrator
Benchmark orchestrators that loop over branches for hours. Four bash bugs that made them look finished.
- 200 Virtual Users vs api.nasa.gov (DEMO_KEY)
A benchmark orchestrator with no mock guardrail ran 200 VUs against NASA, a small free ISS tracker, and a free weather API.