I voted today. For those who don’t know, everybody in Oregon votes by mail. They sent me my ballot a week or two ago. I filled it out yesterday and mailed it today. Last election, I forgot until too late to mail the ballot and had to drop it off at a collection center on election day.

The election, I voted a straight Democratic ticket. For the House, I voted for the incumbent. For the State House, I didn’t even have a choice. I wasn’t sure about Kulongoski for governor since he hasn’t been impressive and the Republican Ron Saxton sounds like a moderate. But I’ll take a boring D over an moderate R. I voted no on all but one of the propositions, the prescription drug benefit. The rest sounded dubious or bad (like the parental notification for abortions) and I always vote no on propositions if uncertain.

Jigdo Files for Fedora Core 6

I have produced Jigdo files files for Fedora Core 6. Jigdo is a program which can produce ISO images from the constituent files and a description. It uses a .template file which contains the description how to compose the image from the files and the missing pieces, and a .jigdo file which describes where to find the constituent files.

It allows downloading the packages from the mirrors which can be faster and easier than getting the images and producing the images from them. It is also more useful to keep the package repository and then produce the images as needed. I know some people keep the images and then mount them to get the files.

One thing I noticed is that the the disc1 and DVD templates are much larger than they should be. The cause is the repodata directory in the images is different than the one on the mirrors. My guess is that the output of createrepo is not deterministic; the contents seem to have different ordering but the input packages are the same.

Going to the Bay Area

I am flying to the Bay Area tomorrow for a long weekend. I am going down for my 10th reunion at Stanford. I am really looking forward to seeing friends who I haven’t seen in a while. It will also be interesting to see the area after not living there for a few years.

For my fifth reunion, I still lived in the place I lived as a grad student. It was close enough to walk or ride to campus. I was also unemployed at the time which wasn’t impressive.

DAAP and Linux

I got mt-daapd running on my Linux desktop where all my music files are. I found a patch to make it work with avahi and instruction and RPMs.

The only problem is that iTunes does not support streaming Ogg files. The QuickTime Components do a good job of local Ogg playing but I guess iTunes does its own thing with streaming. It is supposed to be possible to setup transcoding so the server streams WAV instead.

UPDATE: Only development snapshots of mt-daapd support transcoding. And they support FLAC. But they don’t support Avahi and the patch does apply cleanly.

CPAN Black Hole

I hate CPAN maintainers who don’t respond to bugs. I have been putting in bugs for problems I find in various CPAN modules. For some, I have even put in patches which fix the bug. The result has been complete silence.

I don’t expect maintainers to drop everything and fix the bug. I would hope that they would at least send an acknowledgement that they have seen the bug and might work on it. A snarky “that is not a bug but a feature”, “it has been fixed in the latest release”, or “you are an idiot, do this instead” is better than silence.

If you post a module to CPAN, you have an obligation to maintain it. I suspect fixing bugs is more beneficial to the community than writing new, cool stuff. Even if it is really boring. The user has an obligation to report bugs if they encounter them so the maintainer is not in the dark. One big advantage of open source is that the user can provide a fix or at least a test case. The maintainer’s responsiblity is to apply the patch if it is suitable. Not let it sit there gathering dust.

The best example is bug 27, a major limitation in URI which is only 5 years old. People have even provided patches.

Also posted at use perl.

MacBook Wireless on Linux

I got the wireless working on my MacBook under Fedora rawhide. The MacBook includes an Atheros chipset which needs the madwifi driver. The madwifi driver can’t be included in the base kernel or distribution because it includes a binary HAL which isn’t open-source.

Unfortunately, the madwifi driver did not compile cleanly on the Fedora development kernel. First, the Fedora kernels are currently 2.6.18-rc4 but they are versioned as 2.6.17. There is code in the driver which detects 2.6.18 but that doesn’t work with the mislabelled version. Also, madwifi uses the config.h header which was replaced by autoconf.h but is finally deprecated in 2.6.18. I submitted a ticket with patch to get this fixed.

I wanted to install the kernel modules as RPMs instead of from source. has madwifi packages for FC5. With some patching, they are suitable for building with the kmod scheme. This involves building packages for each kernel release, variant, and architecture. I only build for the i686 standard variant. The command line looks like:

rpmbuild -ba --target=i686 --define "kversion 2.6.17-1.2586.fc6" --define 'kvariants ""' madwifi-kmod.spec

