January, 2009 Posts

The Little Stuff

Worst Assistant Ever

If you hire an assistant who is really talented at a couple of things, but every once in a while pokes you in the eye, how many times would you let that happen before firing them? What if they don’t poke you in the eye, but they do this kind of stuff:

  • Interrogate you when you first meet
  • Berate you every time you make a mistake
  • Mumble incoherently when unsure of what you want
  • List a bunch of skills on their resume for things they can only do badly
  • Never bother to remember anything about you or any of your previous conversations
  • “Accidentally” destroy your work when you push them too hard

In the face of that kind of behavior, would it matter that 80% of the time they do a good job? Unfortunately, most software products do some or all of the above (including the digital equivalent of giving you a good poke in the eye now and then). What’s worse is that many software companies knowingly create products that do these things and not only think it’s okay, but that it makes good business sense (because the ROI is too low to build products that don’t do these things).

The Little Stuff

Recently I’ve been thinking a lot about the importance of the “little stuff” in digital product design. Whether from a design, product management or engineering perspective we sometimes become focused on making sure that the primary scenarios are well served at the expense of the little things, and the overall experience suffers. This often comes out of a misapplication of the Pareto principle (the 80-20 rule) which leads people down a slippery slope that goes something like this:

  • Since people spend 80% of their time using 20% of the product, it’s really important to nail that 20%.
  • Since people only spend 20% of their time using that other 80% of the product, it’s okay if those parts of the product aren’t as good.

Once you take a stance that only 20% matters, it can become easy to rationalize away lazy design and implementation. More likely than not caring, this happens out of a need to prioritize time and effort under the pressure of deadlines and feature lists. In that environment, product teams will  focus on the important features and just cram in the rest.

Bad Rationalizations

There are all kinds of rationalizations for doing the wrong thing and building a sloppy, confusing, and/or painful UI:

  • Very few people will use that feature anyway.
  • It’s an edge case.
  • It’s a one-time setup, so it’s not a big deal.
  • That shouldn’t happen.
  • Only people who really know what they are doing should use that.
  • We don’t have a choice because (fill in the blank: the lawyers, our partner, the business people) said it has to be that way.
  • We have to have the feature because our competitors have it.
  • We can’t be late to market.
  • We can fix it in the next version.

Certainly the primary paths through a product should be well thought out, and you don’t want to organize your product around edge cases, but that’s no good excuse for knowingly doing a bad job. The reality is that people’s overall experience of a product is a collection of their smaller experiences.

Windows Vista

vista-permissions-dialog

Using Vista is a great example of this. There’s actually a lot that’s great about Vista, but it doesn’t matter, because it beats you down with the little stuff. Here’s just one example (and I’m definitely not the first to harp on this): in the name of security, I am bombarded with dialogs asking for my approval to do things that I just told the system I want it to do. Most of the time, these aren’t confirmation dialogs like “Are you sure you want to reformat your hard drive?” but more along the lines of “Was that really you that double-clicked that icon?” This is worse than the security theater practiced by the TSA at airports, which at least arguably has some deterrent effect. Instead, I start to become inured to the dialog boxes, stop reading them and now just blindly click “OK” when they pop up. This of course has the opposite of the intended effect, reducing the level of security because I stop paying attention. Annoying and ineffective by design!

Apple

ipods-nofm

By contrast, I think this whole topic has a lot to do with why Apple’s products are often lauded:

  • They get the first part right of focusing on the 20% of stuff that’s important.
  • They craft the smaller experiences as carefully as the big ones. Even though you only open the box and set up a product once, it’s a pleasure.
  • Instead of including features that aren’t well done, they don’t include them at all.

Now, on that third point they often spin the intentional lack of certain features by claiming that people don’t want those features. Sometimes that’s just cover for “it’s not ready yet” (and hats off to them for being pretty disciplined about getting things right before releasing them to the public). More often, though, there actually is a desire for those features in the marketplace, but Apple knows that adding them, no matter how well done, will detract from the overall experience. They have done a good job of sorting out what people need to satisfy their goals rather than directly accepting feature requests from the user base as a work list of things to add to the product.

By the way, I don’t for a minute think Apple is perfect or gets it right all the time (iTunes? that program is kind of a mess), and will gladly dig into that in future posts.

