Archives for March 2008

Update: This was part of an April Fool’s Day joke. I did this post so that people might believe my other jokes on April Fool’s.

I’ve decided to skip April Fool’s Day this year, and I’ll tell you why: I’m April Fools’ed out. I’ve done a bunch of April Fools jokes in the past, and this year I’m just too tired to do it. Plus I’m worried that if I escalate the jokes much further, things will get out of control. There was the time that we converted our VP of Engineering’s office into a beach, complete with hundreds of pounds of sand. Do you know how hard it is to clean out 200 pounds of sand out of a carpet? Then one April Fool’s I switched Eric Schmidt’s picture on Google’s intranet to be the fictional billionaire from NewsRadio:

I’m still a little nervous that Eric will figure out it that I was the person that switched the photos.

Two years ago I pretended that I was switching jobs with Jeremy Zawodny at Yahoo. Of course, a helpful co-worker emailed HR as if I were really leaving. It took me six weeks to undo my “resignation” and straighten out all the paperwork.

Although the hack was a complete joke, a group of script kiddies actually did attack my blog soon afterwards. My blog got hacked for real twice in the following months. Luckily I keep good backups, so it didn’t cause very much harm.

So call me a party pooper if you want, but I’m sitting out this year. I haven’t decided whether I’ll do any posts tomorrow, but if I do they’ll be real. For example, this year I set a goal for myself to try to do something totally new and out of character for me each month. My new thing for March was to get a tattoo, which I got this past weekend. Maybe I’ll post pictures of the tattoo and people will think that it’s a joke.

It looks like Verisign is increasing fees to $6.86 for a .com domain and $4.23 for a .net domain. Around this time last year the fee went from $6.00 to $6.42 for a .com domain and from $3.50 to $3.85 for a .net domain. The new fees become effective October 1st.

Last night I drove into San Francisco for a meeting of the BALUG (Bay Area Linux Users Group). I’d never been to a BALUG meeting before, but Mark Shuttleworth (the founder of the Ubuntu distribution of Linux) was speaking and I wanted to size up Mark in person. He acquitted himself well. He spoke about the good, the bad, and the ugly of open-source as he sees it and then closed with some stories of being the first African into space. Here’s a (somewhat grainy) photo I took as Mark was speaking:

A few impressions that I came away with:

– he cares a lot about the Linux desktop experience and likes to focus on that. That’s good, because a lot of people in the Linux community pay attention to the kernel and “user space” doesn’t interest them as much.
– he believes that collaboration should be a strong point of open source. Mark mentioned bug tracking as an example: bug reports and debugging logs should flow seamlessly to developers without a lot of extra work.
– Mark did a good job of giving props to Red Hat, Novell, and even Microsoft when he thought they deserved it. I thought this was an especially wise move and gave him more credibility than if he had taken potshots at competitors. Mark pointed out that Microsoft made software cheaper as a good thing Microsoft has done, although he didn’t see a need to license patents from them. I got the idea that Mark thinks that injecting venom into discussions about open-source doesn’t do favors for the community in the long-term.
– At the same time, Mark said that if open source believes that it has more powerful ideas long-term, open-source proponents shouldn’t shy away from engaging in productive/respectful conversations that may eventually win over (say) manufacturers of proprietary hardware so that they allow open-source drivers.

Overall, Shuttleworth seemed to espouse a nice balance of principles and pragmatism. He was a polished speaker and handled the after-speaking mob of people with grace and good humor, even when some folks wanted to talk about the minutiae of their favorite Linux project for a few minutes. I came away with a higher level of respect for Mark, Ubuntu, and Canonical and my interest level is already pretty high.

The night brought a few other fortuitous surprises. I got a couple tips about where to start hacking on my OLPC, which just arrived a couple days ago (thanks for the pointers, Charles!). I found out about the Alameda County Computer Resource Center, which takes donations of old computers, refurbishes them, and then donates them to school, non-profits, and other people that need a computer.

But my favorite surprise was walking by two people and hearing the phrase “Digital Tipping Point.” I’m a huge fan of the Digital Tipping Point blog. Officially, DTP is an “open source film project about the big changes that open source software will bring to our world.” So the film project includes a lot of individual interviews about open-source. But the reason that I love reading the DTP blog is that it provides anecdotes of open-source success without sarcasm, rancor, or the venom that some blogs have. If you’re a Linux fan, I think you’ll find that Digital Tipping Point is genuinely uplifting and cheerful. I keep Digital Tipping Point in my “fun” folder of Google Reader, so it was a pleasure to meet Christian Einfeldt, the producer of the documentary:

It was great to run into someone by coincidence and to be able to say “Hey, I love your blog. It brings a smile to my face and is a good example of what I like about the web.” All in all, it was a fun night.

