Projects
Libraries, experiments, and small apps I've built outside of work just for fun.

Clance
2026Claude Code, one hotkey away, anywhere on your Mac. A menu-bar app that pops up the real Claude Code CLI over whatever you're doing, and has grown into my main dev app and agent manager.
llm-cassette
2026Record and replay OpenAI and Anthropic calls in tests. When you edit a prompt, a judge model decides whether the saved response still fits, so tests survive prompt changes.

semantic-pubsub
2026Pub/sub that routes messages by what they mean. Subscribers describe their interests in plain language, and each message is judged once against all of them. Built as an experiment, with the results published.
go-ws-server
2026A stateless WebSocket server in Go with Redis as its only coordination point: pub/sub topics with replay, topic locks, per-user broadcast and a distributed job scheduler.
jevfilter
2026A Python library for judging content against plain-English topic definitions. Each topic comes back as a match, a review or a no, with the cost of every call attached.
jev-gmail-filter
2026Filter Gmail with plain-English topics. It labels matching emails, groups them into tracked items like job applications, and flags anything that has gone quiet.

Prompt Tuner
2025 – 2026Paste a draft prompt and get it graded on five dimensions, asked only for what's missing, and rewritten with notes on what changed.
plainlog
2026A small, predictable logger for Node and the browser, with explicit context, safe transports and first-class testability.

Load Balancer Playground
2025 – 2026A small load balancer in front of simulated backends that slow down, fail and crash, with a live dashboard comparing random, round-robin and a scoring strategy.

MP3 Compressor
2026A bulk audio compressor that runs entirely in your browser. No uploads, no account, no limits.

Broken Calculator
2026A puzzle game where the calculator doesn't work right. Figure out each level's hidden rule and reach the target number.