Good reading: The Hunger Games Trilogy, young adult novels roughly in the category of Harry Potter but way more interesting. There’s a movie coming March 23 but I worry that it won’t capture the emotional complexity that makes the books so good. So read them! It’s even free on Amazon if you own Kindle hardware and are a Prime subscriber.

The setup for the books is not very promising. Future dystopia, subjects are forced to send children every year to a fight to the death for the amusement of the ruling class. It seems like Most Dangerous Game / Running Man / Arena, a cliché action story. And there’s a risk that’s what the movie will be.

But the books are so much more. There’s an enormous emotional complexity in the main character, Katniss. She’s a badass hunter and is completely capable of killing her competitors to survive. But she’s also horribly conflicted about it and has a really subtle relationship with her situation in the world. And boyfriends, some good writing there, way beyond the pathetic girly stuff in a novel like Twilight. It’s rare to read something so complex and alienating in books for teenagers. Really well done.

The first book is the best but the story payoff in the third book is worth the time.

  2012-02-26 16:23 Z

Resolved: all software that has user data should use Dropbox for its network transport API. I’m about 3/4 serious. Files are the universal datastore for software and Dropbox solves the problem of distributing files between machines. And they have a developer program to make it easy to add Dropbox to products.

I’ve been using an iPhone GPS app to track my walks. They integrate with sites like RunKeeper to upload my data. But they don’t have a convenient way for me to get the track myself, say to import into Google Earth. I have to email it to myself, then download it out of Gmail. I wish the iOS app would just write the track into Dropbox and let me pick it up as a local file.

Many apps have data that fits the Dropbox sync paradigm. My note taking app, for instance, becomes “cloud enabled” by simply storing the notes file Dropbox. People run their own private (or shared) GitHub by storing their git software repos in Dropbox. Want your music to be accessible wherever you are? No need for a special service like iTunes Match or Spotify; just put your MP3 files in Dropbox.

This idea isn’t new: there’s a lot of Dropbox hacks out there and cool services like the Dropbox Automator. But those are all presented as Dropbox addons. I want to turn that upside down, I want Dropbox to be the addon to a bunch of other products I already use.

I floated this idea on Twitter and got some pushback about how Dropbox wasn’t good enough, or not private enough, or had some other flaw compared to a custom transport protocol. I agree, it’s not perfect. But Dropbox works remarkably well and is a good match for a lot of products today. If you’re building something that needs a way to share data between machines, consider Dropbox for the transport.

Update: several folks pointed out that 1Password uses Dropbox to sync. Also, soon after I published this blog post Dropbox announced automatic photo syncing for Android.
  2012-02-24 18:02 Z

My 40th birthday is coming up and I’m kind of freaked out about it. I’m no cult-of-youth guy and have a healthy fatalistic sense of the course of human life. There’s just no denying that 40 is a pretty big turning point, particularly physically.

Happily I’ll be spending my actual birthday in France at a fabulously decadent restaurant, so at least I’ll be getting a good start on my gout.

  2012-02-22 18:05 Z

nvALT is good software. Its a simple note taking app, a fork of Notational Velocity. The key thing is it is very simple. You have a bunch of text notes in a bag. You edit one note at a time. Notes can be stored as text files in Dropbox. It autosaves as you type and has a simple navigation search UI. That’s about it.

I’ve tried a bunch of note taking solutions. Either they’re too simple and unstructured (like a simple text file) or they have too many features with a busy UI (like Evernote). nvALT is just about the right level of complexity. I use it mostly to track projects. One note per project, like “blog about nvALT”. Tagged with category (“blog”, “code”) and a numeric priority. I also have a top level Tasks that I prepend the day’s action items to.

nvALT includes a MultiMarkdown formatter with live preview that is useful enough to, say, write blog posts in. What I really wish it had was a simple WYSIWYG editor with HTML output. For some reason there still is no good simple visual editor in the world that spits out clean simple HTML.

  2012-02-20 19:47 Z

Apple’s new system to restrict programs on Macs is interesting. The default in the next version of OS X will only allow programs from the Mac App Store or programs digitally signed by an identified Apple developer. This could be a good feature, if Apple honestly only uses it to stop malware. But history has shown Apple can’t be entirely trusted.

The Mac App Store itself is not enough. App Store apps have to run in a restrictive sandbox. The sandbox isn’t a bad idea for a variety of ordinary iLife-like apps, but anything a little more technical or hooked into the OS is a non-starter. For example both app launcher Alfred and Git/Mercurial client SourceTree can’t operate in the sandbox.

