Here are a few things I have made. Some are practical, some are playful, and all of them are built to be explored.
A small, fast drawing surface built straight on the Canvas API: flood fill, palette state, PNG export, and no extra ceremony.
Under the hood: Canvas state, flood fill, palette control, and export all running in-browser.
A small local checklist for deciding whether a piece of work is ready to hand over, or just close.
Under the hood: Deterministic readiness logic, concrete gates, release notes, and a copyable handoff summary.
A practical blind clock for a home poker night: simple controls, editable levels, and a timer that keeps the table moving.
Under the hood: Local clock state, blind-level transitions, editable durations, and keyboard-friendly controls.

A group-trip planner for the parts that usually get lost in chat: itineraries, expenses, ideas, and the decisions in between.
Under the hood: Supabase auth, RLS, shared trip state, expenses, ideas, and chat.
An open-source framework for checking, scoring, and improving AI-generated work through repeatable quality loops.
Under the hood: Config-driven validation, scoring, iteration loops, plugins, CLI workflows, and MCP integration.