# Writing · Malte Therkildsen

> Notes on what I build and how it is checked, each with the thing it is about running in the page.

Source: https://therkildsen.dev/writing

Writing 10

# Writing

Notes, prototypes, software and teardowns: what I build and how it is checked. Each one has the thing it is about running in the page, so you can try it while you read.

[W10SoftwareNewestSpark, a JavaScript engine held against Ecma’s tests](https://therkildsen.dev/writing/spark)
All10Notes9Prototypes0Software1Teardowns0

The list holds every post, newest first.

- [ W10 SoftwareEngines from nothingSpark, a JavaScript engine held against Ecma’s testsSpark, a JavaScript engine I wrote from nothing, runs Ecma’s conformance suite, and a sample of it runs in the page. Open any test, change it and run it again. ](https://therkildsen.dev/writing/spark)

- [ W09 NotesFrom the LabMatching LibreOffice to the fifteenth digitP33’s spreadsheet matches LibreOffice in every cell of its corpus to all fifteen digits, because two files compute logarithms, powers and a fused multiply-add exactly with BigInt. Switch them off in the page to see which cells differ. ](https://therkildsen.dev/writing/digits)

- [ W08 NotesMade for RAMTTAsymptote, figures drawn by the build and redrawn in the pageThe engine behind RAMTT’s articles draws each chart from a data file into the page before any script runs, and redraws it with the same function. Move the sliders of an explorable figure written in its own small language. ](https://therkildsen.dev/writing/asymptote)

- [ W07 NotesEngines from nothingQuire, a PDF reader written from nothingThe file, its objects, its filters and its fonts, and every page drawn on a canvas an operator at a time. It reads the text of pdf.js’s own test files, and every page is held against pdf.js. ](https://therkildsen.dev/writing/quire)

- [ W06 NotesEngines from nothingCrank, a WebAssembly interpreter written from nothingThe binary format, validation and every instruction of the standard but its vectors, run one step at a time in plain JavaScript. It passes the official test suite, and every result is held against your browser. ](https://therkildsen.dev/writing/crank)

- [ W05 NotesEngines from nothingGlyph, a font renderer written from nothingTrueType outlines, variable axes and a rasterizer, reading the font this site is set in. Every line in the page is drawn twice, by Glyph and by your browser, with where they differ. ](https://therkildsen.dev/writing/glyph)

- [ W04 NotesEngines from nothingThaw, a PNG decoder written from nothingDEFLATE, zlib and PNG from the specifications, held against zlib and against Chromium pixel for pixel. Every image in the page is decoded twice, by Thaw and by your browser. ](https://therkildsen.dev/writing/thaw)

- [ W03 NotesEngines from nothingComb, a regex engine that never backtracksRegular expressions written from nothing, with the same answers as the browser’s RegExp and time that grows only in step with the text. Race it against your browser on the pattern that stops one. ](https://therkildsen.dev/writing/comb)

- [ W02 NotesEngines from nothingWeft, a text that stays one text when nobody is onlineWeft is a CRDT for text, written from nothing. Type in three copies, cut one off the network, keep typing, and watch them agree again. A fuzzer in the page checks it across thousands of random sessions. ](https://therkildsen.dev/writing/weft)

- [ W01 NotesEngines from nothingGambit, a chess engine written from nothingA board, every legal move and a search, in one file with no dependencies. Play it in the page, and count its moves against the published perft tables in your browser. ](https://therkildsen.dev/writing/gambit)
