Blog
Notes on systems, payments & the work
Practical writing about engineering at scale and the personal side of a career in software — architecture decisions, trade-offs, failures, and lessons learned.
Taming Tail Latency in Go Services
p99 is where your users actually live. A practical tour of the Go-specific causes of latency spikes — GC pauses, goroutine scheduling, connection pool starvation — and how to measure and fix them.
The Cost of Hidden Retries
Retries can turn a small failure into a traffic storm when they are invisible and unbounded.
Building a Useful Technical Portfolio
A portfolio should show how you think, not just list the tools you have touched.
From Declarative Intent to Go Code
Why Declarative Backend starts with intent and ends with code developers can inspect and own.
Reading Latency Distributions
Average latency hides the users who are having the worst experience.
Idempotency Keys Are Not Optional
If a client can retry a request — and it always can — your write endpoints need idempotency keys. Here is how to design them so retries are safe without turning your database into a bottleneck.
Choosing Between a Worker and a Workflow
Use a worker for throughput; use a workflow when progress must survive time and failure.
The First Five Minutes of an Incident
Incident response improves when the first five minutes are practiced before they are needed.
Teaching Systems Through Tradeoffs
Junior developers learn faster when architecture is explained through choices and consequences.