stateful-less-ness

3 min read

The statelessness of modern hardware design really annoys me.

Recently I read John Gruber’s comments about a bombshell study about the safety of touchscreens in vehicles. Here’s the specific passage that awoke something in me:

The reason that cars are largely switching to mostly touchscreen controls is the same reason phones switched — software is more flexible than hardware. Cars today do more than cars from 2005 did. But in the same way that all phones still have some hardware buttons (volume, power, mute), cars should too. The trick is getting the balance right. A couple of recent cars I’ve driven have definitely gotten that balance wrong.

It’s also the case that as cars take baby steps toward self-driving, previously stateful hardware controls need to become stateless. A traditional turn signals sticks in place until you complete the turn. That’s tricky with a car that can turn itself. Or just think about volume knobs on stereo equipment. In the old days, the physical knob indicated the volume level, usually on a scale of 0–10 ( but not always , of course). Nowadays, though, playback volume is generally adjusted directionally, up or down, and the knob or buttons don’t indicate where the level is set, because the level is a value stored in software, and indicated on a display.

In my current car, a 2022 VW, I have two ways to control my volume: steering wheel buttons and a volume knob next to the stereo/infotainment screen.

If I want the car to start with the radio silent, turning down the volume knob before I turned it on will do nothing because volume is software controlled. Both buttons are stateless because they have no power without the software – they do not control the state. Because of this, I have effectively no option to start with the radio muted. Maybe I can hit the power button on the Infotainment screen before it fully boots up, but it pisses me off that my volume knob is powerless until the software allows it to be.

In some older cars I’ve driven, the volume knob was the only way to control volume and it was stateful, meaning the the exact position of the knob controlled the state of the volume (not somewhere else in the electronics or software). This meant you could turn the knob down before turning on the vehicle and it would obey. But the modern car designer would think this is “dumber” design because a single hardware component controlling something isn’t flexible or controllable by software.

My old car, a 2014 Chevy Cruze, had a really buggy Panasonic infotainment system. Sometimes the stereo would crash while I was driving and then I couldn’t do anything until I stopped the car or it rebooted. While crashed, I couldn’t change anything - the song, the station, THE VOLUME. It was maddening and showed the risks of making everything stateless. To allow a control to be stateless is to also allow it to fail when (not if) software fails.

I suppose stateful controls will continue to be phased out from products more and more. We recently got a "smart" space heater that is app controlled and also has no stateful buttons or knobs. I willingly sacrificed convenience for control, but maybe a car shouldn't be one of those places.

Also, maybe it’s because of my years spent operating sound boards that I like to feel getting it dialed in, but otherwise I feel I am becoming an old person who yells at technology. I just think something gets lost when you convert a perfectly positioned knob into a software value.