Oversimplification is confusing (or, Don’t ask stupid questions)

August 30, 2007 under design, usability

A few months ago, we were at one of the Chinese restaurants on Spadina, and one of the items on the menu was a soup in “high-quality broth”. Of course, my first thought was, “So the rest of the soups use low-quality broth?”

Sometimes I notice things in software that raise the same kind of questions. Here’s the dialog you get when you save a file in Photoshop CS2:

Photoshop dialog box

When saving a file, you have an option to “maximize compatibility”. The thing is, they never tell you what the alternative is. Why would you ever choose to not maximize compatibility? Even worse, the dialog explicitly warns you that turning the option off is a bad idea. Seems like a stupid question then, doesn’t it?

Another example of asking what appears to be a stupid question: one web site I use fairly often has an option to use maximum security when signing in. By default, this box is not checked. Again, they don’t tell you what the alternative is, so why the hell would you ever choose to not use maximum security? In this case, the answer is that the maximum security option opens the site in a new browser window. But without giving you that information, they’re just asking you a stupid question.

Keeping your dialogs simple is a good idea, but be careful — sometimes oversimplification can be confusing.


Technorati Tags: , ,

Avoiding the mailto: trap

August 29, 2007 under usability

Does anyone else find it annoying when you accidentally click on a mailto: link? I’ll click on someone’s name, expecting the link to go to their blog or a bio page or something, and then realize (too late) that my system is firing up Thunderbird. D’oh.

I know it’s a part of internet history, but I think mailto: should be buried alongside the blink tag. It’s a wart on the web browser user interface, a Burmese tiger pit in the browsing experience. 99% of the time, clicking a link takes you to a new web page, but sometimes, depending on a whim of the developer, it might open up your email client.

Dear web developers, may I humbly suggest that the only time you use a mailto: link is when the link text is an email address? That way, the consequences of my clicking will be much clearer. Thanks!


Technorati Tags: , , ,

Data visualization roundup

August 23, 2007 under design, infoviz

Anand pointed me to a roundup of cool data visualizations. My favourite of the bunch is Elastic Lists:

Elastic Lists

Elastic lists are a technique for browsing multi-faceted data structures. A multi-faceted data structure is one that is structured by several different attributes — in this example, Nobel Prize winners are grouped by the area (physics, chemistry, etc.), nationality and gender of the winner, and year. What I really like about this visualization is how the relative weights of each of the metadata values are represented by the size of the box. You can see in the image above that the box for male is much bigger than the box for female, indicating that there have been more male winners of the Nobel Prize in physics.

Flickr tag cloud

The technique is similar to the now-ubiquitous tag cloud (an example from Flickr above), but I like the approach from Elastic Lists better, because it’s more subtle. I find that some tag clouds tend to punch you in the face with the main terms, but this approach gives the words themselves equal footing, while still providing some useful secondary information.


Yay for rectangular selection! (But just this once)

August 21, 2007 under usability, programming

I’m usually annoyed by the fact that the Windows terminal application uses rectangular selection, rather than the standard line-based selection. The problem I normally run into is when I try to cut and paste a line that wraps in the terminal window:

Rectangular selection example

So you end up with a bunch of extra line breaks in the text when you paste it. I see how this could be useful if you are cutting and pasting columns of text, but I personally find that it happens so rarely that it’s not worth the pain that rectangular selection causes me most of the time.

But — JOY! — I’ve found a cool scenario where it does work really well for me. When I’m doing Python development (have I mentioned that I’m in love with Python these days?), I keep two terminal windows open: one for launching my application, and another one which is running the Python console, which I use as a sandbox to quickly test out snippets of code. It turns out that rectangular selection comes in really handy for moving working code from the Python console into my text editor, like this:

Selecting text in the Python console

The rectangular selection turns out to be a handy way to omit the “>>>” that begins every line in the Python console. I still have a problem with line breaks, but luckily Python code rarely runs over 80 characters. Now if only there were a way to get it to automatically ignore the syntax errors…


Sometimes it’s okay to be sucky

August 20, 2007 under design, usability, information management, hci

I’ve written before about the paradox of choice — the concept that having more choice does not in fact lead us to be happier and more fulfilled. More choice leads us to worry and waste time making decisions that aren’t really that important in the grand scheme of things. This applies to software too, which is why I’ve always appreciated software that keeps the preferences panel nice and simple.

