Built, broken & built again.
The workshop — projects shipped, experiments run, repos left open. A record of what I'm making, why I made it, and what the making taught me.
Live from GitHub.
The source of truth — whatever I'm pushing, pulled straight from the API. Latest commits, freshest repos, no static copy to fall out of date.
Case studies, not screenshots.
Deeper cuts — each card opens into the full story: what I was trying to do, how it's built, what broke along the way, and what I'd do again.
LLM Red Team & Defense Framework
Adversarial security research on AI applications
Built a deliberately vulnerable LLM customer-support agent, red-teamed it with 48 attack payloads across 5 OWASP categories, and benchmarked 5 layered defenses from regex filters to architectural privilege separation. Cross-model comparison of Claude Sonnet 4.6 vs Haiku 4.5 with LLM-as-judge scoring.
Mega Tic Tac Toe
Strategic multiplayer game with asymmetric powers
Scaled tic-tac-toe into a strategic game: 7×7 to 20×20 grids, up to 4 players, four asymmetric powers with soft rock-paper-scissors counter-play, and real-time online multiplayer via a server-authoritative PartyKit WebSocket server. Mobile-first PWA with installable home-screen support.
Personal Website
This field guide — four rooms, one horizon
A field guide rather than a portfolio — four rooms (home, resume, shelf, workshop) with their own palette and page script, sharing one animated dune horizon. Cross-document View Transitions crossfade between pages, a handwritten signature strokes itself in on scroll, and a ⌘K command palette opens previews for every note and project. Vanilla JS, no framework, no bundler.
Built in public — pushed often.