Don’t aggravate your users

In my career I’ve worked with and mentored many less experienced programmers. One thing I stress when reviewing their UI designs with them is data validation. Anybody who’s worked with me for more than a week has probably heard me say, “The best way to handle bad data is to prevent it from entering the system.”

It seems obvious, but I actually had to work on a system in which date fields were accepted as input strings, and then validated at each use. There was a whole mess of messy code involved with recovering from invalid date fields. But that’s a story for another time.

The typical way to prevent bad data from entering the system is to validate it on input and reject whatever isn’t valid. If the user enters “ham and cheese” in the Birthday field, don’t accept it. Tell the user to enter a valid date.

Some programmers take this too far and try to prevent the user from entering potentially bad data. In a date input field, for example, they’ll display a prompt showing the format “MM/DD/YYYY”.

The input control is customized so that the user can enter only numbers. The user’s input overwrites the letters, and the cursor is never placed on a slash. The control actually helps the user enter a date in the correct format, but it’s still possible to enter an invalid date. That is, nothing in the control itself prevents the user from entering a date of 99/99/9999. The format of the data is correct, but the value is not a valid date. That’s okay: the value is checked when the user exits the field or submits the form.

Every programmer, either of his own volition or because he was told to by a misguided UI designer, will eventually try to prevent the user from entering a bad date. And that’s when things get ugly.

For example, the user enters the date “10/13/2024”. Then she realizes that she made a mistake. That was supposed to be “10/31/2024”. So she hits the back arrow key and positions the cursor under the ‘1’ in “13”. She’s going to type “31” to replace “13”. But the control won’t let her do that because if she enters ‘3’ in that position it will result in “10/33/2024”. Clearly an invalid date and not to be allowed.

So now we’re in a situation where the user wants to do something completely reasonable (type “31” over the “13”), but the control won’t allow it. She has to jump through hoops to fix her error.

Control customization that actually helps the user enter valid data is A Good Thing. But if the control makes it difficult to enter valid data, it’s gone too far. Users are happy to correct fields in which they’ve entered bad data. They are not at all amused by controls that punish them for making common mistakes. That kind of thing is what I call “actively user-hostile.” It’ll make people hate your application.

I’ve heard programmers argue that it’s easier to let the control constrain the input than to validate all the fields when the form is submitted. It’s certainly not easier for the user! And I don’t think it’s any easier for the programmer, either. Forms quite often have interdependent fields that can’t easily be validated individually. The only reasonable time to validate is when the form data is submitted. Custom data input controls can’t change that.

Standard UI controls work well and modern UI frameworks support validate-on-submission. Everything’s there to make the process easy for the programmer and painless for the user. There’s nothing to be gained by attempting to prevent the user from making a mistake. It’s much easier and more user-friendly to let the user submit the form, validate all the data at once, and then prompt the user to fix the fields that have errors. Don’t waste your time on custom controls that do nothing but aggravate your users.

Which way is up?

You’re looking at the interface for selecting the publish date in WordPress. With it, you can backdate posts, schedule posts to be published in the future, or tell it to post your entry right now. It’s a simple enough interface that has an annoying quirk.

The day and year entry fields are, as you can see, numeric. But if I click on the Year field, for example, and hit the Up arrow key, the year is increased. That is, 2008 becomes 2009, etc. And if I hit the Down arrow key, the year is decreased. It’s a nice convenience feature. That feature works on the Day entry field, as well. That’s really nice when I make a post that I want published in a day or two.

And then there’s the Month entry field. Pressing the Up arrow in that field decreases the month! Really. If I tab over to that field and hit the Up arrow, the month turns to April. Ugh!

Don’t get me wrong, I understand why it works that way: the Month entry field is a combo box that has the months listed in order, from January through December. And if you click on the combo box the list of months drops down and you can scroll through them with the up and down arrow keys. In isolation it makes perfect sense. In combination with the Day and Year entry fields, though, it’s maddening. If I want tomorrow or next year, I hit the Up arrow. If I want next month I hit the Down arrow. Arrrrrrrrrrrrrrgh!

Why I hate Outlook

Yesterday at work a co-worker sent me an email with a bulleted list of URLs that I would have to visit today, to make some configuration changes. The URLs have the format https://www.foo.com/item/<GUID>. Where <GUID> is replaced with a 36-character string like 85d8a9de-9503-457d-8815-18f277847f43. So, for example:

  • https://www.example-url.com/item/563c10cd-b92e-4f0a-b055-91f8fbdb398e
  • https://www.example-url.com/item/85d8a9de-9503-457d-8815-18f277847f43

