Cat Dog Fish
Spin for a letter, fill every category before the clock runs out, then argue about whether Aardwolf counts. Up to 10 players, in the browser, free.
- TypeScript
- Cloudflare Workers
- Durable Objects
- WebSockets
Auction engines and operator consoles from the day job, games from the evenings, and tools built because the alternative was three pop-ups and a rate limit.
Spin for a letter, fill every category before the clock runs out, then argue about whether Aardwolf counts. Up to 10 players, in the browser, free.
A live spectrum auction you can run with a room full of people. Teams bid in real time over WebSockets, and the surplus they end up with is the score.
A padel sports game with simulated shot physics, ragdoll reactions and online multiplayer. In playable alpha with friends, and a long list of things still wrong with the serve.
A universal auction engine with an auctioneer console, live bidder screens and a results pipeline. Runs SMRA, clock and combinatorial formats from one configuration.
An ascending clock auction you can step through round by round. Change the activity rule or the increment and watch price discovery, demand reduction and efficiency move against each other.
A working demonstration of how I build data products: messy ingestion, entity resolution, a provenance-tracked warehouse, quality gates, and an application on top. Runs in a second, rebuilds byte-identically.
A spectrum intelligence platform: licence and award records across countries, band plan browsing, benchmark analytics and a natural language query layer over the whole dataset.
Qwen and Gemma on llama.cpp, with RAG and indexing over regulatory documents and a large personal library. Private data never leaves the machine, which is the whole reason it exists.
A first person horror game about a house that does not want you to leave. Zombie AI with real sensory systems, limb damage, a vendor economy and a chainsaw boss who is genuinely a problem.
A wrestling and MMA hybrid, and more interestingly, the Unity editor tooling that builds it. Batch animation retargeting, automated animator construction and a networked arena generator.
Model Context Protocol servers that let a coding agent drive FL Studio, Photoshop and Unity directly. Not chat about the software, actually operating it.
A desktop coding agent that runs entirely against local models. No API keys, no per-token bill, no code leaving the machine.
A daily automated sweep of regulator publications and industry sources, deduplicated, classified and summarised. Replaced a subscription and a lot of manual checking.
A reproducible pipeline that turns messy regulator data into comparable international price benchmarks, and then into finished reports without anyone touching a spreadsheet.
A winner determination and core pricing lab for combinatorial spectrum auctions. Implements the canonical algorithms from the literature and checks them against published results rather than trusting the output.
A scoring and valuation model for comparative selection awards, where spectrum goes to the best proposal rather than the highest bid. Built to answer what a commitment is actually worth before offering it.
Valuation tooling for mobile satellite spectrum, built on population and terrain data rather than national averages. Because a satellite band is worth what the ground under it is worth.
Host-authoritative netcode, prediction and reconciliation across three games, and the data structures that make the simulation cheap enough to run at frame rate.
A browser for tens of thousands of game assets across a dozen licensed packs, with previews, so I stop rebuying things I already own and stop hand-rolling things I already have.
A site for a football coaching business, and a CRM to go with it: sessions, players, attendance and payments, wired into the WhatsApp and Gmail he already runs the business from.