For novel ideas about building embedded systems (both hardware and firmware), join the 27,000+ engineers who subscribe to The Embedded Muse, a free biweekly newsletter. The Muse has no hype and no vendor PR. It takes just a few seconds (just enter your email, which is shared with absolutely no one) to subscribe.
By Jack Ganssle
Last weekend my 10 year old daughter and I went to the National Aquarium here in Baltimore to see the new seahorse exhibit. Amidst the tanks displaying a startling array of bizarre-looking creatures lurked the inevitable interactive computer screens, each containing a wealth of in-depth information about these denizens of the deep.
Kristy pressed the touch screen. pressed it again, and again, and finally a new page appeared. Interactive? Perhaps, but that pointless, unforgivable, two or three second delay compromised the experience for her, and I'd imagine many others. This is the age of the 1000 MHz computer, of previously unimaginable processing power, memory, and resources. Yet it seems things are slower than ever.
The experience reminded me of one of my pet peeves: gasoline pumps. Why is it these things work so slowly? After authorizing the credit card the machine says "press Start and pump." I press Start, insert the nozzle, and pull the gas lever. It clicks, no gas comes out. I pull it again and again. Click, click, click. Finally gas starts to flow. Why the delay? With credit card processing complete, with the start button energized, the embedded brains must merely actuate a relay to start fuel flow. Yet seconds go by. What is the silly thing doing? Even if controlled by the most brain-dead of 8 bit processors I'd expect no more than milliseconds of elapsed time. Instead, I stand there clicking the lever getting ever more frustrated.
Seems to me there's only two possible scenarios: either the firmware is poorly designed at the customer's expense, or there's a damn good reason why we're supposed to wait. In the latter case, why doesn't the code let us know what's going on? How about a simple "wait - processing" message? My cell phone sometimes searches for the signal for 5 seconds or more at power-up, but that delay is accompanied by a "searching" message, so isn't annoying at all.
As one who travels too much I see first run movies mostly on hotel Spectravision, the businessperson's replacement for having a life. The user interface is weak; you're never sure if pressing the button will order the film or just give more info. But all too often ordering the movie fills the screen with nothingness, sometimes for over a minute. What happened? Did the order go through? Do I try again. and will that incur another $9.95 charge? Why didn't the designers pop up a "loading - please wait" message?
And why, oh why, does the hourglass icon sometimes take seconds to appear on my Windows machine? We have to wait to be told to wait?
Sometimes the delays are entirely appropriate. Press a pedestrian crosswalk button and it's unreasonable to expect the lights to change immediately. But just watch someone use that button. They press it, wait a while, press again, and again. Did the controller see the button push? While waiting at an LA crosswalk on day a fellow clearly contemplating jaywalking commented he felt the buttons weren't connected to anything. They're a part of a technological conspiracy to delude us into thinking we had at least a little control. I presume he's wrong; surely the button must initiate a crossing sequence. But there's so little feedback that maybe he's right?
Why doesn't a simple light, perhaps in the middle of the button, acknowledge the request?
A friend who designed TV remote controls told me, in all seriousness, that reliability isn't important in these things. They found that consumers naturally pressed and repressed the buttons when nothing happened. Rather a cynical design strategy, don't you think?
And as for those gas pumps - if you design these blasted things, are these delays just a cosmic joke so the attendant can chortle at hoards of busy commuters clicking, clicking, clicking at the handle?
What do you think? Are these avoidable delays the result of crummy design or something else?