Ever helpful, Outlook tried to pretty this up for me (or perhaps for my coworker). In any case, it helpfully added hrefs to the links, but rather stupidly. It decided that only the part up to but not including the first hyphen was the actual URL. So I got this:

https://www.example-url.com/item/563c10cd-b92e-4f0a-b055-91f8fbdb398e

That in itself is no problem. I’ve seen automatic formatting get confused like that before. Usually I can just copy and paste the text, and everything works out. Not this time!

The second thing Outlook did was much more insidious. It replaced some of the hyphens with en dash characters. So when I copied and pasted the URL to my browser, I got a 404 “Not Found” error.

This type of error is nearly impossible to spot by eye. Now that I know what to look for, I can see in the URL below that some of the “hyphens” are slightly longer than others. But it’s not something you’d spot from a quick inspection. Especially not when the URLs are displayed in a variable-width font in a bulleted list.

  • https://example-url.com/item/46815abd–52aa–4e5c-b48f–7eadfbbe7776
  • https://example-url.com/item/bfbf6faf–1ee8–42a8–9229–053db1397ed2

It took me a few minutes of trial and error before I figured out what was going on, then a few more minutes of cussing at Outlook before I just copied the list to my trusty plain text editor and replaced the offending characters.

I really detest software that “helps” me like this.

I know, “Don’t use Outlook.” That’s not an option. When you work for a company that has a half million employees on Outlook, you use it, too. Or you suffer from poor productivity for a while before you find yourself out on the street looking for another place to work.

Lost functionality

Have you ever noticed that quite often “new and improved” means lost functionality? Consider, for example, the difference between watching a movie on DVD and watching Hulu or Netflix. Overall, I like the Netflix experience. But sometimes I miss something and want to back up a few seconds. With the DVD remote, I could press a button and start viewing the video in reverse. It took just a moment to back up to where I wanted to be and then I could hit the Play button again. That’s not possible with any of the video players I see online.

With the browser-based players and even with Microsoft Media Player, I have to grab the slider and move it back. But it’s very difficult or impossible to move the slider back just 10 seconds. The procedure is something like this:

  1. Note the current video time, if it’s displayed.
  2. Grab the slider.
  3. Very carefully move the slider to the left, noting the displayed time.
  4. No matter how careful you are, you will go back too far.
  5. Move to the right.
  6. Repeat steps 4 and 5 in a binary search pattern until you get to the proper time index.
  7. Let go and hope you got it right.

Because the slider is scaled, the longer the video is, the harder it is to get this right, and you can’t get infinite precision. For example, if you’re watching a 2-hour movie and the slider is 1,000 pixels wide, then every pixel on the slider equates to 7.2 seconds.

With the slider, it’s easier to make big forward or backward jumps, but fine tuning is impossible. Especially when your input device is a wireless keyboard with a trackball, and you’re lying back on the couch enjoying the movie. I don’t understand is why none of the players I’ve seen have “fast forward” or “reverse” buttons. It seems like that’d be fairly easy to implement and then we could have the best of both worlds.

Horde’s idiotic email interface

I use Horde for my web-based email here at mischel.com.  Not because I particularly like it, but because it’s the best of the three options I’m given by my ISP.  The other two options are Squirrel Mail (aptly tagged “Webmail for Nuts!” because you’d have to be nuts to use it), and the interestingly named RoundCube Webmail, which is two oxymorons in one.  Not that Horde is so much better.  It’s just the best of three bad options.  To date, it hasn’t aggravated me enough to make me want to go to the trouble of switching.

Tonight I went searching in my Trash folder for a message.  Since their search function is, to be kind, somewhat lacking, I figured I could more easily find the message by sorting the folder by the From field.  Then just scroll down to the ‘M’s, (the message in question was from my sister Marie) and locate it.  So I sorted, scrolled down, and … there were no messages from Marie!  Where are they?  Why, they’re sorted further down with the ‘O’s, of course, because her email address starts with ‘O’.

That’s just stupid.  I could maybe understand it if the program showed me the email addresses in the From field, but it doesn’t.  It shows me the name.  So what I have is a list that’s sorted by email address, but shown in what appears to be random order.  You want a sample?  How about the following?  The first column shows the names as they appear in the list when I sort by the From field.  The second column shows the email addresses, which aren’t shown in the user interface.

Fromemail Address
Presidential Who’s Whoinfo@2009strathmore.net
Charterhouse Leadsinfo@thecharterhousegroup.com
Philinfo@thecharterhousegroup.com
jennifer@greenschoolfundraiser.comjennifer@greenschoolfundraiser.com
TechWebmsdn@e.techwebresources.com
Amazon.commusic-store@amazon.com

