Stupid geeky games: operating system free association

There is (apparently) this game where a person names a city, and then the next person has to name a city whose first letter is the same as the last city’s last letter (and hasn’t been named before in the series). E.g., “Portland,” “Duluth,” “Houston,” etc. Lina told us a story about sitting in a hot tub in Hawaii and playing this game, except with the names of operating systems. They had to invent the rule that any OS ending with ‘x’ counted as the end of the series and you could start over. Lina did think of Xenix, but that ends in ‘x’.

(Okay, smarty-pants, what other OS’s begin with ‘x’?)

Portland vs. San Francisco: Cage Match!!!

Why am I moving to San Francisco only 6 months after I moved to Portland? Enquiring minds want to know!

The short version is that Portland is a great city to live in, and I have a lot of friends here, but San Francisco is a great city to work in, and I have even more friends there. (I have a work/life balance, it’s just tilted heavily towards work.) One of my reasons for moving to Portland was that I wanted to get away from the high-stress lifestyle of the Bay area and the constant pressure to start a company, and spend more face time with my awesome Intel co-workers in Hillsboro. And then I immediately quit my job and started a Linux file systems consulting company. You can take the girl out of the Bay area, but you can’t take the Bay area out of the girl.

Contrary to popular opinion, I am not moving back to San Francisco, since I never lived there. I actually lived in Mountain View, which is an hour’s drive from San Francisco but a century away in terms of culture. When I decided to leave Mountain View, the only places that interested me were Portland and San Francisco. At the time, I couldn’t imagine living without a car, and I couldn’t imagine living in San Francisco with a car. After three idyllic months in Portland of almost never driving, I sold my car and have used public transit plus Flexcar exclusively since then. I’m even used to men constantly harassing me on the street now. I view Portland as my training city for San Francisco. It might be my retirement city, too.

I really like my friends in Portland, and I will absolutely be back to visit several times a year – the summer part of the year, most likely. PDX crew: Keep an eye out for emergency beerings.

And thank you to everyone who helped me paint my apartment in Portland. I only got to enjoy it for six months, but it cheered me up immensely.

Backing up the Blackberry 8100 on Linux with barry

About a week ago, I had a multi-level phone disaster. My mobile phone microphone and speaker died a drawn out and frustrating death, leaving the rest of my Blackberry 8100 perfectly functional. I then discovered that my Vonage VoIP (and failover for the mobile voicemail) had not been sending voicemail notifications for about two months. I only missed one consulting contract opportunity and a call from my tax consultant… The awesome voicemail-to-text transcription is still broken but the rest works now.


  just bought a shiny new iPhone (the regret! the sadness that I was not as wise!) and loaned me his old Nokia. With the aid of the Nokia, I quickly convinced the T-Mobile support person that my phone was defective and they needed to send me a new one.

The new phone arrived after only about 5 days of struggling with an alien mobile phone. The problem: I want to backup and restore my Blackberry in Linux, after The Great Cell Phone Disaster of ’07 (in which I lost the 33 phone numbers that won me a bet with

over who had the most kernel hackers’ phone numbers).

I’m a pretty accomplished googler for random strange tools. I download the source and fix a missing ID or a bad return value on a regular basis. But backing up my Blackberry almost defeated me. Here’s the solution I finally ended up with.

1. Ignore the web backup sites. Not only was the Blackberry backup service cleverly hidden in all cases, but when I tried to install the client through my Blackberry web browser, I had one of three fabulous results: 404, 503, and client in zip format (which the Blackberry can’t deal with). Suspect bad (or malicious?) proxying on the first two; incompetence on the second.

2. Use the barry local backup tool for Linux:

The .debs aren’t in any repository I know of, and some of the dependencies aren’t either. I couldn’t get the libopensync plugin installed without some serious gymnastics, so I left it. There was a lot of:

dpkg –install package
dpkg –remove package
apt-get install libwhatever

I’m not an accomplished dpkg person, so probably there’s an easier way to do that. There was a little detour in there to import some GPG key for a repo that previously hadn’t had one before I could update my package lists.

3. barry doesn’t like the Blackberry to be in mass storage mode. I run my own kernel with most everything compiled in, including the usb mass storage module. Facing a kernel recompile and reboot, I instead found a tidbit culled from the development mailing lists. Running bcharge in a particular way will reset it out of mass storage mode (breset won’t):

$ bcharge -o

4. Run the barrybackup GUI:

$ barrybackup

Click on the backup button. When it’s done, quit.

5. Hook up the new Blackberry and run bcharge -o again, then start barrybackup again. Click on restore. Then find your backup file, since your new device has a different PIN and it won’t automatically show it. The file is in ./barry/backup/<PIN>. There’s no confirmation window, so expect it to start restoring immediately. In my phone’s case, there was an error message about not being able to restore the timezone data but it happily kept going.

