Blog

Writing and reviews

Design systems at enterprise scale, the migrations that go with them, and interfaces taken apart one at a time.

  1. Writing
    migrations that happen
    7 min

    Forty-eight identical components

    Three apps, each with its own copy of the same 49 shadcn primitives. Extracting them into one package was mostly mechanical. The two interesting parts were the one component that was not identical, and the stylesheet that silently lost two thirds of itself.

    ReadDraft
  2. Writing
    design systems at scale
    6 min

    Pastels are surfaces, ink is content

    A pastel palette fails quietly. Every pair looks fine on its own and the text turns out to be 3:1 on the tint. The fix is one rule, one pairing, and a 130-line script that refuses to let either slip.

    ReadDraft
  3. Interface review
    dev tools
    7 min

    Linear: the system is the site

    Linear's marketing site is its design system running in production: one variable font used across seven weights, depth built from 8% borders and blur instead of shadows, and motion that switches itself off for people who ask. The one thing it does not prove is that its keyboard story survives its own CSS reset.

    ReadDraft
  4. Comparison
    booking transit
    9 min

    The national railway: Deutsche Bahn vs IRCTC

    Two railways a whole country depends on, measured on the same ten minutes. Deutsche Bahn gets a traveller from the home page to a priced connection in four interactions and tells them what is late; IRCTC asks for two dismissals before the form, six gestures to search, and a login before a fare. On the booking task DB wins clearly. On giving information to people without an account, IRCTC does one thing DB does not. Both fail the keyboard.

    ReadDraft