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.
CSV import and export: the UX of tabular handoffs
CSV imports that survive real spreadsheets (mapping, previews, error files people can fix) and exports people can trust — stable schemas, honest metadata.
The minimum viable brand: what pre-seed founders actually need
Pre-seed founders don't need a rebrand budget; they need three artefacts and the discipline to use them. What to buy now, what to fake, and when to invest.
Empty states are onboarding: designing the blank dashboard
The blank dashboard is the highest-leverage screen in a SaaS product: three empty-state archetypes, sample-data patterns that teach, and measuring the lift.
A preview environment for every pull request
Per-PR preview environments cost less than the meetings they replace. How we build them: seed data, infrastructure on a budget, and demos as the default.
Streaming UX: making latency feel like thought
Token streaming is a design material, not a loading state. Skeleton-to-stream choreography, citation timing, honest cancellation, and perceived-performance numbers.
Design tokens are an API: building a pipeline from Figma to production
How we build a design-token pipeline from Figma to CSS, Tailwind and native — one source of truth, versioned releases, and semver for visual decisions.
Reference calls: what to ask an agency's past clients
Twelve questions for agency reference calls that surface reality — first missed dates, month-three invoices, vanishing seniors — and how to read the hedges.
Analytics governance: tracking plans before tools
Analytics rots quietly until nobody trusts the dashboards. The fix is governance, not tooling: event naming grammar, ownership, QA rituals and the monthly data hour.
Pull quotes and margin notes: editorial devices for the web
Pull quotes, asides and margin notes give long reads their rhythm. The semantic markup, the responsive survival tactics, and the restraint that keeps them editorial.
Schema markup that actually moves the needle
Structured data, done pragmatically: which schema types still earn rich results, how to keep JSON-LD honest, and the default set we ship on every build.
Jobs-to-be-done interviews that surface what users won't say
Beyond the JTBD script: interviewing for what customers can't or won't tell you, synthesising transcripts into forces, turning jobs into ranked bets.
Packaging thinking for brands that live on screens
Digital brands still fight for shelf presence — the shelf just became glass. What packaging teaches app icons, social avatars, favicons and the 32-pixel identity problem.