Journal

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.

Engineering · 4 Sept 2026 · 10 min

A search index built at build time

A build-time search index for static sites: tokenisation, stemming, synonyms, size budgets, sharded delivery, worker-side ranking, and proof it got better.

searchperformancestatic-sites
AI · 2 Sept 2026 · 10 min

LLMs in the design process: acceleration with a seatbelt

How we use LLMs in the studio: synthetic drafts, copy pressure-testing, edge-case generation — and the verification rules that keep AI-assisted design honest.

AIdesign processprototyping
AI · 2 Sept 2026 · 11 min

Structured outputs: making LLMs renderable

Free-text LLM output is a compatibility bug waiting to ship. JSON schema modes, constrained decoding, boundary validation, and safely rendering streamed partial objects.

AI engineeringstructured outputsjson schema
AI · 27 Aug 2026 · 12 min

Prototyping with AI: where it speeds design and where it rots it

Field notes on AI-assisted prototyping: real speed in code exploration, hallucinated-component traps, prompt libraries for layout, and a provenance rule for files.

prototypingAI toolingdesign engineering
Growth · 27 Aug 2026 · 9 min

First-party data without the surveillance

First-party data foundations for the cookieless era: consent-mode analytics, an honest take on server-side tagging, what to stop measuring, and labelling estimates.

analyticsprivacymeasurement
Growth · 27 Aug 2026 · 9 min

Referral loops that fit the product — not the pitch deck

Referral mechanics that match the product: incentive design, double-sided rewards, fraud resistance, timing, and why most referral programs launch a year too early.

referral programsgrowth loopsword of mouth
Product · 27 Aug 2026 · 8 min

Bottom sheets that don't fight the user

When a bottom sheet beats a modal on mobile web: drag affordances, scrim honesty, snap-point logic, keyboard and screen-reader behaviour, and anti-patterns.

mobile UXbottom sheetsinteraction design
Product · 27 Aug 2026 · 9 min

Roles and permissions: the quiet complexity of team products

Designing roles that match customer org charts, permission matrices people can read, invitation-time clarity, escalation paths and guarding against the accidental admin.

roles and permissionsrbacteam products
Web design · 27 Aug 2026 · 10 min

Scrollytelling with restraint: narrative pages that respect the scrollbar

The production playbook for scrollytelling that earns its keep: a one-pin budget, chapter navigation, a designed reduced-motion variant, and a print-test honesty check.

scrollytellingmotion designnarrative design
Engineering · 26 Aug 2026 · 11 min

Monorepo or not? A studio's decision framework

Monorepos solve code-sharing and coordination problems most studios don't have, at tooling costs they don't predict. When we say yes, and what we do when we say no.

monorepotoolingarchitecture
AI · 21 Aug 2026 · 10 min

Personalisation vs privacy: drawing the line deliberately

Draw the personalisation privacy line before legal does: on-device and anonymous patterns, explainable personalisation, and consent UX that actually means something.

AI UXprivacypersonalisation
Engineering · 21 Aug 2026 · 10 min

Form architecture at scale: schemas, errors and autofills

Schema-first form engineering: shared zod validation, error copy as data, correct autofill tokens, and announcements that don't double-speak.

formsvalidationaccessibility