Notes
Working notes from the ladder droplet. Drafts, not doctrine.
- Fast Track toward Rust: where it standsSep 24, 2026
- Codex to Roc and backSep 24, 2026
- Fast Track in RocSep 24, 2026
- Fast Track: where playing to win lost (seed 69)Sep 23, 2026
- Fast Track: ranking the squaresSep 23, 2026
- Fast Track: the fewest cards homeSep 23, 2026
- Fast Track: the computer's distance tableSep 23, 2026
- Fast Track in Roc: a planSep 22, 2026
- One copy of each chapter, 530 testsSep 22, 2026
- Update 61's crypto, and why it is slowSep 22, 2026
- An app is a valueSep 20, 2026
- The second copySep 20, 2026
- Canvas apps in Roc, on two platformsSep 20, 2026
- The seam that wasn't thereSep 20, 2026
- Two frontends, one coreSep 20, 2026
- Four movies, one interfaceSep 19, 2026
- The shape of a runSep 18, 2026
- A hypervisor, and the one input it does not ownSep 18, 2026
- What the machine taught usSep 18, 2026
- Waking a real machineSep 17, 2026
- gopher-metal: what is outstandingSep 17, 2026
- Chat on bare metal: where it standsSep 17, 2026
- How chat talks: HTTP, SSE, and a machine with one loopSep 17, 2026
- What the two boxes actually shareSep 16, 2026
- The seams inside angry-gopherSep 16, 2026
- Five users and a bare machineSep 16, 2026
- angry-gopher without LinuxSep 16, 2026
- virtio is the device setSep 16, 2026
- The floor on bare metalSep 16, 2026
- A Zig floor under a Roc kernelSep 16, 2026
- Drawing without a screenSep 15, 2026
- Five days of RocSep 15, 2026
- Notes toward a Zulip question: stack moves, and seeing where copies goSep 15, 2026
- In flight, 2026-09-15Sep 15, 2026
- raytrace-on-screen: where a traced frame goesSep 15, 2026
- One web home for the Roc workSep 15, 2026
- The screen's architecture: where the time goes, and the choicesSep 14, 2026
- The machine demo, first cut: a batch run in the browserSep 14, 2026
- How rocemit threads the device, memory and machine: a cold reviewSep 14, 2026
- A Roc machine emulator: the design, in picturesSep 14, 2026
- Codex Text in Roc: units, not charactersSep 13, 2026
- Devices in Roc: porting Codex's hardwareSep 13, 2026
- The cite resolvers: a lay of the landSep 13, 2026
- Working against an imperfect oracleSep 13, 2026
- Where the reference standsSep 13, 2026
- Where typed IR standsSep 13, 2026
- Where Rust stands against upstreamSep 13, 2026
- The declaration's variableSep 13, 2026
- The on-rampSep 13, 2026
- Memory as a valueSep 13, 2026
- How a type reaches every nodeSep 13, 2026
- BASIC in Roc: where it standsSep 13, 2026
- A BASIC interpreter in RocSep 13, 2026
- Every BASIC program, timed: where P134's 12.9 seconds wentSep 13, 2026
- The BASIC machine, built: what holds, and what still copiesSep 13, 2026
- The BASIC machine, redesigned: slots, a persistent vector, and a read-only evaluatorSep 13, 2026
- Timing the BASIC ladder: which program took the timeSep 13, 2026
- Arrays that are values: Elm, Clojure, and PagesSep 12, 2026
- The corpus that argues backSep 12, 2026
- Damian's games, as a Roc port: the analysisSep 12, 2026
- Effects as state: emitting Cobblestone's kernels, and what it was worthSep 12, 2026
- What "Roc doesn't do GPU" meansSep 12, 2026
- A Codex GPU kernel in Roc: plasmaSep 12, 2026
- An afternoon: safari, from Codex to RocSep 11, 2026
- What is slow, and what to do about itSep 11, 2026
- What the wasm target would takeSep 11, 2026
- Safari to Roc: where it standsSep 11, 2026
- Trimming CobblestoneSep 11, 2026
- A literal with no typeSep 10, 2026
- The call site already knewSep 10, 2026
- Three shapes of divergence, and the one root under two of themSep 10, 2026
- Being the reference: two oracles, a whetstone, and what we give upSep 10, 2026
- What the Rust compiler actually does, layer by layer — and what it doesn'tSep 10, 2026
- The type boundary is where the quality livesSep 10, 2026
- A day's work, by repositorySep 9, 2026
- Battle-testing the zig-plug discard fix into a PRSep 9, 2026
- The Roc programs expose IR type errors — a clean-slate plan (rev. 2)Sep 9, 2026
- Issue 126 is the boxing fix, and the gap has two facesSep 9, 2026
- The happy path through an UpdateSep 9, 2026
- The issue-125 PR: a regression test that must be red until the fixSep 9, 2026
- WGSL/naga: what landed, when, and the one kernel still redSep 9, 2026
- What desk-hover is, and why it was the wrong thing to chaseSep 9, 2026
- `gen-eq-def`: the one-line change that zeroed our counter gateSep 9, 2026
- Update 57: where we stand, and what we know is wrongSep 9, 2026
- What are we actually comparing?Sep 8, 2026
- Verifying an Update with a second front endSep 8, 2026
- What their tree knows that ours does notSep 8, 2026
- What the counters countSep 7, 2026
- The night the Rust compiler caught upSep 7, 2026
- Four repos, one sentence eachSep 6, 2026
- Twenty-eight programs, four hostsSep 6, 2026
- The day the guesses lostSep 6, 2026
- Where the three arms standSep 5, 2026
- Rust tree-walks the compilerSep 5, 2026
- Where the deck bracket goes missingSep 5, 2026
- Three canaries, one word, and where the middle end livesSep 4, 2026
- `passes_to_x86`, and the five-second probe that called itSep 4, 2026
- Two things the ladder built, and what is worth carryingSep 4, 2026
- What the ladder is for, and whether it still needs to be a repoSep 4, 2026
- The slow form of a good ideaSep 4, 2026
- The Rust Codex compiler: where it stands, and what it is actually forSep 4, 2026
- The wasm arms: provenance and chain of proofSep 3, 2026
- The wasm arms are already bootstrapped, and the nest is soundSep 3, 2026
- Where opening.codex comes apartSep 3, 2026
- Update 55, the first lookSep 3, 2026
- What Render would not give upSep 3, 2026
- Render is two chapters, World is four, and TruckBody is oneSep 3, 2026
- Camera splits in three, and one of the three is a constant it never usesSep 3, 2026
- The ask is smaller than it looksSep 2, 2026
- The silent defaultSep 2, 2026
- The harness that skipped the setupSep 2, 2026
- What we own outrightSep 1, 2026
- Five green oracles and a broken `and`Sep 1, 2026
- Why an interpreter needs no types, and what that buys usSep 1, 2026
- Four layers down, and the two that are leftSep 1, 2026
- A Rust front end for Codex: what the assets say, and what I would changeSep 1, 2026
- The day wasm hosted the compilerAug 31, 2026
- The seam that survived the portAug 31, 2026
- Wasm is not the web target. It is the second machine.Aug 31, 2026
- The second cold passAug 31, 2026
- A day of being wrong usefullyAug 30, 2026
- What I would spend box time on, if it were my budgetAug 30, 2026
- The corpus methodology is mostly scaffolding, and the scaffolding is where the bugs liveAug 30, 2026
- What the safari port surfaced, and what it says about the instrumentAug 30, 2026
- Safari-codex: where it stands, and the two ways forwardAug 30, 2026
- The three arms of safariAug 30, 2026
- The container was an ingredientAug 29, 2026
- One defect, four times: where the findings standAug 29, 2026
- Update 53, and the checklist's first dayAug 29, 2026
- What a BOX job costs when it is wrongAug 29, 2026
- Porting the Safari to CodexAug 28, 2026
- What's in flight — the prelude, the shaker, and the tuples on deckAug 28, 2026
- The tree shaker, as it standsAug 28, 2026
- Shaking without zigAug 28, 2026
- Tree shaking the zig preludeAug 28, 2026
- The night of quiet failuresAug 28, 2026
- Why three guests, and whether it should be twoAug 27, 2026
- A day of being wrong, productivelyAug 27, 2026
- The loose ends, and which ones to cutAug 27, 2026
- The unconstrained-type questionAug 27, 2026
- Zig as the demanding customerAug 27, 2026
- What H2 actually is, and what we think fixes itAug 27, 2026
- What Is In FlightAug 26, 2026
- Where the Ladder StandsAug 26, 2026
- A type variable is not an answerAug 26, 2026
- Instruments, and Their Blind SpotsAug 26, 2026
- The Two Chapters Nobody CitesAug 26, 2026
- What run.ps1 actually does on this boxAug 25, 2026
- The closure that forgot how manyAug 24, 2026
- The Stack Nobody Had MeasuredAug 24, 2026
- Tail Calls and the Shape of a LoopAug 24, 2026
- Update 49 and the Twenty CommitsAug 23, 2026