The Lab
The case studies on this site carry evidence: a problem, an approach, a measured outcome, and a disclosed list of what's still missing. The Lab carries curiosity instead. These are things built for an audience of one — no customer to satisfy, no number worth quoting, nothing here is trying to sell you on a result. Each entry gets one paragraph: what it is, why it exists, and what the code honestly shows — graded where a grade already exists, and left unscored where inventing one would be the dishonest part.
Shadowcast Chronicle
What it is: A local-first AI Dungeon Master that runs a full D&D 5e campaign and publishes it as a printable novel.
Shadowcast Chronicle is a Progressive Web App that sits between a solo player and a language model and referees the game. Its first design principle is a boundary: the AI never does math — dice, hit points, saving throws, and combat resolution are all computed by a Python game engine, and the model only narrates results it was handed. Everything else grew outward from that line: a D&D 5e rules engine, a Konva battle map with line-of-sight and fog of war, an adventure diary that writes itself into a self-populating campaign codex, and an export path that turns a finished campaign into a 6×9 print-ready novel and an ePub. It got big — the generated API reference counts 249 routes across 37 groups, built across twenty numbered feature tiers — and what the repo teaches most clearly is where that growth didn't go: there is still no production authentication layer, the app binds to localhost by design, and the README states plainly that it is for local or trusted-network use only. A very large piece of software with an audience of one, honest about being exactly that.
Grade: not scored.
AIslop Fables
What it is: A corpus of satirical fables for the algorithm age, plus the pipeline that produces and grades them.
AIslop Fables is Aesop rewritten for the age of recommendation engines: short fables, each ending in an explicit MORAL and a trailing image prompt, credited to an author called A.I. Slop and prompted and edited by me. The part that makes it an engineering project sits underneath the writing. A pair of Python scripts extracts the source manuscripts and parses them into per-fable markdown with structured frontmatter — title, edition, moral, image prompt, word count — so the corpus is queryable rather than merely readable, and the scripts that have accumulated since cover image generation, PDF auditing, narration, and a visual red-team pass over the generated art. The plan document pushes further and makes house voice a measurable gate: a drift score that embeds each new draft and compares it against the centroid of the approved corpus, so "this doesn't sound like the others" becomes a number instead of an argument. It is the one project here where the quality bar is aesthetic and the tooling still tries to make it checkable — and the README still describes three editions as un-extracted PDFs while the content directories say otherwise, which is what happens when the work outruns its own documentation.
Grade: not scored.
crawl2rag
What it is: A CLI that turns a documentation site into a local vector store, and treats everything it crawls as hostile.
crawl2rag takes a site URL and gives back a queryable knowledge base: crawl, chunk on
headings, embed with sentence-transformers, store as flat numpy, query from the
terminal or over a small REST endpoint. It exists to implement an existing Claude
Code skill server-side, and the interesting design question turned out not to be
retrieval at all — it was trust. Crawled pages are untrusted input, so
audit is a first-class command that counts pages carrying
prompt-injection hints before a knowledge base is ever wired to an agent, and the
same scrub runs on every query response rather than only at ingest time. That is the
whole lesson of the thing: the retrieval half is a solved problem you can assemble
from libraries in an afternoon, and the half that actually needed design was deciding
that a corpus you didn't write is an attacker until proven otherwise. It is version
0.1.0 and labelled alpha by its own packaging; the pgvector and Qdrant adapters,
incremental re-embedding, and the MCP wrapper are roadmap, not code.
Grade: not scored.
The Millennium Prize Problems
What it is: Research surveys of the six open Clay problems, written to be honest about solving none of them.
Six directories, six long research notes — P vs NP, Riemann, Navier–Stokes, Yang–Mills, Hodge, Birch–Swinnerton-Dyer. Each one covers the formal statement, the historical timeline, the major partial results and who proved them, the barriers that make every known technique fail, the live research programs, the computational evidence, and a closing summary assessment. There is no code in this repo at all, which is the point: it is the same discipline the rest of this portfolio applies to building, applied instead to reading — go to the primary sources, write down what is actually proven, and separate it cleanly from what is merely believed. The second paragraph of the README is the whole ethos, and it is the first thing written: these problems remain unsolved, and what follows are rigorous surveys, not claimed solutions. Poincaré is excluded for the opposite reason — Perelman closed it in 2003, so it isn't an open problem anymore.
Grade: not scored.
Music Maker
What it is: A desktop music IDE with its own programming language, and the lowest grade on the scorecard.
Music Maker is a desktop composition environment where the score is source code. It
has a real custom language, not a metaphor for one: a Peggy grammar defines
statements for declaring synths, setting BPM and volume, adding effects, playing
notes, looping, sequencing, chords, rests, and one for handing a passage off to a
model to generate — synth lead = sawtooth, bpm 128,
loop 4 { play E4 0.5; play G4 0.5 } — parsed into an AST and handed to a
Tone.js engine with an AudioWorklet, wrapped in Electron, with a CodeMirror editor,
piano roll, mixer, and waveform view built around it. It also still carries the
boilerplate Vite starter README it was generated with, and a C+ on the scorecard.
Both things are true at once, and that is the entire reason this page exists: the
language parses, the audio engine runs, and the project around them was never
finished. It is the low row in a table that is otherwise mostly A's, and it stays
there.
Grade: C+.