Grand Theft Auto IV is out, the reviews are fantastic, and the game is amazing. I've played with it two or three hours and am awestruck by the complexity and detail.

For example, there's Internet in GTA IV. Complete with dating sites, two newspapers, ads for home cremation, a "secure" police database.. And

Craplist was started in San Fierro in 1995 by some basement dwelling sociopaths with the simple mission of creating a computer-based online forum where users can sell stolen bicycles and meet up at lunch time to give a stranger head. ... Capitalists don't understand us. Newspapers hate us. Stalkers love us. Craplist is here to stay. We are you.
That's one of about a thousand different parodies hidden away in the game. It's overwhelming and beautiful. (Sadly, none of the game URLs lead to web sites on the real Internet right now.)
  2008-04-30 22:39 Z
Game software has come a long way for usability and new user education. I've been trying to play some old classics recently; the 1997 commercial success Heroes of Might and Magic 2 or indie old-school roguelike Decker. Each time I last about 10 minutes and give up in frustration because I can't figure the damn thing out.

Older games had a steep learning curve. You were expected to read the manual and be interested enough to spend several hours figuring out how the game works. But in the past few years games have gotten really good at the new user experience, making the game playable right from the start. Game manuals have mostly disappeared, replaced by colour text, art, or spoiler guides.

Complicated desktop appliations like Photoshop could learn a lot from how games educate new players on how to use them. Maybe complex web sites, too; part of why Flickr is successful is that it's complex but has an easy path into it. The key is to have a rewarding, simple experience at the beginning with a few core useful/fun features that don't require a lot of tutorial text. Let the application unfold slowly, a gentle learning curve as the user experiences the environment.

The first time I played World of Warcraft it took me many hours to finish the newbie zone and get to level 10. Now I can do it in just an hour or two but that initial experience is still fun gameplay. It's not so much a tutorial as it is a simplified version of the later game. Great design.

  2008-04-27 15:17 Z
Portishead's new album Third is due to be released on April 29. It's highly anticipated; their 1994 and 1997 albums were amazing and then the band imploded, unable to produce. Fans have been waiting nervously. But if your ethics are flexible you haven't had to wait quite so long; a near-final edit of the album was leaked to the Internet on March 6. First to BitTorrent, then to Usenet, then to YouTube. And the album is great. I've preordered my copy of the real thing.

If you were politely waiting for the actual release, yesterday a full copy of the album showed up for streaming on It looks legitimate, branded " exclusive." Except the streams sound identical to the March 6 release. Including the abrupt end of the end of the first track, Silence, a rough edit. And including the IM popup sound 2:14 into track 5, Plastic, sounding like an error on the initial pirate's computer. Why is distributing these glitched tracks?

Update: turns out I was all wrong about's streams. The abrupt cut on track 1 and the odd sound on track 5 are both in the final retail CD. In fact, the CD sounds exactly like the leak on March 6 and the streams.

Portishead has officially released a video from Third
  2008-04-22 15:18 Z
I had the most annoying problem in Firefox 3; Google Reader stopped working. I'd click on a blog and no items would show up, even if I started Firefox in safe mode.

Turns out I'm not the only one with this problem, but it has an easy solution. Press Ctrl-0 while on the Google Reader page and all is fixed.

What happened is you accidentally changed the zoom level of the page (via Ctrl-Scrollwheel or Ctrl-Minus or the like) and some bug in Reader's HTML and/or Firefox's rendering causes all the content to disappear. There's a Firefox bug filed, but they're pointing the finger at Google.

PS: dear Google Groups team, it is unacceptable for new messages posted to a group to not show up when I post them. I don't care if the backend datastore takes a minute to commit the data, figure out some way to make it visible immediately.

Update: a fix for the Reader bug is in the works.
  2008-04-15 21:28 Z
On my way across the Bay Bridge today we hit some traffic. So I took out my phone, clicked the "show me a map of where I am now" button, and looked at the real-time traffic overlay. There was a bit of a delay getting on the bridge but things after were fine.
  2008-04-12 21:26 Z
RSS 2.0 is a bad format. I just helped Andy debug a problem with his linkblog's feed. Google Reader was sending folks to his own domain rather than directly to the link destination. Why? Because RSS 2.0 is stupid.

The problem is the guid element in the feed was being used instead of the link element you'd expect. Why? Well, read the spec:

There are no rules for the syntax of a guid. Aggregators must view them as a string.
If the guid element has an attribute named "isPermaLink" with a value of true, the reader may assume that it is a permalink to the item, that is, a url that can be opened in a Web browser.
isPermaLink is optional, its default value is true
Follow all that? guid is defined to be any ol' string. Only later we learn that by default, it's assumed to be a URL that feed readers may use to override the other URL in the entry. In other words, the default behaviour of guid is broken and every RSS 2.0 feed should probably be setting isPermaLink to false on every single entry.

Most people have probably never seen this bug because on a typical feed the link and guid both point to the same URL.

  2008-04-10 17:29 Z
Wow, the Google app engine is impressive. It took me 30 minutes to go from zero knowledge to a deployed app with persistent storage. Try it out, or see my source code.

There's a lot to digest. Put simply, Google App Engine lets you write webapps that use Google's scalable datastore, Google's bandwidth, and Google's CPU and provisioning. The appserver environment is the real thing; fully functional Python with some very mature looking APIs. App frameworks like Django even run on it, although integration with Google's datastore will take some doing. There's a lot of capability to work with.

The getting started experience is quite good, at least on Linux. Download 2.5 megs of SDK for a local replica of the hosted environment. Write your webapp just like you'd write a CGI, then deploy it locally and test. When you're satsified you just run a simple command to upload it live and you're done. Very clean.

Congratulations to Ryan and the rest of the team for getting this launched. They've worked hard a long time on this vision. They were just getting started when I left Google, and this project was the one thing so interesting that I was strongly tempted me to stick around. It's very exciting to see it live!

  2008-04-08 19:06 Z
In the five and a half years I've been a Netflix subscriber I've rented 104 movies. That's an average price of $11 a rental. I'm apparently one of their best customers.
  2008-04-07 17:56 Z
The Firefox 3 beta has a nice new UI for remembering passwords. The first time you type a password into a form and click "submit" the browser does the submit and then puts a thin window at the top of the next page asking whether you want to remember the password. In Firefox 2 the option to remember was a modal dialog you had to choose before the submit happened, so there was no way to know whether you were remembering the correct password. By deferring the decision until after the result page loads, you can avoid committing bad passwords.

Firefox 3 is a significant improvement in lots of ways. It's much more responsive on Windows and the new Location bar autocomplete thing is cool. Beta 4 has one terrible bug with scrolling textareas, and the lack of 3.0 compatible addons is a nuisance. But FF3 is generally a big upgrade and stable for use now.

  2008-04-02 16:11 Z