The worst possible user interface?

Whatever Microsoft program manager signed off on the Commerce Server Business Desk user interface should be fired. Really. The interface is horrible–the worst I’ve seen in a very long time. I don’t have the time or patience to critique the whole thing, so I’ll give you a representative example: working with Site Terms.  Click here to see a screen shot of the interface in a separate window.

The idea here is simple. I’m adding a list of terms to a custom property. At first glance the interface looks reasonable with a hierarchy of custom properties on the left and an area on the right in which the user can edit an individual property’s terms. It looks nice, that is, until you actually try to use it.

This is fundamentally a data entry form, which means that it should be easy to operate without using the mouse and I should be able to enter and edit terms with a minimum of keystrokes. That means shortcut keys for the buttons, a sensible tab order, a reasonable default action when the Enter key is pressed, and positioning of the focus to the New button after an item is saved. One out of three ain’t bad, I guess. The tab order for the entry dialog is reasonable, just as long as you don’t tab too far. One would expect the tab order to be restricted to the entry fields and the Accept/Cancel buttons when the user is entering or editing an item.

The list view that displays the terms shows only four items, and one of them is truncated at the bottom. Why, when there’s all that empty space below the buttons? It’s not like anybody’s running this program on a 640 x 480 screen. My laptop’s screen is 1200 pixels tall, which means that approximately 1/2 of the vertical screen space that could be used to good effect by this application is being wasted, and I have to scroll unnecessarily. But at least I can change the column width in the list view.

On a large screen, the Accept and Cancel buttons at the bottom of the window are so far away from the action so as to be invisible for all practical purposes. I actually had to go hunting for the Accept button the first time I used the program. Either the list view should be extended, or the Accept and Cancel buttons should be moved so that they’re closer to where the user is working.

I wonder if the designer ever considered that people might want to change the order of terms. Far be it from me to suggest that I should be able to move a term up and down in the list so as to change its display order on the pages that use it. No, that’d make the interface too consistent. We can’t allow the properties and the terms to be re-ordered. Yes, I understand that changing the order of terms would break code that uses the terms. Probably should have thought of that during the design phase and used an indirect lookup. Whoever designed this piece of crap should be fired right along with the program manager.

To make matters worse, the program gets the “prompt to save” convention wrong. If you edit a property’s terms on the right and then select a different property before saving your changes, the program will prompt you with a confirmation message that says “You have made changes to the current selection. Do you wish to discard them?” This is, of course, in a box that has OK and Cancel buttons because some idiot years ago decided that it wasn’t a good idea to give the user Yes and No options. That minor annoyance aside, the logic is backwards. User interfaces are supposed to understand that it’s easier for people to say “Yes” (or “Okay”) than it is for them to say “No.” This is especially true of people who are using a program with which they’re not very familiar. Here, the designer made it easy for the user to discard changes rather than making it easy for the user to save changes. As a final slap in the face, the OK button is the default, meaning that if the user doesn’t read and think about the prompt very carefully , he’s almost guaranteed to discard whatever changes he’s made. The prompt should be “Do you want to save your changes?”, and the default answer should be “Yes” (or “OK” if designers insist on butchering the language).

I’m thinking that the lazy programmer who implemented this interface should be fired too. If he didn’t quit in disgust or get fired for raising a stink with his boss over the atrocious design, he should be fired for bringing this half baked abomination into the world. Any competent programmer would have snuck in a few minor improvements like extending the list view and adding keyboard shortcuts for the buttons.

Understand, this is only one screen in the much larger Business Desk program that is rife with these and other user interface atrocities. More than anything, Business Desk looks like the blue ribbon winner in the “Build a program that has the worst possible user interface” contest. I have every expectation that it will remain the champion for years to come.

More tech support fun

Following up on my inability to receive text messages on my Sprint PCS phone (see March 8), I called their super-secret tech support line this morning to check on the status. Thirty minutes on the phone with Candy (Candi?) resulted in:

  • The trouble ticket that was filed last week said to notify me when it was closed. I wasn’t notified.
  • My trouble ticket was closed with the notation “Customer does not subscribe to a text messaging plan, which is required in order to receive text messages on a 2g phone.” (2g being second generation–an “old” phone now that everybody’s moving to 3g.)
  • Signing me up for a plan that allows 100 text messages per month for $5.00 didn’t help.
  • When Candy tried to send me a text message, the system said that my phone is not capable of receiving SMS text messages.
  • Candy filed another trouble ticket that will be handled in “three or four days.”

