My web feed needs are quite simple, mostly web comics and family’s, friends’, and author’s blogs. So simple that I haven’t bothered to learn the difference between RSS and Atom . Accordingly for years I have just used Safari as my aggregator.

Despite the marketing to the contrary, I have not found Safari 4 to be much of an improvement over Safari 3. In particular, its handling of web feeds is unacceptably broken. There are several feeds for which it would only notify of updates every couple of months. The checking of feeds would consume Safari such that it would be unresponsive for five seconds or more upon startup. At least half the time when I tried to browse to a particular feed Safari would spin for some time and then show an error page saying that there was an IPC timeout in the Mach kernel.

I think that all three behaviors are symptoms of the same cause, probably an architectural flaw in the code for the feeds. This behavior first appeared in the beta for Safari 4 and has not been fixed in the eight months since then. A mantra often associated with Mac software is “it just works”; Safari 4’s web feed handling just doesn’t work. There is no way that the kind of problems I continue to see can be considered acceptable. Simply put, Safari 4 should not have shipped with these failures.

Yesterday I reached my breaking point and went looking for a new aggregator. I chose NewsFire and have been very pleased with it. I have seen no problems at all with any of the feeds, so I know that the problems are not caused by the feeds themselves. I like the NewsFire interface a lot, finding it very usable. And since I’ve removed my feeds from my Safari bookmarks, Safari starts up a lot faster, too.

About a fortnight ago, we received an email from Netflix announcing that in September they would remove Profiles, a feature that allows multiple queues for the same account. For example, in my home my spouse is the primary account holder with the default queue, my kids have their own queue, and I have my own queue. All three queues together count against the number of movies out at a time. Given the widely divergent tastes in movies amongst all of us, the three different queues (or “profiles”) allow us to more easily manage the movies we want to see.

The shamefully vague email announcing the degradation of service said “While it may be disappointing to see Profiles go away, this change will help us continue to improve the Netflix website for all our customers”. Netflix spokesperson Steve Swasey reiterated that asinine position with “the decision will ultimately benefit all Netflix members … we will be able to put more focus and resources site and service improvements that benefit everyone”. As if those who use profiles are somehow preventing those who don’t from using the web site.

To say I was slightly peeved would be a gross understatement. I hate using the telephone but I was angry enough to call their customer support and ask for a better explanation. The poor gal who answered said that it was in response to requests from the users. I have a very hard time believing that anyone actually called to complain that someone else could use multiple profiles. The script she read implied that profiles confused the majority of Netflix users. Again, I find that explanation tenuous at best since you have to specifically activate extra profiles and most Netflix users I know use profiles without confusion.
Two decades of working in the software industry give me a strong hunch about the real impetus behind this horrible decision. This kind of bonehead maneuver has all the hallmarks of someone with strong opinions unencumbered by facts, no objective criteria by which to have their performance measured, and lots and lots of spare time to stump for their pet idea du juor. (Think Ryan’s web site on “The Office”.) Said clown probably concocted the “users demand it” line as justification after the fact. Given the outrage at the proposal, it is obvious that quite a significant percentage of the Netflix users are in favor of profiles.

As I explained to Netflix in the email of complaint I sent, in software (including web site development) the cost for supporting multiples of anything is almost all in the transition from supporting one to supporting many. Since the profiles feature had already been developed, that was a sunk cost; removing profiles would not, and could not, recoup any of the costs of its development. The only thing removing profiles would do is piss off the customers. It would actually cost more to remove it than to leave it in place as removing code is more than just a cut-and-paste exercise. Certainly a company the size of Netflix could afford to hire a web site designer who knows enough CSS to accommodate multiple profiles in their new web site. Heck, they could even dream big and consider using AJAX to present a different web page based on whether or not the person had multiple profiles. The point is that support for multiple profiles is technically feasible and cheaper than removing said support.

Luckily, this idea crumbled under the withering fire of protest from the users. Netflix has relented and will keep profiles. In their email they said “You spoke, and we listened. We are keeping Profiles. Thank you for all the calls and emails telling us how important Profiles are.” This decision is as mindful of the customers as the previous was ignorant of them. Good on ya, Netflix.

