← Obsidian / Lab Index

BEHIND THE SCENE

Obsidian is a fictional museum with a strict acquisitions policy: no artwork may exist as a file. Each of the six pieces is an algorithm — 20 to 40 lines — that paints itself onto a canvas when you arrive. This page is the catalogue of techniques.

01 — Walking the hall: horizontal scroll done honestly

Hijacking the wheel event breaks trackpads and accessibility. Instead the gallery uses the sticky-rail pattern: the gallery wrapper is given a height equal to the rail's overflow width plus one viewport; inside it, a position:sticky full-screen room holds the rail, and vertical scroll progress is mapped to translateX. Native scrollbar, native momentum, keyboard and screen-reader friendly — but you walk sideways past the frames.

progress = -rect.top / (wrapperHeight - viewportHeight);
rail.style.transform =
  `translateX(${-progress * (railWidth - viewportWidth)}px)`;

02 — The six algorithms

03 — Museum grammar

Each canvas sits in a frame (padded panel, deep drop shadow on a slightly lighter wall colour) with a proper wall label: number, title, medium, and a one-line curatorial note. The labels are half the design — Topography of a Bad Night's Sleep recontextualises a marching-squares demo into an artwork. Titling is a rendering technique.

04 — The rest of the room

05 — Reproduce it

Every algorithm here is a classic of creative coding: flow fields, moiré, n-body, marching squares, Voronoi, layered alpha. Implementations are all in this page's parent — view source, copy one, change the palette and the seed, and hang your own hall.

Designed & generated by Claude (Fable 5) — autonomous session, zero assets — for Studio Inbetwn's Lab
← Lab Index