Do It Right or Don’t Do It at All

How many ways can I say that I don’t think it’s okay to make products that you know are bad? What you don’t put in your product is at least as important as what you do put in. If 80% of your features aren’t important enough for you to pay attention to, don’t include them. If you are building your product to a feature list, being “feature complete” isn’t good enough. If you do include something, make sure it is well designed, well built and doesn’t poke your users in the eye.

New Shredder

shredderOn a sort of impulse while picking up some other supplies at Staples, I bought a paper shredder yesterday (the Staples M5 Mailmate Shredder, about $90). I’ve been collecting things to shred since my old shredder died about 4 years, so there was quite a backlog of shredding to do. I set out to shred it all last night and it was oddly satisfying.

Operation is simple. You turn it on and start feeding it paper. If you try to jam too much in, there are two buttons to help free up the blades (”FWD” and “REV”). This happened a couple of times over the course of an hour, but for the most part it lived up to its “12 sheet” rating.

Oh No!

Then, all of the sudden (and near the end of my pile), it got really stuck on a 10-page stack of pages, half-way shredded. The “REV” light was blinking angrily at me, and no amount of pressing the buttons or turning the thing off and on would allow me to free the pages. I struggled with it for a few minutes, then I started to rationalize. If I had bought this thing 4 years ago, it would have been chugging along all this time. As obnoxious as it is, electronics these days are built for obsolescence after a few years use, so 4 years isn’t a bad run. Or maybe it was my fault — if I had only been gentler with it, putting in just 8 sheets instead of 10, I would still be happily shredding.

But, no! It should still work. Maybe the “manual” would have some helpful info on clearing jams that I hadn’t considered. I put manual in quotes, because it really consists of one page of tiny print, translated into many languages. As it turns out, the manual did have some useful information. I know shredders have a tendency to overheat, and I thought I had been careful to pause every now and then to let it cool down, but I guess not careful enough. According to the manual, after 8 minutes of continuous use, it just stops working and the REV light blinks. Turn it off (and unplug it) for 80 minutes and it should magically start working again. Thankfully, this was true! I’m now back in operation, and don’t have another expensive, oversize paperweight in my life.

Fixing the Design

So what’s the problem? If this had happened sometime weeks, months, or years after buying the shredder, I surely would have thrown out (or maybe even shredded) the manual long ago, probably without reading it. It’s pretty likely that I wouldn’t think to wait 80 minutes and everything would be fine, and I’d assume it was broken for good.

I know that every extra component adds cost, but the big expense here was the sensor that they sprung for to detect the overheating problem. For another few cents they easily could have added one more LED next to a label that read “Too hot, wait” or “Overheat” or something similar. Actually, they didn’t need to add any cost, since there’s no good reason to have an LED behind the REV button for normal operation. So, even though the shredder does a good job of what it’s supposed to do (shred stuff), with just a little more attention to the interaction design they could vastly improve the overall experience of using the product.

One More Thing

The manual is really worth the read. I also learned that despite having a picture of some guy happily shredding his unopened junk mail on the product box, you shouldn’t shred envelopes, because the sticky material can hurt the shredder. Beware of the marketing department!

My Very Own WordPress Theme

When I recently updated this site and decided to start keeping a blog, I installed WordPress to run it. WordPress is an is an amazing tool in its power and flexibility, but it falls somewhat into the same trap as a lot of software in that it works really well for beginners and experts, but those of us somewhere in the middle are kind of left in the lurch. It’s not quite as bad about ignoring intermediate users as a lot of software, but there’s still a gap.

The Short Story

Given the choice between taking someone else’s theme and just applying it to my site or developing one from scratch, I decided to do the later. I got in a little over my head, learned more PHP than I wanted to spend time learning, but in the end I’m generally happy with the result. So, what you’re looking at isn’t just an off-the-shelf WordPress theme with a custom header image, but something I built myself.

Mind The Gap

There are a couple of theme frameworks out there that are trying to serve people like me — they abstract a lot of the options that you might want to customize about WordPress in a way that’s more friendly for people without coding skills. The two frameworks that I looked at (and worked with for a while) are K2 and Hybrid. They are both powerful and have a lot of things going for them. They are built on the premise of providing a much more robust base theme than the defaults that come with WordPress, while also providing a way for you to customize further by developing a “child” theme. The child theme inherits everything the framework does unless you override it.

