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.
Progressive disclosure for genuinely complex tools
Hiding complexity without hiding power: sensible defaults as strategy, advanced modes, command palettes as the pro lane, and how to measure if disclosure works.
A taxonomy of micro-interactions (and when to say no)
Hover states, cursor follow, scroll reveals and button physics — a working taxonomy with duration curves, quality tests, and reduced-motion fallbacks for every pattern.
Onboarding users to an AI assistant
First-run design for copilots: capability discovery without homework, starter prompts that teach, mental-model calibration, and measuring adoption honestly.
When the model is wrong: designing failure states for AI features
AI failure is a design state, not an exception. Wrong-answer UX, graceful degradation tiers, feedback that improves the system, and copy that keeps trust intact.
Programmatic SEO without polluting the web
When programmatic pages earn indexation: data-backed templates, uniqueness thresholds, internal-link architecture, and a quality bar that survives core updates.
A creative-testing cadence that compounds
Creative is paid media's biggest lever and its worst managed. A weekly testing cadence, naming that preserves learnings, and the library that compounds.
Errors are design material: engineering graceful failure
Failures are part of the product, not exceptions to it. Typed errors, retry policies, circuit breakers and writing the failure copy in the same sprint as the happy path.
Bylines and author pages: small design, big trust
Named authors quietly outperform faceless content on every metric we track. The anatomy of a trustworthy byline and an author page worth visiting.
AI cost observability: tokens are a line item now
LLM features live or die on unit economics. Build per-feature token budgets, cost-per-successful-task dashboards, cache tracking and frontier charts execs actually read.
Brand is the small moments: gestures worth systemising
Your brand lives in invoice footers, app icons and 404 pages more than in any campaign. A gesture audit method, what to polish, and the upkeep cost of whimsy.
The URL is your best state manager
Filters, tabs, search and pagination belong in the URL. Shareable views, working back buttons, better analytics — plus the honest list of state to keep out of it.
Aligning stakeholders without design by committee
How to keep design decisions fast with many stakeholders: decision mapping, demo-based alignment, the input-vs-decision distinction, and rescuing stalled review loops.