Friday, 30 May 2008


I've been typing (and later, mousing) aggressively for the last 24 years. I've been very fortunate to never have any kind of repetitive stress injury affecting my work. I've never even taken ergonomics all that seriously; if anything starts to hurt I adjust my environment until it goes away. Often that just means that I've changed the layout of my work area for some reason, and the change turns out to cause ergonomic trouble so I revert it.

Recently my right elbow and right little finger started hurting. The problem seemed to be related to use of the Macbook Pro trackpad, where I have a habit of sticking my little finger out while I'm operating it with my index finger. I don't know how I got that habit. The trackpad always felt slower than a real mouse, so I just went out and bought a USB mouse and started using it in the office. Over the last few weeks that seems to have cleared things up just fine.

I still use the trackpad at home and on the road, and even though I used exclusively for the whole of last year, it still feels slower than the mouse to me. Perhaps it's a cognitive effect and not a real limitation. It would be interesting to try some tests to see which one is really more effective for me. I guess a game like Missile Command would be the right sort of test, but I don't know if that's really representative of browsing and text editing. Hmm...

Tuesday, 20 May 2008

Well, I'm Back Again

I arrived back in New Zealand this morning after a very smooth flight. I watched a couple of movies and slept for several hours with no effort --- thanks God.

Overall it was a great trip. I got to catch up with old friends, including some unexpected visitors to the Bay Area. The time at Mozilla was very productive --- I think it was a good idea to pre-organize some meetings. I got to visit Stanford, for a change. And the OSQ retreat was fantastic, although I felt that I didn't have much new to contribute since my attendance last year --- especially since I gave two talks at Berkeley in January.

It's great to be home though. The more I travel, the more I appreciate being here in Auckland. Even the small routines of daily life with my family seem like special blessings after I get back. Now I can settle down for a solid couple of months of work and play before the Firefox summit in July.

My in-flight movie summary:

  • There Will Be Blood
    I love Daniel Day-Lewis and he was great in this movie, but despite a lot of great moments it just didn't hold together for me.
  • I Am Legend
  • Awake
    Remarkably good considering Jessica Alba and Hayden Christensen are in it. I just like twisty thrillers.
  • American Gangster
    Good genre piece.
  • Batman Begins
    Absolute rubbish. Christopher Nolan should be ashamed of himself. Not nearly as good as the first Batman movie.

Saturday, 17 May 2008


Yesterday I gave a talk at Stanford in Dawson Engler's Advanced Operating Systems class. It was a variation on talks I've given before, but with a bit more about open source project issues and spec design issues. I pushed the meme of the virtuoso spec editor, something I hope will spread. I also talked about the economics of error recovery --- the fact that recovering from malformed input, instead of hard failure, is a competitive advantage for client software so in a competitive market it's sure to develop and you might as well put it in specifications.

Today I've been at the Berkeley OSQ retreat. As usual it's a lot of fun hanging out with Berkeley and Stanford students and faculty, plus people from Microsoft, Intel and IBM, talking about software improvement research. I especially enjoy it because I know this community well from my research background, but I also have a lot to contribute from my experiences in the Mozilla trenches.

One point I keep making is that we are pretty good at finding bugs, but we need to improve the fixing process. One part of that is to work on debugging, hence Chronicle. Another part is to apply software verification techniques to patches --- we do care very much about avoiding regressions, so identifying new bugs that would be introduced by a patch would be extremely useful (more useful than just identifying existing bugs in the tree).

Another interesting observation is that we want to avoid bug fixes that increase complexity, if possible. That often means a bug fix involves restructuring code followed by a small fix, where the goal of the restructuring is to allow the fix to be small. We can factor this into two changes, where the first change should preserve existing behaviour. It would be great if we had good tools for checking the first change ... and that actually seems like a feasible goal, since the problem is quite crisply defined and should often be solvable using local reasoning. It would certainly be nice, as a code reviewer, if cleanup patches came with a proof that they do not change behaviour (or at least a statement that intensive automated analysis had failed to uncover any issues).

Monday, 12 May 2008


It's great to spend a whole day talking about computer science with someone who is far better at it than I am. It's super-great when she's a old friend. No other method for restoring humility is nearly as much fun.

Saturday, 3 May 2008

More Travel

I'm about to hit the road again. On Sunday I fly to California for a MoCo Gecko team "work week" to plan out the next Gecko update. That should be exciting. I'll actually be staying in California for an additional week to attend the Berkeley OSQ retreat in Santa Cruz on May 15-16. In between I'll be hacking away at the Mozilla office and hanging out with some of my local friends. On Wednesday the 14th I plan to visit Stanford to give a talk.

Lately I've been spending most of my time beating down the last Firefox 3 blockers. In the last few days I've been writing test infrastructure so we can have automated tests for key events generated by different international keyboard layouts. For example, pressing "α" on a Greek keyboard should be able to trigger shortcuts (e.g., the HTML accesskey attribute) labeled with "α" or "a". There have been some nasty late regressions in this area; it's very complex and there are conflicting user expectations. Behaviours vary by platform and locale and even within platform versions.

One problem I've run into is that I need to be able to use GDK's keymap APIs with a GdkKeymap for the keyboard layout requested by a test, but as far as I can tell you can only get a GdkKeymap for the current keyboard layout for a screen. Having automated tests change the actual keyboard layout for your X screen is something we really want to avoid since it will have nasty side effects, especially if someone is trying to use their machine while running tests in the background... It's unfortunate because both Windows and Mac have reasonable APIs for working with application-selected keyboard layouts.

On the side I've been doing a bit of work to speed up our SVG filter code, especially Gaussian blurs, which seem to be everyone's favourite filter demo --- for the next Gecko release, of course. It shouldn't take long and when I'm done I'll write up what I did and what else can be done for filter performance.

Friday, 2 May 2008

Fermi's Paradox

Nick Bostrom writes an interesting essay on anthropic observations, as usual. I agree with him that the answer to Fermi's "paradox" --- "why hasn't spacefaring life colonized our entire universe in ways we can detect" --- is that there isn't any.

But I think he misses a powerful argument that the "Great Barrier" to spacefaring life is the difficulties in our past, not the dangers in our future. It seems that if current progress continues, we're at most hundreds of years away from developing self-sustaining, space-capable artificial life --- AI, if you like --- even if we take the brute-force approach of brain simulation. It's hard to think of inevitable catastrophes that could wipe out all of a multitude of space-based intelligent machines with reproductive capability, even they were all confined to our solar system. Even if we don't make it to that point --- and I will not be surprised if we (or God) write an end to our history --- since we made it this far, given enough other civilizations one of them would be luckier and make it all the way, and go on to colonize the universe in observable ways.
But apparently they haven't.