Prints
Made of many small marks.
Generative prints, drawn in plain JavaScript on a canvas. Each one is thousands of short strokes, a few inks, and a seed. The same seed always pulls the same print. Change it and you get a new impression of the same plate.
The Chinese fishing nets, lifted out of the water at the end of the day. The boom, stones, spars and mesh are all drawn from a few numbers.
kochiA grid of dots and one rule: the line travels between them and bounces off hidden mirrors until it comes home. Every loop closes.
thresholdPalms, a houseboat and a low sun, stitched in rows of running stitch. The scene sits in a hidden mask, and each stitch checks the mask to pick its thread.
kettuvallamEvery thread is dyed to the same pattern, then shifted slightly, the way tied warp never quite lines up on the loom. The blur at each edge is the point.
warpRidge behind ridge, each cut at its own angle. Each stroke checks how far it sits below its ridge, and the mist is wherever the strokes run out.
monsoonThe shore from above: engraved swell, lace where each wave breaks, wet sand, and the tracks of a crow that had already left.
crowOne night of latency on a sampler: the steady hum, the incident, the recovery. It's the slowest way to make a dashboard.
pagerOne stroke and no second pass. A hundred and forty bristles each run dry at their own pace, and the circle is finished when the ink is gone.
sitIn motion
Two prints, set moving.
The same kind of strokes, animated. Each frame is drawn from code, and every stroke stays tied to the wave or ridge it belongs to, so the texture moves with the scene and doesn’t flicker.
Sunrise, start to finish. The sky starts in indigo hatching and turns gold one stroke at a time. The ridge tops catch the light, and the mist drifts faster over the nearer ridges.
Waves roll in, slow down in the shallows, break into foam and run up the sand, while the crow tracks stay put. Every stroke keeps its place in the water as it moves.