New Collage for Amy’s 50th

Back in my late teens and well into twenties, before the interwebs, I spent countless evenings creating paper collages (sometimes with friends) – for framing, for calendars, for cards, for laughs. But it had literally been decades since I last pulled out an exacto blade and glue stick until this afternoon, when I decided to make one for my wife’s upcoming birthday. Kind of had trouble getting things to “click” aesthetically, and this one feels a bit clunky, but it felt great to re-connect.

Collage Amy 50th birthday

Birdhouse Hosting – End of an Era

Well, that’s a wrap! After 12+ years in the web hosting business, I’ve just moved the very last customers off of the server, migrated my personal domain over to Dreamhost, and updated the final DNS records. And with that, Birdhouse Hosting is no more. It’s been an amazing dozen years – both fulfilling and frustrating. I made some money, lost a whole lot of sleep, and had way too many vacations and weekends interrupted with sudden needs.

It’s amazing to see how drastically the hosting landscape has changed in the past decade. The emergence of tools like GMail made custom mail hosting all-but-irrelevant – there’s absolutely no way a small web host can provide the level of spam control, or storage, or excellent interfaces that they do. And the emergence of serve-yourself site builders like the ones offered by Squarespace just can’t be touched by open-source software.

Except in special cases, pretty much all of the need (and the reward) has been drained out of the boutique hosting business. It was time to let it go. I’m honored to have been able to host so many fantastic sites, and to have worked with so many fantastic customers over the years.

Once the dust settles on the new year, I look forward to getting back to a bit of freelance web dev work, though next time around I plan to focus on higher-end web application needs rather than WordPress.

See you in the new year!

Mountain Biking the Coastal Trail, Marin Headlands

Decided to take a mountain bike out to one of my favorite hiking trails in the Marin Headlands yesterday – the Coastal Trail from Alexander Drive down to the Headlands Center for the Arts. Recorded the trip with a helmet-mount GoPro and edited it down to 9 minutes (probably still too long, but I didn’t have time to make it shorter. Hopefully catches a bit of the feeling of being out there on a perfect November afternoon.

Remove Duplicates, Fix Broken Album Art in iCloud Music Library

Apple Music + iCloud Music Library is a brilliant pairing, and finally lets us access our personal music collections from anywhere. But it’s not without its warts – duplicated tracks and bad/missing cover art has been a sore spot for iCloud Music Library users since the service launched. In my first piece for, I walk readers through the reasons – and the fixes – for those two problems.


DIY Dehydrator

It is done! The homemade dehydrator project got put on hold for a while, but finally finished it yesterday, marinated thin-cut flank steak overnight (Alton Brown recipe) and just put them in for a 6-hour cook at 120 deg. Settled on a 200W halogen bulb (halogen is not very efficient and turns a lot of energy into heat rather than light, which is what we want for this). The build was… wonky in lots of ways – couldn’t get a friend’s words out of my head: “You know you can buy a dehydrator on amazon for like $36, right?” “But then it wouldn’t be homemade!” No idea what to expect – hoping for the best.

Update: First round of jerky was amazing. It’s going to be tough to keep it in stock.

Round 2, a month later: Cinnamon apples and banana slices. This one will be a 10-hour cook.







The Ethics of Modern Web Ad-Blocking

For years, I’ve resisted – and argued against – using web ad blockers of any kind. After spending a decade working at a journalism school and watching publishers large and small struggle (and mostly fail) to find a way to be paid for their essential efforts, it felt like bearing a certain amount of advertising was the very least we-the-public could do to support quality journalism. Paywalls don’t work for almost any publications – what else is there?

But the rise of the mobile web tipped the scales – the “social contract” around advertising was no longer a fair one. The mobile experience is far less tolerant of intrusion, and network speeds are slower. But because monetization is more difficult, publishers were “forced” to insert more, and more intrusive advertising. The cumulative effect has been a steady decline in the quality of mobile browsing. Today, many news sites are close to unusable on a smart phone, having become choked out by network and screen-stealing crap.
Continue reading

Sane Password Strength Validation for Django with zxcvbn

While many admins and blog posts tell users that length is by far the most important factor in creating strong passwords/passphrases, the majority of password input fields are giving them a set of hide-bound rules: Eight characters, at least one upper- and one lowercase letter, some digits and punctuation marks, etc.

Even though it includes dictionary words, a passphrase like:

Sgt. Pepper's Mr. Kite

is far stronger than:


(there’s a world of difference between 22 characters and 9, from a cracking perspective). But many password input fields would reject the first one. No wonder users are confused by the process of creating strong passwords!
Continue reading

What Is Code?

I’ve been thinking recently about how some people have jobs that most everyone can “understand” more or less – we all know kinda sorta what a teacher or a policeman does – while others work in areas that are virtually inaccessible to the general public. I’m often reminded how little my family and closest friends understand about how I spend my days.

So Paul Ford of Businessweek has written this colossal, 38,000-word article “What Is Code” that attempts to bridge that gap. I’m not sure it succeeds (or that any article could) but it’s a fine attempt and a damn good read. Even for coders. It took hours to get through, and reading is not generally how I like to spend my weekend time, but it was time very well spent. Super recommend.

What Is Code