My task: RemoveTempHxDs

Le’ts say, you want to inform your user about what’s going on (which is a nice thing to do).

This is an example of how not to do it:

What exactly is that “RemoveTempHxDs”, the installer is doing right there? And why is the progress bar at 100% for more than three minutes when I made the screenshot?

If you are unable to provide meaningful progress information, don’t provide it at all. Make your program display a “neutral” progress bar (some spinning wheel or something like that) and make it tell the user it’s “Doing stuff…”. Why expose useless internals?

While I see some value in displaying information like that if it’s to have more information when you are trying to support the application. But in that case, a log file of some kind is much more valuable as it both gives YOU as developer the information you need and does not confuse your user.

Strangest JavaScript error ever

Let’s say you create some very nice AJAX-stuff for a web project of yours. With nice I mean: Not breaking the back-button where its functionality is needed, not doing something that works better without AJAX, and doing it while providing lots of useful visual feedback.

Let’s further assume that the thing works like a charm in every browser out there (not counting Netscape 4.x and IE in all versions – those are no browsers).

And then, IE throws this at you:

Unknown Runtime Error

Needless to say that the HTML output in question had a line count not even close to 370, so finding this thing easily was out of the question.

The solution: IE is unable to write to innerHTML of a TBODY element. But instead of providing an useful error message or even a link to the source with the line in question already highlighted (that’s what Firefox would do), it just bails out with completely useless error information.


(btw: That mix of fonts in the details section of the error message is just another indication of IEs great code quality)

Usability with the Browse for folder dialog


