For novel ideas about building embedded systems (both hardware and firmware), join the 40,000+ engineers who subscribe to The Embedded Muse, a free biweekly newsletter. The Muse has no hype and no vendor PR. Click here to subscribe.

The First Rule of UI Design

Summary: The first rule of UI design is Don't Piss Off The User.

Miles, kilometers, degrees of longitude - there are a lot of ways to measure distance. A friend told me Bermuda is 1431 songs from Norfolk: running his iPod 24/7, that's how much music he consumed on the 5-day sail.

For business travel I often measure distance in hours. Baltimore to Bangalore for the ESC was 39 hours door-to-door, somewhat longer than usual due to an overnight stay in the Mumbai airport. The longest leg is the 14 hour hop between JFK and the first stop in Delhi. Fortunately, or so I thought, both going and coming I was aboard a brand-new 777, a state-of-the art aircraft, the pride of Boeing.

A voracious reader, on trips I'll typically dig through a stack of business literature and a book or two. But 14 hours in the air is so painful I ultimately seek the mind-deadening distraction of the in-seat entertainment system. Years ago one was lucky just to see one movie projected en masse; today, the embedded revolution has placed an entire catalog of flicks at each seat.

According to the in-flight magazine, Air India's 777 had a Thales 5000 or 6000 entertainment system. The screen is huge - a good 10" or so. One navigates using an iPad-like touch screen interface.

I picked a really brain-dead movie. Gone With the Wind runs 222 minutes. After 218 the system crashed with a "this selection is not available" message. The one satisfying moment of the film, when Rhett Butler issues his withering "Frankly, my dear, I don't give a damn" line, was lost.

Every movie I tried to watch on the two flights crashed, usually just before the conclusion.

You'd think the "back" button would naturally pop one up the stack to the previous screen. In some cases it did. But on other screens "back" went all the way up to an introductory display.

The touch screen was very slow and, worse, took some time to acknowledge a selection. I'm a firm believer in making embedded systems immediately responsive to a user input. Even if it'll take some time to perform a selected function, at least light up the key instantly so the user knows that his action was accepted by the system. For instance, when debouncing an input, debounce the trailing edge; don't wait for the contacts to settle before accepting the input. More on this here:

Fast forward, a vital feature when movies crash, was too slow to be useful.

And what's with volume levels on airplanes? Don't the designers realize that engine noise and aging ears require more than a few db of output? Sometimes I envy my deaf cousin's lip reading skills.

The first rule of UI design is Don't Piss Off The User. Thales failed miserably with this system. Consistency (make controls respond in the same fashion regardless of mode or screen), reliability, and smooth delivery of content are the very minimum requirements. Yet many companies don't get this. Is it any wonder Apple just posted a $28b quarter? New iStuff users are amazed at the devices' simple and clean interfaces. Isn't it a shame that we're surprised when a system works well? On the upside, the maps showed the position of wrecks like the Titanic, Thresher and the Monitor. That was pretty cool.

We're expected to deliver a lot. Enormous feature sets, huge code bases, awful real-time responses. But remember that the customer only sees the system's behavior. Never, ever, build a system that pisses off the user.

Published July 25, 2011