Saturday 24 May 2008

Time for a New Desktop

I'm now in the process of switching my main desktop from Windows XP to FreeBSD. And man, all I can say is that if you're still on Windows or a Mac, now's the time to go Free baby!

My Windows desktop has two DVI LCD displays, and a Microsoft (hiss!) Natural Keyboard. I'll still be using Windows reasonably often but I don't want to be rearranging keyboards, mice and monitors on my desk constantly. An extra monitor on my desk, and a USB-DVI KVM switch, and all that's nicely arranged. Sure, when I switch to FreeBSD sometimes the mouse is all messed up: moves the wrong direction, won't send clicks, buttons confused. But this doesn't happen often, and if I just switch back to Windows a couple of times, it sorts itself out.

After I'd recompiled and installed my editor, and installed some fonts from source, the next thing to get right were having the two screens display a different image: they were defaulting to clone mode (same image on both screens.) That was pretty easy to fix up in the end.

Oh, but before I did that there was also the kernel that needed to be recompiled, because I needed to be able to run Java. Sure, I've only got JDK1.5, but that's pretty close to up-to-date, and I really don't know why you'd need anything more recent.

Somewhere in here I had to get some assistance from the sysadmin. While installing those fonts up above, one of the packages had complained that an existing package hadn't been installed correctly, it very helpfully told me how to de-install and re-install it. Nice. That package had a 'delete' dependency on KDM, the login window for KDE, and then on re-install KDM didn't come back, so I had to get the sysadmin to reinstall KDE. It hardly took him anytime at all. People who design packages really should get their dependencies correct.

So, I've got my desktop working again, my editor running, and some nice TrueType fonts available. Emacs can't see any of those TrueType fonts, but I'm sure with a few more recompiles with different configure options it will all come right. The one remaining problem was getting FreeBSD to use both screens in something other than clone.

Configuring Xinerama wasn't the right way to go: the web recommended that and a colleague already had that working. But it wasn't right for me. I had to download the source code for my video card driver from nVidia (after I found someone with the same machine as me, running Windows, and asked them what video card they had.) I hacked the source to the driver, as it complained that FreeBSD 7.0-CURRENT wasn't supported, although I was running FreeBSD 7.0-STABLE. A few small changes to the source and it compiled straight away. Then I ran the nVidia config tool, and restarted. That very nicely controlled both monitors by turning one off and the other on. But right there on the nVidia site were instructions on how to enable TwinView. Perfect! After I'd rewritten /etc/X11/Xorg.conf based on their instructions and what I knew about my video card and monitors, I restarted again.

And... perfect! Two independent monitors that I can arrange windows on to my heart's content!

So, I really don't know what you're waiting for, you really should dump those Macs and Windows computers and switch straight to FreeBSD! You have no idea how good the kernel is. Sure, it isn't as good as Solaris, but it's miles better than Linux.

Monday 12 May 2008

The Mythical Man-Month

The Mythical Man-Month
Fred Brooks

Everyone knows this book; everyone knows the core points and Brooks' recommendations and laws, even if not everyone has read it. This is one of the few true classics of computing. I'm not going to waste anyone's time repeating those assertions.

The Mythical Man-Month is now, unfortunately, hilariously anachronistic. And, the anachronisms are starting to damage the book: the core ideas are getting buried beneath 40 years of development technology advances. Engineers each get their own computer (or even two!) now, we don't need to share debugging time anymore. Surprisingly, I'm a little hesitant to recommend this book now. Beneath the anachronisms there is plenty of good advice: the point he tries to make about planning your debugging time and keeping track of what happened afterwards still applies, for example. But, you have to be prepared to dig, to see through all that to what he's really trying to say. If you do choose to read, skim the original parts and dwell more on his 20th anniversary additions:

There are two things I will say:

  1. 'Build one to throw away' is wrong. Brooks comes out very clearly against that, even though he originally popularised it. Don't do it, plan to prototype and grow organically. This suits me just fine and leads to:
  2. Brooks is the original agilist. Time and time again the things he values are competent, pro-active people and high-visibility, high-efficiency, fast-turnaround development processes. The corner stones for the agile family of methodologies.