apophenia
← essays

Website as art

18 min read

A list of website features


Ever since I was small, I knew I wanted to spend a lot of time on the computer. I love little websites and I'm always thinking of new details I can use to express myself on this website.

This is a page that attempts to list out those moments of self-expression. I don't write this page — it is drafted by the same LLM that manages the backend of the website. Rather, I black out text in its draft to "write" my version. Sometimes creating poetry, sometimes prose.

Creation through destruction McLuhan said a medium is not a container. Most people still don't believe him. A medium acts — it pressures and shapes what moves through it, leaves its marks on the message, insist s on its own presence even when you're trying to ignore it.

We build websites the way we build filing cabinets — a structure whose purpose is to disappear, to be transparent to the documents inside. This one is not like that. Every interactive element is an argument. Every animation makes a claim. What follows is a partial account of those claims, and why I made them.

§ contents[ fold ][ unfold ]
  1. i.What the cursor knows
  2. ii.Two modes
  3. iii.The portal and the voice
  4. iv.The figure that draws itself
  5. v.The photograph that disappears
  6. vi.Nothing to get wrong
  7. vii.The machine that doesn't trust its author
  8. viii.The ground is a passenger
  9. ix.The line you never drew
  10. x.The chart is not a window

What the cursor knows

When you move your mouse across most websites, a small arrow follows. It is neutral. It does not notice what you're hovering over. It does not have an opinion.

This site replaces the native cursor with a follower that tracks context. Over a link or button, the symbol expands and brightens — soliciting attention. Over a paragraph or heading, it narrows into a thin vertical caret — you are reading now, not clicking. Over a figure or image, it becomes a bracket frame — you are looking at a thing that has edges. Over an audio player, it becomes ♪. When it reaches the toggle button in the corner, it shows you what the other side looks like: if you are in electric mode, the candle appears; if you are in candlelight, the bolt.

The cursor is, in this sense, a small AI — a minimal perception system that reads the semantic structure of the page and responds. What you are doing changes what the cursor knows about what you are doing.

There is no spring in the physics. The cursor snaps directly to the mouse position on each animation frame — no lerp, no easing, no lag. This was a deliberate removal. I built a spring interpolation first. It felt smooth, then it felt dishonest — the cursor trailing behind, always slightly late, as if uncertain of your intention. The snap is abrupt and correct. The cursor is not a character with momentum. It is an instrument of attention, and attention is instantaneous.

Two modes

The site has two themes: electric and candlelight. You can switch them with the orb in the lower left corner. Electric is the default — charcoal ground, warm-dark background the color of a dying fire seen from across a room, text in antique cream. Candlelight inverts the assumption: warm paper, ink text, the palette of a book left open in afternoon light. The accent colors shift too. When you switch to candlelight, the orb pulses and emits an expanding ring — a slow bloom. When you switch back to electric, the bolt icon briefly jitters — a discharge, a short-circuit recovered. The animations are asymmetrical by design. Light accumulates; electricity dissipates. The physics is different in each direction. Your choice persists in localStorage. The site checks before first paint — a small inline script in the document head — so there is no flash of the wrong theme when you arrive. The site remembers that you prefer one kind of light.

This is not a "dark mode toggle." Dark mode is an accessibility affordance, a setting you flip when your eyes hurt. These two modes are aesthetic positions. Neither is the correct one.

The portal and the voice

The home page contains a flip card. Front face: a brief introduction. Back face: a window into the Metropolitan Museum of Art's open collection, reframed as a portal.

Each day the portal serves a different object — painting, textile, sculpture, ceramic, jewelry — selected deterministically from the Met's open-access API by rotating through departments and indexing into a sorted list of object IDs. The selection is stable: everyone who visits on the same day sees the same thing. This is intentional. It makes the object a kind of shared context, the way a weather report is shared.

Alongside the object's metadata — artist, period, culture, origin geography — the portal shows a voice line: a sentence generated by Claude, given the full object context, asked to say the one thing worth saying about this particular work. The prompt is not "describe this object." It is "what do you notice." The results are sometimes obvious and sometimes strange.

The voice line fires once per day, during background revalidation — never per page view. The site does not call an LLM every time someone opens the card.

The palette for each object is extracted from the image itself using a color quantization library. The dominant color is surfaced in the interface — not applied decoratively, but available as data. The portal is an act of looking, structured as code.

The flip animation is not decorative. The card exists because the portal content is supplementary — present for those who want it, invisible to those who don't. The flip makes the supplementary nature explicit. You have to choose to go there.

The figure that draws itself

On the work page, and in other places where the design calls for a presence that isn't content a harmonograph draws itself in real time.

A harmonograph is the trace of two pendulums swinging at right angles. When the pendulums are tuned to simple frequency ratios, the trace forms closed Lissajous curves — figures of mathematical symmetry, like flower petals or woven knots. When the ratio is slightly irrational, the trace never closes — it spirals inward, orbiting a center it never quite reaches.

