We got 50% faster — and why you should doubt that
A team of four, four months, AI in the process every day. The number is real, the measurement is weak, and the part that mattered was not the model.

Every post comes out of a project we ran and links back to the case study it came from. A few a year — fewer, longer, and only where we have something nobody else can write.
A team of four, four months, AI in the process every day. The number is real, the measurement is weak, and the part that mattered was not the model.
We rebuilt our marketing page in our own design system — not to redesign it, but to find out exactly where the system runs out.
Plain HTML, hand-written styled-components, and our own design system — measured on the same screen, and the result was not what we expected.
Most migration plans cover moving the data and running both systems. Almost none cover getting back, which is why they happen at night.
In 2020 no library did this in a state you could ship. What it took: the protocol written once in Java, mirrored in Swift, behind a single interface exposed through a Turbo Module while Turbo Modules were still experimental.
We reviewed 74 components of our own design system and found 188 issues. They reduced to three causes, and every one of them was invisible to every tool in the chain.
Almost every piece of performance advice assumes you own the query. Here is what is left when the query belongs to a tool you do not control and the schema belongs to the customer.
Over-provisioning, loops nobody noticed, and uploads routed through the backend — three unrelated findings behind a bill eight times larger than it needed to be.
Routing file uploads through your backend costs memory, bandwidth and a bigger instance — and it’s the single most expensive default in most Node applications.
Next up: when a permission depends on a chain of people, meetings and versions.