Software I built because I wanted it to exist. Three of these you can download and run today. One is unfinished, and says so on its own front page — which is the more useful thing to read, because it is where the reasoning shows.
Overwrites deleted files, free space and spare memory on an Android phone. The unusual part is the documentation: flash storage quietly moves blocks around underneath you, so the app states which of its three modes guarantees anything and which cannot, and keeps its own audit of what has never been tested on a real device.
It works out how you sort your inbox and can pass those rules to other people's copies. A shared rule cannot carry your mail, and not because the code is careful: the type that describes one has eight shapes and none of them can refer to a message body.
tests pass
138
shareable rule shapes
8
of them touch a body
0
Two of these six exist mainly to record a claim I had to withdraw after measuring it. That is the useful half of building things nobody asked for.
Seventy-eight lessons and ninety-one deliberately broken programs. Every exercise declares the exact compiler error it is built to teach, and a script compiles all ninety-one against the real rustc to check that error still appears — so a well-meaning fix that quietly destroys a lesson fails the build.
Every account takes its own route through Tor so a node cannot tie them together. I built the measurement to prove it, went below the Tor client library to read the actual circuit identities, and found the result did not support the sentence on the website. The sentence changed.
tests pass
439
Tor circuit per account
1
releases yet
0
Rebuilding the Forge-built site from nothing
$ rm -rf static/ && forge build --root . strict findings: 0 duration: 1161msforge build OK# 62 phases; output byte-identical to what the server was serving
A compiler that turns typed documents into a website and refuses to ship one that fails its own audit: contrast, landmarks, security headers, page weight, buttons that go nowhere. Delete a site's built output, run the build again, and the bytes come back identical.
Online voting where the voter can confirm their own ballot is on the record. The browser fetches a published root and an inclusion proof, both public data identical for every caller, and folds them itself — so the server is never asked to look up who voted for what.
test files
237
live clients
2
proof you can recompute
1
Why these sit apart from the client work
Client work is judged on whether it runs and keeps running, and the four sites under Work do. These are judged differently. Nobody commissioned them, so each one exists to settle a question I could not settle by reading: whether a wipe tool can honestly promise anything on a phone, whether a sorting rule can be shared without carrying mail with it, whether a beginner learns faster when the program refuses to tell them the answer.
It is also where the working out is visible. Three of them ship a document arguing against their own strongest claim, and I would rather a prospective client read one of those than a page on which everything went right the first time.
The rest of it
Seventy-six public repositories
These six are the ones worth an hour of reading. The index has the rest, grouped and honestly labelled — including the ones that went nowhere.