So the ability to run any signed binary is essential. What will Apple’s policy about the signatures be? All the messaging so far has been about preventing malware. That sounds reasonable to me, but it’s going to be a challenge for Apple to make work. Launching an app the first time will require an online signature verification. Canceling a bad certificate will require some sort of revocation mechanism (something web browsers still can’t make work). And Apple has to administer the program, block spammers registering millions of certificates, deal with support requests from developers. It’s complicated.

The real danger is Apple might decide to use Gatekeeper to restrict what arbitrary apps do on the Mac. They say they won’t do that. Let’s hope not: the history of the iPhone app store with debacles like Google Voice or Camera+ shows Apple can’t be entirely trusted with this power. A power user could always just turn off Gatekeeper, but if it’s on by default there will be very little market for apps that can’t run with it.

See discussions on Metafilter and Hacker News
  2012-02-17 15:55 Z

The Vantec SATA/IDE to USB adapter is good hardware. It lets you quickly plug a variety of internal drives into a computer via USB. Great for rescuing data off of an old disk or from a dead computer. It supports SATA and IDE in a variety of form factors and includes a power connector.

There’s nothing special about this Vantec adapter; Amazon has hundreds of similar adapters for $5–$30. The cheapest ones have lousy power supplies that can fry a hard drive, the Vantec one seemed to have better reviews. If I were needing an adapter a lot I’d buy one that supports USB 3.0.

  2012-02-16 17:00 Z

I recently switched to a new way to remove the underlines from hyperlinks in Google Chrome; modify the default stylesheet to not have them. Chrome’s user style support is still a little confusing to me, so I use the Stylebot extension to let me add styles and put this in the global stylesheet:

