Shopify
The Shopify Webhook Retry That Double Booked the Order
The delivery timed out after the handler had already run, so the platform retried, and the handler, which assumed delivery meant not processed, booked the…
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.
Shopify
The delivery timed out after the handler had already run, so the platform retried, and the handler, which assumed delivery meant not processed, booked the…
Engineering Culture
What I learned writing a hundred debugging writeups, including which ones people actually read and what that says about technical content.
Security
A forged form on an attacker's page submitted a request to the real site, and the browser attached the victim's session cookie, because a cookie with no…
DevOps
The HPA added pods after the spike had passed and removed them after the next one began, because its metric was smoothed, delayed and averaged.
Code Review
The listener, the timer and the subscription all outlive the component that created them, and the leak is invisible on the first mount and obvious on the tenth.
Opinion
A calendar with a meeting every afternoon does not look expensive, because the cost is invisible: it is the morning deep work that never starts, fragmented…
Bug Hunt
Fast typists submitted search queries missing their final character, and only fast typists, because the trailing edge timer was cancelled on unmount before…
Error Autopsy
The rotation succeeded, the new certificate was valid and live, and half the fleet still failed at the exact minute of rotation.
WooCommerce
Two strangers bought different things and received each other's cart fragments, because a page cache keyed on the URL returned a cached, personalised block…
Security
The payload was ordinary JSON and the merge was ordinary code, but a __proto__ key in the body wrote to Object.prototype, and every object in the process…
Performance
The page weighed two megabytes and the network tab showed a database driver going to the browser. A server only import crossed the boundary through one…
Tooling
Every layer is a transaction and the ledger never lies. docker history shows the secret you deleted, the cache you paid for and the compiler you shipped…