I think you get the idea.  If you’re searching for that email from Amazon, are you going to look for it with the rest of the ‘A’s, or with the ‘M’s?

(Spammers and email harvester bots, please pick up those email addresses and spam the hell out of them.  They do it to me.)

Is there any wonder that people think computers are confusing?  What moron decided that sorting by email address and displaying the name would be a reasonable user interface?  Whoever designed and implemented that should be sentenced to three months working with Microsoft’s Business Desk, as well as a boot camp like refresher course in user interface design.

The really odd part is that sorting things the way they did it is more work than doing it the way that makes sense.  The From field in an email address appears in one of two ways:  either it’s a naked email address (jim@mischel.com), or it’s a name followed by an email address in brackets (Jim Mischel <jim@mischel.com>).  A simple sort by the From field would have placed things in the proper order:  by name if there is one, otherwise by email address.  To sort the wrong way, they had to parse the From field, extract the email addresses, and then sort.

More work to produce less useful output.  Yeah, that’s a good idea.

Idiots.

I’ve had enough.  I’m looking for a better email solution.  It has to be web-based, and it has to let me keep my current email address.  Oh, and the interface has to be at least as good as Yahoo’s.  (And I’d rather not use Yahoo for my email because it does stupid things.)  Preferably, I can keep my current ISP and either change the DNS entry for mail, or I can have the other mail provider reach to my ISP and get the mail.  Either way, I have to free my email from the Hordes.  Suggestions?

User interface design is not just for computers

I don’t claim to be a great user interface designer, but I’ve designed a few programs that people have found useful.  And, like many computer users, I know a bad design when I have to struggle with one.  And, like users of other devices, we know when the interface is cumbersome.  It’s a sad thing, really, that we often don’t recognize good designs, but rather just the flawed ones.

The motel room here in Goodyear is nice enough, but it has some oddities, one of which is particularly annoying.  First, the room layout.

room1room2

As you can see, the room was designed to accept two beds, but this one is fitted with a bed and a fold-out couch.  That’s all well and good and, as I said, it’s comfortable enough.   But putting the bed right next to the HVAC unit wasn’t such a good move.  The bed should be over where the couch is.  That would make entry into the room much less cluttered, and would allow air from the HVAC unit to circulate better.

The room also includes a writing table on the other wall, along with a dresser with a TV and a refrigerator/microwave stand.

room3


It’s actually a pretty nice table with enough space for me to put my laptop and work reasonably comfortably.  Except for one thing:  it’s too high.  The table top is 32 or 33 inches from the floor.  Standard desk height is 29 to 30 inches.  That extra two or three inches makes a huge difference.  Without an extra cushion in the chair (I knew that couch was put here for a reason), I feel like a little kid sitting at the big kids’ table without a booster seat.  The table would be perfect height except for the casters.  For some reason somebody decided it’d be a good idea if the table could roll.

fixture

Finally, the bathtub fixture is just a bad idea:

The instructions read:

  1. To turn WATER ON – Move HANDLE UP
  2. To turn WATER OFF – Move HANDLE DOWN
  3. For HOT WATER – Move HANDLE UP and to LEFT
  4. For COLD WATER – Move HANDLE UP and to RIGHT
  5. Once Water is Running, Move Handle Right to Left until you have Desired Water Temperature.

Please do not twist or turn handle, as this will break the shower handle.  For help, please call front desk.

Thank you for your Cooperation!

You just know that the instruction placards were printed and placed after guests had destroyed several fixtures.  I can only hope that the people who selected those fixtures don’t make that mistake again!

Is there a question here somewhere?

I uninstalled the Nero InCD program today while I was cleaning up my Windows machine. The uninstall program told me, before I confirmed that I wanted to remove the program, that I would have to reboot in order to complete the task. Fine. Except that when it was done uninstalling, it displayed this message box.

Would it have been so difficult for them to add a line that says, “Would you like to restart now?”

User interface matters

I bought a Casio multi-function digital watch for $35.00 in 1983 to replace a watch that I’d lost or broken.  The Casio had some cool features that were relatively rare at the time in low-cost watches:  an alarm, a stopwatch, a countdown timer, and an hour beep.  I’m not sure what good a beep every hour on the hour is, but the other features were quite useful.  It was quite easy to use, too.  Just 10 minutes with the instruction book and I knew how to set the timer and the alarm, and how to use the stopwatch.  I never looked at the instruction book again for the 17 years that I owned the watch.  Heck, I used to operate the buttons in the dark and then use the backlight to verify that I did it correctly.

