I build software with TypeScript, Zig, Go, and Python, everything from AI-powered yoga instructors to hackathon-winning platforms.
I'm a software engineer at Let's Do This, where I build event discovery and booking platforms. We handle some of the biggest events in the world, including the London Marathon ballot system. I work with TypeScript, Node.js and Next.js, and on systems that process hundreds of thousands of registrations.
Right now I'm exploring everything from AI agents to low-level systems work - basically whatever seems interesting. I write about the problems I run into on my blog.
Before this, I spent a decade selling enterprise software. Turns out understanding what people need is most of the battle.
Hearth - Local-first KVM microVM sandboxes for AI agent development, powered by a custom Zig VMM. Spawns isolated VMs in ~135ms via snapshot restore, with ~2ms command execution over virtio-vsock. Think E2B, but runs entirely on your machine. (WIP)
PetriFlow - A Petri net-based safety layer for AI agents. A declarative .rules DSL compiles each rule into a verified Petri net, enforcing tool access control, sequencing, rate limits, and human approval gates before an agent runs. Includes a Vercel AI SDK adapter, interactive visualiser, and four example agents. Published on npm. I wrote about it here.
Elastic Hash - Zig implementation of elastic hashing from an academic paper. 4-8x faster inserts than std.HashMap at 99% load factor. A deep dive into hash table internals and SIMD optimization. I wrote about it here.
FizzBuzz Enterprise Edition - Satirical "enterprise-grade" FizzBuzz with event-driven architecture, AI-powered divisibility detection via LLM fallback chains, and comprehensive observability. Because sometimes you need to over-engineer the classics.
Music Round - Real-time multiplayer song guessing game. Players identify songs from Spotify previews, with daily challenges and battle royale mode. Built with React 19, TanStack Start, and Convex for real-time sync.
FlowAI - An agentic AI yoga instructor that generates personalized sessions. I wrote about the creativity vs. efficiency paradox here.
AIgument - Pit different AI models against each other in debates. You can assign personalities, control how spicy the arguments get, and save the good ones. Handles multiple LLM APIs with real-time streaming.
Foundations - 🏆 Won "Best in Category" at JumpStart Hackathon. A platform for job seekers to check companies' diversity stats and employee feedback. Went from idea to working product in 24 hours.
Auto Claude - Automated Claude Code agent runner that executes tasks from a queue file, handles context limits with automatic session restarts, and supports custom system prompts
petri-ts - A TypeScript Petri net engine on npm. Define places and transitions, fire them, analyse reachable/terminal states, check invariants, and export Graphviz DOT. Includes a load/fire/save dispatcher for persisting net instances in production (bring your own DB transaction).
Petri Net - A Petri net engine and three worked examples that teach concurrency concepts: from basic vocabulary (coffee brewing) to parallel approval (contracts) to resource contention (checkout). Includes a reachability analyser that proves invariants like "can't oversell inventory". I wrote about it here.
Forks & Locks - Empirically testing whether per-token entropy-adaptive decoding can close the gap between fixed temperature and SSD (Self-Distillation) on code generation. Confirms the theoretical ceiling of decode-time approaches and validates SSD gains with private-test-filtered training data (+2.98% pass@1). Benchmarked on LiveCodeBench v6 with RTX 4090.
Pointer Experiments - Testing pointer-based context management for long-running AI agents as an alternative to summarization. Replaces conversation content with lightweight chunk IDs and a retrieval tool, achieving 92% grounding vs 74% for summaries across cascaded compaction cycles.