Case study 01 · Concept · Systems design · Color science · AI direction
9 crates · 5 platforms from one source · 1,220 tests passing
An offline music player with two interfaces, and the split is by form factor rather
than by taste. The classic Winamp form — genuine .wsz skin support
— is a fixed 275×116 framebuffer, so it belongs where windows dock: desktop,
and iPad. A phone has no windows to dock, so it gets ARC — the modern skin,
and my design. You pick a photograph from your library and it becomes the ground the interface
sits on. One decision about where the thing is used, not two features.
An insulator holds high tension so it never arcs; ARC is the one place that energy is
allowed to show.
No streaming, no account, no network. It plays the files you already own.
See the proof — the phone interface,
with live controls →
I built it because of how I actually work. Long hours on composites, mockups and edits with my own music running — and every player wanted an account and a connection first. High tension, low noise: the line carries the music and nothing else gets through.
The Winamp UI is a framebuffer, not a widget set. 275×116 pixels of RGBA — no layout engine, no text metrics, hit-testing by rectangle comparison. Once you see that, the whole architecture falls out of it: the interface can live in shared code as pixels, so each platform needs only a window, a bitmap and an audio sink — a few hundred lines. It also means the interface can be tested as an image, which you cannot do to a native widget tree. And it means a photograph can be the interface. One observation, three consequences. That is what looking closely buys you.
Open the full design proof — the same interface at size, with the decisions written beside it.
A skin and an EQ are what a music player looks like. The library is where you live in it. Insulator's is 7,700 lines that decide what music exists, and a second crate that decides what should change about it — duplicates, filenames, missing album art. That second crate cannot change anything.
Every operation it produces is a plan, handed to a separate safety layer that owns the dry run, the undo journal, atomic writes and quarantine. The safety layer was built before any of the features that need it, because — in the build guide's own words — written three times inconsistently, it is the thing that eventually eats someone's music. When two copies sit in albums whose tags disagree, the default is keep both. Album art is written beside the file, never embedded, because that is reversible.
The tag reader has the same shape: it never rewrites a tag. When it thinks an album artist is wrong or text was decoded in the wrong character set, it writes a proposal into a review table and waits. A scanner that silently repairs is indistinguishable from one that silently corrupts — and afterwards there is nothing left to compare against.
★ I did not decide that for this product. Seven years earlier I wrote lab tooling that reclaimed drives and rebuilt systems, under one rule: anything that deletes or overwrites shows you exactly what it found, then waits for a yes. The same sentence, in Rust, enforced by a database that has nowhere to store the destructive version.
All five product case studies →
The design-side case study → — where the color comes from: a photograph in, a palette out, and a brand system built to survive being handed to the audience.