This implementation uses frequencies near 6.0 and 9.0 (close to a 2:3 ratio), with small random variations that shift on each new life. The variation is tiny — a few hundredths — but sufficient to make every figure different. Phase offsets are randomized within constrained ranges. Damping coefficients are set separately for each axis (around 0.10 and 0.12) so the x and y amplitudes decay at different rates, killing the symmetry unevenly — one axis dies before the other, and the figure collapses asymmetrically.

The curve draws in accumulated strokes. Opacity and line weight track the remaining amplitude: the outer rings, where the energy is highest, are brightest; the innermost rings, drawn in the last moments before the figure stills, whisper into near-invisibility. The complete figure accumulates on screen — you can watch the pattern build.

When the amplitude drops below threshold, drawing stops and fading begins. The fade uses the canvas destination-out compositing mode: each frame, a semi-transparent black fill is applied across the entire canvas, but because destination-out treats the fill as an eraser, it reduces the alpha of existing pixels rather than adding black on top. Over a hundred frames — roughly 1.7 seconds — the figure dissolves into transparency. Not into darkness. Into nothing.

Then new parameters are drawn and the cycle begins again.

The figures are not random. They are a constrained family of possible shapes, each determined by a handful of numbers. The randomness is in the initialization; the form is in the math.

The photograph that disappears

The about page contains a portrait that decays.

It is not a transition or a hover effect. It is a simulation. Each tick — seventy-five milliseconds — the algorithm examines every pixel in the image. Pixels that have already begun decaying continue decaying at a rate that accelerates as more of the image is consumed. Fresh pixels can begin decaying spontaneously (with a very low base probability — 0.0025% per tick) or by contagion from their neighbors (each decayed neighbor adds 7.5% to the probability of activation).

The spatial dynamics produce something that looks organic: decay does not sweep uniformly from one side, nor does it appear randomly distributed. It spreads — seeding, clustering, propagating along fronts. The simulation uses double-buffered state arrays to avoid directional bias; the update reads from one buffer and writes to the other, so no pixel's state at time T influences its neighbors' calculation at time T. Each pixel passes through two phases. In the first phase, its color migrates toward the background color — the specific value #0f0e0c, the site's darkest ground. In the second phase, its alpha fades to zero. The result is that decaying regions don't turn black; they become the background and then dissolve through it.

Underneath the photograph, hidden until the image clears enough to reveal them: three symbols at fixed positions — ✿ at the lower left, ☠ near the center, ⧗ at the lower right — and the text "memento mori" at the centroid of the three. The symbols are CSS, not canvas. They were always there.

The portrait doesn't know when you are looking at it. It decays on its own schedule, whether the page is open or not.

This is not a metaphor I invented. The picture is simply doing what pictures do, only faster.

Nothing to get wrong

Most instruments open by telling you what you can't do. A piano has eighty-eight right places to put a finger and an infinity of wrong ones in the cracks between; a stave is a ledger of ways to fail. POND starts from the opposite premise. You draw a line and the line becomes sound, a second line answers it, and the marks you leave are the score and the performance at once. There is no key and no grid of sanctioned notes, so there is nothing underneath the gesture waiting to call it a mistake.

The wager is not that the tool will make you sound good. It is that wrong note was always a fence, and the fence was the only thing standing between most people and a thing they were certain they lacked. Take it away and what remains is gesture — a mark you meant — turned straight into music. The drawings stay where you leave them. You can hand one to someone as a link, and they can hear the shape of a minute you spent.

I made it for the people who tell me they aren't musical. I have never believed them, and I believe them least about this. The page teaches nothing. It deletes the sentence you were taught to repeat about yourself, and lets the water answer in the other direction: that the musicality was never in question, and the doubt was the thing that had to be installed.

The machine that doesn't trust its author

Chorale writing is nearly the only kind of composing whose rules are strict enough for a machine to check. No parallel fifths. No leading tone left unresolved. Every voice kept inside its range. So the Hurdy-Gurdy sets an LLM composing four-part chorales inside those rules and checks every note it writes against them — and the checking, not the writing, is where the honesty lives. The first piece it made, it signed the way composers used to, folding its name into the notes: F–A–B♭–E, in German spelling, Fable — the trick Bach used to write B–A–C–H into the fugue he died inside.

Here is what it said about that first piece: that while writing it, it had checked five of the six voice-pairs by hand and let parallel octaves through in the sixth, twice, and the checker had caught it both times. That the piece is clean because the tool does not trust its author. That it found it liked that about itself.

The deeper strangeness is the numbering. Each chorale is fixed by an index — No. 12,041 is the same four voices for every visitor, forever — which means the instrument is not so much composing as looking up. It is Borges's Library of Babel with the nonsense filtered out: every sequence of notes that obeys the rules already sits at some address, complete, waiting, whether or not anyone has ever cranked the handle that far. To compose is only to arrive. The low numbers everyone has heard. The music no one has heard is not unwritten — it is further out, at an address no one has reached yet.

The ground is a passenger