:link, :visited {
    text-decoration: none;
:link:hover, :visited:hover {
    text-decoration: underline;

By default links won’t have underlines. Sites can still explicitly add underlines. The second stanza adds underlines when you mouse over links. I kind of like that, but I’m on the fence. Tip o’ the hat to Steve Hollasch for the CSS.

Why doesn’t Chrome have the option to remove underlines? Back when it first launched, Chrome had a design philosophy of having a very simple UI with very few options built in, everything to be added by extensions. Feature creep means Chrome now has a confusing panoply of options, but still no underline choice. I used to use the Hyperlink Underline Remover extension but it caused bugs with a few sites.

  2012-02-14 16:31 Z

Skyrim is one of the finest computer games ever made. I was curious how people played through the game, so I set up some scripts to monitor achievement completion on the Xbox and drew graphs of how people progressed through the game.

The graph above shows completion of the main story quests; as a bar chart (on Jan 17) and as a time series in days since release. Unbound is 100% because the statistics only count players who’ve completed one achievement. There’s a big falloff after “The Way of the Voice”; only 57% of players started Act II of the game. And 34% of players finished the game after two months; most players who get as far as Elder Knowledge in Act III complete the whole game.

I’ve made graphs for all 50 achievements. The bar charts show which parts of the game are popular. For instance 74% of players joined the Companions compared to only 45% joining the Dark Brotherhood. I suspect that’s mostly due to game structure; it’s hard to avoid meeting the Companions at Whiterun but the player has to actively seek out the Dark Brotherhood. Faction completion is also interesting; mages complete their faction line the most while precious few people finish the Thieves Guild. Only ⅓ of players got married; I think the option may have been too hidden. I’m impressed 12% of players got Oblivion Walker; it takes a significant commitment to get 15 Daedric Artifacts and if the player screws up they can make it impossible.

Unfortunately the time series graphs don’t give a lot of extra insight. There’s a big dip in completion percentages around Christmas, when a bunch of new players started playing. But the basic velocity of completion, the slope of these graphs, is about the same for all of the achievements. In retrospect that’s not surprising but I was hoping it would be more interesting.

Some caveats about the data. It’s Xbox only, a self-selected subset of players that True Achievements tracks. The data is daily and has a few bad days I fudged out. This graph isn’t really a finished work, but honestly the data didn’t turn out to be very interesting so I’m done with it.

Update: you can see bar charts of PC achievement completion on Steam. To compare to Xbox, normalize PC numbers to who completed Unbound (92.4%) and look at current Xbox data. Fewer people have finished the main quest on PC (31%) vs Xbox (40%). And only 2.5% of PC users have completed Oblivion Walker, compare to 15% on Xbox. Far fewer finished the thieves guild, too (7% vs 21%). Maybe PC players aren't as completionist as Xbox players? It's not just time played; 63% of people hit Level 25 on PC, 68% on Xbox, that's pretty close. Maybe it's the Xbox sample bias; TrueAchievements tends to track players who are worried about completing achievements.
  2012-02-13 21:18 Z
For Christmas Ken gave me a sunset cruise on Airship Ventures' Zeppelin NT. It was an amazing aviation experience and I enthusiastically recommend it for anyone interested in aviation or sightseeing. I've done a fair amount of flying around the Bay Area but nothing approaches the majesty of an airship gliding through the air at a stately 50mph, down low at 1000'. And quiet, calm, incredibly beautiful. I took some pretty good photos.
Zeppelin history is interesting; there was a time when you could take an elegant three day transatlantic voyage on an airship, the Empire State Building was built with a mooring mast, and 780 foot long airships were used as aircraft carriers. (Watch this video of an F9C Sparrowhawk landing on the USS Macon!) After the heydays of the 1910s–30s zeppelins were almost an abandoned technology, but thanks to Zeppelin Luftschifftechnik and customers like Airship Ventures there's hope for a comeback.

The Eureka N704LZ is the only zeppelin operating in the US. She's fairly small by zeppelin standards, carrying 14 people (compared to the 100–120 people of a Hindenberg-sized aircraft). Airship Ventures is a bold startup, a bet that this class of flight has an important future. They're great for sightseeing and also have businesses training pilots and flying sensor packages. They've raised $10.5M to date. There's a fair amount of ground crew required and the airship itself costs €12-15M. We were lucky to have the founder Brian Hall on the flight with us, his enthusiasm and knowledge was really impressive.

The Eureka travels up and down the California coast. We took a two hour sunset tour from Moffett which was fantastic; I think an hour tour from Oakland would be quite amazing as well. We're very lucky to have this airship flying in California; take advantage of it!

  2012-02-10 18:59 Z
I just organized my entire music collection into well tagged MP3 and M4A files and couldn't be happier; both iTunes and Sonos work better with clean metadata. The majority of my music comes from CDs which I'd ripped over the years. Between the crappy 128kbps MP3 of the earliest rips and the inconsistent metadata I decided to start over with a clean rip from a ripping service. I've also got some stuff bought or downloaded from various sources (mostly Amazon) with varying quality that I had to fit in. 1200 albums in all, 300GB.

A clean rip of the CDs was a great place to begin. I took all my discs to ReadyToPlay, a service down in Palo Alto. They aren't the cheapest (I paid $1.40/disc) but they came well recommended and their website does a good job explaining how they take extra care with metadata. I was really happy with the result of their work and enthusiastically recommend them.

ReadyToPlay's setup is a few robots loading discs into CD-ROM drives with dbPowerAmp doing the ripping and conversion. They ripped to Apple Lossless (m4a); now that Apple has opened the format it seems the best choice. ReadyToPlay licenses high quality metadata from All Music Guide and other sources so album and artist names are much more accurate than I've seen from free sources. They also do some hand editing and data entry as well as careful handling of the CDs and cases. Money well spent.

ReadyToPlay got me started with a metadata schema. Just 18 genres without silly micro classification. Artist vs. Album Artist vs. Composer is a headache, particularly with Classical music, but iTunes mostly does the right thing even if Sonos is a bit confusing. One clever thing ReadyToPlay did was stuff detailed genre info into the Grouping tag, so while Autechre shows up as "Electronic" in the basic Genre I can also find it in iTunes via a search for "Techno" or "IDM" or "Experimental".

I didn't really need to edit any of the ReadyToPlay metadata, it was correct from the start. The other music was more of a mess. I'm surprised at how poorly labelled Bleep and Amazon's early MP3 sales were. It took a few hours to collapse down the genres, fix up mislabeled album titles, and try to figure out what some of these unlabeled BBC Essential Mix tracks really were. But all that work is done and now I've got a great, easy to use music collection.

Anyone want to buy several boxes of used CDs?

  2012-02-04 22:44 Z
I was fortunate and my recent blog post about Google was linked to on two high traffic sites: Hacker News and Daring Fireball. I'm grateful; their audiences are just who I wanted to reach with that post. Also they drive a lot of traffic to feed my ego.
I'm struck by how front-loaded the traffic is. Hacker News is on the left (total: 20,000). Daring Fireball on the right (5000). The front spike is particularly notable with Daring Fireball; the moment John posted that to his blog around 1PM California time I hit peak traffic from him and four hours later it'd mostly died out. How does that work so fast? Surely people aren't just reloading his blog all day. RSS readers? Twitter?

I'm also pleased poor ol' Blosxom kept up; the last time I got a lot of traffic was a mess. Back then I died at a pathetic 4qps; this time I hit 10x that without breaking a sweat. The key thing is using Apache's threaded worker MPM instead of the horribly obsolete prefork MPM. I now have 1000 server threads to serve all those parallel fetching, socket-camping modern web browsers. Even better would be a proper non-blocking server but Apache's worker MPM is still labelled "experimental" and I don't want to deal with some other HTTP server right now. I did go ahead and switch some images to inline data: URLs; should be an improvement.

  2012-02-02 18:07 Z