Performance
Your Average Latency Is Fine and Your Users Are Not
Mean latency is a number that describes nobody. Here is why the tail dominates real user experience, how retries multiply it, and which percentiles are…
I write about why software breaks and how people figure it out. Founder of Krova Cloud, building isolated microVMs on our own hypervisor. Years of Shopify theme work and shared hosting before that. If I have not reproduced it, I do not publish it.
Performance
Mean latency is a number that describes nobody. Here is why the tail dominates real user experience, how retries multiply it, and which percentiles are…
DevOps
Kubernetes sends SIGTERM, waits, then sends SIGKILL. Most services lose requests in that window not because shutdown is hard but because nothing ever…
Tooling
You do not need to read packets to get value out of tcpdump. Four flags, three filters and a handful of patterns will settle most arguments about whether…
Code Review
Happy path code is reviewed carefully and error handling gets a glance. That is backwards. Here is the checklist I run on every catch block, every wrapped…
Opinion
Runbooks get written when the system is designed and never tested again. The first incident shows you the gap, at the worst possible moment, to the person…
Deep Dive
They share a name and almost nothing else. One is a kernel probe that fires after two hours of silence. The other is connection reuse you can watch in the…
Bug Hunt
A support ticket said search was returning the wrong products. It was returning the right products for somebody else.
Error Autopsy
This error almost never means your certificate is broken. It means one side is speaking TLS and the other is answering in plaintext, and the mismatch shows…
Networking
A live feed that dropped on a strict interval in production and never locally. The interval was the whole clue and I ignored it for a day.
Docker
One changed byte early in a Dockerfile throws away everything after it. Here is how the cache key is computed and how to order instructions so it survives.
PostgreSQL
Dead tuples that never get reclaimed, a table twice the size of its data, and queries getting slower every week. Here is what blocks vacuum and how to see it.
Security
Tokens rejected as expired seconds after issue, or accepted long after they should have died. Both are the same bug seen from opposite ends.