Lab
Held to a lower bar than /projects.
Everything on /projects is finished and stands on its own. This page is for things that are just interesting: small, self-contained, played with in the browser rather than written up. Two of those live here so far, both working, both built for this page.
Experiment 01
Ordered dithering
A Bayer-matrix ordered dither, run in real time over three renders from the terrain generator. Pick an image, a matrix size, a threshold and a palette; the right-hand canvas redraws on every change. It’s a browser reimplementation of a decades-old printing technique, not anything AI-generated, which is more or less the point: a flat, high-contrast 1-bit image is about as far as you can get from the soft, smooth gradients an AI image tool defaults to, and this redesign has been about not looking generated. Dithering it by eye, in the browser, off images that are actually mine, is a small way of making that argument rather than stating it.
Experiment 02
Fraunces axis playground
Fraunces, the display font on this site, is a variable font with four axes: weight, optical size, softness and wonk. The sliders below drive font-variation-settings directly on the specimen text, which you can also edit. The home page’s headline animates these same four axes on load: they only tween smoothly because each one is registered as a CSS @property in globals.css. Without that registration, a browser treats a custom property as an unanimatable string and jumps straight between the start and end values instead of moving through them.
Back to things I built for myself, or home.