Projects
Things I've built, documented in enough depth to show how each one actually works.
Interview Practice
shippedA pipeline for practicing coding interviews out loud: a browser recorder captures audio and every keystroke, transcription and an LLM evaluation turn the session into scored, timestamped feedback, and a review app replays it all in sync.
- TypeScript
- React
- LLM APIs
- ffmpeg
- Nix
CAS Coach
shippedA personal coaching assistant built on the Claude Agent SDK and Taskwarrior. The engineering underneath is a general harness for putting a model in charge of a stateful command-line tool: a supervisor that injects time, memory, and task context into every message, diff-based to keep token use down, and a sandboxed tool layer that lets the model drive a real task manager safely.
- Python
- FastAPI
- Claude Agent SDK
- React
- TypeScript
- SQLite
- Taskwarrior
- WebSockets
Discord Voice State Snapshot
shippedA Discord server-moderation bot that keeps an accurate, queryable ledger of who was in which voice channel and when, including across the bot's own restarts and outages, which Discord's event model makes hard to reconstruct. Built with Python and PostgreSQL.
- Python
- discord.py
- PostgreSQL
- SQLAlchemy
- Alembic
- Docker Compose
kage + g8s
activeEnd-to-end terminal recording of the kage and g8s platforms: two isolated cages, a shared Nix store, and a PR-gated deploy to production.
- Nix
- NixOS
- k3s
- Kata Containers
- Forgejo
- Tekton
- Korifi