AI projects & other dangerous ideas
Everything here is hosted, and none of it phones home.
Static pages on GitHub Pages, models on my own metal, data in your browser unless you tell it otherwise. Statuses below are honest rather than flattering — “in development” means exactly that. A portfolio of applied work: single-file applications, WebAssembly emulation and a self-hosted model interface. Each entry states its current maturity plainly.
Live now
Open them. They work.
D&D Item Ledger
A complete campaign economy in one HTML file: catalog values, what the party actually paid, multiplicative scalers for location and relationship and condition, and a sale price that reflects which shopkeeper is holding the purse.
Offline-first · IndexedDB or a real JSON file on disk · LLM-assisted item descriptions · exports
Open the ledger →Rolling Thunder
Namco's 1986 arcade cabinet, playable in a browser tab: MAME 0.277's Namco System 86 driver compiled to WebAssembly with Emscripten. Exact ROM match, real save states, DIP switches, the lot.
Built from source · 56 MB wasm served separately · no plugins, no ads, no 1996
Insert coin →SorkGPT
A clean, fast chat front-end for the models running on Spark-I-Tron 6000 — sessions, model picker, streaming answers. The interface is built; the wire to the machine is the next job.
Self-hosted models · going family-only once it's useful · honest stub, no fake answers
Try the stub →www.sorklin.com
Hand-written HTML and CSS. No framework, no build step, no cookie banner, no analytics script watching you read about risk quantification. The jokes are hand-written too.
Deployed by git push · renders offline-ish · try the corporate mode in the footer
In the workshop
Half-built, deliberately unhidden.
These exist as sketches and stubbornness. Listed here so I can't pretend they're further along than they are.
Exceedance curve explainer
An interactive page that teaches a board member to read a loss exceedance curve in four minutes, with the axes draggable so the shape stops being abstract.
Scenario drafting copilot
Turn a plain-English worry — “our payroll vendor got ransomed” — into a bounded, cost-annotated scenario ready to drop into a model.
The family gate
The auth wall that turns SorkGPT from “a page on the internet” into “the thing only my family can open”. First on the list, last to be finished — as always.
House rules
How this lot is put together.
- Static first. Pages on GitHub Pages. If a project needs a server, that's a decision I have to defend.
- Your data stays put. Local-first storage — IndexedDB or a file you own. Nothing leaves the browser unless you point it at something.
- Models on my hardware. Self-hosted by default. Someone else's pricing page shouldn't be a dependency.
- Big binaries included. The 56 MB emulator core ships with the site instead of from a separate repo: a first visit pulls a real arcade emulator, every visit after that is cache. That is the price of it working everywhere, and it is worth paying.
Under the hood
HTML · CSS · vanilla JS
no framework · no bundler
Emscripten 6.0.10 · MAME 0.277
IndexedDB · File System Access API
OpenAI-compatible chat wire
deployed by git push
Site source ↗
D&D Item Ledger — full manual ↗
Rolling Thunder — build notes ↗
The site ships in the time it takes to type a commit message. That is either liberating or a warning, depending on the commit.
A good deal of the typing here was done by a model I supervise. The architecture, the opinions and the blame are mine alone.
Built with assistance from large language models. Architecture, review and accountability are human.