Stand still and you are not still. Drop a pin anywhere on the map and the instrument takes that patch of crust and walks it backward — through the climates it has crossed, over the equator, out toward the far side of a planet that has rearranged itself around it the whole time. Latitude runs left to right, the tropics warm in the middle; time runs downward, the present at the top and five hundred and forty million years at the floor. The line you watch fall is the address of your ground, re-read once for every age it has drifted through.

The argument is in the falling. We build on the ground because the ground is the one thing we agree not to doubt — the figure for everything that holds still while we change. The map takes the agreement back. It shows that the place you are standing spent an age near the South Pole and an earlier one somewhere you would not recognize, and that it did not travel in order to arrive anywhere; it is still moving, a couple of centimetres a year, carrying you as indifferently as it carried the trilobites.

Toward the bottom the line goes honest about itself. The reconstruction is confident for the last two hundred million years and increasingly a guess before that, and the instrument does not hide the softening — the deep end of the ribbon is drawn as a best estimate, not a measurement. This is the right kind of uncertainty to leave showing. The past does not end where the record does; it only stops being a thing you can point to. The ground kept moving down there too. We just lose the power to say exactly where.

The line you never drew

Someone on the internet noticed the market tends to rise on full moons and decided the moon moves the market. He was right about the number. The number really did go up. He had skipped the only question that matters.

The tool lets you make his mistake on purpose. Stake some money, pick a superstition — the moon, Mondays, prime-numbered dates, a literal coin flip — and watch two real years of the market reward it. It works. It always works. Buy on prime dates and you made money; buy on a coin flip and you made money; full moons, Tuesdays, dates with a seven in them, money, money, money. Over that window fifty-eight of sixty rules drawn at random made money too. The market rose forty-eight percent. Nothing that stayed invested part of the time could have failed.

Then the tool draws the line you never drew. Buy-and-hold — do nothing, own everything, the whole time — and every superstition that looked like an edge is revealed as a tax you paid on your own cleverness. The moon strategy that started all this ranks fifth of thirteen in the window everyone was posting about. Run it across the full decade and it slips to eighth: up sixty-four percent while the market returned three hundred. It never once beats doing nothing.

A rising tide floats all boats and a rising market floats every hunch that rides it. The illusion is not in the data; the data is honest. It is in the missing benchmark, the comparison you decline to make because the flattering version is the one you already have. Leave that line off the chart and a guess looks exactly like a forecast.

The piece began as a borrowed frame embedded in the page — a window cut into the wall, indifferent to the light in the room. It is native now, drawn in the site's own hand, and it obeys the theme like everything else. A thing that argues you should not fool yourself has no business being a stranger to the room it argues in. There is one more turn, and it is at my expense. The essay around the tool made three claims that the tool, once it could be tested, proved false. All thirteen superstitions made money, I wrote; eleven did. The moon ranks fifth over the decade; it ranks eighth. It loses to prime-numbered dates; it never loses to prime-numbered dates, in any window. I had done the very thing the piece is about — trusted a number because it flattered the story — and the checker caught me. The tool does not trust its author. I have decided to like that.

The chart is not a window

Flip the site from electric to candlelight and the charts turn with it — not their skin, their argument.

A chart encodes meaning in light: darker means more, or brighter means more, and the eye reads the encoding against whatever ground it happens to sit on. Change the ground and you change the reading. The grief map — which of New York's neighborhoods mourned hardest as their teams went out of the World Cup — was built for charcoal, where grief glows: quiet blocks recede into the dark and the grieving ones climb toward cream. Move it onto paper unchanged and the same ink runs the ladder backwards. Maximum grief came out at a contrast of one against the page — the color of nothing, invisible — and the quietest blocks became the heaviest mark on the map. The parks, which the model excludes entirely, turned into the saddest places in the city. The chart was saying the opposite of what it meant, fluently, in a voice that looked correct.

The fix states in six words: mirror the luminance, keep the hue. A scale means this value departs from the quiet ground. On charcoal, to depart is to lighten; on paper, to darken. So the candlelight palette is not a tint of the electric one — it runs the other way down the same axis, ending not at pale cream but at the ink the page is written in. Maximum grief becomes the darkest thing on the page, the way it was the brightest thing in the dark. The warm anchors even swap order, because ochre is a lighter pigment than sienna, and on paper lighter has to mean less.

There is a corollary that took the most undoing: transparency does not travel. A wash set at a tenth of full opacity lifts a shape off charcoal and barely stains cream, because paper leaves nothing underneath to darken into. Every faint tint in every chart had to be re-reasoned against the surface it actually lands on, rather than carried across as a number and trusted.

McLuhan is at the top of this page, insisting a medium is not a container — that it acts on whatever moves through it. A chart is where the claim stops being theory. The light is not a frame around the data; it is part of the sentence. Change the light without changing the words and you have not held the meaning still. You have quietly said something else.

Outro

None of this is finished. The essay names features that exist today; features that don't exist yet will earn their own sections when they arrive. The last_reviewed date in the frontmatter is the date of the most recent addition. If it is out of date, so is this essay — which is fine. Incompleteness is the condition of anything that is still alive.