I spent a surprisingly long time getting the four status indicators of a TermDriver2 looking just right.
These are four little simulated indicator lights in the corner of the TermDriver2 display. The top two (TX, TX) flicker and light up as traffic flows, and the bottom two show the current state of the control lines.
On/off didn’t seem good enough. For TX and RX in particular, I wanted the lights to remain on for longer than the transmission time, otherwise you can easily miss the flash. (FTDI’s UART chips do the same; they implement a pulse stretch on their LED outputs for just the same reason.)
But I also wanted a more analog feel to the lights. Something like the wonderful indicators from the Apollo era.
So to start with, no more instant on/off. Incandescent bulbs don’t work that way. Each of the four lamps is animated from off-to-on in 16 steps:
The firmware keeps a 0-15 counter for each lamp. If the signal is on, it increments the counter by 5, and if it’s off it decrements it by 1. So the lamps get brighter a lot faster than they get dimmer. This produces a nice bulb-like time response.
A single byte produces a perceptible but dim flicker. A steady stream of traffic produces maximum brightness. When the traffic stops, the bulb takes about 1/4 of a second to go fully dark.
But that’s not all. The bulb graphics themselves (which are a very tiny 24x16 pixels) contain a surprising amount of detail. First, the outline isn’t a simple round-cornered rectangle, it’s a superellipse, beloved by geometry fans for their pleasing curved outline.
The brightness isn’t flat across the lamp. There’s a quadratic falloff from bulb-center to bulb-edge. You can see it in the three colored lamps most clearly. The center is fully bright, becoming less saturated towards the bulb edges.
But again that’s not all. There’s a final pass that adds a Gaussian glow to simulate the bright light of the bulb starting to leak through the black text, making it appear brighter.
And of course all these steps are rendered at 96x64 resolution, then filtered down 4x to the final 24x16 that’s used in the hardware.
Overall I think I spent a whole afternoon getting the bulbs looking this way. Time well spent? My feelings on this are a bit complicated. In 2024 when I did it, perhaps not really. There was a lot of other work I could have been doing: getting the TermDriver2 firmware ready, writing test suites, doing acceptance testing.
But in 2026? Yes, very much so. A lot of that other work can be automated. Writing pretty good test suites, for example, is no problem for coding agents. But the aesthetic work can’t be automated. And all of the decisions I made above were matters of taste. We have taste, and exercising that taste in places where it shows seems like time and effort well-spent.
Thanks for reading.









Well worth the time you spent!
Actually, knowing this makes me appreciate the TermDriver2 even more. :-)