a fistful of silicates, impotent and frail, eroding, slipping

(2023, webgl animation, clipart imagery, generative token)

Iconography => Gesture => Texture

Or that's the gist. This project is ~3 months in the making, a return to the screen as a flat surface on the threshold of refuting or embracing a mimicry of something deeper. The screen is always posturing itself as a portal or window, yet here we paste wallpaper across it and stare. While pixelsorting first attracted me to glitch aesthetics years ago, I wanted to take it in a new direction. Giving a weak agency to the loose pixels, lifting them from flickering light into choreographed dust.

Inspired by 90s office/edutainment graphics, the Jazz solo cup, and dirty bus seat upholstery patterns. Modems, terminals, and bit-crushed colors: It's an archaeology with the artist tossing fresh dirt atop the dig site. My obfuscation is a mirror of bitrot, but whether its resisting or succumbing to entropy is up for debate.

Balancing the adversarial tracer and eroder has been the great challenge, finding a way for underlayers and new pixels to play and fight, but not dissolve away entirely. This work directly builds on my major projects in 2019 which were recursive but additive, with my new goal being to complicate matters and see where it leads.


This work fits to your pixels, best it can. Will look different on each and every display, while dynamically scaling.

To avoid flicker, please set your display scale/DPI and browser zoom to 100%. If you cannot, scale the artwork until the visual interference is reduced. For persons who are epileptic or flash-sensitive, a low-fps mode is provided.

Note: This is a realtime WebGL animation, and can be GPU-intensive. May not load on older devices. On iOS Safari, some gestures are not compatible, while color resolution may be slightly degraded.


Touch Gesture Action
double click/tap scale to best fit
scroll/pinch change scale
swipe down save a PNG screenshot (2x res)
swipe up toggle fullscreen
Keyboard Action
press [spacebar] pause
press [f] fullscreen
press [w] fill window (wallpaper mode)
press [s] save a PNG screenshot (2x res)
press [v] save a WEBM video (10sec)
press [0] scale to best fit
press [1-6] change scale
press [shift] toggle looking around (while zoomed in)
press [t] see title
press [p] performance widget
press [e] low-fps mode
URL Parameter Setting Data Type Default Value
[fxhash] random seed string random
[scale] zoom/scale float best fit (rounded)
[w] canvas width integer 800
[h] canvas height integer 600
[flip] match landscape/portrait boolean 1
[fill] override and fill window boolean 0
[smart] percent of knowledge base float 0.3 ā€“ 0.7
[safe] low-fps mode boolean 0


  • Made with cables.gl
  • The source imagery is all clipart from the Internet Archive and Well Read Books in Nanaimo, British Columbia.
  • Cheers to ciphrd, for their article on glsl pixelsorting which inspired early growth in this project. It also led me to fxhash.
  • 40% of the primary sale proceeds will go to Doctors Without Borders (via donation with Giving Block), and 10% will go to cables.tez for future development.


fx(hash) Collection