The lab · 6 artifacts
Small machines built to answer one question.
These aren't products and most of them will never be. They're the things I built when I needed to know whether something was true — whether a score meant anything, whether a colour was readable, whether a fish could be useful. Each one ran, and each one told me something I didn't already believe.
Updated July 20, 2026
The koi
Interface · running on this domain
Live on koinophobialabs.com
A companion fish that swims the page and answers questions about what you're looking at. The hard part wasn't the answers — it was the motion. Early versions chased the cursor, which reads as needy and makes a page feel like it's watching you.
Anchored, non-chasing motion made it feel like a resident instead of a widget. A throttled browser tab exposed an opacity bug that only appeared when frames were starved.
Debate tournament harness
Simulation · You Know Ball
To find out whether the scoring in You Know Ball meant anything, I ran cohorts of simulated players against the debate engine — one arguing at random, one arguing well — across every sport, and compared how often each cohort won.
A cohort that knew nothing was winning far too often for the score to mean anything, and closing that gap became the actual product work. I'm not publishing the specific rates here: when I went to source them for this page, I couldn't point at the run that produced them.
Claims gate
Guardrail · Trendi
A check that sits between a creator's rough thought and the script that comes back, refusing to produce sentences that assert results the person never claimed.
It works, and it overcorrects. It was rejecting legitimate 'my client' stories as unbacked claims — one of the reasons the newer generation pipeline is still switched off in builds 117, 118 and 119.
Contrast checker
Build tooling · this site
A script that walks every declared foreground/background pair on the site and fails if any of them drops below WCAG AA. It started as a one-off after I shipped a muted grey nobody could read.
It caught exactly that, again, on the dark surfaces — the muted token had to move from #726e85 to #807c94 to clear 4.5:1. Taste is not a substitute for a ratio.
Release-truth audit
Process · this site
Before publishing this site I went back through release artifacts, Apple's own upload logs, code-signing output and live HTTP checks, and compared what I found against what the site said about each product.
Three of four product statuses were wrong — including one that undersold. The site claimed no You Know Ball build had ever been uploaded; Apple's logs name two it had already accepted. Every status here now carries a verification date and a source, enforced by tests.
Headless UI puppet
Automation · Trendi
A way to drive the iOS app through its real interface and capture the results without a human at the machine — built because demo footage kept needing me to be physically present and awake.
It records a genuine run of the product rather than a mockup. It also taught me that a test runner attached to a simulator can generate very convincing fake engagement data, which is a good thing to know before you cite any number.