I have put the packages I built at my Fedora package directory. Installing the packages from the rpm command-line can be tricky because multiple versions are installed at once. Doing an upgrade will remove the version for an old kernel. Upgrading the module versions requires installing the new version for installed kernels and then removing the old versions. Yum is supposed to handle this.

Getting the wireless working once the module was installed was a snap. I used NetworkManager and it just worked. It detected the wireless network and switched to it when the Ethernet cable is removed. It prompts for the WPA password.

Boot Camp, Try 2

I had an idea that the graphical Fedora installer would be okay (or could at least be used with a mouse) even if the keyboard at the console was duplicating keypresses. Instead of trying to do a network install, I burned the FC6 Test 2 DVD. I went quickly through the text dialogs. The graphical installer was fine, although the mouse was jumpy and slow probably because I used the “noapic” kernel parameter.

The install went smoothly. Fedora booted up without any problems. Lots of things just worked. The display was autodetected to the right size. The trackpad worked. The Fn key works as modifier. A few things didn’t work out of the box. The wireless card will require third-party drivers. The internal sound isn’t working. It sleeps but doesn’t resume. My Bluetooth Mighty Mouse works but only after restarting the hidd daemon.

Boot Camp and Fedora

To celebrate the release of Boot Camp 1.1 beta, I tried to install Fedora Core in the spare space on my drive. Boot Camp worked great to repartition the drive, shrink the Mac OS X partition, and create a 10 GB free space.

First, I tried Fedora Core 5 DVD. The installer got to a spot where it recognized that the drive was partitioned with GPT and asked if it could reformat it. I have the suspicion that this would have invovled erasing the whole drive including Mac OS X. This bug in anaconda was fixed in rawhide so that anaconda fully handles GPT drives. My guess is that Windows doesn’t know anything about EFI or GPT and goes into a compability mode where it writes the MBR partition.

Next, I tried Fedora Rawhide. It had a bug where every key entered was duplicated. This made it impossible to use the installer. I found a bugzilla entry and did some searching and it seems to be a recent kernel bug. Hopefully, it wll be fixed soon and I can try again. I wasn’t able to use the FC5 boot CD kernel to load the rawhide installer.

Then, I tried Ubuntu. The LiveCD booted great. And the installer’s gparted understood the GPT partitions. But it didn’t have any way to create an LVM partition. After I rebooted, the MacBook won’t boot because it couldn’t find a bootable partition. Luckily, booting with Option held gave to the boot selection menu with the Macintosh HD and that allowed booting to Mac OS X. And the Startup Disk pane in System Preferences allowed changing the default boot disk back to Mac OS X.

Weird Connections

I was reading a blog entry with quotes from an TNR article about Nancy Cunningham, the wife of disgraced Congressman Duke Cunningham, when I read the following quote.

Nancy showed little interest in defending her husband’s behavior, which, she said, was an embarrassment to her and her girls. “When I was going to retire and become director of the Rhoades School, I made him promise to stop gay-bashing in public, because it might upset parents at that private school,” she said.

I thought it was interesting because the Rhoades School was my elementary school. It is a private school for gifted kids. Not that I have any connection with the school beyond some memories. I am not even sure I was there at the same time as the current director, Luanne Kittle, who has been there for 18 years. And they moved to a new location across Encinitas Blvd a few years after I graduated.

I was have been somewhat interested in the Duke Cunningham scandal because he was my local representative back home in San Diego. We were a liberal family in a mostly conserative area and my parents have been very happy about his downfall. What I didn’t realize is that the house he sold to a defense contractor for an inflated price was in Del Mar Heights. It is only a few blocks from my parents house. I doubt we ever drove past it since it was off Del Mar Heights Rd in the other direction.

Typo and Mongrel

I got this blog working with Mongrel, a web server written in Ruby designed from running Rails applications. The main Textdrive Apache process is proxying the blog to the mongrel_rails process. This replaces the Apache to Lighttpd to Rails over FastCGI setup I was using before. In the previous post, I talked about how I switched over to starting the Rails process independently. That kept the lighttpd server from being killed but the rails fastcgi process was still dying. With Mongrel, there is only one thing to keep up.

The command was pretty simple:

mongrel_rails start  -e production -d -p $PORT -c $DIR