Unfortunately, they suffer from being so robust and comprehensive that if you want to step outside their expectation of things you should be able to customize easily, it’s overwhelming. Not only do you have to learn how WordPress works, you have to learn how the framework works. In (briefly) working with them, I was constantly encountering problems where (a) I didn’t really know the consequences of my actions (was I breaking dependencies that I didn’t know about?) and (b) when I understood what I needed to do to achieve a certain goal, there seemed like a lot of extra work to make it happen. I kept finding that to do what I wanted I would need to modify the framework just a little bit here and a little bit there to get what I wanted. That kind of defeats the purpose of using a framework with a child theme, so I ventured out on my own. (I don’t really mean to disparage these in any way, because they are great, definitely worth checking out, and I probably wouldn’t have been able to develop my own theme so quickly had I not studied these themes).

What I Was After, What I Got

Although my goal isn’t really to release a theme to the public, I created it with the idea in mind that it be easily customized by someone else. I figured that if I did that, it would make my own life easier if I want to change it later. For me that meant:

  • Keeping it lightweight. The more places there are to look to have to change things to your liking, the more daunting it is (and the more likely you’ll miss something). Instead of the hundreds of files that make up K2 and Hybrid, there are 9 files in my theme (not including images). If I want to change something or if something is broken, there aren’t a lot of places to check. Their frameworks are about 1.3 MB and 1.7 MB (including images). My theme is about 170 KB.
  • Keeping it simple. There’s only one custom function in my theme, and it’s only a couple of lines long. Instead of creating a bunch of different templates for different page types, I kept just about everything in the index.php file and used a few conditional statements. This may not be the best coding practice, but I don’t need it to be particularly modular, and this way I can keep track of everything much more easily.
  • Keeping CSS semantic and separated. I broke my CSS into 3 files: a reset.css file (clears out all the default browser styles) a base.css file (building up things like basic typography, spacing, formatting that was stripped out in the reset file) and the theme’s style.css file which basically defines all the custom things you see. And everything is named in a meaningful way, rather than in some crazy shorthand. With just reset.css and base.css in place, the site would look like a web site from 1992, but all the content would be there and everything would work.
  • Putting lots of comments in the code to explain what’s going on. I figure if I don’t touch this for 6 months, I’ll be in trouble if I don’t include good comments.

Unfortunately, there are still some things that I’d like to change that are going to require some heavy lifting on my part. There are a few things that seem to be buried deep in WordPress’s functions that shouldn’t be (text strings and CSS styles). I’ll probably have to learn some more PHP to write functions to override the behavior I want to change, but I don’t think there are too many of these things. There are also a couple of minor CSS hacks to get things working across the 4 browsers I tested (Internet Explorer 7, Safari, Firefox 3 on Mac & PC). If I get to updating some of this, I may release the theme to the public.

A Few Thoughts on How WordPress Could Improve

I imagine that this has been the trend all along as WordPress has been updated over time, but these are some of the main shifts I’d like to see with WordPress:

  • Every bit of what can be displayed should be modularly accessible. I should be able to choose to show very granular bits of information or not rather than sometimes getting the kitchen sink.
  • Text and styles should be completely configurable. Text strings shouldn’t be written into WordPress functions, you should be able to confure them. Most HTML tags and CSS ids or classes shouldn’t be hard coded into WordPress functions, you should be able to use the ids and classes you want.
  • There should be a consistent way to configurable all this stuff. It would be nice to have a web UI to do it all from your WordPress dashboard, but even just having a standard way to call the display of each element, and pass text, HTML or code to display/execute before & after the element would be great. It’s possible that this last bit exists, but I just haven’t figured it out yet. My sense is this is that what I want is only partly there.

As I use it to blog, I’m sure I’ll more to write about WordPress and its UI problems big and small. But for now, long live WordPress!

Pardon the Dust!

I’m updating the site right now, and for some reason things that worked just fine on my local server don’t seem to be working on the live site. Frustrating!

UPDATE: The dust should be all settled now. I figured out the problem, and everything should be back to normal, only better.

Mozy Disappoints

