An ongoing archive of generative art — drawn with code.
86 standalone sketches in p5.js and three.js.
Ordered as made, from the first studies to the latest pieces.
Recreations and source-based studies use Tribute to Artist: Work. Tutorial, style, and composition variations retain their study names after the colon. Unknown titles or authors use Unknown; multiple unknown works by the same artist are numbered Unknown #1, Unknown #2, and so on.
References
The archive includes recreations, tutorial studies, and style tributes. The original artist or source author is credited in each tribute title. Source details and study variations are recorded in artworks/catalog.json. Selected artwork references:
-
Tribute to John Walker: Six Grids, Five Folds — after John Walker, 2008
p38 -
Tribute to Sol LeWitt: Vanish — after Sol LeWitt, 1994
p40 -
Tribute to Sol LeWitt: Unknown — after Sol LeWitt
p41 -
Tribute to Sol LeWitt: Wall Drawing #821 — after Sol LeWitt, 1997
p42 -
Tribute to Ad Reinhardt: Abstract Painting, Blue — after Ad Reinhardt, 1953
p43 -
Tribute to Ad Reinhardt: Abstract Painting — after Ad Reinhardt, 1960s
p44 -
Tribute to Pixel Symphony: Converging Grid — after Pixel Symphony
p61 -
Tribute to Vera Molnár: 3 carrés noirs, 3 rectangles gris, 5 rectangles bleus — after Vera Molnár, 1950
p67 -
Tribute to Milan Dobeš: Central Gravity — after Milan Dobeš, 1965
p68 -
Tribute to Julio Le Parc: Double Progression — after Julio Le Parc, 1959
p69 -
Tribute to Horacio García Rossi: Brix — after Horacio García Rossi, 1959
p70 -
Tribute to Anton Stankowski: Equal and Unequal — after Anton Stankowski, 1951
p71 -
Tribute to Luiz Sacilotto: Untitled — after Luiz Sacilotto, 1978
p72 -
Tribute to Victor Vasarely: Symphonie Inachevée — after Victor Vasarely, 1966
p73 -
Tribute to Germaine Derbecq: Multiple Painting (Series 14 No. 1) — after Germaine Derbecq, 1969
p74 -
Tribute to Marcello Morandini: 34 — after Marcello Morandini, 1968
p75 -
Tribute to Elena Asins: LAKH 22 VARZ — after Elena Asins, 1991
p76 -
Tribute to Kishio Suga: Untitled (無題) — after Kishio Suga, 1975
p77 -
Tribute to Theo van Doesburg: Composition — after Theo van Doesburg, c. 1920s
p78 -
Tribute to Vera Molnár: Ascension — after Vera Molnár, 1984
p79 -
Tribute to Agnes Martin: Summer — after Agnes Martin, 1964
p80· study notes -
Tribute to Agnes Martin: The Lamp — after Agnes Martin, 1959
p81· study notes -
Tribute to Agnes Martin: Untitled — after Agnes Martin, 1960
p82· study notes -
Tribute to Agnes Martin: The Islands — after Agnes Martin, 1961
p83· study notes -
Tribute to Agnes Martin: Starlight — after Agnes Martin, 1963
p84· study notes -
Tribute to Agnes Martin: With My Back to the World — after Agnes Martin, 1997
p85· study notes -
Tribute to Agnes Martin: Untitled #6 — after Agnes Martin, 2003
p86· study notes
The early sketches (p0–p30) follow exercises from Tim Holman's Speedrunning through p5.js talk.
Run it locally
npm install
npm run dev # http://localhost:3000The local Workshop opens with a four-column thumbnail grid (two columns on small screens), following the personal site's Gallery typography and fine grid seams. Search by title, artist, or sketch ID such as p86; filter by artist or change the sort order.
Click a work to open a full-window live canvas below one compact toolbar. Scroll to zoom around the pointer, drag to pan, and double-click or press F to fit the work again. + / − also zoom. These view changes preserve the live canvas and its original PNG resolution. Interact restores the artwork's original mouse controls; its own buttons and sliders remain available in either mode.
Works opens a thumbnail and search drawer without resizing the canvas. ← / → switch within the current results, R regenerates, S saves a PNG at the canvas's original resolution, / opens search, and Esc closes the drawer or returns to browsing. 0–9 still jump to p0–p9. Shortcuts leave form inputs alone and also work after clicking the artwork. The options menu contains Reset artwork, the original reference and shortcut hints.
Selection and filters stay in the URL across refreshes, and Workshop remembers the last selected work. Each sketch runs in an isolated iframe, with p5.js loaded from CDN.
How it's built
- Sketches live in
artworks/as vanilla p5.js / three.js scripts (p0.js…p86.js). - A small Vite plugin scans that folder and auto-generates the gallery manifest — adding a file is all it takes.
- Titles and source credits live in
artworks/catalog.json. The gallery reads them automatically; runnpm run titles:syncafter editing the catalog to synchronize README labels and standalone sketch title comments. - The thumbnails above are rendered headlessly straight from the live sketches (see
scripts/capture_gallery.py).





















































































