Older blog entries for kbob (starting at number 4)

Still installing Mandrake...

Actually, I'm cleaning up things that the upgrade broke. Got through all the updates and tracked down a setenv command in a bash script (?). Now I have to figure out who turned my emacs window green.


It's official. It's public. I have quit my job. Friday is my last day. My boss announced it at the staff meeting and my group just stood around and looked at me like I was the main attraction at the freak show. (-:

Going to have to find some more work now. My resume is up to date; I need to start sending it around. My old boss wants me to come to Geocast. I want (a) some time off and (b) to look around a little. Last time, I took a job after only one interview. I won't do that again.

So how do I get myself a job doing open source/free software?

Installing Mandrake

I've been running Mandrake 6.1 on my laptop and on my main desktop machine since it came out last December. I'm supposed to give a presentation on Linux on laptops to the eug-lug next month, so I decided I should be running a less paleozoic release on the laptop. So I'm going to install Mandrake 7.1. It's a Sony Z505RX, with a USB floppy drive and a PCMCIA CD-ROM.

Went to bed last night while backing up the whole disk across the Ethernet to my desktop machine (which I just recently upgraded to a whopping 46 Gb drive). This morning, I started installing 7.1.

The install itself went pretty well. I quickly figured out that I can boot the pcmcia install floppy from my unsupported-in-Linux USB floppy drive, then access the CD-ROM if (and only if) the CD is loaded when the installer probes for the drive. (But not at boot time, or it'll boot off the CD, which can't see a PCMCIA CD-ROM drive).

It failed the first time, not enough free disk space. Moved a couple hundred Mb of photos onto the desktop machine's 46 Gb disk and found an old Mandrake 7.0 ISO image to delete.

Anyway, the installer ran for nearly four hours. I don't know why it was so slow.

Interlude: shopping, car maintenance, and digging a hole

Several months ago, we had a plumber add a valve to the front lawn's sprinkler system. He managed to start a fire (comedy of errors) and torched one of the boxwood bushes in the hedge. Anne has been hacking at the bush trying to get it to recover, but we finally gave it up. She was working on it, and I went out to help. Dug up the half-dead bush. Now we need a live bush to replace it.

Car's been handling funny, the tires were low. Pumped them up. added 5 PSI all around, but the right rear was at 12 PSI. (It's been leaking since late spring. I need to call the Tire Rack tomorrow and get new tires anyway. (their web site says it uses SSL, but it doesn't. What's up with that?) Anne pumped her tires up too. Then I jacked my car up and took off the right front wheel to find out what the noise coming from that area is. The plastic fender liner had come loose and was rubbing on the wheel. The plastic looked sound, so I bolted it back in place. Anne noticed that the bumper was hanging down on the right, and bolting the fender liner back made the bumper look better.

Then, shower. (It's about 2:30).

Then, off to Men's Wearhouse for a suit. My cousin back in The Old Country (aka back east) is getting married. He's only 25; what's a guy doing getting married at that age? Spent about an hour trying suits and ties and stuff. Now I have a suit like men wear in The Old Country. I doubt I will wear this suit five times in the next five years.

Late lunch/early dinner at Willow Street Pizza. Excellent food and good beer, too.

Then to OSH for plants. Bought six (6) boxwoods and Anne got a Mandarin tree. I think the Mandarin was an impulse purchase.

Then back home. It's getting dark, so Anne hooks up some lights on extension cords while I dig the holes to plant two of our new boxwoods. Shortly the job is done.

Still Installing...

Just before the shower, I booted Mandrake 7.1 and started rsync'ing the Mandrake updates from Sourceforge to my desktop machine. (Did I mention that it has a 46 Gb disk now? (-: ) So now I'm trying to find out what all has broken and fix it.

First is xmodmap. For some reason, Mandrake disabled the use of $HOME/.Xmodmap. Who knows why?

Second is PCMCIA card services. Mandrake 7.1 uses pcmcia-cs 3.14, which doesn't work reliably with my laptop. Gotta build a new kernel to get pcmcia-cs up to rev (and to install the Wavelan driver).

So that's where I am now. Compiling a kernel. No CD-ROM or wireless until that's done.


About 9:30 pm, started baking a batch of blueberry muffins, using my mom's killer recipe. Yummmm!


Upgrading Linux is a big waste of time. Er, I mean, you waste a lot of time upgrading Linux.

Accomplished some good stuff today, but not on the computer.

Did more things with Anne than any other day in memory. That was good.

Unit Testing in Perl

I read the eXtreme Programming book (Wiki:ExtremeProgrammingExplainedEmbraceChange) a while ago, and the part of XP that interests me most has been the unit testing stuff. But I couldn't get anybody else at work interested.

So now I'm working on a big, ugly Perl script (over 1,000 lines and still writing), and I decided to put unit tests into every class definition. Then I wrote some truly ugly code to find all the methods named "self_test" and execute them when the script starts up.

Well, hey, it works. I've got over 1,000 lines of working code, and I haven't had to debug anything that wasn't trivially easy to find and fix. In previous Perl projects, I've always gotten ensnared in bugs where a variable is supposed to be a ref, but it's actually a ref to a ref, or it's a ref to the wrong thing, or, ...

Perl's lack of encapsulation makes isolating the class under test easy -- if Foo::method requires a Bar as argument, I just pass in bless { }, 'Bar', instead of creating a real Bar.

Each selftest uses die to report errors. The "real" code uses Carp::croak pretty extensively.

Here's an example.

sub CvsDirEntry::self_test {
    my $de0 = CvsDirEntry->new(NAME => 'slug');
    die unless $de0->name eq 'slug';
    die unless $de0->path eq 'slug';

my $de1 = CvsDirEntry->new(NAME => 'grub'); $de1->set_parent(bless $de0, 'CvsDir'); die unless $de1->name eq 'grub'; die unless $de1->path eq 'slug/grub'; }

I'm not consistently writing the tests first (Wiki:CodeUnitTestFirst), but I'll get there...

eXtreme Programming and Windows

It seems like the vast majority of XP practitioners are Windows sharecroppers. Why is the intersection of XP and open source so small?


Apache is down again in this month's Netcraft survey. What gives?

Comp. Sci. vs. Just Programming:

I must be just a programmer. My only contribution to computer science is the deep thought implementation.


Talked to kfogel and Ben Sussman yesterday on the phone for over an hour. Seemed like nice guys. We concluded that I could make myself useful by writing the CVS to SVN conversion tool. (No comp. sci. there! (-: )

Made my first contribution to subversion tonight. Nothing significant, just some cleanup. I hope it's appreciated.

I'm going on vacation Thursday through next Friday. I'm going to spend the time hacking, because I never get to hack at work. (It's what they pay me for, but they'd rather have me sit in meetings and organize crap.)


New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!