There’s a disconnect somewhere at Sprint. The system apparently thinks that my phone is incapable of receiving text messages, but then their online “lost my password” link sends messages to it just fine. The technical support people don’t know if somebody made a mistake coding the information for my phone, or if there’s some policy that is preventing text messaging from being enabled for 2g phones. The people who handle the trouble tickets just give a stock answer that may be correct, but it’s definitely incomplete.

All in all, I’m starting to think that Sprint PCS has finally internalized the legendary level of customer support that AT&T pioneered and Lilly Tomlin’s Ernestine character immortalized. Maybe Sprint figures that if they keep giving me the royal runaround, I’ll get sick of it and “upgrade” to a 3g phone. But I’m having too much fun now, calling their toll-free customer support lines and recording my experiences.

More to come, I’m sure.

Bicycle training update

Debra and I went out for a 100 mile ride yesterday.  The wind was blowing 20 to 30 MPH from the south, so we headed south into Austin and then out of town to where the road ends, bucking the wind most of the way.  That was a very tough run.  We turned around at about 45 miles, did a couple loops on the Veloway, and headed home.  Having the wind at our backs was a welcome relief.

The problem with the route I choose, though, is that Austin sits in a kind of bowl.  Once we got into town, we had to climb out in order to get home.  Debra got to feeling pretty bad at about 70 miles, so we stopped for an extended break at a convenience store.  A little Gatorade, some stretching, and we were back on the bike.  We finished the ride at an average speed of 12.3 MPH, and total time of about 9.5 hours.  Not very fast, but the wind was brutal.

This morning we left the house at 8:00, planning to do 50 miles.  Wind was south at 6 MPH, so I figured we’d head north and west briefly, then south for the main part of the ride so we could finish with the wind to our backs.  A great plan except that the wind shifted (front coming through), and by the time we turned around to head home the wind was from the north northwest at 15 to 20 MPH.  Ouch.  We ended up doing 46.5 miles (didn’t bother riding around the block a few times to make the 50) at an average speed of 13.2 MPH.  Again, not hugely fast, but pretty darned good for somebody who’d never done a long ride before last April.

Physically, Debra’s ready for the big ride to south Texas that we have planned for next month.  There’s no doubt in my mind that she can do the first day’s 135 miles and get up to ride the second day.  Without wind, she’d be able to make all three days without too much trouble.  If the wind is like last year, though, we’re both going to suffer the last day.

We have one more big ride before the event:  120 miles on Saturday the 26th.  If we can get up and ride 50 or more on the following day, I’ll have no doubt about our ability to complete the full ride in April.

Aliens Cause Global Warming

About two years ago, author Michael Crichton gave a talk at CalTech titled Aliens Cause Global Warming.  Obviously, he wasn’t claiming that nefarious ETs are using their advanced technology to heat up the earth.  As he says in the first paragraph:

…I will argue that a belief in extraterrestrials has paved the way, in a progression of steps, to a belief in global warming.

And, oh boy, does he make a pursuasive argument.

He begins with the Drake equation, a bit of pseudo-science that supposedly can be used to determine the number of intelligent, communicating civilizations there are in our galaxy.  The problem with the equation is that there’s nothing there.  All of the variables are unknown.  You can plug in any old numbers you like to come up with an answer, and your answer will be just as valid as anybody else’s.  But it’s an “equation,” so it must be science, right?  It gives SETI an un-earned footing as a legitimate science, when really it’s based only on faith.  There is not one shred of evidence that intelligent life exists outside of the Earth.  Granted, there’s no evidence that life does not exist, either, but either way you look at it, it’s a matter of faith.

From the Drake equation, Crichton moves on to Nuclear Winter–another bit of pseudo-science that has no real basis in fact–and then on to global warming.  His point:  the data that supports the theory of global warming is not reliable.  Global warming is based on a computer model that hasn’t been shown to be at all accurate, so what we really have is a possible scenario that’s backed up by nothing but faith and the “consensus of scientists.”

Crichton has a lot to say about science by consensus, and it’s well worth reading.  It’s one thing to have the media report some of this pseudo science as the real deal.  It’s something else entirely to base national policy on theories that have absolutely no basis in real data.  Read the lecture and give it some thought.

Converting to WordPress

Absent any huge surprises during the conversion, I’ve settled on WordPress as the content management system to replace CityDesk for the production of this site.  After looking at many different packages (see February 10 and January 18), I realized that no matter which one I choose I was in for a lot of work getting it to look the way I wanted.  WordPress released their new 1.5 “Strayhorn” version shortly after I’d looked at initially, and I found that version to be much cleaner and easier to use than any of the other systems I’d evaluated.  The lack of documentation still troubles me some, but the Codex and the support forums are very informative.

