Performance
The Web Font That Made Your Page Invisible for Two Seconds
With font display block, the browser renders nothing where the text should be until the font arrives, and on a slow network the page is a blank skeleton…
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
With font display block, the browser renders nothing where the text should be until the font arrives, and on a slow network the page is a blank skeleton…
DevOps
The app's timeouts were tested and correct, and the 504s kept coming, because the ingress controller has its own defaults for body size, buffering and read…
Tooling
Latency without CPU, stalls without errors, syscalls nobody counted. The kernel already observes all of it, and bpftrace turns the observation into a one…
DevOps
What broke, what surprised me, and what I would tell someone considering Firecracker for their own platform.
Code Review
Debug logging the full request body is one flag flip from production, and the request body is where the email, the token and the card reference live.
Opinion
Debt implies a known principal, a rate and a repayment plan. Most of what we call technical debt is none of those.
Deep Dive
MVCC gives every transaction an id and keeps old row versions until vacuum says they are dead to everyone. If vacuum falls behind for long enough, the id…
Bug Hunt
Search worked for every input except inputs with a comma, which 404'd. The comma is legal in a URI path, but a router in the middle split on it anyway, and…
Error Autopsy
The query fails with relation does not exist while the table sits in the schema browser a click away. The table never moved.
Shopify
After a theme update, an app's script ran before the theme's and broke it. App embed blocks live in the theme's JSON, not in the app, so a theme update…
Security
Sequential order IDs are a public counter of your volume, and they make every authorisation bug trivially exploitable.
Performance
Each Redis command took a tenth of a millisecond to execute and a full round trip to deliver, and two hundred of them in a loop made the request slow while…