The paradox of choice isn’t a mystery. Really, it’s a simple trade-off: I get to put less effort into making the decision, which makes up for the fact that I might not get exactly what I want. Lately I’ve been thinking about how this same concept applies to personal information management.

We all know that keeping your digital documents organized is a lot of work, but you make the effort now so that you can find what you need later. At a certain point, you might wonder, “Couldn’t the computer automatically organize this stuff for me?” Desktop search is a step in this direction, but it only works if you can conjure up the right keywords. Sometimes, you don’t know what you’re looking for until you see it (or, in information foraging theory, until you get a whiff of its delicious scent).

What about automated classification? Your computer could recognize that a bunch of documents are similar, and group them together. The problem is that existing systems just aren’t very good at doing this, especially for personal information. Because of this, people have tended to steer clear of the idea of automated classification in PIM software.

But you know what? Maybe it’s okay that the automated classification sucks. If you can design it so that it degrades gracefully, so that it’s suckiness doesn’t get in your way too much, then maybe it would be a fair trade-off. Like your favourite dog that’s always getting into the garbage, you could just shake your head and chuckle at its stubbornness and naïveté. As with the paradox of choice, I’m willing to put up with something that’s not quite what I wanted, as long as it’s a net win for me overall.


Why is installing software on a Mac so complicated?

August 16, 2007 under usability

Yesterday I finally got around to buying a monitor, so I was able to boot my Mac Mini for the first time in 6 months. I decided to install the latest version of Skype, since the version I had on there was so out of date. In the process, I was reminded just how much of a pain it is to install applications on Mac OS.

If you’re not familiar with the Mac installation process, check out the instructions that are displayed on the Skype download page:

  1. Close Skype for Mac, if you have an earlier version running
  2. Download the latest version of Skype for Mac
  3. Open the Skype download.
    Open your web browser’s Downloads window and double-click on the blue Skype icon. If a warning dialog opens, simply click Continue.
  4. Drag the Skype icon to your Applications folder
    If you have an older version of Skype installed, you’ll be asked whether you’d like to replace it with the new one. Click Replace.
  5. Eject
    After the installation has finished, click the Eject icon.
  6. Open Skype from your Applications folder

Compare this to the instructions for installing Skype on Windows:

  1. Save the application
  2. Follow the Setup Wizard
  3. Launch Skype

This is a completely standard installation for OSX. On the Mac, applications are download as .dmg files, which are disk images that can be mounted in the same way as a CD or external hard drive. Typically, when the .dmg is mounted, you see a window like this:

Skype installation window

It looks like the cover of a Jefferson Airplane album, but piece of artwork is actually telling you to drag the Skype icon into your Applications folder. So I did what I usually do: click on the Finder icon so I could bring up my Applications folder. Except when you click on the Finder icon, nothing happens, because the window you see is actually a Finder window. At this point, I had to think for a second or two before remembering to hit Cmd-N to open a new Finder window, where I could now drag the Skype application icon.

I did actually learn something from Skype’s installation instructions though. Until last night, I never realized that the picture of the Applications folder is actually a link to that folder, so I can just drag the icon an inch to the left to install it. Which raises the question: if it’s that simple, couldn’t they just do it automatically? A simple prompt of “Would you like to install Skype in your Applications folder?” would probably work 99 times out of 100. I also learned that the little gumdrop in the top right of the window switches back to the “traditional” Finder view. That’s news to me.

Anyhow, once you’ve made it this far, you’re not out of the woods yet. The Skype .dmg is still mounted, as we can see in the Finder window:

Skype .dmg mounted in Finder

So you need to click on the eject button to unmount the installation image. If I didn’t understand the inner workings of the process, I think I would be really confused by this part. Why would “Skype” show up as if it’s an CD or external hard drive? Why do I have to “eject” it after I’m done?? The whole .dmg business gets worse, because it’s actually possible to launch the application from the .dmg, which can lead to lots of confusion when you eventually attempt to unmount it.

A better solution

Many of the problems in the Mac installation process are caused by an earnest attempt at simplicity. On the Mac, an application is like a file — you can save it anywhere you want, and deleting it is as simple as dragging it to the trash. But the problem is, they aren’t really files, they’re folders. So in order to distribute them as a single file, they have to be wrapped in a .dmg or some sort of archive. And this is where the problems begin.