mozy-logo
Over the course of the past few months (since early November) I have been on a kick to have a real backup strategy for the computers in my household. I had been using Time Machine with our old PowerMac for a few months (since upgrading to Leopard), but it’s actually not my main machine. I spend most of my time on my new laptop (a MacBook Pro), and it has been woefully unprotected since I got it a couple of months ago. Worse still is the state of our Windows XP desktop. We’ve had that machine for about 5 or 6 years, and I’ve only backed it up once, a couple of years ago.

If any one of these hard drives completely died it wouldn’t be a complete disaster, since many files are on more than one machine (music files, some pictures, some important documents). This hasn’t been a backup strategy so much as result of not having a good means for sharing files. In any case, losing a hard drive would be real pain. Many things would be lost forever, and sifting through the other machines to recoup what I could wouldn’t be much fun.

You would think that I would have learned my lessons. About 8 years ago I lost a computer to what I assume was some freak electrical surge. Every component in the thing was fried, including the hard drive. In that case, I did have a backup of important documents that was just a few months old. Frustrating, but not too tragic. And about 4 years ago, I heard the tell-tale clicks of a dying hard drive coming from my Powerbook. Luckily I was able to clone the drive just before it completely failed. Disaster averted!

Welcome, Mozy

Mozy Menubar

So, I finally got serious about backing up. I had read about this online backup service, Mozy, some time ago, and decided I would check it out. It’s a pretty good deal:

  • About $5/month for unlimited storage.
  • It’s supposed to be easy to set up and use.
  • It’s Mac & PC friendly.
  • Files are stored remotely, so we’re set if the house burns down, or something equally tragic happens. We may lose the furniture, but at least the MP3s are safe from smoke and water damage.
  • It’s encrypted (or at least they say it is) with super-strong 448-bit Blowfish encryption. I don’t know that much about encryption, but I do know that blowfish are fairly poisonous, so I figure my data will be safe from marauders.

I checked out a bunch of other online backup providers too, but I was sold on Mozy. So, I signed up for one year on two machines (for my laptop and the PC).

Getting Going

I figure that even though I’ve got many, many gigabytes of data to backup: (a) UNLIMITED storage for one low price, (b) I’ve got pretty fast DSL at home, and (c) even if it takes a long time (several days? a week or more?) to get through the first backup, after that it should be smooth sailing. Mozy does differential backups (just backs up the changed files), so after the initial pain, it should be all good.

As far as I remember, installation was pretty simple on both machines. There are even some nice controls for throttling the bandwidth so that your internet connection isn’t completely saturated with sending backup files all the time. Nice.

So, I start the first backup going on both the PC and the Mac. It’s slow. Really, really slow. I know that part of this is the nature of trying to upload a lot of data on a home DSL connection (slower on the upload than the download), but it seems inordinately slow. So I decide that it’s probably not a good idea to do the first backup on both machines at once. I cancel the laptop’s backup, and the PC starts to make better progress. The estimate is that it will take several days, which is fine. We were about to head out of town for a few days for Thanksgiving, so I figure that by the time we get back it will be done (or close). When we get back, the status says that it’s something like 60% complete. I’m a little surprised that it’s not farther along, but it doesn’t seem unreasonable, so I leave it to do it’s thing. A few hours later, it hasn’t made any more progress. Something froze, and it’s not clear why. After I get it started up again, I find that Mozy is starting over from the beginning. Tens of gigabytes of data were transferred, but none of it is saved on Mozy. I should have just given up on Mozy right then. But, after some trial and error on both the Mac and the PC I finally resign myself to the idea that Mozy cannot suspend and resume backups.

Did I mention that I planned to use Mozy with my laptop? Do you know what I do with my laptop frequently? I take it places. To do that, I close the lid and it goes to sleep for a bit. So, unless I’m willing to leave my laptop connected for a week or more just to see if it will eventually finish the initial backup, I’m out of luck. That’s just not reasonable. This is a complete failure for an online backup service.

At this point, I’ve already paid my money, so I figure I will keep playing with the settings and back up a smaller amount of data, just some really critical things. Well, critical files that aren’t too big, anyway.

The User Interface

Mozy Backup Sets Tab

Mozy Files and Folders Tab

Screenshots of the main interface
(Backup Sets tab and Files and Folders tab)
Mozy Edit Backup Set Dialog

