The Lab

Where the code is the deliverable

Everywhere else on this site, code is a means: the pages, the demos, the documents. Here it is the thing itself. Three artifacts, all MIT licensed, all running in the open — because a designer claiming to ship code should hand you some rather than describe the experience of having done so.

Where the line sits. I ship the front-end of what I design, in the PR under my name, with senior engineers reviewing. These artifacts are pure functions by choice, not by ceiling — logic any stack can adopt and any test can pin down; the stateful counterpart is the book edition of this site, ~150KB of my own React. What I don't claim is the backend. That is the honest boundary, and it is the same one I give on the technical screen.

The system I leave behind

A design system a machine can read is one that actually gets applied

Six products at Talon had grown one at a time and looked like six companies had made them — a problem for a company selling an integrated platform. I introduced a design system across the line, so Plato, Ada and Atlas read as rooms of one building. Then I encoded it, so it stops depending on who remembers it.

One family
Not a coat of paint — family resemblance. For a company selling an integrated platform, looking integrated is the claim, made visible.
Encoded, not documented
Two shipped as installable plugins across client organisations. A system in a Figma library gets applied by whoever remembers it; one a machine reads gets applied every time.
Enforced
Contrast, overflow and legibility measured from rendered pixels on every push — and the interface I design is the front-end I ship in the PR.

Below is the system itself, not a picture of it — the same stylesheet that paints this page, with every contrast ratio measured on load rather than quoted.

Four heats · semantic, never decorative

    Three families · one job each

    • AnnouncesSource Serif 4
    • Is readSource Sans 3
    • Labels600 · .08em · upper
    • code()JetBrains Mono — code only

    One spacing grid · enforced by a gate

      Below 4 is an optical nudge, above 80 is structural. Anything between that is off-grid fails the build.

      The public one is MIT, and its reference page runs that same audit on itself — failures included.

      /plugin marketplace add arpitmaheshwari/ember-design-system
      /plugin install ember-design-system

      Why a lab at all

      A principle with no failing state is a preference

      The eight patterns in the pattern library came out of production work, and for years they lived where design principles usually live: in slides, in review comments, in my head. Reasonable people agreed with all of them and then shipped the naked confidence score anyway — because a principle you can nod at costs nothing to ignore.

      Written as code, the same rules acquire a failing state. decide() reports review-without-reasons as a violation rather than a suggestion. calibrate() returns insufficient-data instead of a flattering number when the sample is thin. trustlint refuses to score truthfulness at all, and says why in its own output.

      That is what The Lab is for: taking judgments I keep making in review and giving them somewhere to fail, so they can run without me in the room.

      The thresholds here are defaults, not findings. Where a band starts is a product decision someone owns and revisits — the rule is only that a score lands on one verb, never that 0.7 is the right place to put the line.

      The evidence boundary

      These prove less than they look like they prove

      Three different things get called evidence, and only the first one lives on this page:

      Implementation
      The code does what it says. 42 assertions, run in your browser above, on the same module the demos import. This is what the tests prove — nothing more.
      Usage
      The rules came out of shipped products, not a notebook: the verbs, the abstention, the logged override and the citation gate were each argued for and built inside the work in the case studies. The code here is my re-statement of those decisions, not the client’s source.
      Outcome
      Whether a pattern moves adoption is a claim about a product, not about a function. Where I have a measured before-and-after I put it on the case, with its baseline and window. A green test says nothing about it, and I won’t let a passing suite stand where a result belongs.