essentialism

44 editions · fully on-chain · Tezos · 2026

In November 2022 I worked through Andy Haskell’s tutorial Convert images to mosaics in p5.js and kept going with it, randomizing the dot size and feeding it my own photographs. I called the test outputs Essentialism and never released them. The column-of-dots structure is his. This is that sketch, rewritten to live entirely on-chain in under 10 KB.

It remembers two of my photographs, each reduced to a 28×38 grid of grey. Both are minted on Ethereum. The first is Blue Tree, 2023; the tree itself was removed after a storm that December, so the picture outlived its subject. The second is Natural Gradient, 2023, an unedited sky with its full resolution stored permanently on Arweave. The originals are permanent, unlike the memories.

Each edition remembers less than the one before it. Edition 1 samples its photograph at full strength. Edition 44 is mostly grain. The memory percentage is written into every token.

Mint 8 XTZ

Collect on bootloader

objkt’s on-chain generative platform. Each mint draws its seed from Tezos block entropy.

bootloader.art ↗
Read 2022–2026

The working log

Where the algorithm came from, what was changed to get it on-chain, and who changed it. Including the bugs.

blog.thebenmeadows.com ↗

The editions

Every edition that has been minted, as bootloader renders it. Each one draws its seed from Tezos block entropy at the moment of the mint, so nobody — including me — knows what an edition looks like until it exists.

Loading from the chain…

Select an edition for its traits and on-chain detail.

Playground

The real generator, running in your browser with bootloader’s exact seeding. Shuffle for a new seed, or drag the edition slider to watch one seed forget its photograph. These are explorations of the space, not previews of any edition — mints take their seeds from the chain.

The space

Twelve seeds, spread across the edition run. Every one is drawn live by the same code that is stored on Tezos.

2022

The sketch this came from is still public, bugs and all. I built it by working through Andy Haskell’s mosaic tutorial — his program walks down columns of dots and asks the image for a color at every step — then randomized the dot size and pointed it at my own photographs. Below is one of the nine test outputs I saved in November 2022 and never released. I was learning p5.js at the time.

Essentialism test output, November 2022
2022 · p5.js · sampling a photograph

What changed

The column structure, the dot spacing constant, and several variable names survive unchanged — that structure is Haskell’s. The photograph does not survive: on-chain there is no room for one, so the image became two grids of grey and the palette became five inks sampled from my earlier work.

The 2022 sketch also called noise(50, 100) as if it took a range. It does not, so the dot-size variation the sketch advertised never actually ran. That is fixed here, four years later.

the original sketch ↗

The odds

Every trait is decided by the seed except memory, which is decided by the edition number.

TraitValues
densityair 50% · field 38% · full 12%
inkstwo 56% · three 30% · four 10% · one 4%
sourceblue tree 87% · natural gradient 13%
paperblush 28% · ivory 22% · rose 20% · fog 12% · overhead blue 10% · night 8%
emberpresent 55%
memorynot random: 100% at edition 1, falling to 12% at edition 44

Every edition also carries its own trait line inside the artwork, in the SVG’s desc element. View source on any token and it will tell you what it is.

The code

Under 10 KB and stored on Tezos. The code below is not served from this site — it is read out of the contract when you open the page, then compared against the source of the function this page actually ran.

Reading from the contract…

contract KT1CB4M…SnQwt ↗