Wednesday, July 25, 2007

Simplicity and the Beast

Go read the WSJ article.

This blog post is about the sentence that says:

"If you're a wonk and you want lots of controls and features, Microsoft is right for you," Mr. Kay says. "If you want a simple experience and you're not tech-savvy, then you'll probably do better with Apple."


Why is this wrong?

It's simply the wrong way to think about the UI for an application.

There are two issues here: Features and configuration. Features govern what go into the program. The configuration controls which features are turned on, and how they behave. Programmers will usually put in all the features they can imagine, and then produce a hideous UI that controls which feature is enabled and how.

But that's the lazy way out. As a programmer, you'd reduce a lot of your load if you figured out which were the most common features used by your users and in which configurations. Then by choosing such a configuration as the default, you're going to make a lot of your users happy because they don't have to fiddle with your program's settings. Note that it's not *all* users, it's a majority of users. For the fringes, make sure you have configuration options, but I'm willing to bet that the UI that results will be a lot more manageable.

One story I've heard tells of a programmer who released a program with some configuration options accidently removed. Nobody complained. In fact, nobody even noticed. That was sign of overdesign. He promptly ripped out the features in the next release. Less code == less maintenance. The original Unix programmers were sparse in their outlook, adding features only when asked to, not mis-anticipating user's demands.

GNOME 2.0 went this way, and I'm extremely happy they decided to take it that way. It's no less powerful, but I spend time working instead of tweaking my GNOME configuration. Ubuntu pared down the menus, bringing down the number of image editors to one from maybe a dozen, one web browser, etc. The rest are still available, but most people use Firefox, so why install Elinks and clutter up the menu?

The only program that I use that is overflowing with features is Amarok. Thankfully, it can be used in a simple mode to play my music and I use the exotic options only rarely. But it's a remarkable program able to tackle everything I've thrown at it (iPods, album art, synchronization, queues, auto-mounting, replay gain, etc.) but I fear as these features will become more "standard", other programs will include them in the GNOME fashion -- it just works -- and I'll move away.

In short, let the users do their work, make your program get out of their way.

And it isn't the number of buttons that count.

Sunday, July 15, 2007

Suspend works again!

Decided to spend a peaceful Sunday pursuing Feisty's inability to suspend my laptop.

After a dozen reboots and no solution in sight, I decided to install the latest 2.6.22-8 kernel from Gutsy. I'd tested suspend with 2.6.22-6, but that hadn't worked. But with 2.6.22-8, it worked! Kinda. The nv driver doesn't bring up the backlight, so I had to go back to the nvidia driver. But now it works!

Regressions: bcm43xx doesn't really work with my card, and ndiswrapper is not included in 2.6.22-8. Dunno why. The changelog has this cryptic comment "No longer provide ndiswrapper or ivtv modules (l-u-m does)". Unfortunately, I've no idea what l-u-m is!
Attempting to recompile ndiswrapper results in some dependency problems which I'm in no mood to fix (requires linux-headers, but linux-headers requires libc6 2.6, etc.).

Ah well. It's still a couple of months away.

Update: l-u-m is linux-ubuntu-modules, which I found out by following the dependency chain from linux-generic.

Tuesday, July 10, 2007

Intel BIOSes require the Bootable flag on partitions

Not much on my tech blog these days, but here's a quick solution to what seems to be a common gotcha. We recently got new machines for our lab, and they all run a 946 chipset. The installs went smoothly with grub getting installed, but after rebooting, the BIOS refused to boot from the hard disk, pretending as if it wasn't there at all!

It turns out the BIOS on these machines refuse to boot from the hard disk if none of the partitions has the bootable flag set. This is a bit crazy, and can make you go hunting for unconnected hard disks and stuff like that.

Here's the quickest solution, for the above mentioned problem:
  1. Boot from CD, I used the Ubuntu CD.
  2. Choose "Boot from Hard Disk" or equivalent.
  3. In the resulting grub menu, press 'c' to get to the prompt, and execute the following commands, where hd(X, Y) is your boot/root partition:

    root (hdX,Y)
    makeactive
    This will set the bootable flag on (hdX, Y).
  4. Press 'Esc' to get back to the menu, and boot normally.