Logical Art
Interactive explanations of difficult machines.
A hole punched in card stock in 1928 and a neural network trained in a browser tab are the same idea a century apart. Everything here sits somewhere on that line, and all of it is working: every number live, every failure honest, nothing faked.
New here? Punch a card takes about a minute. Front Panel (on frontpanel.dev) is the one to sit down with.
Showing 57 built
-

Baudot
Five bits cost the same for every letter, so frequency bought holes instead of time.
/bits/baudot/ -

Rangekeeper (on rangekeeper.dev)
The answer is on both sides of the equation, so it had to be a machine.
rangekeeper.dev -

The Adder
Each bit adds correctly, and the answer still depends on the bit to its right.
/nibbles/adder/ -

Trigger
Every sweep starts at the same point, so repetitions land on each other instead of smearing.
/nibbles/trigger/ -

Bit, Nibble, Byte
Why a byte is eight, why a nibble is one hex digit, and how the bases fell out of the hardware.
/bits/bit-nibble-byte/ -

Transistor
A relay is open or closed; this has a continuous middle, so it amplifies as well as switches.
/bits/transistor/ -

Score Reel
An electromechanical table cannot add, it can only count at the speed of a motor.
/nibbles/score-reel/ -

Huffman
The two rarest symbols marry, and the tree that falls out is provably the best.
/nibbles/huffman/ -

Double Buffer planned
The frame you are looking at is not the one being drawn, and if you look at the wrong moment you see both.
-

Garbage planned
Memory becomes garbage when nobody can reach it, not when somebody says it is finished.
-

The Pipeline planned
The next instruction starts before this one finishes, until it needs something that does not exist yet.
-

Round Robin planned
Every program believes it owns the processor because none of them gets to keep it.
-

Context Switch planned
Your program loses the processor, and when it gets it back nothing appears to have happened.
-

Bresenham planned
A straight line, drawn with no division and no fractions.
-

Out of Order planned
The processor runs the program out of order so that you can watch it run in order.
-

Deadlock planned
Each program is waiting for the other to release the thing it cannot release.
-

Fifteen Planes
A generator that passes every test you thought to run, and lands on fifteen planes.
/nibbles/fifteen-planes/ -

DRAM Refresh planned
The bit disappears unless the machine keeps reading it and writing it back.
-

Compare and Swap planned
Change it only if nobody changed it since you looked.
-

Bloom Filter planned
No means no, and yes means maybe.
-

Line Mode (on linemode.dev)
You could telnet to port 80 and be the browser, and then you could not.
linemode.dev -

The Inode planned
The filename is not the file.
-

Raster planned
A picture is a grid of numbers, and a colour is three of them.
-

Avalanche planned
Change one bit and half the answer changes.
-

Sequence Numbers planned
The stream arrives in order and nothing underneath it is in order.
-

Front Panel (on frontpanel.dev)
A working 1975 Altair 8800 you program by flipping switches.
frontpanel.dev -

Diffie-Hellman
The secret is not among the things that crossed the wire, and everything that did is on the screen.
/nibbles/diffie-hellman/ -

Dithering planned
The error you cannot remove, pushed into the pixels next door.
-

Zero Address
Assembly for a processor nobody built, so one file runs everywhere.
/nibbles/zero-address/ -

Logical Clock planned
The clocks disagree and the machines still agree which event happened first.
-

MVCC planned
The reader never waits, because it is reading a version nobody is writing.
-

Branch Prediction
The processor runs an instruction before knowing whether it should exist.
/nibbles/branch-prediction/ -

Write-Ahead Log
The database says done before half the database has been written.
/nibbles/write-ahead-log/ -

Eight Sprites
Eight per scanline and the ninth is dropped, which is why they flickered.
/bits/eight-sprites/ -

False Sharing planned
Two cores never touch the same variable and still fight over it.
-

Cache Coherence planned
Two processors both have a copy, one writes, and one of the copies is now a lie.
-

LZW planned
The dictionary is never sent, and both ends build the same one out of the data.
-

Premultiplied Alpha planned
The edge of the cut-out is wrong unless you multiply before you blend.
-

Erase Block planned
The drive cannot overwrite the page you asked it to overwrite.
-

Slow Start
The network never says how fast you may send, so TCP finds out by hurting it.
/nibbles/slow-start/ -

RAID Parity planned
A whole disk is gone and XOR still knows every byte that was on it.
-

Longest Prefix planned
Three routes match the address, and the longest one wins.
-

Winsock (on winsock.dev)
The two seconds after the modem stopped screeching, before anything worked.
winsock.dev -

TLS Handshake planned
Everybody hears the conversation that agrees the key nobody else has.
-

PNG Filters planned
The compression happens after something else has made the bytes boring.
-

Gamma planned
The numbers are not brightness, which is why the average of two of them is the wrong colour.
-

Merge Collapse
The sort in every standard library, and the invariant it did not keep.
/nibbles/merge-collapse/ -

Merkle DAG
A commit holds hashes pointing at hashes, and never holds your repository.
/nibbles/merkle-dag/ -

Majority planned
A write is permanent before every machine has heard about it.
-

Rowhammer planned
Reading one address changes a different address you never wrote.
-

Spectre planned
The instruction never happened, and the cache remembers that it did.
-

LLM Lab (on watchitlearn.com)
Train a tiny language model and watch every number as it learns.
watchitlearn.com
Why these machines
A hole punched in card stock and a weight in a matrix are the same kind of object: a decision written down somewhere a machine can read it back. Everything here is a point on that line, and the line is the reason the set is what it is.
The big ones are not chosen from a syllabus. Each is something I actually sat in front of. I toggled a program into an Altair through the front panel switches in the late 1970s, and ran bulletin boards in the 1980s when getting online meant listening to a modem negotiate at 300 baud. In college and on contract work I punched decks and leased mainframe time by the hour on an AS/400 and a 9221, in FORTRAN, COBOL, PL/I, RPG and REXX. I served aboard the USS Missouri in Desert Shield and Desert Storm, where the guns were still being aimed by a mechanical analog computer designed in the 1930s. In 1994 I was at Spry when the web stopped being something you had to already be inside. Now I build with language models.
That constraint costs a lot of good subjects, and it buys the one thing this studio is for: I can tell you where the simulation departs from the real machine, because I used the real machine. Every one of them ends with a section saying what is faithful, what is approximated, and what is simply wrong on purpose, with the sources that settle it.
The work is sized in three, named after what they are. The rule about my own history applies only to the largest, which is what lets the small pieces cover subjects that are worth building and are nobody's biography.
- Bit
- One idea, with nothing in it handing off to anything else. Lives on logicalart.us. 14 here, 12 built
- Nibble
- One mechanism in three or four stages, each one reachable only through the one before. Lives on logicalart.us. 67 here, 38 built
- Byte
- A complete machine you operate, on its own domain, with its own sources and honesty ledger. 7 here
Nothing here is a video of a machine. If a number is on the screen, something computed it. How that is checked, what counts as a source, and what happens when this is wrong: the method. New machines arrive in the feed.



































