Uli's Web Site
[ Zathras.de - Uli's Web Site ]
Other Sites: Stories
Pix
Abi 2000
Stargate: Resurgence
Lost? Site Map!
 
 
     home | blog | moose | programming | articles >> blog

 Blog Topics
 
 Archive
 

15 Most Recent [RSS]

 Less work through Xcode and shell scripts
2011-12-16 @600
 
 iTunesCantComplain released
2011-10-28 @954
 
 Dennis Ritchie deceased
2011-10-13 @359
 
 Thank you, Steve.
2011-10-06 @374
 
 Cocoa Text System everywhere...
2011-03-27 @788
 
 Blog migration
2011-01-29 @520
 
 All you need to know about the Mac keyboard
2010-08-09 @488
 
 Review: Sherlock
2010-07-31 @978
 
 Playing with Objective C on Debian
2010-05-08 @456
 
 Fruit vs. Obst
2010-05-08 @439
 
 Mixed-language ambiguity
2010-04-15 @994
 
 Uli's 12:07 AM Law
2010-04-12 @881
 
 Uli's 1:24 AM Law
2010-04-12 @874
 
 Uli's 6:28 AM Law
2010-04-12 @869
 
 Uli's 3:57 PM Law
2010-04-12 @867
 

More...

Auto-completion bugs

Recently, I made an offhand comment about the bugginess of auto-completion in iTunes and Safari. I thought I had already blogged about this, but I apparently only filed a bug with Apple. So, let's rectify this in the hope that it'll help other programmers create good implementations of auto-completion.

The problem with iTunes's auto-completion is that it changes the uppercase/lowercase-ness of characters. So if I typed in a string with the wrong spelling before, it will always "mis-correct" the correct spelling I entered to the wrong one. It's the same in Safari's form fields: If I enter case-sensitive text into a form wrong once, there is no way to type it in the right way after that. Every time I close the field, auto-completion is triggered and it "fixes" the spelling.

In addition, Safari takes the longest possible match for its URL auto-completion, which sounds sensible until you have visited Amazon once. Amazon gives you a session ID and encodes it in the URL. So, every time I type in amazon.de, it auto-completes the last session ID I had. Of course that session is no longer valid. Luckily Amazon just gives me a new fresh session in that case, but I end up on whatever page the last session was on (because that part was auto-completed, too).

Essentially, I can't just type in a URL and hit return. I type in a URL, then look whether the computer changed it, delete whatever the computer added an then hit return. This is what other OSs used to do, but why does my Mac do that now???

In MacOS 9 days, I think it was iCab or IE that actually implemented auto-completion the right way: Like in any other text field, when you hit return, the return character would replace the selection. So, if I type in some text and hit return, I get the text I typed in. Since the auto-completed text is always selected, that effectively killed auto-completed text. Hit the right arrow key to accept the auto-completed text by unselecting it before hitting return.

Heck, even REALbasic, the much-ridiculed ugly duckling of programming languages got it right. Auto-completed text was simply a grey shadow. Hit tab to turn it into real text. If you type anything else, the grey text disappears again.

So, what is so bad about Safari's and iTunes's implementations? Auto-completion is broken when it doesn't just complete what I enter, but modifies it. Auto-completion is supposed to be a helpful feature. A ground rule in good UI-design is that the user knows better than the computer, and you'd do better not to get in their way. Provide helpful hints, but leave the final, explicit decision up to the user. When the computer starts telling the user what to do even though the user knows better, the user grows frustrated. Believe me, I'm the living proof.

Luckily, I long ago started using the CDDA menu item to load the names of titles into iTunes, and Safari keeps forgetting what I enter into its forms anyway, so the bugs don't bother me that often anymore. But any other apps with that bug? They have to be very good if they don't want to end up trashed.

 
Created: 2004-12-27 @001 Last change: 2004-12-27 @068 | Home | Admin | Edit
© Copyright 2003-2024 by M. Uli Kusterer, all rights reserved.