1. The State of the Weblog

    My media server is down, so some content may be missing (pictures, linked documents), and I’m using a temporary theme.

    My last day of work in Cleveland is one week from today. The week after that I’ll be riding my bicycle to Seattle with my girlfriend, camping and couchsurfing on the way. It’ll take us about five weeks, and I’ll be posting frequent updates here. Hopefully our cycling adventures capture your interest as much as code and Cleveland musings.

    Follow if it is adventure that you seek…

    bicycle

  2. Serious Games talk at Case

    Serious Games flyer

    I’ll be giving a talk on serious games at the next meeting of the CWRU Hacker Society on Wednesday, April 14th, 8pm in Glennan 313.

    The scope will be much wider than my previous talks on Unit Testing Achievements. A rough outline:

    • What are serious games?
    • How can they be applied to software?
    • How do they affect behavior?
    • What’s out there now?
    • What’s left to be explored?

    See you there!

  3. Achievement Unlocked

    [This post is adapted from a lightning talk I gave at the Testing in Python Birds-of-a-Feather session at PyCon 2010.]

    One of those most fun advancements in video games in recent years is not about the improved graphics, or playing with hundreds of people at once. It’s that games have evolved beyond points. While a good point system may be a good indicator of a player’s abilities, it doesn’t tell the whole story. Many modern games, even if they don’t involve points, have introduced the concept of achievements. Achievements are awarded for completing game-specific challenges—essentially, they are merit badges.

    Examples

    From Team Fortress 2:

    From The Beatles: Rock Band:

    From foursquare:

    These add another level of fun to the games in question. I think it’s about time we stole this idea for software testing.

    Testing Achievements

    To make this happen, I announced an Achievements plugin for nose, the Python test runner. Here are a few highlights:

    Night Shift
    Make a failing test suite pass between midnight and 5am.

    Punctuality
    Make a failing test suite pass at 9am.

    Coffee Break
    The test suite takes between 5 and 15 minutes to run.

    Happy Ending
    All tests in the suite fail…except the last.

    My God, It’s Full of Dots
    The suite has at least 2,001 passing tests.

    Sausage Fingers
    At least two distinct syntax errors are raised by the test suite.

    Are You Mocking Me?
    Import a mocking library.

    100% Code Coverage, Level x
    100% of at least 2(x+7) statements are executed.

    You can view the full list of achievements here. Many of these are working right now.

    Next Steps

    Announcing unlocked achievements on Twitter or IRC, global or project-specific leaderboards, pluggable achievement expansion packs…

    Share your ideas in the comments!

  4. Phaeton by Kevin Cornell & Randy Jones. This typeface really stood out in ILT’s favorites of 2009. Love it!

    Phaeton by Kevin Cornell & Randy Jones. This typeface really stood out in ILT’s favorites of 2009. Love it!

  5. Emergency party at my place

    Dear Reader,

    You knew keeping this blog in your RSS reader would pay off one day, didn’t you? You did, right?

    Well now you can reap the rewards, my friend. There comes a time.

    You are invited over to my house on Friday, November 13 for a party and performances by several talented musicians.

    There will be a full bar. Also an actual, physical bar. Celebrated Clevelander Marta “Martender” Lapczynski will be bartending.

    We’re getting started at 10 PM; music at 11. Everything is free.

    Here’s your invitation with the details:

    See you there, Internet lovelies!