Side projects · 2026

Five things I built
because I wanted to use them.

Not demos. Each one is live. Four solve a problem I actually had and are careful about the same thing: saying where their numbers come from, and admitting when they do not know. The fifth is just for fun.


Holy Moly

A group of friends plans a trip together, then splits what it cost.

  • Everything one trip needs settling — who is coming, when, what to do, what is finally agreed and who paid what — as five tabs on a single page, in whatever order the group gets to them.
  • One link is the whole invitation. Whoever opens it types a name and answers; nobody installs anything or makes an account, and the talking stays in the group chat where it already was.
  • It finds the date everyone can actually do, keeps the plan readable on the mountain with no signal, and at the end names the shortest way to square up — who pays whom, in as few transfers as the arithmetic allows.
Live
since 3 Sep 2026
Built with
Next.js 16 · Clerk · Drizzle + Neon · next-intl · web push · Vitest + Playwright
Open Holy Moly

Commensa

Friends compare how their investing is going — as percentages, never amounts.

  • A private circle shows everyone's progress on one scale, so a first savings plan sits beside a twenty-year portfolio without either being embarrassing.
  • Nobody ever learns what anybody holds, paid, or is worth. That is enforced by what the app stores, not by everyone being polite.
  • Imports a CSV straight from Trade Republic or finanzen.net ZERO, resolves each ISIN to a live price, and fills in dividends on its own.
Live
since 18 Aug 2026
Built with
Next.js 16 · Clerk · Drizzle + Neon · next-intl · Vitest + Playwright
Open Commensa

Fairground

What a company is worth, on assumptions you set yourself.

  • Four valuation models run side by side and are never averaged into one number — where they disagree is the answer worth having.
  • Growth, margins, cost of capital and holding period are all yours to change, and every figure moves as you type.
  • A model that cannot price a company is greyed out with the reason. Nothing is guessed to fill a gap.
Live
since 13 Aug 2026
Built with
Next.js · Drizzle + Neon · SEC EDGAR filings · end-of-day prices

Personal learning project — not investment advice

Open Fairground

Product Role Navigator

The same job title covers very different work. This says which work.

  • Describes what product roles in software actually involve, across eight areas of skill and twelve reference roles.
  • Rate a role you are hiring for, or paste an advert and put your own profile beside it to see exactly where the two diverge.
  • Every number states its source — quoted, reference, derived, or edited by you — and says plainly when something was never stated at all.
Live
since 12 Aug 2026
Built with
One standalone HTML file · no backend · UK GDS capability framework

Seven axes quote GDS; the eighth is authored and marked as such

Open the Navigator

And one just for fun

Afterglow

A wall of lights in the browser that you play instead of watch.

  • Two animated patterns blend on a grid of 8 to 256 lights across, in nine palettes and six kinds of hardware: plain LEDs, RGB stadium pixels, flip-dots, a vacuum fluorescent display, bare LED tape and neon flex.
  • It listens and looks. The microphone turns a meter pattern into a 64-band equalizer and sends ripples on every beat, and a camera or any video file becomes a picture made of lights.
  • Autopilot fades from look to look on its own. On a phone it installs to the home screen and runs full screen, where holding a finger on the lights picks something new.
Live
since 11 Sep 2026
Built with
One HTML file · WebGL 2 shaders · Web Audio · no framework, no backend

Sound and video are analysed on the device and never uploaded

Open Afterglow