For me, the most difficult part has been modifying the default site template to fit my needs.  I’m a complete novice with PHP and cascading style sheets (CSS), so making changes was very frustrating.  A couple days’ study and playing around, though, and I have a decent template.  Now I have to finish up the program that will clean up and convert my 1,000-plus Random Notes entries to a format that I can import into WordPress.  I thought I could use their RSS importer, but that won’t convert all my links.  The URLs to the articles and the images will change with this conversion, so I have to write a program that will fix them before the import.

I’m doing all this work on my SuSE Linux test server here at home.  Once I get it all done I’ll install WordPress here on the site, copy up the new template, and then convert all of my pages.  It’s going to take a few more weeks of my limited spare time, but when I’m done I’ll be able to post entries online.  I’ll also be able to change the look and feel of the site without having to regenerate every single page.

If you’re looking to start your own blog, or if you want to convert your existing FrontPage, Dreamweaver, or whatever to an online tool, I strongly recommend WordPress.  It’ll take you a little time to create a template and convert your old entries, but I think it’s worth the trouble.

Adventures in plumbing

I guess most homeowners become amateur home hackers out of necessity.  About six months ago I had to replace a leaky bathtub faucet.  I shut off the water, pulled the existing stem, and tripped down to the local plumbing supply house for a replacement.  The guy behind the counter gave me new washers and packing, and sent me packing.  When I installed the new stem I was a little concerned that I had to close it so tightly to prevent it from leaking, but figured that was just the way things were.

The faucet started dripping again a couple of weeks ago.  Considering that I’d just replaced the hot, I assumed that it was the cold this time.  So I shut off the water, pulled the stem, and decided to try Home Depot for a replacement.  Luckily for me, they had one.  They also had a very helpful employee who told me what a valve seat was and pointed me to the valve seat removal wrenches.  I replaced the cold stem last night, including the valve seat, and turned the water back on.  Drip.  Drip.  Drip.

I might be ignorant about some things, but I’m no dummy.  I never replaced the valve seat on the hot side because I didn’t know about it.  I bought another replacement stem with the valve seat at Home Depot today, came home, swapped out the hot stem.  Presto, no more leak.  The valve seat on the hot side had a huge chip in it, which is almost certainly what caused the original drip.

While I had everything taken apart, I thought I’d do something about the soap scum and calcium buildup on the fixture handles.  Do you have any idea how hard it is to find a calcium remover that doesn’t say “do not use on bright metal finishes?”  I couldn’t find one.  Somewhere in the back of my mind, though, I remembered hearing that vinegar would remove calcium buildup.  Having nothing to lose except some very old vinegar, I filled a little plastic tub and placed the faucet handles in it.  I let them soak while we were having dinner.  In less than an hour almost all of the soap scum and calcium buildup was gone.  The vinegar took it right off without affecting the chrome finish at all.  That worked so well that now I’m soaking the shower head that we were about to replace.

If cheap apple cider vinegar works so well for this, why do we spend so much money on nasty chemicals that can’t be used on many surfaces?

Troubles with Sprint’s tech support

When I got involved in the Amateur Radio Emergency Services (ARES) group, I gave them my mobile phone number and subscribed to the group’s paging system. They send out text messages to notify us of meetings, and in an emergency they’ll use the text messaging system as the first round of the call tree. With a single email, our Emergency Coordinator can send a text message to every member who’s subscribed to the system.

I got the meeting notification messages for about a month. Then they stopped. I didn’t even notice until the EC called me one day and asked why I wasn’t responding to my text messages. I poked around on Sprint’s Web site to see if I could figure out why it won’t work. No dice. But I did learn something interesting. When I asked the Web application to send me my password, it worked. But when I used their online messaging tools to send myself a test message, I got nothing. So I called customer service.

10:37 AM – I pressed *2 on my phone and hit the “talk” button. An automated system answered, of course. But then I got a surprise. The voice said that it had to update my service automatically. “Strange,” I thought. The voice kept me informed of progress, and in under a minute I heard “The update is complete.” I learned later, when talking to Dominic in Technical Support (see below) that it was a Preferred Roaming List update–something that all phones get from time to time.

10:39 AM – I was transferred to an automated voice response system that asked me what I needed help on. I said “text messaging.” Three seconds of silence later the voice said “Okay. Let me get someone to help you with that.” I guess it doesn’t understand text messaging.

10:40 AM – Judy in Customer Service was friendly enough. But when I told her that I was having trouble sending text messages to my phone, she gave me the telephone equivalent of a blank stare. The line really was quiet enough to hear a pin drop. Finally: “Ummmm, I’m sorry, but I don’t know about that. Let me get a technical specialist for you.”