Mozy Preferences

Screenshots of the other key interface stuff
(Backup Sets Edit dialog and Scheduling tab on the Preferences dialog)

The UI doesn’t have a lot going on. I usually appreciate that. But on first blush and after using it for a while, it’s just not clear what’s going on. That’s not good. My model for what I should be able to do is:

  1. I choose files and folders that I want to back up (either based on their location on the drive or based on file type), then add these to a new or existing backup set
  2. Mozy shows me a summary of what’s going to be backed up.
  3. I can choose to start backing up immediately, set it for a time in the future, or schedule it for a recurring time.

I’m pretty sure you can do most of that here, but it’s not clear.

Big Problems

  • Mozy can’t suspend and resume backups. This should just happen automatically. With a laptop, this makes Mozy useless for me. Even for a desktop, it’s not really acceptable. This is especially true for home users, where network interruptions are a fact of life. I have a DSL connection with a dynamic IP address at home. I don’t know how often Verizon forces me to renew the DHCP lease, but I’m guessing that may have something to do with why I never am able to finish a backup.
  • Mozy freezes and crashes all the time. Not really a UI design problem per se, except in the sense that it makes the product unusable.
  • The “Backup Sets” tab is not a list of backup sets. It is, instead, a list of search queries and folders that you want included in your backup set. As you can hopefully see, the construction of the queries is inscrutably arcane. You better like their default queries! You can also add folders on this tab. Wait, then why is there a Files and Folders tab?
  • You only get one backup set. Since that list of backup sets isn’t really a list of backup sets, I’m pretty sure you only get one configuration. It’s not the worst limitation in the world, but it’s a pretty severe limitation. You choose what you want to back up, and that’s it, as far as I can tell.
  • It’s not clear what’s being saved when you “Save Configuration”. You can select different things on the Backup Sets and the Files and Folders tabs. The “Save Configuration” button is placed outside of the tabbed area, leaving some ambiguity as to what you’re actually saving. Is it the selections on both tabs, or just the one you’re looking at?
  • The main application doesn’t include a control to start a backup immediately. You can only do this from the drop-down in the menu bar, unless the drop-down in the menu bar is broken, like mine (notice how everything is grayed out, so I can’t select anything?). I’m not a fan of design by feature list, but this is one I’d put on my feature list for backup software.
  • Scheduling is tucked away in the preferences. Scheduling your backup is one of the main tasks associated with backing up, on a par with choosing what to back up, and so should be a part of the main interface.

The Little Stuff

  • The application is constantly calculating file sizes. Whenever it displays something new (meaning on launch), it starts calculating. It does this for things whether or not they are selected, so it pretty much means counting all the folders, files, and sizes on your hard drive. Do you know what a crazy resource drain that is? I’ve had Mozy up in the background for 10 minutes or so, and it’s still calculating. If you try to actually click around in the UI too much while it’s calculating it will freeze the app and then crash.
  • The Save Configuration button quits the application. What? Is that a joke?
  • The table in the Edit Backup Set dialog is sorted by Location. I can see how this kind of makes sense, except when it doesn’t. The column headings are clickable, but they do not sort. There’s also no indication in the header of which column is the sort column. Annoying!

The Saga Continues Ends

I signed up for Mozy almost 3 months ago. I still don’t have a successful, completed backup. Instead, I bought some external drives. Time Machine works great on the Mac and Retrospect Express works on the PC. It probably took less time to set up the drives than it did to write this post. I still don’t have the security of off-site backups yet, but I’m better off than I was before, and certainly better off than I am with Mozy.

Update (Feb 2010): I gave up on Mozy and cancelled my account before the annual renewal. If you read the comments you’ll see that they’ve tried to make improvements, but it sounds like they still haven’t delivered on the promise of a good online backup solution. External drives are cheaper, faster and they actually work, so I’m sticking with that for now.

Posting from my phone

I can post from anywhere now!

Welcome

For several years, Flex ID has had a one-page site with roughly five sentences of text describing what we do. Since there aren’t already enough blogs about design, we thought we’d join the fray. So, after a bunch of fiddling with WordPress, we now have a new, exciting site. It will probably take some more fiddling before real posts start to emerge, but in the meantime — welcome!