I build small, self-contained web things β games, puzzles, and the occasional tool to make building them nicer.
Everything public I've got, sorted by what it is:
![]() |
Is-That-You Verify the person on the phone is really them β offline, zero-dependency PWA. live β |
![]() |
Fox-Tales discontinuedPrivate family photo sharing for Android and iOS. Flutter + Firebase, finished to MVP. |
![]() |
Terra-Incognita WIPBilingual geography quiz. The component library and i18n are done, the quiz isn't. live β |
![]() |
AS INSTRUCTED Write real TypeScript for robots on planets you never visit, then scrub the recorded run tick by tick. 33 work orders, no server. An experiment in fully-agentic development β not one line written by hand. live β |
![]() |
By-Royal-Decree Grid-based puzzle game β program medieval minions in an in-browser code editor. live β |
![]() |
Nebula Space-themed platform serving AoC-style coding puzzles, with accounts and progress. live β |
![]() |
Advent-of-Code My Advent of Code solutions. Vanilla JS, no dependencies, ASCII visualizations. live β |
![]() |
Pathfinder-Playground discontinuedInteractive A* visualizer β weight or block cells and watch it re-path. live β |
![]() |
Character-Controller discontinuedCanvas playground β drive a knight around while an A*-driven minion hunts you. live β |
![]() |
migrate-aem-to-storyblok Claude Code skills that migrate an AEM project's content into Storyblok, with review checkpoints. |
![]() |
Nuxt-Starter The opinionated Nuxt 4 template I start projects from. Linting, testing and SCSS wired up. |