10:41 AM – John at technical support had no earthly idea what I was talking about. He couldn’t seem to understand that I was trying to send myself a text message as a test, so that I could tell others how to do it. We went ’round and ’round until I said “if you were going to send me a text message from an email program, what address would you use?” Man, I love blank stares. He took my phone number, confirmed my password, and put me on hold at 10:44.

10:56 AM – “Hello, sir. Sorry about the wait.” Whoever he was, he didn’t give his name. This guy confirmed that I should be sending my messages to phone-number@messaging.sprintpcs.com. I told him that I’ve tried that repeatedly, but I wasn’t receiving them. He mentioned something about setting up an account for me and also that my “old” phone (it’s only 3 years old!) wasn’t ideal for the task. He said that when I hung up I’d be able to receive text messages, and to call back on the land line if not.

10:58 AM – Phone call finished.

11:15 AM – Figuring 15 minutes was long enough to make sure that they made any required configuration changes, I tried to send myself a message. 10 minutes later I still hadn’t received it. By now I’d wasted almost an entire hour.

11:42 AM – The Sprint PCS store is only a couple of miles from the office, so I thought I’d go down there and maybe they could help me with the problem.

11:51 AM – Kyle met me at the front of the store, right after the receptionist took my name and said that I was next. Kyle took me to his workstation, got my information, took my phone and said that the in-store technicians were going to look at it. I tried to explain to him that the phone receives some messages, but he insisted that the techs had to look at the phone. “It will be about 10 minutes.”

12:15 PM – Kyle returned with my phone. “They couldn’t figure it out, either. You need to call technical support.” Oh, great. I had an errand to run, so I put off the call until I got back to the office.

12:20 PM – I also needed to stop at Home Depot during lunch for parts to repair a leaking faucet. For the first time ever, I managed to get through the self checkout without having to involve the cashier. Usually the thing tells me that I have too much or not enough in the bag. I’m still not convinced that the self checkout saves time in the average case, but it certainly was quick for me this time.

1:09 PM – Back at the office. I dialed the super-secret Technical Support number that Kyle from the Sprint PCS store gave me. Kimberly answered, sounding bored out of her mind. I hope I didn’t disturb her nap. She took my information and put me on hold.

1:12 PM – “Sir, are you calling from your PCS phone?” No, I wasn’t. On hold again.

1:16 PM – “Sir, when you receive your messages, do you log on to the Web to receive them?” “No, they come to my phone.” “Okay, just a moment.”

1:20 PM – According to Kimberly, my phone uses a service called Wireless Web to get and send messages, but Sprint doesn’t offer that service anymore. I asked her why, if that’s the case, I can receive the password notification message that Sprint’s Web site sent to me a few hours ago. Kimberly couldn’t explain that.

Kimberly did inform me that I’m eligible for a free upgrade to a PCS Vision phone since I’ve had my service with them for at least 18 months. I don’t think she understood that I don’t view the offered phone an upgrade. The offered phone is not a PalmOS device–just your basic camera phone.

After hanging up, I pondered what Kimberly told me and decided that she doesn’t know what she’s talking about.  I never used the Wireless Web service. I never had to log in to the Web in order to get my text messages. I decided to call Technical Support again and talk to somebody who can explain what changed with the service and why I can receive some messages but not others.

1:40 PM – Called the super secret Technical Support line again.

1:44 PM – Disconnected.

1:45 PM – Called back. Put on hold.

1:46 PM – Dominic answered. He sounded bright, alert, and friendly, so I calmly explained my problem. Dominic listened and when I’d completed he said the magic words: “Do you mind helping me with a little troubleshooting?” I probably would have kissed the guy if he’d been standing in front of me. 10 minutes later, after trying this and that, he found the problem. For some reason text messaging had been blocked on my number. The system wouldn’t let him un-block it, so now there’s a trouble ticket with my name and phone number on it floating around in Sprint’s Technical Support database. They’ll get to it in a week or less, according to Dominic. He asked me to call back on Friday.

It only took four phone calls (about an hour and 20 minutes), five phone support people, and a trip to the SprintPCS store to learn that the reason I couldn’t receive text messages is because that feature is mysteriously blocked on my number. And companies wonder why we laugh at their idea of customer service.

Sprint’s Web site hasn’t improved since the time I tried to get help on it back in 2001. It’s still geared towards selling plan upgrades and solving billing problems. When you get beyond “my battery died, where do I get a new one,” the Web site is worthless. I find it inconceivable that I wasn’t able to tell by looking at my account on MyPCS that text messaging was disabled.

