Archive for June, 2007

A public service announcement for the formerly sedentary

If you’re someone who spent your childhood and young adulthood as a more-or-less sedentary blob but has become an exercise enthusiast in your late twenties, take it from someone who’s twenty years further down the road:

Don’t just stretch, stretch.

You do not want to end up like this:

Me, with boots

Me, with boots

Two useful mac apps

I just bought two useful Mac apps, SpamSieve and EagleFilter.

Nominate someone for the Gordon Pask award

Nominations for the Agile Alliance’s Gordon Pask Award are now open. The award has changed this year from a cash grant to travel sponsorship. Here’s the description:

The Gordon Pask Award recognizes two people whose recent contributions to Agile Practice make them, in the opinion of the Award Committee, people others in the field should emulate. In order that people might emulate them, the Agile Alliance will fund each recipient’s travel to two different suitable conferences on two different continents. In order to grow the next generation of Agile thought leaders, the Award is given to people who aren’t already routinely invited to conferences, presumably because their reputation is not yet widespread.

We on the committee are less interested in funding great speakers than we are in funding people who have something to say that people need to hear. Or, perhaps better, have something to show that people need to see. Or something they do that people should do with them. We don’t even require that Pask award winners give formal presentations at conferences; it’s enough to mingle.

Please send nominations to

A workbook for practicing test-driven design (draft)

Summary: I wrote a workbook to help people learn test-driven design. Want to try it out?


The OOPSLA conference, originally about object-oriented programming, was the seedbed for a lot of the early conversations about Agile. It’s fallen on hard times these past several years. Now that object-oriented programming is ubiquitous; the easy patterns have been mined and the next step beyond pattern catalogs faltered; and Agile has gone off into its own conferences, OOPSLA has struggled to avoid just being the place where (1) academics go to present papers on making Java fast and (2) old comrades go for the yearly reunion.

That said, the Onward! track and the workshops remain happening places. You can say pretty edgy things—I still remember fondly the time one person said of my position paper that he’d shown it to his wife (a physician) and her opinion was that if I actually believed that, I was clinically insane. (Sadly, I don’t remember what position paper that was. Maybe I should be alarmed that it doesn’t stand out.) Even better: people will actually talk to you about your edgy ideas, help you refine them, help you make them useful. That happened to me a fair amount, so I’m grateful.

So I’d give OOPSLA a look. For exampe, here is a workshop about Agile methods in new contexts.

Graphical tests again

I’m spending the summer getting good enough at Rails to fit in at Rails Edge. To do that, I’m creating a website for my kids.

Recently, I plugged in Acts As Authenticated to do signup, login, authentication, and the like. Since I’m messing around with that plugin’s workflow, this seemed like a good opportunity to write workflow tests (which, in Rails, falls under the category of “integration tests”). Here’s my first test, which follows something like the “Even Higher-Level Tests” style in section 13.4 of Agile Web Development With Rails:

  def test_normal_signup
    dave = new_visitor
    dave.starts_at ‘home page’
    dave.goes_to ’sign up page’
      (dave.is_at ’sign up page’)
    dave.enters :login => ‘dave’, :email => ‘’,
                :password => ‘dave332′, :confirm_password => ‘dave332′
      (dave.is_at ‘welcome page’)
      # Dave goes away
    dave_next_day = new_visitor
    in_email {
      dave_next_day.has_clicked_on_link_to ‘confirmation page’, dave.registration_code
        (dave_next_day.is_at ‘members page’)

But even as I wrote it, I became discouraged. It’s English-like, yes, but it’s still not terribly skimmable. Answers to questions like “Where do you go after you signup?” don’t leap out at you. Is this really a format that’s going to help people either communicate or make sense of paths through a set of pages?

So I fell back on my ideas about graphical tests and drew the following. (Click the picture for a larger pdf.)

A flow through screens

That took longer to draw than it did to write the first test, but actually not a whole lot longer. What do you think? Should I go to the trouble of reimplementing my OmniGraffle parser in Ruby and finish implementing the test? (The good thing about doing that is that it seems like Rails programmers all use Macs, so there’s actually a chance that a test framework I built would get used.)

My first marketing event in sixteen years of business

Various people have spoken approvingly of this sticker on my laptop:

an example would be handy right about now

I’ve just ordered a pile of them. I will send you one if you send me your surface mail address. You have to promise to stick it somewhere, not toss it in a drawer or a pile of papers.

Offer good until I get tired of it. I do not guarantee that the stickers peel off well. (The one on my Macbook was tattered after six months of daily travel in my backpack. It came off pretty well, in two big strips, but left some glue behind.)

I’ve also created a new sticker:

an example would be handy right about now

This, I think, makes a good personal goal. It’s also the way I describe products developed in an Agile style. I say they start out wrong (or crummy), but get less wrong every iteration. They should stop getting less wrong when it’s no longer worth making them so.

Offer is good on these stickers too, under the same conditions.

(I wanted to write here something witty about the chance of me reusing or selling addresses, but I couldn’t think of anything. I wouldn’t worry about it, were I you.)

More opportunities to learn

The people who run the No Fluff, Just Stuff conferences have a new one called The Agile Experience.

The Pragmatic Studio has a workshop:

The Pragmatic Studio is excited to announce the Agile Developer Studio, designed exclusively to help you and your teams succeed through agility.

In this three day workshop, you’ll learn what being agile is all about, by actually doing it! You’ll also learn how to transition your project or organization from conventional approaches to agile development practices that save time and money.

You’ll be expertly coached by Andy Hunt (of The Pragmatic Programmers) and Venkat Subramaniam, co-authors of “Practices of an Agile Developer”. Drawing from their vast project experience, they’ll help you become a better, more agile, developer.

I don’t have any personal experience with these events, but they’re from reputable people. (Not that any I didn’t mention aren’t!)

Four implementation styles for workflow tests

Many of the tests that currently use browser-driving tools like Selenium, Watir, or Silk could use different implementation technologies. In the rest of this note, I describe the pros and cons of browser driving, HTTP driving, the Rails variant of HTTP driving, and app-layer driving.

Agile2007 rapidly filling up

Agile2007 is almost sold out.