Bug of the moment 2010-12-25
Update Roll-Up 7: New year’s resolutions
(Updated 26th December after realising that I had more screenshots that I could have used had I not rushed this the night before! I was not planning a Christmas update – an idea just grabbed me, before I went off to watch a few hours of television on Saturday night.)
In the coming year, I would like companies such as Microsoft, F-Secure, Microsoft, Mozilla, and Microsoft to resolve to put an end to:
Lousy Unicode support
We’re well into the 21st century yet so much of the IT industry doesn’t get that there are other countries out there, with their own languages and their own written systems:
In fact, most can’t seem to even support the tiny fragments of Unicode used for English:
Despite the dates in the screenshot, F-Secure Messaging Security Gateway was still doing that until very recently, but now the XML feed has stopped loading at all, never getting past the now terribly clichéd circle spinny.
This next screenshot is of Microsoft Exchange 2007 in Windows Server 2008 SP2; note also the incorrectly drawn tabs, which worry me more than the poor Unicode support.
Gaping holes in the laws of mathematics
Considering that a computer is just a complex number crunching and logic machine, one has to wonder why so often it fails at both. The first screenshot is a milder example of the common problem where a computer declares something as being inequal to itself:
The following may be an integer overflow, or it may just be complete and utter rubbish:
Another cliché is some operation where it has managed to complete more than 100%:
Useless error handling
“File not found” – which file are you looking for, and where would should I put it? What is meant to be in the file anyway?
There’s a common misconception amongst systems developers that every operation involves a simple step. For example, they believe that opening a Group Policy Object in the Group Policy Management snap-in involves at most one API call, so therefore “The system cannot find the path specified” is considered an acceptable error when it fails:
Of course, opening a GPO involves a multitude of API calls and files and any one of these could fail. Knowing which file is missing, and where, would really help. Also, which rights would I be missing? And the rights to what? I love generic suggestion messages that offer irrelevant hints that could tie you up for hours, or days. Besides, I “may not” have these rights? So I may have them after all? You know what rights I need, so why don’t you bleeding well check and find out, and if I do have them, suggest something else or shut up! Is Clippit standing in the wings here offering these suggestions?
The vast majority of error messages fail to list the actual object (or expected object) that caused the failure. For example, I tried to remotely reboot a computer using Radmin Telnet, with the command shutdown -r -t 0 -f, which yielded the error “The device is not ready”. A computer has more than one device; pray tell which device it is that is not ready, and how I may hurry it up. Is it getting ready for a date?
Another example, from Word 2003:
According to the above error, someone’s Normal.dot file, in some directory, is being used by some user or some application (meaning that there could be people accessing files without using any application to do so).
From Mozilla Thunderbird 3 working with Exchange 2003’s IMAP support:
Which set of messages did try I do what to? I think this is actually Thunderbird’s fault as you can see from the complete screenshot that it’s lost track of my messages. The screenshot is not redacted; the grouped view has genuinely lost all my message details.
I know that Windows XP is pretty old now, but my time spent with Windows Vista, Windows 7, Windows Server 2008 (original and R2) and Small Business Server 2008 has given me very little encouragement. Explorer in Server 2008 SP2 has a horrible bug where expanding a folder tree in the folder panel, randomly scrolls up so that most of the child folders are off the bottom even if they would have all been visible before scrolling, but maybe this sort of nonsense has come to an end:
The following, though, is the error handling in Outlook Web Access in Exchange 2007, which shows no improvement:
Apparently (if you sift through all the garbage), a request timed out. Which request? To do what? What is anyone supposed to do about it? It may have been more obvious at the time, but I forget now.
So long as error handling continues to be provided by nothing more than a single integer, we will not get anywhere, certainly not when half a dozen possible situations are condensed into a single code. For example, the code 0x800706BA indicates that something failed with an RPC connection. Possible causes include a connection timeout and hostname lookup failure. You could have the machine name typed in wrong, it could be firewalled, switched off, anything. Welcome to the world of Windows: endless wild goose chases thanks to empty and meaningless error reporting.
The above screenshot shows that even with exception handling, developers still fail to populate the exception object during runtime with a full, precise and accurate error message.
I am getting to a difficult point with my screenshots gallery and Bug of the Moment, because I still work in a primarily Windows XP and Server 2003/SBS 2003 world (with some Debian Etch thrown in for good measure), when technology has long since moved on. My Macintosh is a G4 tower running Tiger. I know that I am stuck in the past and that the world could have moved on leaps and bounds since then. I would like to say that my experiences with Server 2008 R2 and Windows 7 have been highly positive, but they have most certainly not, and I can tell that we still have a very, very long way to go yet.
For the moment, at least, have a Merry Boxing Day (Christmas is already mostly over), and a happy new year. I know I won’t.
Posted 25th December 2010 – Comments and questions?