This dialog is the worst usability nightmare ever. It’s so bad that I’m really afraid of using any function in any program making me to chose a directory. Why? Don’t get me started:

  • It’s too small. Newer versions of Windows allow you to resize it, but it’s dependent on the program. The one I took this screenshot off does not.
  • It’s uncommon. You don’t see that dialog often. Many programs use a standard file selection dialog when they ask for a directory (I guess because of the problems outlined here)
  • It does not allow multiple selection. Meaning that if your program provides the user to work with multiple directories at once, it can’t be done with this dialog. You have to build your own solution, thus losing even more usability by forcing the user to learn something new
  • The tree-view is an uncommon view on the filesystem. Over time, Microsoft eliminated the tree view for directory navigation more and more. You have to willingly turn it on in Windows XP. There’s no explorer view with that tree per default
  • It’s context-less. Tell me: What’s the reason to select a folder in the dialog you see in the screenshot above? I don’t select a folder for the selections sake. I want do do something with that folder. What? The dialog does not tell me. I know this can be set in the API-Call to bring up the dialog. But many people do not.
  • It has not way to enter a path manually. Copy & Paste exists for a reason. If you have deeply nested paths, it can be a real timesaver. Navigate in Explorer (maybe already open anyways), Copy the path to the clipboard and… nope… no pasting
  • It has no autocomplete. I’m very fast in typing paths with the help of autocomplete: c:Pro[arrow down]Po[arrow down] and I’m in c:Program FilesPopScan. Not in this dialog. In this dialog, I have to click through the whole path
  • Around Windows 2000, microsoft extended the file selection dialogs with a shortcut bar allowing easy access to some commonly used folders. This bar is missing in this dialog.
  • It’s readonly. What if I want to make a new folder? Some “editions” of the dialog do provide a ‘New Folder’ button. Even so, it works by adding a ‘New Folder’-Folder and you have to manually click it to rename it (at least on this system here. Behaviour is erratic
  • There’s no context menu. Usuall when you see filesystem icons, you can right-click it to get a systemwide context-menu. Not with this dialog. Well. You can right-click. A context menu does appear. But the single entry is “What’s this” providing an utterly pointless context sensitive help entry that – I’m afraid has no context at all: “Click the plus sign (+) to display more choices” choices? What choices? Why do I want to see new choices? This is no answer for the question “what’s this”. It’s no answer at all. What the heck.
  • It’s context less (yeah. we had that before): Tell me: What’s the path I currently have selected in the screenshot? How can I know I have selected the correct folder? I may – after all – have multiple Richard Wagner folders on my harddrive
  • I wanted to write that it violates fitts law because you had to click those small ‘+’-signs (as the context sensitive help tells you). And now – after years of using this dialog I finally learned that you can double-click folders to expland them. I did not know that until now
  • When you have mounted network drives, it’s a living performance-problem as the top layer of the dialog displays all drives which can take some time. In which the dialog (and the unerlying app freezes).
  • The deeper you get in the hierarchy, the more you have to horizontally scroll.

I’m sure I can list even more, but enough is enough. I’m sure you get the point

Microsoft, I beg of you: Redesign this dialog!

Force the programs to use the new design. Don’t provide a fallback!

This way only the programs that are actually re-building this dialog (instead of calling the API) remain broken – and after all, they were broken to begin with: Why rebuild something crappy? Why rebuild it and risk it only being similar but not identical in usage? Why rebuild and risk it remaining broken even if the dialog gets fixed?

And believe me: There are people rebuilding existing OS-features. For no reason at all (see another posting about Adobes new file selection dialogs)

Sorry. Connection’s down

We all know it: Network connections are unreliable. This is ok and I have no problem whatsoever with that. Connections can go down. Nothing serious, nothing special.

There are multiple ways how software can let you know that a connection dropped:

  • Crash. This is the second worst way to handle it. At least the user knows what to do: Restart the application and it will (hopefully) work again.
  • Connection failed: Software caused the connection to abort. Somewhat incorrect, too much information, a bit scary for the enduser, but common for many Winsock-Applications as this is the default error-message you can ask windows to provide you with given a specific error-code
  • Sorry. The connection somehow went down. Should I try to connect again?. Correct, not technical, not scary. This is how I try to explain it to my users.

Well… and then there’s the IBM DB2 client:

SQL30081N A communication error has been detected. Communication protocol being used: “TCP/IP”. Communication API being used: “SOCKETS”. Location where the error was detected: “”. Communication function detecting the error: “send”. Protocol specific error code(s): “104”, “*”, “0”. SQLSTATE=08001

What the hell?

Check for update

I’ve seen many pieces of different software.

Many of them provide the user with a way to go online and check for new versions of the program.

Nearly all of them have the corresponding menu entry in the “Help”-Menu.

Why is that so? Checking for updates does not provide you with help. Maybe, just maybe it can fix a problem you are having – but it’s nowehre near providing help.

If I wrote software, it would have this option in the Tools menu or – if the application had none – in the File-Menu, though it’s misplaced even there. As is “quit” for example…

Another one…

Now that bluetooth-support gets integrated into the Windows OS, I thought, maybe Logitech created a new driver for it’s diNovo Package that does not insist in the Logitech Hub being installed.

This time the driver did not complain about the hub not being installed, so maybe this is a good sign (I have not rebooted yet), but the installer presented me with this screenshot which has such a bad wording that it’s worth blogging about:

(I cut out some empty space at the bottom and created red overlays to highlight my point)

This thing not only has one flaw, it has many:

  • The text speaks about check boxes, but there are radio buttons
  • The text suggest it’s possible to select more than one item in the list below. It isn’t
  • There is no way to install Keyboard, Tackball and mice support
  • I don’t have a trackball plugged for now – the option is still there
  • The list is extremely badly readable as it combines options to install in one point: “Keyboard and Mouse”. The approach with Checkboxes would be much easier to understand

A fix would be to actually do what the text says: Use Checkboxes. If it’s not possible to install both mice and trackball drivers (why is that so? Older drivers did not have that limitation), uncheck the other box, or even better, create one Checkbox and two radio buttons:

 Please chose what drivers to install:

 [ ] Keyboard
 ( ) Mouse
 ( ) Trackball

The problem is that the used installer (InstallShield) is extremely bloated and though it has the features necessary to create a dialog like the one I described above, it’s that complicated that a seperate developer is needed just for the installer and often there’s no time to do that.

Which leads to me finding this even more hypocritical than it already is – even more so that the Installer the end user sees is not by InstallShield, but by the respective developer – the final installer is as good as it’s created, not as the tool creating it

If you ask me what a good installer may be, I’ll answer InnoSetup. It’s small, simple, fast and extremely powerful.

Save query

By the way: The Gnome guys are the ones trying to simplify everything by removing “interface bloat”, if I remeber correctly.

Then please explain me what this “If you don’t save changes from the last 23 seconds will be definitively lost” in this dialog box has to say? I mean tracking this value costs a little bit of performance, putting it on this message uses valuable screen real estate and thus makes the dialog less readable and finally the thing has no real value.

What if I’ve opened the editor an hour ago to enter some temporary text snippet and then forgot it and now that I’ve finished working I’m closing my apps down.

The counter would be insanely high, suggesting a lot of unsaved changes which is neither correct nor are the changes valuable.

What if I’ve fixed a important bug in my program code by just changing one line which takes me about two seconds to do. Now the counter would be low but the changes would be very significant.

What I want to say: This counter has no real-world value. It’s just a geeky thing. Not that I don’t like geeky things, but adding geeky bloated things to a GNOME application seems quite hypocritical.

Doing something like: “You have quite a lot of unsaved changes in this document. Are you really sure?” (appearing depending of the real size of the changes, not the time you used editing) would be friendlier and more useful but – of course – would mean an even bigger overhead for tracking it.

But then again: I think, this message is read about once. Every later time, the user knows what it says and presses the buttons without reading. So it would seen to be better just letting the message be static so the user is not forced to re-read a semantically unchanged message – assuming her sub-conscience detects the slightly different look of the familiar looking dialog and thus causing it to be actively re-read.

PS: Please don’t get me wrong about this nit-picking: GNOME and KDE both are great projects. Both have their problems and both have their unique solutions. This just sprung to my eye and whenever I find something in any other app I surely will write about it.

Easier to use? Cheaper because of that? Dream on!

The Exchange Server I already had strange problems [read this and related postings there] with, today had another one of them. I had to give reading-permission to some public folder to some users (although the GUI to do that from within Outlook is really easy to use, some people rely on me doing that for them because that’s even easier).

The Exchange Server Manager threw a strange message at me whenever I tried to expand the folder-list in the tree. The text was useless as ever and nothing was posted to the event-logs – as ever. Why is there a logging-framework if it is not used? (besides, if it would have been used, the message would have been just as un-understandable as the one I was getting).

This time, I was lucky: I got an error number along with the message that was even known to the knowledgebase. The error was 80040e19 and the knowledgebase article was Q328659.

The problem was easy to fix and had something to do with some “security-tool” that got installed alongside the IIS-Lockdown tool which itself got installed alongside the common Windows-Update procedure. Nice to know that just updating the system via such an easy procedure can bring essential functions down without any warning.

Microsoft always emphasises the ease of use of their products and the better support you are getting when using their closed source solutions. Granted: The “ease of use”-thing can sometimes really be true (many things just work out-of-the box with not nearly as much work as I would have when using a common linux distribution), but when something does not work, fixing microsofts server software is much more difficult than fixing equivalent linux software as the fixes are un-obvious and the error messages are unusable.

The level of support for me is just the same as with comparable open-source software: Use google, enter the error message you get and pray someone had a fix for it posted somewhere. If not, I see virtually no solution in Microsoft land (besides paying a lot of money for support) whereas in the open-source land I would be able to fix the problem sometime later as I have readable error-messages and if that does not help I could try to understand the problem by reading the sourcecode.

That’s why I usually prefer open solutions. Or have you ever seen software working flawlessly?