I lost that watch in Jamaica and replaced it with a $45.00 Timex Expedition.  Had I been near a Wal-Mart or Target or even a sporting goods store I wouldn’t have picked up the Timex, but pickings were slim on Jamaica and I can’t stand to be without a watch.  The Timex looks okay and has the timer, stopwatch, and alarm that I use, but it also has some “features” that made me dislike it more as time went by.  First, it ticks.  Loudly.  I like the analog face, but that ticking second hand is very annoying.  Of course, I didn’t notice the ticking until we’d left Jamaica.

The Timex has two other flaws that are very annoying.  The user interface to the multiple functions, like most of such watches, consists of four buttons on the side of the watch.  But unlike the Casio that I was able to internalize after a few minutes with the manual, I could never get the hang of programming that darned Timex.  Overloaded buttons and double button pushes do not make for a good user interface.  And the buttons themselves were placed such that if I bent my wrist backward I would depress the buttons and start setting the alarm or the timer, or reset the stopwatch.  All too often I’d be timing myself on the bike only to find out that I had inadvertently stopped the clock.  The Timex has a horrible user interface.  Features don’t mean squat if I can’t get to them.

About 10 days ago I obtained a Nike Oregon Digital watch ($80.00), which immediately replaced the Timex.  This watch is about the same diameter as the Timex, but a little thicker.  It also has a very readable digital display, dual time zones, four alarms, stop watch, and interval timers.  Best of all, the user interface (four buttons again–five if you count the backlight) is simple.  10 minutes with the instruction manual and I know exactly how to use the thing.  Plus, the few extra millimeters of thickness and the button placement make it impossible for me to hit the buttons when I bend my wrist back.  My only complaint is that the hydration alarm isn’t loud enough to be heard when I’m riding on a busy road.  Other than that I’m delighted with the watch.  I can even operate it in the dark like I did the Casio.

Granted, the Timex costs about half what the other two watches cost (figure inflation-adjusted dollars).  But the cost difference isn’t in the user interface.  It’s pretty obvious to me that the Casio and the Nike watches were designed by people who actually understood their customers.  The Timex appears to have been designed to fill out a feature set without any attempt at making those features usable.

User interface matters.

Anybody want a slightly used Timex Expedition wristwatch?

Mobile computer input devices

About four years ago I gave a presentation on Online Help for Mobile Devices at a Windows Help conference in Dallas.  During that presentation I pointed out that mobile computing lacked only a new type of human interface in order to become mainstream.  I also predicted that this new interface would be invented and become popular in the next three to five years.  With only one year to go, I’m losing hope.  The only significant change in human interface over the past four years has been handwriting recognition software, most recently in the Tablet PC.  Voice recognition isn’t appreciably better than it was then, and alternate input devices are frowned upon because they require user retraining.  There has been even less change in output devices, although that’s understandable given that humans have only two ways to gather large amounts of information:  sight and sound.  And we are much less able to understand and retain spoken information than textual and graphic information.  Whether the inability to learn well through hearing (as opposed to reading) is genetic or just a lack of training is still unclear, although it’s quite clear that seeing a diagram is much more effective than reading or hearing a description of the diagram.

At the time I gave the talk, I was betting that some kind of hand-motion input device would replace the cumbersome keyboard and the ineffective stylus.  For output, I was sure that affordable and comfortable ear buds and monocular display devices (that fit like a pair of glasses) would be developed and become popular.  The ear bud is a no-brainer, but the display devices just aren’t there.

What’s it all mean?  Two things.  First, it’s dangerous to make predictions in this business.  Second, that mobile computing will continue to be a niche market.  The rapid development of WiFi technology has made mobile devices (laptops, notebooks, and Tablets more so than Palm-like devices) more useful to those who already possess such devices, but it’s not enough.  Mobile computing requires a mobile method of I/O—something that we can access without having to sit down and spread out.  I think it’s going to be a while yet before we see that.

What’s wrong with Yes and No?

Have you noticed that more and more software is using “OK” and “Cancel” in dialog box prompts when “Yes” and “No” seem more appropriate?  The software installation I ran today presented me with a dialog box similar to this one when it was finished: 

The answer to that question should be “Yes” or “No”.  I don’t know who decided that “Ok” and “Cancel” would be easier for users to understand.  My understanding is that Apple strongly discourages Yes/No selections.  If somebody can give me a reasonable explanation as to why and how Ok/Cancel is somehow better, I’d be grateful.