Ubuntu 9.10 Beta First Impressions

I'd been running 9.04 with backported nVidia drivers for a month or so, since those drivers actually support adjusting the brightness of my laptop panel. After the latest mysterious "maybe-video-related" lockup, I decided that if I'm going to have my machine crash, I might as well have a good reason, so I upgraded to 9.10 Beta over the weekend. To add to the impetus, I think the driver for my wireless card in 9.04 doesn't properly support WPA, so it randomly would drop my connection, something it did a couple of times while trying to download the upgrade. To Ubuntu's credit, restarting networking didn't break the upgrade, it actually managed to recover.

So far, I'm impressed. The upgrade went smoothly. However, after I upgraded, I noticed that an 'aptitude upgrade' showed more packages that needed to be upgraded. I didn't keep a list (yea, dumb), but notably, some pulse audio packages were included in this list. This might just be related to be doing things like installing extra packages to make pulse work better.

Overall, it seems faster and much more polished than 9.04. They've obviously taken a page from Apple's play book with the use of well placed animated transitions. The new X based boot splash is a great improvement over the old splash, mostly in terms of giving the boot and shutdown experience a more unified feel.

One big thing that seems to finally fixed is the time it takes to re-associate with a wireless access point upon returning from sleep: it's now at least as fast as my Mac. We'll see how things go as time goes on, but so far so good. If I don't have to file any bugs in the next few weeks, that'll be extra awesome.

HP 8530w impressions, and some nVidia X server musings

My work issued HP 8510w recently had the type of hardware failure that
causes random complete lockups. No, it wasn't related to the memory, I
tested that. Much to my surprise, all it took to get it replaced was to
contact IT and tell them that it even had hung before even getting into
the BIOS. Even more surprising to me, they replaced it with a newer
model: I now have an 8530w.

 Given that I've posted before about how bored and disappointed I've been
with HP laptops, I figured I should post to say how nice the 8530w is
turning out to be so far. For starters, it is thinner and feels lighter
(but it's still 6lbs) and more solid than the 8510w. The screen is much
nicer, but since the 8510w had a 1920x1200 resolution, and this 8530w
has a 1680x1050 resolution, it's not quire apples to apples. I do also
prefer the keyboard, and they've added a keyboard light, which while not
as slick as Apple's backlit keyboards, gets the job done. (And takes me
back like 8 years to the IBM X21 I had... ;-) While the 8510w was fast,
the 8530w is even faster, and amazingly enough, seems to run cooler and

 While they do seem to have fixed most of my gripes with the 8510w, it
does seem like no one but Apple understands that people with laptops
carry their power supplies around with them. How hard is it to
incorporate an easy way to wrap up the cord into the design for the
power brick? Oh, and for some entirely inconceivable reason, the power
brick for the 8530w is bigger than that for the 8510w. Yes, you read
that right: they made the brick bigger. I just don't get that part.

 Oh, and Ubuntu (well, Linux in general) rocks: I got new hardware,
simply moved my hard drive to the new machine and booted up, and
everything works. It does help that they both have nVidia graphics, etc,
 but still, that part was awesome. Oh, and for anyone that happens to
have a laptop with a new nVidia chipset and doesn't have working
brightness controls, the newest version of the nVidia drivers fixes this
problem! For users of Jaunty, I uploaded the Karmic packages to my PPA, compiled
for Jaunty. (I can't seem to figure out how to make it so that it would
also compile the same sources for Hardy, but maybe I just haven't spent
enough time looking at it or did the proper RTFMing)

Tail Call Optimization Decorator in Python

This function decorates a function with tail call optimization. It does this by throwing an exception if it is it's own grandparent, and catching such exceptions to fake the tail call optimization.

Sometimes I wonder why a whole bunch of Scheme loving folks use Python. Then, I see rather clever things like this, and it starts to make more sense. I do wonder how much of a performance penalty something like this incurs, though.

Fun with constants in Java

The following code does not compile:

public class A {    public static void main(String[] args) {        int i = Integer.parseInt(args[0]);        switch (i) {            case X: System.out.println("ONE!"); break;            case Y: System.out.println("TWO!"); break;            default: System.out.println("ZERO!"); break;        }    }    public static final int X = B.getNumber("X");    public static final int Y = B.getNumber("Y");}class B {    public static int getNumber(String s) {        if (s.equals("X")) {            return 1;        }        else if (s.equals("Y")) {            return 2;        }        else {            return 0;        }    }}

The compile error is:

A.java:5: constant expression required            case X: System.out.println("ONE!"); break;                 ^A.java:6: constant expression required            case Y: System.out.println("TWO!"); break;                 ^2 errors

I think I'll leave explaining why as an exercise for the reader. (Or for a future post. ;-)


iotop is a console application for monitoring the I/O usage of processes on your system. It is especially handy for answering the question “Grrr, sloooowness, why is my disk churning so much?”

Where has this been all my life?

Today's just been one of those days

Mac OS X just crashed going into sleep and rebooted on me. It's things like this that tempt me to install Ubuntu, because then at least I can help fix the problem when these things happen. Ironically, I've never had this happen on my work laptop that runs Ubuntu...

 Anyways, I'm going to go to sleep and at least wake up less cranky. (Stupid computers...)

Rawr: JRuby application packaging tool

Rawr, a packaging and deployment tool, is all you'll ever need for your JRuby projects. With Rawr, a simple, pre-generated configuration file turns your code into an executable jar, a .exe for Windows, and a .app for OS X.

It's kinda like Shoes in that it gives you an exe for Windows, an app for OS X, and a jar that you can use everywhere else. Cool stuff.