Thinking, in public
Field notes on design, engineering and growth — written by the people who ship the work. No thought leadership, just lessons with receipts.
View transitions in the wild: lovely, fragile, worth it
Eight projects in, we still love the View Transitions API — with our eyes open. Where it shines, how it fights your router, and the tiers that keep it honest.
Founder-led content when the founder has forty minutes a week
A realistic operating model for founder content: capturing raw material in minutes, ghostwriting that keeps the voice, cadence math, and honest measurement.
Reading progress indicators: craft or clutter?
The reading progress bar is the most faked detail on the web. The honest version: when long-form needs one, how to build it without jank or lies, when to skip it.
Programmatic SEO without producing landfill
The workshop version of programmatic SEO: dataset maturity gates, the four page archetypes that work, editorial review thresholds, and the build sequence we trust.
Multimodal inputs: the upload box is a trust surface
File, image and audio uploads are where AI features win or lose trust. Design limits, preprocessing transparency, privacy prompts and honest errors for multimodal UX.
Sonic branding for studios without a jingle budget
Lightweight sonic identity without the six-figure jingle: the three-moment rule, UI sound principles, accessibility defaults, and one commissioned motif.
Skip, pause, cancel: retention through respect
The skip button as a first-class retention tool, pause-over-cancel patterns, honest save offers, winback measurement, and exit surveys with a 'none of your business' option.
RSS: the distribution channel you already own
Followers you rent can be repriced overnight; a feed subscriber is yours. The case for full-text RSS in 2026 — and how to run a feed like a grown-up channel.
AI answers vs good navigation: choose deliberately
Replacing your site's navigation with an AI answer box is rarely the upgrade it looks like. A decision framework for AI search vs structured browse, honestly measured.
Disclosure patterns: telling users when a machine is speaking
AI disclosure that survives legal review and user testing: label placement, export watermarking, model transparency, and wording that informs, not alarms.
Shipping 'sometimes wrong': communicating AI features
Launch copy for features that are sometimes wrong: setting accuracy expectations, changelog phrasing, support macros, and the trust maths of underpromising deliberately.
Local-first sync engines: what we learned shipping one
Field notes from building a real sync engine: CRDT vs last-write-wins in practice, conflict UX that doesn't panic users, and when to skip it all.