Turing's Second Example
Turing's 1936 second machine — prints growing blocks of 1s by copying the last block and adding one.
Turing's second example printed as a real machine: it lays down 0 1 0 11 0 111 … by treating the tape as scratch space. Seven control states sweep right to the working end, copy the previous block of 1s using an erasable marker symbol, append one more 1, and sweep back to start the next block. The tape is a self-growing chain of Cell entities over the symbols { blank, 0, 1, marker }, and a single Head carries the control state.
A step up from the first example: real computation that reads, writes and re-reads the tape rather than printing blindly. It shows the modelling pattern coping with a two-directional working region — the head sweeps both ways, leaves and clears markers, and uses the blank background as a boundary — all on a tape that still extends itself one cell at a time as the blocks grow.
Linked tables with guaranteed referential integrity.
Generated REST endpoints. Also exposed as MCP tools.
OSI-compatible definition, emitted with the dataset.
# turing-second-example.osi.yaml — emitted automatically semantic_model: name: "turing-second-example" source: "duckdb://turing-second-example.db" entities: - name: cell primary_key: id dimensions: - name: state type: categorical - name: t type: time measures: - name: row_count agg: count - name: active agg: sum filter: "state = 'ACTIVE'"
More worlds.
Game of Life
Conway's automaton as a perfectly observable, deterministic grid world.
London Underground
A live tube graph — eleven lines, hundreds of trains, platforms held as a mutex.
Pac-Man
A self-playing arcade game — ghosts chase a flood-filled distance field.