So. I am currently considering upgrading my cell phone, and my provider is Cellular One (err Bell Atlantic . . . err . . . Cingular . . . err . . . AT&T . . . err Cingular . . . err . . .AT&T). Conveniently, Cingular’s website allows one to search for phones and devices. It even has this cute little checkbox search interface:
Note the lack of a button to fire off the filtering process. And why is it missing, you ask? Well, because you don’t need a button when you setup your checkboxen to post back your form! This sounds like a neat idea, and probably worked great on the developer’s local machine, and possibly even in the lab running on an isolated network. And I bet it worked lickety split for the dev team’s demo to senior management.
In any case, whatever the devs where thinking, this trick fails miserably in production. When running over the public internet, especially on this not particularly fast laptop on a spotty wireless signal, it breaks expected behavior of checkboxen. This expected behavior is that checking and unchecking does not cause a page action. The actual behavior is quite different, especially when one tries to check multiple boxes in rapid succession.
For example, I am looking for a slider or a bar phone. So I check slider. This starts the postback process. But, because of the nature of HTTP communications from this particular bit of earth, it takes half a second for the page to begin to refresh. In that time period I have also checked the ‘bar’ box. Unfortunately, I am just receiving the page I requested when I checked the ‘slider’ box. So, I get a page filtered for ‘slider’ phones and my ‘bar’ choice was apparently ignored due to postback effects.
Now, this example is a minor annoyance. But there are some important lessons to be learned here:
- Don’t make controls trigger behavior that is outside of norms—checking a box should not directly trigger any action.
- Testing your public user interface in multiple browsers is a no-brainer. But remember to check it using some older machines and probably more importantly over slow and/or unresponsive connections.
Notes and Disclaimers:
- Yes, I am aware that Cingular’s site is apparently a Java application. But the back-end here is immaterial—the whole point is UI behavior.
- Somehow I cannot find a phone that fits my requirements. I need a non-flipping phone with Bluetooth, a camera, 3g capabilities that is either a nokia or charges off USB that is not a Motorolla. Somehow the combination of those features cannot be found as of yet. If you have a lead on such a phone, do let me know.