{
  "title": "Artifact Shelf",
  "description": "A shelf of small interactive web artifacts: simulations, explainers, generative art, games and toys. Each one is a single HTML file you can run, read and keep.",
  "url": "https://dogum.github.io/artifact-shelf/",
  "generated": "2026-10-12T00:08:53.022Z",
  "count": 21,
  "items": [
    {
      "no": 21,
      "slug": "electric-fire",
      "title": "Electric Fire",
      "summary": "Lightning and thunder computed from the physics: a leader grown through the electric field, the return stroke, and thunder built from the bolt's shape.",
      "shelf": "simulations",
      "tags": [
        "lightning",
        "thunder",
        "dielectric-breakdown",
        "lichtenberg-figures",
        "atmospheric-electricity",
        "webgl"
      ],
      "made": "2026-10-10",
      "updated": null,
      "url": "https://dogum.github.io/artifact-shelf/a/electric-fire/",
      "play": "https://dogum.github.io/artifact-shelf/a/electric-fire/play/",
      "download": "https://dogum.github.io/artifact-shelf/a/electric-fire/electric-fire.html",
      "poster": "https://dogum.github.io/artifact-shelf/media/electric-fire/poster.webp",
      "bytes": 146215,
      "madeOf": [
        "WebGL",
        "Canvas 2D",
        "SVG"
      ],
      "libraries": []
    },
    {
      "no": 17,
      "slug": "great-variety-of-colours",
      "title": "A Great Variety of Colours",
      "summary": "A live soap film and soap bubble whose colours come from exact thin-film optics, as the film drains, turns black and bursts.",
      "shelf": "simulations",
      "tags": [
        "thin-film-interference",
        "soap-film",
        "optics",
        "colour-science",
        "fluid-dynamics",
        "webgl"
      ],
      "made": "2026-10-09",
      "updated": null,
      "url": "https://dogum.github.io/artifact-shelf/a/great-variety-of-colours/",
      "play": "https://dogum.github.io/artifact-shelf/a/great-variety-of-colours/play/",
      "download": "https://dogum.github.io/artifact-shelf/a/great-variety-of-colours/great-variety-of-colours.html",
      "poster": "https://dogum.github.io/artifact-shelf/media/great-variety-of-colours/poster.webp",
      "bytes": 99585,
      "madeOf": [
        "WebGL",
        "Canvas 2D",
        "SVG"
      ],
      "libraries": []
    },
    {
      "no": 15,
      "slug": "belousovs-clock",
      "title": "Belousov's Clock",
      "summary": "The Belousov–Zhabotinsky reaction, run live from the Oregonator equations: a chemical clock, waves you tap and cut into spirals, and spirals in the heart.",
      "shelf": "simulations",
      "tags": [
        "belousov-zhabotinsky",
        "reaction-diffusion",
        "oregonator",
        "spiral-waves",
        "excitable-media",
        "webgl"
      ],
      "made": "2026-10-09",
      "updated": null,
      "url": "https://dogum.github.io/artifact-shelf/a/belousovs-clock/",
      "play": "https://dogum.github.io/artifact-shelf/a/belousovs-clock/play/",
      "download": "https://dogum.github.io/artifact-shelf/a/belousovs-clock/belousovs-clock.html",
      "poster": "https://dogum.github.io/artifact-shelf/media/belousovs-clock/poster.webp",
      "bytes": 138288,
      "madeOf": [
        "WebGL",
        "Canvas 2D",
        "SVG"
      ],
      "libraries": []
    },
    {
      "no": 16,
      "slug": "grand-complication-atlas",
      "title": "Grand Complication Atlas",
      "summary": "A working 3D model of a grand complication pocket watch that keeps real time from its own escapement, with a tourbillon, perpetual calendar and chimes.",
      "shelf": "explainers",
      "tags": [
        "watchmaking",
        "horology",
        "tourbillon",
        "perpetual-calendar",
        "minute-repeater",
        "three-js"
      ],
      "made": "2026-10-09",
      "updated": null,
      "url": "https://dogum.github.io/artifact-shelf/a/grand-complication-atlas/",
      "play": "https://dogum.github.io/artifact-shelf/a/grand-complication-atlas/play/",
      "download": "https://dogum.github.io/artifact-shelf/a/grand-complication-atlas/grand-complication-atlas.html",
      "poster": "https://dogum.github.io/artifact-shelf/media/grand-complication-atlas/poster.webp",
      "bytes": 159391,
      "madeOf": [
        "three.js",
        "Canvas 2D",
        "SVG"
      ],
      "libraries": [
        "three.js"
      ]
    },
    {
      "no": 18,
      "slug": "karmans-street",
      "title": "Kármán's Street",
      "summary": "Vortex shedding and the Kármán vortex street, run in a live lattice-Boltzmann wind tunnel that measures its own drag, lift and Strouhal number.",
      "shelf": "simulations",
      "tags": [
        "vortex-shedding",
        "karman-vortex-street",
        "lattice-boltzmann",
        "fluid-dynamics",
        "strouhal-number",
        "webgl"
      ],
      "made": "2026-10-09",
      "updated": null,
      "url": "https://dogum.github.io/artifact-shelf/a/karmans-street/",
      "play": "https://dogum.github.io/artifact-shelf/a/karmans-street/play/",
      "download": "https://dogum.github.io/artifact-shelf/a/karmans-street/karmans-street.html",
      "poster": "https://dogum.github.io/artifact-shelf/media/karmans-street/poster.webp",
      "bytes": 94427,
      "madeOf": [
        "WebGL",
        "Canvas 2D",
        "SVG"
      ],
      "libraries": []
    },
    {
      "no": 19,
      "slug": "klangfiguren",
      "title": "Klangfiguren",
      "summary": "Chladni figures from the real plate equation: a steel plate solved in the browser and driven at a chosen note, with up to 131,072 grains of sand on it.",
      "shelf": "simulations",
      "tags": [
        "chladni-figures",
        "plate-vibration",
        "acoustics",
        "rayleigh-ritz",
        "particles",
        "webgl"
      ],
      "made": "2026-10-09",
      "updated": null,
      "url": "https://dogum.github.io/artifact-shelf/a/klangfiguren/",
      "play": "https://dogum.github.io/artifact-shelf/a/klangfiguren/play/",
      "download": "https://dogum.github.io/artifact-shelf/a/klangfiguren/klangfiguren.html",
      "poster": "https://dogum.github.io/artifact-shelf/media/klangfiguren/poster.webp",
      "bytes": 171664,
      "madeOf": [
        "WebGL",
        "Canvas 2D",
        "SVG"
      ],
      "libraries": []
    },
    {
      "no": 20,
      "slug": "letters-from-the-sky",
      "title": "Letters from the Sky",
      "summary": "Snow crystals grown on the GPU from a published lattice model, steered through the temperatures and humidities of Nakaya's snow crystal diagram.",
      "shelf": "simulations",
      "tags": [
        "snow-crystals",
        "crystal-growth",
        "lattice-model",
        "nakaya-diagram",
        "ice",
        "webgl"
      ],
      "made": "2026-10-09",
      "updated": null,
      "url": "https://dogum.github.io/artifact-shelf/a/letters-from-the-sky/",
      "play": "https://dogum.github.io/artifact-shelf/a/letters-from-the-sky/play/",
      "download": "https://dogum.github.io/artifact-shelf/a/letters-from-the-sky/letters-from-the-sky.html",
      "poster": "https://dogum.github.io/artifact-shelf/media/letters-from-the-sky/poster.webp",
      "bytes": 107508,
      "madeOf": [
        "WebGL",
        "Canvas 2D",
        "SVG"
      ],
      "libraries": []
    },
    {
      "no": 13,
      "slug": "lamplight-shadow-theater",
      "title": "Lamplight Shadow Theater",
      "summary": "Make a hand shadow in front of your webcam, hold it still, and it peels off the paper screen as a fox, rabbit, dog, swan or bird with a name and a mood.",
      "shelf": "toys",
      "tags": [
        "hand-tracking",
        "mediapipe",
        "webcam",
        "shadow-puppets",
        "canvas-2d",
        "web-audio"
      ],
      "made": "2026-10-08",
      "updated": null,
      "url": "https://dogum.github.io/artifact-shelf/a/lamplight-shadow-theater/",
      "play": "https://dogum.github.io/artifact-shelf/a/lamplight-shadow-theater/play/",
      "download": "https://dogum.github.io/artifact-shelf/a/lamplight-shadow-theater/lamplight-shadow-theater.html",
      "poster": "https://dogum.github.io/artifact-shelf/media/lamplight-shadow-theater/poster.webp",
      "bytes": 176758,
      "madeOf": [
        "MediaPipe",
        "Canvas 2D",
        "Web Audio"
      ],
      "libraries": [
        "MediaPipe"
      ]
    },
    {
      "no": 14,
      "slug": "recipe-diagram",
      "title": "Recipe Diagram",
      "summary": "Write a recipe as indented plain text and get a flow-table diagram, a written method, pan-size scaling and a step-by-step cook mode with timers.",
      "shelf": "tools",
      "tags": [
        "recipes",
        "recipe-scaling",
        "unit-conversion",
        "plain-text-format",
        "tree-layout",
        "html-table"
      ],
      "made": "2026-10-08",
      "updated": null,
      "url": "https://dogum.github.io/artifact-shelf/a/recipe-diagram/",
      "play": "https://dogum.github.io/artifact-shelf/a/recipe-diagram/play/",
      "download": "https://dogum.github.io/artifact-shelf/a/recipe-diagram/recipe-diagram.html",
      "poster": "https://dogum.github.io/artifact-shelf/media/recipe-diagram/poster.webp",
      "bytes": 168561,
      "madeOf": [
        "Canvas 2D",
        "SVG",
        "Web Audio"
      ],
      "libraries": []
    },
    {
      "no": 11,
      "slug": "catching-booster-12",
      "title": "Catching Booster 12",
      "summary": "The first tower catch of a Super Heavy booster, rebuilt from webcast telemetry as eight drawing sheets, ending in a catch sandbox you can fly.",
      "shelf": "explainers",
      "tags": [
        "rockets",
        "starship",
        "telemetry",
        "monte-carlo",
        "svg-diagrams"
      ],
      "made": "2026-10-07",
      "updated": null,
      "url": "https://dogum.github.io/artifact-shelf/a/catching-booster-12/",
      "play": "https://dogum.github.io/artifact-shelf/a/catching-booster-12/play/",
      "download": "https://dogum.github.io/artifact-shelf/a/catching-booster-12/catching-booster-12.html",
      "poster": "https://dogum.github.io/artifact-shelf/media/catching-booster-12/poster.webp",
      "bytes": 257590,
      "madeOf": [
        "Canvas 2D",
        "SVG"
      ],
      "libraries": []
    },
    {
      "no": 12,
      "slug": "desk-by-daylight",
      "title": "Desk, by daylight",
      "summary": "A desk seen from above, lit by the real sun and moon for any place and time, with a working sundial, window-pane shadows and a ray-marched WebGL scene.",
      "shelf": "simulations",
      "tags": [
        "webgl",
        "ray-marching",
        "sundial",
        "solar-position",
        "analemma",
        "moon-phase"
      ],
      "made": "2026-10-07",
      "updated": null,
      "url": "https://dogum.github.io/artifact-shelf/a/desk-by-daylight/",
      "play": "https://dogum.github.io/artifact-shelf/a/desk-by-daylight/play/",
      "download": "https://dogum.github.io/artifact-shelf/a/desk-by-daylight/desk-by-daylight.html",
      "poster": "https://dogum.github.io/artifact-shelf/media/desk-by-daylight/poster.webp",
      "bytes": 122112,
      "madeOf": [
        "WebGL",
        "Canvas 2D",
        "SVG"
      ],
      "libraries": []
    },
    {
      "no": 9,
      "slug": "merrow-pocket-plan",
      "title": "Merrow Pocket Plan",
      "summary": "A pocket street map of an invented city, scored into 32 panels you fold like real paper in 3D. Somewhere in its folds is a walk the city forgot.",
      "shelf": "games",
      "tags": [
        "three-js",
        "canvas-2d",
        "paper-folding",
        "puzzle",
        "procedural-city",
        "maps"
      ],
      "made": "2026-10-05",
      "updated": null,
      "url": "https://dogum.github.io/artifact-shelf/a/merrow-pocket-plan/",
      "play": "https://dogum.github.io/artifact-shelf/a/merrow-pocket-plan/play/",
      "download": "https://dogum.github.io/artifact-shelf/a/merrow-pocket-plan/merrow-pocket-plan.html",
      "poster": "https://dogum.github.io/artifact-shelf/media/merrow-pocket-plan/poster.webp",
      "bytes": 174627,
      "madeOf": [
        "three.js",
        "Canvas 2D",
        "SVG"
      ],
      "libraries": [
        "three.js"
      ]
    },
    {
      "no": 10,
      "slug": "stave",
      "title": "Stave",
      "summary": "A typeface drawn on twelve tuned strings. Type a line and each letter plays where its strokes end, turn and cross, as plucked strings, bows and bells.",
      "shelf": "toys",
      "tags": [
        "web-audio",
        "karplus-strong",
        "fm-synthesis",
        "typography",
        "canvas-2d",
        "music"
      ],
      "made": "2026-10-05",
      "updated": null,
      "url": "https://dogum.github.io/artifact-shelf/a/stave/",
      "play": "https://dogum.github.io/artifact-shelf/a/stave/play/",
      "download": "https://dogum.github.io/artifact-shelf/a/stave/stave.html",
      "poster": "https://dogum.github.io/artifact-shelf/media/stave/poster.webp",
      "bytes": 125690,
      "madeOf": [
        "Canvas 2D",
        "SVG",
        "Web Audio"
      ],
      "libraries": []
    },
    {
      "no": 8,
      "slug": "infestation",
      "title": "Infestation",
      "summary": "A page that draws its own TypeScript source, then lets four species of bug eat it token by token while two spiders hunt them and their genes drift.",
      "shelf": "games",
      "tags": [
        "react",
        "typescript",
        "canvas-2d",
        "evolution",
        "predator-prey",
        "agent-based"
      ],
      "made": "2026-10-01",
      "updated": null,
      "url": "https://dogum.github.io/artifact-shelf/a/infestation/",
      "play": "https://dogum.github.io/artifact-shelf/a/infestation/play/",
      "download": "https://dogum.github.io/artifact-shelf/a/infestation/infestation.html",
      "poster": "https://dogum.github.io/artifact-shelf/media/infestation/poster.webp",
      "bytes": 333667,
      "madeOf": [
        "React",
        "Canvas 2D",
        "SVG"
      ],
      "libraries": [
        "React"
      ]
    },
    {
      "no": 7,
      "slug": "ordinal",
      "title": "ORDINAL",
      "summary": "Connect-the-dots taken apart into points, numbering and rule: solve and print 21 puzzles, or change the rule and draw times tables, roses and fractals.",
      "shelf": "generative-art",
      "tags": [
        "connect-the-dots",
        "mathematical-art",
        "ramer-douglas-peucker",
        "fourier-epicycles",
        "l-systems",
        "canvas-2d"
      ],
      "made": "2026-09-30",
      "updated": null,
      "url": "https://dogum.github.io/artifact-shelf/a/ordinal/",
      "play": "https://dogum.github.io/artifact-shelf/a/ordinal/play/",
      "download": "https://dogum.github.io/artifact-shelf/a/ordinal/ordinal.html",
      "poster": "https://dogum.github.io/artifact-shelf/media/ordinal/poster.webp",
      "bytes": 264151,
      "madeOf": [
        "Canvas 2D",
        "SVG",
        "Web Audio"
      ],
      "libraries": []
    },
    {
      "no": 6,
      "slug": "benthos-gallery",
      "title": "Benthos",
      "summary": "Thirty-four sea creatures, each a cloud of parametric points from a few dozen lines of trigonometry. Orbit any one, tune its sliders and read its source.",
      "shelf": "generative-art",
      "tags": [
        "point-cloud",
        "parametric-geometry",
        "canvas-2d",
        "p5js",
        "sea-creatures"
      ],
      "made": "2026-09-28",
      "updated": null,
      "url": "https://dogum.github.io/artifact-shelf/a/benthos-gallery/",
      "play": "https://dogum.github.io/artifact-shelf/a/benthos-gallery/play/",
      "download": "https://dogum.github.io/artifact-shelf/a/benthos-gallery/benthos-gallery.html",
      "poster": "https://dogum.github.io/artifact-shelf/media/benthos-gallery/poster.webp",
      "bytes": 155980,
      "madeOf": [
        "p5.js",
        "Canvas 2D"
      ],
      "libraries": [
        "p5.js"
      ]
    },
    {
      "no": 4,
      "slug": "masis",
      "title": "Masis & Sis",
      "summary": "Ararat's two peaks, Masis and Sis, rebuilt from real elevation data and drawn live in six print styles, from engraved ridgelines to risograph and woodcut.",
      "shelf": "generative-art",
      "tags": [
        "terrain",
        "elevation-data",
        "hidden-line-removal",
        "marching-squares",
        "canvas-2d",
        "generative-print"
      ],
      "made": "2026-09-23",
      "updated": null,
      "url": "https://dogum.github.io/artifact-shelf/a/masis/",
      "play": "https://dogum.github.io/artifact-shelf/a/masis/play/",
      "download": "https://dogum.github.io/artifact-shelf/a/masis/masis.html",
      "poster": "https://dogum.github.io/artifact-shelf/media/masis/poster.webp",
      "bytes": 750320,
      "madeOf": [
        "Canvas 2D"
      ],
      "libraries": []
    },
    {
      "no": 5,
      "slug": "shortest-path-bound-explorer",
      "title": "Shortest-Path Bound Explorer",
      "summary": "An interactive field guide to the C-HD shortest-path bound: term-by-term sliders, growth charts, a 3D win map and Dijkstra races on real street grids.",
      "shelf": "explainers",
      "tags": [
        "shortest-paths",
        "dijkstra",
        "complexity",
        "algorithms",
        "three-js",
        "openstreetmap"
      ],
      "made": "2026-09-23",
      "updated": null,
      "url": "https://dogum.github.io/artifact-shelf/a/shortest-path-bound-explorer/",
      "play": "https://dogum.github.io/artifact-shelf/a/shortest-path-bound-explorer/play/",
      "download": "https://dogum.github.io/artifact-shelf/a/shortest-path-bound-explorer/shortest-path-bound-explorer.html",
      "poster": "https://dogum.github.io/artifact-shelf/media/shortest-path-bound-explorer/poster.webp",
      "bytes": 281680,
      "madeOf": [
        "three.js",
        "Canvas 2D",
        "SVG"
      ],
      "libraries": [
        "three.js"
      ]
    },
    {
      "no": 3,
      "slug": "benthos-reef",
      "title": "Benthos reef",
      "summary": "A one-minute predator-and-prey game on a reef of point-cloud sea animals. Pick one of six species, eat what it eats and hide from what hunts it.",
      "shelf": "games",
      "tags": [
        "webgl2",
        "point-cloud",
        "steering-behaviors",
        "predator-prey",
        "sea-creatures"
      ],
      "made": "2026-09-22",
      "updated": null,
      "url": "https://dogum.github.io/artifact-shelf/a/benthos-reef/",
      "play": "https://dogum.github.io/artifact-shelf/a/benthos-reef/play/",
      "download": "https://dogum.github.io/artifact-shelf/a/benthos-reef/benthos-reef.html",
      "poster": "https://dogum.github.io/artifact-shelf/media/benthos-reef/poster.webp",
      "bytes": 162844,
      "madeOf": [
        "WebGL",
        "Canvas 2D",
        "Web Audio"
      ],
      "libraries": []
    },
    {
      "no": 2,
      "slug": "mirror-cube-solver",
      "title": "Mirror Cube Solver",
      "summary": "Paint a mirror cube's sticker thicknesses onto a net and get a turn-by-turn solution, played out on a 3D model built to the cube's real shape.",
      "shelf": "tools",
      "tags": [
        "three-js",
        "twisty-puzzle",
        "mirror-cube",
        "breadth-first-search",
        "dijkstra",
        "backtracking"
      ],
      "made": "2026-09-19",
      "updated": null,
      "url": "https://dogum.github.io/artifact-shelf/a/mirror-cube-solver/",
      "play": "https://dogum.github.io/artifact-shelf/a/mirror-cube-solver/play/",
      "download": "https://dogum.github.io/artifact-shelf/a/mirror-cube-solver/mirror-cube-solver.html",
      "poster": "https://dogum.github.io/artifact-shelf/media/mirror-cube-solver/poster.webp",
      "bytes": 68851,
      "madeOf": [
        "three.js",
        "Canvas 2D"
      ],
      "libraries": [
        "three.js"
      ]
    },
    {
      "no": 1,
      "slug": "navier-stokes-forced-blowup",
      "title": "Forced Blowup for Navier–Stokes",
      "summary": "The mathematics behind the 2026 forced blowup results for Navier–Stokes: Clay's four statements, the BKM criterion, a collapsing vortex and a ladder.",
      "shelf": "explainers",
      "tags": [
        "navier-stokes",
        "fluid-dynamics",
        "pde",
        "finite-time-blowup",
        "vortex-dynamics",
        "canvas"
      ],
      "made": "2026-09-09",
      "updated": "2026-10-08",
      "url": "https://dogum.github.io/artifact-shelf/a/navier-stokes-forced-blowup/",
      "play": "https://dogum.github.io/artifact-shelf/a/navier-stokes-forced-blowup/play/",
      "download": "https://dogum.github.io/artifact-shelf/a/navier-stokes-forced-blowup/navier-stokes-forced-blowup.html",
      "poster": "https://dogum.github.io/artifact-shelf/media/navier-stokes-forced-blowup/poster.webp",
      "bytes": 134726,
      "madeOf": [
        "Canvas 2D",
        "SVG"
      ],
      "libraries": []
    }
  ]
}