My proposed solution is for Apple to come up with a standard application distribution format, something other than .dmg, because that causes too much confusion, with the whole unmount process. Really, it doesn’t need to be anything more than a zip file with a bit of metadata. When you double-click on one of these files, you would be presented with a dialog asking, “Would you like to install Skype?”. It would show “Destination: Applications”, which advanced users could change, like a “Save As” dialog. Then, for most people, installing the application would be as easy as clicking yes in the dialog.

Any thoughts? I think this keeps the main advantage of the Mac approach — that an application is an object and not some sort of abstract commitment. It makes it dead easy to do what people usually do, which is install the application to their Applications folder. At the same time, it still allows advanced users to customize their installation location. Really, does it need to be any more complicated than that?


Technorati Tags: , , , , ,

Fun with clickwrap licenses

August 8, 2007 under programming

Ball and chain The other day I installed some software from Microsoft Research, and for some weird reason, I decided to read the EULA. I found this gem (which, after Googling, seems to be a pretty common phrase in these things):

You may use any information in intangible form that you remember after accessing the Software.

Oh really?!? I can?? Gee whiz, thanks, guys. “Ya know, under normal circumstances, we’d wipe your memory, but what the hell, we’re in a good mood today — you can keep it.”

I know these kinds of ridiculous claims in EULAs aren’t a new thing, and Microsoft’s licenses are probably no worse than many other big software companies. As I understand it, these click-though (aka clickwrap) licenses — if they are even enforceable — are subject to standard contract law. Still, it seems to me that it shouldn’t be legal to draft a contract which denies or grants privileges which are already protected by law.

The intellectual property situation in software development is getting scary. Jeff Atwood wrote a good post not too long ago called The Coming Software Patent Apocalypse. Software patents are actually scarier than the ridiculous EULAs, because you can infringe a patent by complete accident. Unlike copyright, patent protects against independent invention — in other words, you can infringe on a patent even if you can prove that you had absolutely no knowledge of the patented invention.

Since the number of (US) software patents seems to be growing exponentially, it’s really becoming a minefield for small developers. Many people have said that it’s impossible to write software without infringing on a number of patents. Linus Torvalds has even said that the only realistic approach is to bury your head in the sand.

If you’re interested in the topic, I definitely recommend reading A New View of Intellectual Property and Software. It’s a bit dated now (published in ‘96), but it’s a great summary of the problems with existing IP laws related software, and has some interesting suggestions about how to fix things. One of the authors, Pamela Samuelson, also recently published a proposal for copyright reform in the US.

(Photo by galuppi on Flickr)


On Quality Code: Less is More

August 3, 2007 under design, minimalism, programming

This morning Signal vs. Noise linked to a post by Paul Stovell called We are what we repeatedly code:

The best developers I know write great quality code every time they touch an IDE. This is because they realize that writing good code is something you have to practice, something that you have to do over and over again to be able to do right. They realize that writing great code is something you do all of the time, not something you save for a party trick.

I agree with him on this. But what exactly is “quality code”? Paul uses an example of a small, throw-away tool he wrote recently:

I could have written the tool as one huge Main method in a console application. Yet, instead, it’s all nicely factored. There are base classes, adapters to reduce the dependencies on the outside systems, encapsulation, interfaces, a couple of occurrences of the strategy pattern, and even the odd XML-doc comment thrown in here and there. Hell, I even gave the DLL a fully qualified company namespace.

I get what he means: write every piece of code as if it will ship. But I can’t agree with any definition of quality that is measured by the amount of design patterns you use. All the things he described — encapsulation, interfaces, design patterns — are all well and good when used appropriately, but their abundance, or even mere presence, does not indicate quality code, any more than the presence of salt and pepper indicates a good soup.

I’m reminded of my first co-op term at IBM on the SWT team. Steve Northover, the SWT technical lead, has a couple of golden rules. One of them is “that which obscures my code is bad”. Encapsulation, interfaces, the adapter pattern, the strategy pattern…all ways of solving specific problems, but also ways of obscuring your code. So many people seem to believe that adding more structure will produce better results. We see a similar pattern in government (endless bureaucracy), education (standardized testing), and business (meetings, reports, yearly reviews, middle management). These things begin with the best of intents, but often end up causing more harm than good.

In software development, there’s a growing movement of people who believe that “less is more.”