Sunday, December 30, 2007

Bad UI : aphabetical ordering (completion, etc)

It's quite stunning to see that completion is still as dumb as it was when it was first invented. And I'm not just talking about completion of code when it comes to programming, I'm talking about completion in general. For instance, email completion in Thunderbird.

These programs haven't gotten past the "alphabetical ordering" completion - where all completion strings are just sorted alphabetically. This, regardless of the fact that my usage is quite different.
For instance,
  • Code completion
    • when I write std::c, 99% of the cases I want to type std::cout.
    • when I write some_container.b, 99.9% of the cases I want to type some_container.begin()
  • Email completion
    • when I type ovi (as email address), 99% of the time I mean ovidiu.deac@...
    • I have 4 email addresses I commonly use. They are quite separate from one-another - you can consider them 4 different businesses. So, when using a certain email account, email completion should prefer the emails that first wrote me to that account.
Another example that does not fully involve string completion but something quite similar. I think you've met this one way too many times. I will feature the great Romanian Railroad Site.
Assume you want to go to Bucharest, and you type it as destination ("Bucuresti"). Since it's such a "smart" site, it will give you a combobox with all destinations starting with "Bucuresti". I think there are about 7 or 8 such destinations, and 99.99% of the time you want to go to the main station ("Bucuresti Nord"). However, you have to manually select it, because the combobox is alphabetically sorted and the first found element is "Bucuresti Baneasa" (and by the way, almost no one goes there).

Finally, I want to give you a good example, a solution to this "alphabetical ordering" problem, one that I like. I'm sure there are others as well.
Microsoft Word - the "Fonts" combobox. First few entries are the last entries you've selected. After that, there's a separator line, and then items are arranged alphabetically. It served me fine over the years.

And yes, this could be applied to completion as well - first entries shown should be those you use most.

1 comment:

David Rodríguez said...

Predicted text in cell phones work that way (at least on some models). First the dictionary is parsed and statistics gathered. After pressing a couple of digits the most common selection of letters is shown:

843 -> the (english)

I don't use predicted text too often but when I did with an old siemens s45i (more than 6 years ago) it learned both new words (all do) and changed priorities.