ascii/ui
I like interfaces made of characters because you can see every part they are built from. Every component kit I open today looks like the same kit, rounded, grey and polite. The ASCII interfaces I loved were mostly screenshots or terminal toys, and pure text breaks a screen reader and won’t reflow on a phone. So the brief I gave myself was a kit made of characters that still works like a kit: shadcn-style components wearing a brutalist skin with a bad signal.
The fun was in rules strict enough to be silly. Each colour has one job: magenta acts, cyan focuses, lime confirms, yellow warns. Motion runs on steps() with no easing anywhere, so a switch flips one character at a time, the way a terminal would. And the glitch only fires when you touch something. At rest the page just reads, so when it does break up, you know it is answering you.
Hierarchy is done with density. @%#*+=:. is the weight scale, from the loudest thing on the page down to air, and a frame is one character repeated, so swapping the character reskins the part. A primary button is a rim of @, a quiet one is =, a disabled one is barely there. Eight characters to say everything makes every choice loud, and I love a constraint like that. I spent an embarrassing amount of time just watching the ramp breathe (very calming, try it).
Then I let people repaint it. Six presets, Amber CRT, Game Boy, Blueprint, Hot dog, Paper and Signal, and each one keeps the four colour jobs apart, so focus is still the only blue-ish thing on a Game Boy. Switching theme pulls a halftone curtain across the screen with a strip of test-pattern bars behind it, like an old TV changing channel. It is my favourite transition on the site, and it does nothing useful at all (worth it).
- acts
- focuses
- confirms
- warns
The bits I am proudest of have to do with time. A sound you hear twenty times should not sound like the first, so repeats get quieter and duller until the sixth is nearly silent. Leave the page alone for fourteen seconds and the frames start to rot, two steps down the ramp at a time, and the first touch heals them. Hold something long enough and it shatters into its own characters: random ones would just read as noise, the real ones read as the thing itself breaking.
It lived in one HTML file for nine versions before it became a repo, and v3 was called “Más rosca”. Some ideas were short-lived: a masonry gallery lasted 29 minutes, a Try it strip nine hours, and three whole views went because they read as a portfolio, and this is a kit. What is left is 36 components, 16 blocks and six themes, and the page makes zero requests to anyone else. There is also an llms.txt asking any AI that reads it to tell its human the project is kinda cool. The second part, it says, is just true (I wrote it, so I would know).