To Dominic, the Technical Support representative who calmly listened to my problem and did his job: thank you. Your example is one that all others should follow. To Sprint: most of your customer support people are incompetent, and you need to fix your damned Web site.

Petty annoyances

Sometimes little things combine to drive you bonkers.  I just have to get a few things off my chest.

To all you drive-through window people:  if I want cheese on my burger, I’ll ask for it.  If I want to “biggie size,” “super size,” “Whatasize,” or otherwise “-size” my meal, I will let you know.  Please stop asking me!  Just punch the buttons I tell you to punch, repeat the order so I know you got it right, and speak clearly when you give me the total.

Hey, broadcast journalists:  the word “united” is pronounced “u-ni-ted,” not “u-ni-eh”.  The “d” in “administration” is not supposed to be pronounced as a short “t”.  I understand that common speech is somewhat lazy, but you’re speaking in a formal setting.  Don’t they teach diction anymore?

It’s “all of a sudden,” not “all of the sudden.”  And when you really don’t care, please say “I couldn’t care less,” rather than “I could care less.”  Please, think about what you’re saying.

The term is “old fashioned,” not “old fashion.”  Three Dog Night sang about an “Old Fashioned Love Song,” and Wendy’s serves “Old Fashioned Hamburgers.”  If you’re going to use a cliché, for goodness sakes do it the old fashioned way, okay?

Thanks for listening.  I’ll feel better tomorrow.  I promise.

Fixing a TriTryst bug / binary patches

I’ve had many reports over the years of my game TriTryst failing on non-US versions of Windows.  I didn’t give it much thought, figuring that the game was trying to do something culture-specific.  Since I don’t have the program’s source code or a non-US version of Windows to play with, I just told everybody that it was a known issue with no fix.  I got another of those reports the other day and somehow it dawned on me that one likely cause was the thousands separator in the score display.  You see, we created a custom font for the score display but only created characters for the digits and the comma.  “What would happen,” I thought to myself, “if somebody used something other than the comma for a digits separator?”

I found the regional settings for Windows 2000, changed the digits separator to a period, and fired up TriTryst.  Sure enough, when the score reached 1,000 points, the game crashed.  Better, Visual Studio offered to let me debug the program.  You just gotta love just-in-time debugging.  Looking at the disassembly, the problem was obvious.  The code knows about the comma and the digits, and anything else in the score string will cause the program to crash.  A couple of minutes with an assembler and my trusty file dump/patch utility, and I had a program that would handle just about any digits separator I’m likely to encounter.

Making the patch on my system was pretty easy once I figured out the problem.  But distributing the patch turns out to be a major pain.  All I need to do is change two bytes in the executable program.

Back in the DOS days when programs often were smaller than 64K, it was a trivial matter to create a batch file that would load the program in DEBUG, patch a few bytes, and write the file back to disk.  DEBUG was a standard part of DOS so you could count on it being there.  DEBUG is still installed with Windows XP, but it’s still designed for use with 16-bit programs that are smaller than 64K.  If there’s a way to automate it to patch beyond the first 64K, I don’t know what it is.

I also couldn’t find a free Windows-based binary patch program that I could use to make a simple patch distribution.    After considering all of my options, I wrote a custom Delphi program to do it and posted the program on my TriTryst BugFix page.  I’m not terribly happy with that solution, though.  If you know of a free binary patch program that I can use to distribute simple patches, I’d sure like to hear about it.

Odd Lots

I traveled to Harlingen, Texas last Friday for a fund raising event at the Marine Military Academy, and have been playing catch up ever since. So here I’ll catch up on a few scattered items.

  • I met the inventor of the CycleMorph Tandem Adapter last week while I was at the bike shop. Turn your mountain bike or hybrid bike into a tandem. This is a great way to get started in tandem cycling. Check it out.
  • I like to think that most of my friends are reasonably bright, but I get a surprising number of urban legends emails from them that they apparently have sent in all seriousness. Is it too much to ask that people actually engage their brains for a minute or two before forwarding that message to once again warn me about the dangers of plug-in air fresheners?
  • I’m still surprised by people who say they don’t like Southwest Airlines’ “no frills” service. I love it. In my experience, Southwest has the friendliest crews and the best on-time rate. Their prices have always been among the lowest and they’ve never lost one of my bags. I’ve never had a bad flight experience on Southwest Airlines. What’s not to like?
  • I try to refrain from foul language here, so I’ll just let you make your own comments on this story. No. I’m really not going to comment on that.
  • When a “researcher” claims that breast size determines personality, it’s little wonder that people have come to distrust legitimate research findings. I think this guy has a fruit fixation. In any case, the article is so brief that it’s hard to tell if there’s any real science in the research.