Build. Learn. Write.

Technical articles, working notes, and lessons from building software.

A large wooden freight crate is blocked in front of a narrow steel gate while a smaller blue crate sits beyond the same opening.

Why Our Next.js Deployments Took 30 Minutes

How a 9.48 GB Next.js image became part of an 18–30 minute deployment path, why the shared image was optimized without redesigning tenant workflows, and what changed after rollout.

What Duplicate Users Taught Me About Outbox and Idempotency

What Duplicate Users Taught Me About Outbox and Idempotency

A production support incident led me to separate durable work from duplicate-safe processing with an outbox, an inbox, and idempotency.

How Java's Concurrency APIs Fit Together

How Java's Concurrency APIs Fit Together

A beginner-friendly map of Java concurrency APIs organized by the problems they solve.