A site (that shall remain nameless) that I was reading today is that of someone with a bachelor’s degree in computer science. I say this to put a very annoying trait of the site into context: hyperlinks use some JavaScript magic to embolden themselves on mouse-over.

Obviously, I am keen on using a bold typeface for hyperlinks. I adopted the habit in the primeval days of the mid-nineties to make it easier for the reader to see keywords. A fellow who once was a reader complimented me on the technique and I’ve kept it since. So I have no objection to the emboldening per se.

Dynamically changing the appearance of the page can be made to work quite effectively. WordPress uses a fade effect rather nicely after an entry is posted. Tooltip windows are generally unobtrusive and do not obscure the item for which they provide tips.

What I find rather distracting is the dynamic emboldening when the mouse pointer hovers over the link. Changing the typeface makes a major visual change to exactly the user’s point of focus and causes cascading layout changes for the rest of the text of the paragraph.

Recently at work a coworker and I had a spirited discussion regarding user interface. The old version of the application has an MFCtree control with tri-state check boxes. The dispute began when I tangentially mentioned that it was a horrible user interface design. I was surprised that he defended its use.

He argued that the half-checked state tells the user that one or more of the descendant check boxes are checked. I argued that the half-checked gives the user no useful information for actually making a decision. It’s like telling an auto mechanic that something isn’t working without telling them what isn’t working. The user still has to scan every descendant check box to determine what has changed.

Whilst I stand by my position regarding tri-state check boxes, I realized later that the underlying problem is the abuse of trees. A tree can be a valid way to represent hierarchical data. But adding a check box to the tree node raises problems regarding the display of the state of the items. Some frameworks, like those from Microsoft, solve these by using the half-checked state for parent nodes. The end-result is an overly-complicated, less usable tree.

I think a regular tree and a list related by drag-and-drop would be a better solution than a tree with tri-state check boxes.

Safari 3 introduces tabbed browsing to Safari. I’ve played with tabbed browsing off and on with Firefox for a couple of years. My approach to tabbed browsing versus windowed browsing is still immature. I tend to use tabbed browsing when drilling into a highly-linked subject. (cough) Wikipedia (cough) I tend to use windowed browsing for separate subjects, such as Tclman pages contrasted with Google searches on debugging make files.

This morning I was drilling into the successors of the Cannonball Run and I wanted to reorder the tabs. As far as I can tell reordering the tabs is not possible in Firefox but, since Safari is an Apple product, I tried dragging the tab to the end. It just worked!

That attention to detail is one of the reasons I’m a big fan of Apple products.

A few moons ago I noticed that my application (at work) had a certain behavior: if the focus was in a widget that supported cut-copy-paste, the cut-copy-paste menu items and tool bar buttons were enabled regardless of whether anything was selected or the clipboard contained anything.

I added to my to-do list an item for correcting the enabling and disabling of those menu items and buttons. To me, cut and copy should only be enabled if the selection is not empty and the widget with focus supports cutting or copying; paste should only be enabled if the clipboard is not empty and the widget supports pasting. A coworker favors leaving the items and buttons enabled but doing nothing in the absence of selection, clipboard contents, etc.

That coworker is a long-time Windows developer and I am a Mac zealot. I find these affiliations not entirely coincidental. On the Mac, cut, copy, and paste are only enabled when they will actually do something; under Windows, they are enabled whenever the developer feels like, sometimes when they won’t do anything at all. Those behaviors are representative of their respective communities’ approaches to the user interface: Mac applications do whatever is easiest for the user and Windows applications do whatever is easiest for the developer.

It takes a lot of complexity to make cut, copy, and paste work correctly. In my case I needed focus and selection notifications and strategies around when and which buttons to enable. (Luckily the Cocoa framework automates a lot of things.) It certainly would have been easier to leave the controls enabled and let the user figure out if they did anything.

The benefit of the increased usability outweighs the cost of the extra work and complexity. Whilst there are examples of Mac applications that do the wrong thing and Windows applications that do the right thing, on the whole the Mac development community makes more usable applications. It’s like the difference between a four-by-eight sheet of D-grade plywood and a sanded, polished piece of mahogany: both will hold up your coffee mug but one is a whole lot nicer to use.

Which is why I spent the day fixing the cut-copy-paste controls. I’ll do the work now so the users won’t get any splinters.