This weekend my wife and I drove up to Daffodil Hill in Eastern California. Daffodil Hill is six acres of daffodils (my favorite flower) and it’s only open for a few weeks in the springtime. It’s free — just drive right up, park, and walk around. It looks like this:

And if you get really close to the ground, it looks like this:

If you have a California weekend free between now and the end of April, you might enjoy it. We drove up on Saturday and stayed in nearby Sutter Creek, which is known for its “Gold Rush” history. We stayed at a bed and breakfast called Foxes Inn that was very nice. For food, I can recommend the Jambalaya at the Caffe Via d’Oro in Sutter Creek if you like spicy food. We even found time to squeeze in a trip to a nearby cave called Black Chasm, where we got to see some nice stalactites and other formations:

Growing up in Kentucky I’ve gotten a chance to enjoy several caves, but it was my wife’s first time in a cave. All in all, not a bad way to spend the first weekend of Spring. 🙂

I’m trying to replace my Windows applications with Linux applications. On Windows, I use I use Juice to download podcasts as MP3s. Recently I decided to switch over to Linux for receiving podcasts. After looking around at various podcast catchers (especially ones that ran on the command-line, so that I could automate them with a cron job), I ran across Podracer. I decided to combine Podracer with a script to split long MP3s into shorter MP3s so that I could play them more easily in my car. Here’s what I did on my Ubuntu Linux machine:

cp /etc/podracer.conf ~/.podracer/podracer.conf
Edit ~/.podracer/podracer.conf so that you can pick the download directory you want. I changed
#poddir=$HOME/podcasts/$(date +%Y-%m-%d)
to
poddir=$HOME/rawpodcasts
because I want all my podcasts in one directory where I can do a batch process over them afterwards. Go ahead and run “mkdir ~/rawpodcasts” to create the directory that podcasts will be stored in.

sudo vim /usr/bin/podracer
(it’s okay, Podracer is a shell script). Find the line that says
m3u=$(date +%Y-%m-%d)-podcasts.m3u
and comment it out so that podracer won’t automatically create an .m3u playlist as it downloads podcasts.

Run podracer in “catchup” mode to avoid downloading all the old podcasts from your subscriptions with “podracer -c”. podracer will create a file ~/.podracer/podcast.log to keep a record of all the podcasts that have been downloaded (the “-c” catchup mode creates this text file without actually downloading the MP3s). If you want to re-download a file (e.g. while you’re testing your configuration), you can edit the file ~/.podracer/podcast.log and just delete the line for any MP3 you want to re-download.

Step 2: Install and configure mp3splt (optional)

At a terminal window, type “sudo apt-get install mp3splt”. In Step 1, we configured Podracer to download podcasts as MP3s into a “rawpodcasts” directory. In this step, we’re going to take those long MP3s and split them into individual segments into a new “finishedpodcasts” directory. Make the “finishedpodcasts” directory with the command “mkdir ~/finishedpodcasts”.

Make a file /home/username/download-mp3s-and-process.sh that looks like this.

#!/bin/bash

# Run podracer to download any new podcasts
/usr/bin/podracer

# Now split the podcasts into segments
for i in /home/username/rawpodcasts/*.mp3
do
nicename=`basename $i .mp3`
# Send both stderr and stdout to /dev/null so that this is a quiet cron job
mp3splt -eqd /home/username/finishedpodcasts -o $nicename-@n $i &> /dev/null
done

This script will run podracer to download any new podcasts. Then we list all the MP3 files in the rawpodcasts directory and run mp3splt on each podcast. If you had a file test.mp3, you would be running the command

-e means “split on sync errors.” If someone created an mp3 by concatenating multiple mp3s (e.g. with a program such as mp3wrap), that could cause sync errors. mp3splt looks at those sync errors to split the concatenated mp3 back into multiple mp3 files.

Quiet mode suppresses this interactive question on the last two lines above.

-d is the directory to place the split mp3s.

-o lets you specific an output file. “@n” stands for the track number after splitting. So if test.mp3 were made out of two mp3 files, the output of the command above would be two files (in the finishedpodcasts directory) named test.mp3-001.mp3 and test.mp3-002.mp3 . It doesn’t hurt to run mp3splt on existing mp3s because it will just overwrite any old files that had been created.

Step 3: Periodically download and process podcasts

To download podcast files periodically and process them, make a crontab entry for podracer or your script. This will make the cron daemon run your script every few hours to download new mp3s.

Whenever you’re ready to put the podcasts on some type of media (SD Card, iPod, iPhone, whatever), just copy over anything from the finishedpodcasts directory (if you used mp3splt in step 2) or the rawpodcasts directory if you skipped step 2. Then delete anything left over in either directory.