I thought several times of my friend Zach Brown the kernel hacker who always cackles “It just works!” at me from behind his PowerBook (which does NOT have Linux installed).

UPDATE: The Saga Continues!  T-Mobile had some issues with re-enabling my phone for the data service, and for a while I just had a pretty black sleek… PHONE.  I want my intarweb!  As seems usual of late, there’s no known reason why this happened, and the fix is to reset all the software involved without actually changing anything.

The absurdity of it all

I’m working hard against an important contract deadline, and I hit this painful bug. I bang my head on it for a while and then decide trying to print out the offending values as ASCII. It turns out that I’m attempting to interpret a list of Monty Python sketch titles as an inode.

At times like these, you just have to go take a little walk before you can take anything seriously again.

NB: A list of Monty Python sketch titles makes a fairly plausible inode when you’re looking at it in gdb.

The code monkey’s guide to cryptographic hashes for content-based addressing

At long last, I’ve written and published the “compare-by-hash for programmers” article everyone’s always been asking for. You can read it chopped into 17 pieces and partially obscured by floating ads here:

(My editor says: Please please complain about this! No one believes me when I say this is bad!) Or you can read it one piece with full size tables, etc. here:

I’m always looking for new article suggestions, especially for the Kernel Hacker’s Bookshelf (search down the page for the entry). Writing is fun!

The part of the article that Edward Tufte would be most proud of are the two tables about hash function life cycles:

Stages in the life cycle of cryptographic
hash functions
Stage Expert reaction Programmer reaction Non-expert
(“slashdotter”) reaction
Initial proposal Skepticism, don’t recommend use in
Wait to hear from the experts before adding to OpenSSL SHA-what?
Peer reviewal Moderate effort to find holes and
garner an easy publication
Used by a particularly adventurous
developers for specific purposes
Name-drop the hash at cocktail
parties to impress other geeks
General acceptance Top-level researchers begin
serious work on finding a weakness (and international fame)
Even Microsoft is using the hash function now Flame anyone who suggests the function may be broken in our lifetime
Minor weakness discovered Massive downloads of
turgid pre-prints from arXiv, calls for new hash functions
Start reviewing other hash functions for replacement Long
semi-mathematical posts comparing the complexity of the attack to the
number of protons in the universe
Serious weakness discovered Tension-filled CRYPTO rump sessions! A full break is considered
Migrate to new hash functions immediately, where
Point out that no actual collisions have been
First collision found Uncork the
champagne! Interest in the details of the construction, but no
Gather around a co-worker’s computer, comparing the
colliding inputs and running the hash function on them
Explain why a simple collision attack is still useless, it’s
really the second pre-image attack that counts
Meaningful collisions generated on home
How adorable! I’m busy trying to break this new
hash function, though
Send each other colliding X.509
certificates as pranks
Tell people at parties that you always
knew it would be broken
Collisions generated by hand Memorize as fun party
trick for next faculty mixer
Boggle Try to remember
how to do long division by hand
Life cycles of popular cryptographic hashes (the
“Breakout” chart)
Function 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007
SHA-2 family                                    
Key Unbroken Weakened Broken
Hash Function Lounge
has an excellent list of references for the

Vonage, voicemail, and crash-only software

I happened to accidentally check my Vonage voicemail page and discovered that I had 13 voicemails piled up since September 21st from various people such as, oh, my tax consultant, a potential client, and my sisters. I set up my voicemail so that my cell phone picks it up first, and my Vonage voicemail only picks up when my cell phone voicemail is broken. Then Vonage is supposed to email me and text me the .wav and text transcript of the message (for 25 cents!). It’s this last step that was broken. I called customer service and guess what the solution was? Reloading my settings. It’s like crash-only software, but without the bit that detects the part that’s broken and reboots it. Nngh!!! And yeah, there’s the broken dial tone when you pick up the headset that tells you if you have a message, but I’m so used to ignoring that because I usually don’t delete the voicemail for a while, and it can’t tell when I’ve played the .wav or read the text message.

Anyone with experience with Comcast VoIP doo-dah? I really like Vonage except for the reliability bit.

Best. Apartment. Ever.

Lina found the best best best apartment ever. In classic San Francisco rental fashion, we had to decide whether to sign a 16 month lease within 4 hours of seeing it or else face fierce competition from the open house. It’s a fabulously beautiful renovated Victorian on the south edge of the Mission (for reasons of preserving Lina’s sanity, it is NOT located on the north edge of Glen Park). I didn’t really believe we had the apartment until we had the keys in our sweaty little hands.

I think this photo of the shower head in my bathroom says it all:

If you are not a stalker, email me and I’ll send you the rest of the photos and the Google maps link so you can use Street View.