Engineering and design write-ups from building AI, mobile, and web products.
Automated scanners catch maybe a third of real accessibility problems. The rest only surface when a person actually tries to use the product.
A public API partners can build a real business on needs predictable limits, clear errors, and a path to more capacity — not just an endpoint that works.
Standard application logging tells you a request failed. It tells you almost nothing about why an LLM pipeline produced a specific bad answer.
A card sort takes an afternoon to run. Skipping it on an information architecture project has, for us, cost months of rework more than once.
Clients usually ask us which platform is 'best.' The honest answer depends on catalog complexity, team size, and how much they need to customize checkout.
We rolled AI code review out to our own engineering team before recommending it to a single client. Adoption was the hard part, not accuracy.
Soft deletes look simple until every query in the codebase needs a WHERE clause it's easy to forget, and a unique constraint that no longer works.
A document-scanning feature was dropping frames and overheating phones within minutes. Here's what we changed in the capture pipeline.
Most design-to-engineering rework doesn't come from bad designs. It comes from decisions that were never actually written down.
We cut a client's main bundle from 1.4MB to 480KB gzipped without cutting a single feature — most of the weight was never being used.
Mobile-first became dogma over a decade ago. We still start there, but for reasons that have shifted since the phrase was coined.
A five-hour outage cost a client real revenue and taught us more about incident response than any postmortem template ever had.