Bug Hunt
Logged In Users Saw Somebody Else's Search Results
A support ticket said search was returning the wrong products. It was returning the right products for somebody else.
Measuring before optimising: Core Web Vitals, render time, flame graphs and finding the bottleneck that actually matters.
Bug Hunt
A support ticket said search was returning the wrong products. It was returning the right products for somebody else.
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.
DevOps
Lag climbing on one partition while the rest keep up tells you something specific. Here is how to read the numbers before you add consumers that cannot help.
JavaScript
A single page app that was fine for an hour and unusable by the afternoon. Three wrong hypotheses, then a heap snapshot showed forty thousand detached DOM…
MicroVMs
Query times doubling at unpredictable hours with no deploy and no traffic spike. When the cause is not in your process, it is usually not on your machine…
Shopify
Everyone says apps slow your store down. Almost nobody says by how much. Here are measurements from real stores and a method for auditing your own.
Python
Your async service handles ten requests a second and pegs one core. Somewhere a synchronous call is blocking the event loop.
Shopify
Liquid has no query log, so N+1 problems are invisible until the page is slow. Here is how to find them with Server-Timing and how to restructure the loops.
Databases
Reading from cache is easy. Knowing when to remove something is where the bugs live, and most of them are races.
Shopify
Most Shopify performance advice is a list of tips in no particular order. Here is how to measure first, find the actual cause, and fix things in the order…
JavaScript
Your editor takes four seconds to show a type error and tsc takes two minutes. There is a profiler for this and almost nobody uses it.