[ Content | Sidebar ]

we’re hiring

November 2nd, 2009

I’ve been working at Playdom for about a month now, and I’ve thoroughly enjoyed it so far. If any of my readers think it might be an interesting place to work as well, I wanted to point out that we’re hiring. (In a fairly big way, as the list of positions suggests.) Feel free to ask me directly if you have any questions or want me to pass your resume along; you can also apply through the web site.

revisiting majora’s mask

October 31st, 2009

For its seventh game, the Vintage Game Club chose The Legend of Zelda: Majora’s Mask. Which I was really excited about: aside from being a Zelda fan in general, I was curious to see if my memory of the sidequests held up. (Margaret Robinson’s GDC talk was an influence here.)

The short answer: yes and no. For those who aren’t familiar with the game: when you start the game, the world will end in three days, so you’re constantly looping back in time to the beginning of that period. This means that you’re constantly returning to the central town, and seeing the same people doing the same actions at the same times; this is reinforced by a notebook you acquire, the Bombers’ Notebook, which lists people who need help and the days/times at which you can help them.

And, indeed, checking off Bombers’ Notebook tasks was probably my favorite part of the game. But the problem is: there just aren’t that many of them, and you can get a lot of them done on a single cycle. So I probably had a third of the tasks done before I’d ventured out of town for the first time; another nice batch opened up after I finished the second dungeon, but in general I didn’t spend nearly as much time with the notebook as I’d liked.

The Kafei/Anju plot is the crown jewel of the notebook, weaving together several townspeople’s requests; but I made it almost to the end of the plot on my first full cycle in town (possibly aided by my dim memories of playing the game when it came out, I’m not sure I made it so far so quickly last time), and I knew I wasn’t going to be able to do the last part until right before the end of the game, putting quite a damper on my momentum. And, by the time I did get around to doing the last part, I was annoyed enough at the game’s requiring you to replay significant chunks if you miss a time slot that I didn’t take any chances: rather than trying to figure it all out again myself, I looked in a FAQ to make sure I wasn’t going too far off course. So, doubtless largely because of that, the experience wasn’t as fulfilling as I would have hoped. Which, to be sure, is partially my fault; but the game also throws a timed block-pushing puzzle at you in a context where, if you fail, it will take half an hour to get back to your current state! I can’t imagine art works in other media putting a barrier in front of you like that to get the emotional impact out of the work; I don’t think it was the right choice here, either.

Actually, my favorite notebook sidequest this time was one that I’d completely forgotten about. There’s a postman in the town who is constantly running around delivering mail. It turns out that, beneath his tireless worker facade, he’s terrified by the moon coming down from the sky, and that his overdeveloped sense of duty is the only thing keeping him from getting as far away as he possibly can. And you save him from this by, on the very last night, waking him up to deliver an urgent piece of mail to somebody who has the authority to tell him that, yes, he can and should get the hell out of there.

So: the notebook is a great idea, but it’s minor enough in terms of time spent that most of my feelings about the game came from elsewhere. Which raises the question: how does the time loop affect that?

Unfortunately, the effects of the time loop on your progress through the rest of the game is almost exclusively either neutral or negative. The neutral far outweighs the negative, and the negatives are mostly small, but I ended up liking the game less than I expected because of this.

I’d remembered that your consumables went away at the end of each time loop. In general, this isn’t a big deal: money and arrows are easy to come by, and the fact that you can optionally deposit money in the bank and that chests are restocked each loop means that the money situation in particular isn’t bad at all. Though I was annoyed by consumables disappearing on one or two occasions: I was actively excited to go explore one of the spider houses only to discover that I needed to go somewhere else and buy some magic beans first, which rather deflated my enthusiasm. And, in general, having to warp back and forth collecting fairies before venturing into a dungeon is a waste of time. Still, a minor annoyance all things considered.

What is a less minor annoyance is that the dungeon state resets on each loop. So woe be unto the player who starts a dungeon late in the loop and isn’t able to finish it in time! Fortunately, you’ll only make that mistake once at most; and the game’s designers put warp points at the entrance to each dungeon, making it easy to get to the mouth of the dungeon, loop back in time, and then play through the dungeon.

But the main boss isn’t the only thing to do in a dungeon: there are fifteen fairies sprinkled throughout each dungeon. In a normal game, I’d be happy to find most of the fairies on my first trip through, go and beat the boss, and then come back some other time, wandering through the unlocked doors of the dungeon at my leisure, to grab the rest of them. But the time loop makes that impossible: if I don’t get all the fairies in a single loop, then I’ll have to go through the whole dungeon solving every puzzle again when I want to get them all! (And the benefits from getting them all are pretty substantial, too, except for the last dungeon.) Which, again, turns what could be a pleasant challenge into a reason to go running to gamefaqs when things get at all tricky.

Don’t get me wrong: I still enjoyed the dungeons, still enjoyed the main quest line. (Though quite a few VGC members didn’t—I was surprised by how many people dropped out over the course of the game.) But the game does put some structural barriers in the way of that enjoyment.

And then there are the little touches. In Ocarina, it was the music; there’s nothing in this game like that (in particular, most of the new ocarina music isn’t very good), but I’d completely forgotten the giants who appear after each dungeon. And they’re wonderful: these huge melancholy figures shrouded in mist with haunting music playing. Also, the tree in front of the final save-the-world battle was very soothing, grounding, refreshing. (Is there some archetypal game with a tree on a hill like that that both Majora’s Mask and Flower were borrowing from?)

And, when all is said and done: it’s still a Zelda game and a noble experiment, and those are both very good things. But, like many of the most productive experiments, its value comes as much from the hypothesis that are found wanting as the hypothesis that it supports.

monads, anyone?

October 28th, 2009

Early in the summer I started going through Real World Haskell; unfortunately, conferences and job changes and other programming side projects kept me busy enough that I stopped reading it after a few chapters. That’s calmed down now; and, conveniently, a friend of mine got a copy recently and some others also expressed interest in it.

So we’re forming a book club. And I figured a few of my readers might be curious about the language as well. If you fall into that bucket, let me know and I’ll add you to the mailing list.

random links: october 27, 2009

October 27th, 2009

the beatles, rock band, and genre

October 13th, 2009

In a recent podcast, Justin Keverne talked about how it was odd that we define genre in video games almost exclusively in terms of what you do, whereas in other media genre is linked more with the themes that are under consideration in the works. I’m still not sure what I think about this (and, indeed, poking around a bit has just brought home how little I understand the concept of genre; incidentally, CDC podcast episode 4 also had some interesting things to say on the topic), but I do tend to agree that the notion that, say, “first-person shooter” defines a genre is a pretty peculiar one. As Justin pointed out, think how odd it would be to talk about “single-camera TV shows” versus “three-camera TV shows”!

Which got me wondering: what differences are our conceptions of video game genre blinding us to? What are the video games that we think of as being part of the same genre (because of their shared mechanics), while cutting across quite different areas of the theme and design space in ways other than their mechanics?

I’ve been thinking about this recently because of the Beatles game. Which I adore, as do many others; some people, however, even people who are as big Rock Band fans as I am, are less impressed. It generally comes down to the Beatles’ music not being to their taste; if you combine that with the gameplay being in many ways identical to earlier Rock Band iterations, then of course you’d prefer the wider musical variety in the earlier games.

Having said that, however, The Beatles: Rock Band isn’t quite the same as a reskinned Rock Band 2. Some differences:

  • The songs are (almost) all unlocked from the beginning.
  • Which doesn’t mean that there aren’t unlockables: you can unlock pictures and other historical artifacts.
  • If you play through the game in its story-based mode, you encounter the songs in chronological order rather than a difficulty-based order.
  • There are fewer ways in which your play affect the music that is played. (E.g. no drum free play to activate star power.)
  • On the easiest setting (which is the default), you can’t fail out of a song.
  • You can’t customize your avatar.
  • Each song has custom artwork, custom animations.

And these are not random differences or a collection of isolated refinements: they all point in the direction of moving the game away from focusing on players’ generic mastery of techniques and towards a focus on the Beatles’ music and their surrounding history. I’ll even claim that the game’s achievements show this difference: the achievements have moved away from generic gameplay accomplishments and towards achievements that get you focusing on individual songs, and even on techniques within those songs. (I’m thinking of the hammer-on/pull-off achievements for Dear Prudence and Octopus’s Garden; or the achievements for double-fab and triple-fab singing, which will lead you to appreciate just how differently the harmonies play out in different songs.)

The picture that I’m getting from this is a game that, on a non-mechanics genre level, is profoundly different from the vast majority of video games. At its core, the Beatles game is a non-fiction game in the sense that most video games are fiction games: while the game certainly takes its liberties with the historical material that it’s presenting, it’s easy to imagine reaching the game by starting from a book about the Beatles or a course about the Beatles, and dreaming about how to make it more interactive, more immersive, enabling the learner to view the music from different perspectives and to isolate different aspects of their music. (I’m not the only person who appreciates Paul McCartney’s bass lines a lot more after going through the game on bass than I did before playing it.) I’ve been hearing about the Serious Games movement for years; in its own way, this game is one of the best examples of a serious game that I can think of.

Having written the above, now that I’ve had my eyes opened to the nonfiction nature of the Beatles game, I think that other Rock Band games actually largely fit within the nonfiction space as well: they’re much more of a representation and exploration of externally constructed subjects than (to pick another game within the rhythm game genre) Space Channel 5 is. I think it took the kick of a game saying “no, we’re not going to organize the game’s progression in terms of difficulty” to open my eyes to non-fiction video games that surround me, but now that my eyes are opened, I see them there.

Or maybe they don’t surround me, actually—looking at my game shelf, Wii Fit, the Brain Age games, and (I suspect, I haven’t played it) Endless Ocean qualify, but not much else. So maybe what’s really going on here is that two companies, Nintendo and Harmonix, are doing something special; five or ten years from now we’ll look back and marvel at the changes in the possibilities that games represent that are getting their first big market successes right now. (Yes, I am aware that non-fiction games have been around for quite some time; I had a lot of fun playing Robot Odyssey a quarter-decade ago!)

Of course, everybody’s aware of what Nintendo is doing in this vein (it’s certainly hard to ignore Wii Fit); Harmonix’s efforts are, to me, going underappreciated. I’m very excited about the possibilities of Rock Band Network: I now find it frustrating that there’s any music that I can listen to but can’t play along with in a game. So I’m very much looking forward to a future world where that is no longer the case, where we have a continuum moving gradually from recordings of music that we purchase to performances of the music that we play ourselves. (Though, as mashups remind us, the linear notion of a continuum is quite misleading here!)

And just as video games will make their presence known in various places in that continuum, so too will they make themselves known increasingly broadly across our culture. But breaking free of the narrow focus on game classification into genres based on gameplay mechanics is, I think, an important step in that broadening influence.

random links: october 7, 2009

October 7th, 2009

Sorry for the delay between posts; Miranda asked recently if she could watch Haibane Renmei (which I highly recommend), so we’ve spent many of our recent evenings going through that. And I don’t have a real post now, either, but I’ll at least give a link round-up. (Besides, the Zork walkthrough is much more awesome than anything I’m likely to generate myself.)

beatles microphone recommendations?

September 25th, 2009

The one flaw I’m seeing so far in the Beatles game is its microphone support. I really want to try out the vocal harmonies, but I don’t have many suitable devices around the house: I have two Xbox headsets, but the game only supports USB mics, and I have a USB headset for Skype usage, but apparently that doesn’t qualify either. So the USB mic that I got with the original Rock Band seems to be the only device that I have that works with the game.

So I need two more mics; and I don’t want to have to hold them, so my wife and I can sing along while playing instruments. Does anybody have any recommendations on the topic? Honestly, what I’d find most ideal would be something like a USB headset except without the earphones, so the game would recognize it as a mic. But if there’s not anything available like that, then I guess a mic plus a stand would work okay. Wireless is nice but not a big deal, we sit pretty close to the TV and Xbox.

random links: september 21, 2009

September 21st, 2009

big surf island

September 20th, 2009

I very much enjoy the VGHVI game nights on Thursday evenings (we’re playing the Beatles game this week, by the way), but they don’t interact well with my normal style of going through games. I have to budget my game play time fairly strictly; since I normally like to go through games in depth, this means that I’m lucky if I can finish two games a month. And my time budget for multiplayer is even more limited than that for single player, so I generally favor single player games.

The upshot is that, while I think our choice in VGHVI games to play is quite good, they’re almost always games that I have very little experience with. I give them a brief solo spin before to get my fingers used to the controls, and we frequently return to games; even so, I constantly feel like a novice on Thursday nights. (The two exceptions being Rock Band 2, which I play quite a bit at home, and Catan, the board game version of which I played several times a decade ago.)

Burnout Paradise is a perfect example of this. It was the game we inaugurated the VGHVI gaming nights with, and we’ve returned to it six times since. It’s a quite good game, but each time I finish another game, I’ve asked myself “what game do I most feel like playing next?”, and Burnout Paradise has never been the answer. The result is that, when playing it together, I always feel a bit lost: I know my way around at a basic level, but I still find myself making wrong turns frequently, and I’ve unlocked a tenth as many cars as other players. (Fortunately, these flaws rarely restrict from enjoyment of most of the game’s fine multiplayer modes!)

But then, earlier this month, we gave Burnout Paradise yet another go; for a change of pace, we decided to explore the Big Surf Island expansion. I wasn’t all that actively excited about the expansion going in—I’d gotten the impression that it was rural sandboxy areas, and in general I prefer a bit more structure than that—but playing it has completely changed that opinion.

First, let me step back and talk more about the original Burnout Paradise content. It’s an open-world driving game, with a quite large map. The objects in the world generally have excellent affordances, with yellow signs clearly inviting you to smash through gates to explore; blue cones inviting you to step on the gas and try a big jump; red billboards inviting you to figure out how to set up a jump and smash them; and so forth. (And you get a little reward in the form of an incrementing counter the first time you smash each gate / make each jump / smash each billboard.)

This makes it a fair amount of fun to just tool around the map with no particular goal in mind, seeing where your interests lead you; if you want a goal, though, most intersections present you with challenges of various forms (traditional races, stunt runs, aggression runs). Combine this with a well-done license system, a range of cars to earn, and focused multiplayer challenges (“all players should meet at location A on the map; then drive to the top of parking structure B and jump off of it to the top of the building across the street”), and you’ve got a really good game.

Having said that, it didn’t quite grab me enough to put in huge amounts of single-player time. I’m sure I would have enjoyed doing so; but I’m not lacking in games I haven’t played that I’m sure I would enjoy. And the big map is a double-edged sword: in particular, when a race led me up the mountains on the west side of the map, I’d often get a bit frustrated by getting lost on the roads up there, and then I’d find myself up there with relatively few events that I could use to try to make my way back. There are enough fun jumps that making your way down is pretty entertaining the first half-dozen times, but eventually it got a bit stale for me.

So, while I was happy to play it on VGHVI nights, I gave up on the single-player mode once I earned my second or third license. (Which is, admittedly, more time than I’d spent on single player compared to almost any other VGHVI game!)

And then came Big Surf Island. It turned out that the others had gone through it on a previous VGHVI night when I’d been on vacation, but they were willing to indulge me and go through the 10 Big Surf Island online challenges a second time. And I quickly figured out why: the challenges are excellent. From a newcomer’s point of view, they bring you all over the island, giving you a lovely tour of it without having you feel that you’re repeating yourself. The island, rather than being the monoculture that I’d feared, turns out to be a microcosm of all the different sorts of locations in the main game: mostly urban space, but some nice playgrounds even within that urban space, and there is a more rural side as well. Unlike the original game, though, the island is compact enough that you can get quickly from any point in the island to any other; the 10 challenges do a great job of showing you the high points of the island without exposing all of its secrets. Also, they take that “high points” quite literally: the island has many more vertical spaces than the original content did, and a couple of jumps in particular are just stunning.

So we spent an hour or so going through those, and then finished off with the usual tooling around various areas of the city. After which, looking at my Big Surf Island license, I realized that I had a very nice chunk of content remaining for me there. In particular, I had 15 single-player events waiting for me to accomplish them; I’d enjoyed the online challenges enough that I was confident that I’d enjoy playing through those challenges, and it was a a small enough collection that I figured I could spend a couple of hours going through them and stop, without its interfering with other games I was in the middle of playing. Also, I was somewhat surprised to learn that I’d only discovered 8 of the 15 events: the island is small enough that I would have assumed that we’d driven through all of the intersections while going around the island, but apparently there were more nooks and crannies than I’d realized?

So, that weekend, I turned on the game again and wandered around the island. I did complete all 15 of the events, and had quite a bit of fun doing so. The small size of the island meant that point-to-point races didn’t work, and I was fine with two-lap races with intermediate checkpoints. Also, some of the races were “island tours”, which forced you to go off the roads in various areas, giving many of the same benefits that the online challenges had. The trick runs had point targets higher than I’d had to deal with in the main game; I turned out to be ready for that, though, partly because the default island car is a really good trick car, partly because the more compact nature of the game meant that good lines were easier to find, and partly because it finally dawned on me how to properly use taps of the boost button to chain. (I can be a bit slow at times.)

While doing that, though, I got to appreciate more of what the game has to offer. Even with the small size of the island, I was spending some time just driving around to get from event to event; every once in a while, when doing that, a car zoomed by inviting me to take it down. Which isn’t specific to the island—in fact, I don’t think you can unlock cars that way by only playing island content, you have to beat events in the regular game to make cars available as challenges—but it’s yet another mechanism by which the game is always giving you something to do. Also, I’d somehow avoided ever trying the showtime mode until it came up in that VGHVI night; I’m not convinced that mode has long legs, but it’s quite a bit of fun in its own unique way, and there are few enough roads on the island that I figured I’d go and earn showtime road rules on all of them. And, once I’d done that, the natural thing to do was to earn time road rules on all of the roads, which had yet another surprise: again, despite the small size of the island and despite my finding all of the events, there were places on the main roads that I hadn’t noticed yet, places that I only saw when the timed road rules forced me to drive past them.

The upshot was that, three or so hours later, I’d completed almost everything on my island license and gotten quite a bit more appreciation for the different modes that the game offers, the different ways in which it supports various forms of exploration. (The only things on the license that I hadn’t done were a few gates, billboards, and jumps; the island is small enough, though, that I’m fairly sure I should be able to find all of those, and am in fact looking forward to returning to complete those challenges!) So, with that experience freshly behind me, I went back to the main game, and started going through events there, bumping up my license.

And it’s great stuff. As I’d come to expect, it does indeed turn out that there are quite a few areas of the city in the main game that I hadn’t explored at all: you naturally end up funneling through a relatively narrow set of routes on most of the courses, so there’s street after street that I hadn’t explored. In general, I prefer the more compact nature of the island, and would support having the next iteration of the game be somewhat denser than this iteration; but it’s great to have so much to do, the larger point-to-point races have their own charms, and showtime works better on the main city streets than on the island streets. I started exploring the burning routes (and have, as a result of all of this, gone from having four cars to having over 25 of them), and I fully support those as a gameplay option. My improved trick mode skills are carrying over, and I’m starting to find some of the good trick lines; if I don’t get a few hundred thousand points, I feel like I haven’t done my job, I’ve gotten 1.5 million on one of my runs, and I’m sure I could do rather better than that with more practice. Also, billboards have changed from something that I smash into when I happen to run into them into something that can get me to stop and think about where the approach is that would allow me to smash into them.

I don’t think I’m going to end up turning into a super completist for the game, but at this point I won’t rule out the possibility. I’m certainly going to earn my Burnout license and do burning routes for all the cars I can; I’ll probably use the time road rules as a vehicle for exploring the whole map, too.

So: quite a game. As I said at the start, great affordances; and a great variety of options, which (as I’ve come to appreciate) work very well together to introduce you to more and more of the possibilities of the game. The original and its expansion also provide what I suspect could be a quite fruitful lesson in the pros and cons of open-world game design: I love the idea of having a huge map with everything open at the start, but I also didn’t really start appreciating the game until I was given a much smaller subset of the map to focus on. I’m not sure how to meld the virtues of the two approaches, or indeed if my appreciation for the smaller space has more to do with my time constraints than any universal rule of game design (and, I should note, the sequence of licenses and the achievements do a good job of providing a staged set of goals even in the original game). But I would recommend that anybody who is thinking about open-world game design should give both the original game and the expansion a look: having an optional geographically restricted playground worked very well for this player.

art style: boxlife

September 15th, 2009

Art Style: Boxlife, like the last game I talked about, is a short puzzle concept game with a mix of set-piece puzzles and random input puzzles. This time, though, the mixture is treated in a more traditional fashion, by separating the two gameplay ideas into into two separate modes.

The set-piece mode is rather good, I think. One sign of a good puzzle game is: if I were lying in bed sick with a fever, would my brain be constantly making up puzzles for this game and testing me on them? Fortunately, I didn’t get to test that exactly (I was sick late last week, but I’d mostly stopped playing Boxlife before then), but my brain was happy enough to spend time folding boxes in the shower.

The random part of the game wasn’t, to me, nearly as successful. One flaw is that it’s (I assume) really hard to create random infinitely growing layouts that people can actually manage to cut up into strips of paper of the appropriate shapes without leaving a remainder. So the game gives up on that, and instead lets you discard excess bits at a point penalty. Which is not particularly elegant (and, in general, I don’t support points as a scoring mechanism in puzzle games: the valid scoring mechanisms are completion, time, and distance), though they do try to make up for that by giving you adorable little bits to add to a house scene as you earn more points.

With this game, I’ve finished the 10 dollars of DSiWare credit that came with the purchase of the system. My guess is that I’ll probably buy more DSiWare eventually (and, in fact, that what I’ll buy will be more Art Style games), but I’ve got enough else to play that it will take me a while to get around to doing so.

experts and expertise

September 13th, 2009

I want to talk about a couple of talks I attended at Agile 2009. Both relate to experts, expertise, and how one develops the latter to become the former.

The first was given by Jon Dahl, on “Aristotle and the Art of Software Development”. You can see video and slides of an earlier delivery of the talk. (I don’t think it changed much between deliveries; I also don’t know how much sense the slides will make out of context.) He viewed this subject through a lens of ethics: a Kantian view focusing on actions (and, in particular, universal principles motivating them); a Millsian view focusing on outcomes; and an Aristotelian view focusing on actors.

As you might suspect from the title of the talk, Dahl was most taken with the third point of view. (Which begins about 15 minutes into the video or 70 slides into the deck.) He presented Aristotle as linking ethics with happiness and a life well lived, and with virtue (in the sense of performing your function well). Honestly, it may be the case that many of these words had significantly different meanings for Aristotle than they would for us; in particular, Dahl glossed the Greek term that he translates as “happiness” as coming from “good” plus “spirit”; depending on how one takes the compound, I could imagine that as meaning “one whose spirit is good”, which makes the idea that ethical people are happy potentially more of a tautology than an an interesting statement.

Leaving these glosses aside: the point is that being good (virtuous) at something is inherent in the people who are good, rather than being rule-based. Which raises the question: how do you become a virtuous person? In the talk at Agile 2009, it sounded like at least some of Aristotle’s answer to that is fatalist: virtuous people are born, not made. (And—stop me if you’ve heard this before—virtuous people always turn out to be rich non-barbarian males. Sigh.) Watching the video of the RubyConf version, though, there’s a less fatalistic point of view: you gain virtue through practice and through modeling. So, to become an expert, you should hang out with experts, and practice; as you gain expertise, use your improved understanding to improve both your expert detection and your practice.

In contrast, if you’re a Kantian, instead of looking for good people, you look out for good principles, and follow them rigorously. In an Aristotelian point of view (again, with the caveat that it’s been decades since I’ve read any Aristotle myself, I’m just going by the talk), it would be possible to have virtues without formalizing the principles at all; furthermore, Aristotle’s virtues are means between excesses and defects (see slide 95; this gives me a Buddhist vibe, too), so following rules too strictly may actually be a sign that you’re straying from virtue.

The other talk was one by Mary Poppendieck on “Deliberate Practice in Software Development”. It discussed the nature versus nurture question of becoming an expert. My memory of the talk is that she strongly came down on the nurture side of that; rereading the slides, I’m not sure my memory is correct, but what is correct is that she claimed that nature alone is not enough: the way you get to Carnegie Hall is, indeed, to practice. Specifically: people need to practice their field for about 10,000 hours before becoming experts; and those who do eventually become experts practice longer and harder than those who don’t.

This last sentence, of course, doesn’t settle the nature or nurture debate: it may be that those who aren’t naturally gifted won’t become expert violinists no matter how long they practice. On a more meta level, it may also be the case that, without the appropriate nature, you’ll find practicing violin for 10,000 hours so offputting that you’ll give it up long before then. So it’s not clear (at least to me) to what extent nature is necessary; it does seem to be the case, however, that nurture (in the form of practicing) is necessary to become an expert, and in fact quite a bit of nurture is.

It’s not the case, however, that any old 10,000 hours of practice will do. As the title of the talk says, it should be “deliberate practice”, and Poppendieck listed four key factors in making the practice successful: a mentor, a challenge, feedback, and dedication. You want somebody else to guide you; you don’t want to be complacent; you want to know how your work is turning out; and, even with that, you need to put in the sweat. And she gave examples of how you might structure your work to support this. (Looking at it through a lean viewpoint; the slides don’t mention them, though the talk may well have, but I’ll bring up A3 reports.)

I was planning to turn this post into some sort of grand overarching pulling together of the above with some other articles that had come across my twitter feed. But, after listening to Dahl’s talk again, I’m having a hard time finding any nice symmetries. So, I’ll conclude with talking off the top of my head (as if I ever do anything else!):

Poppendieck’s recommendations don’t contradict the Aristotelian point of view: in particular, it sounds like Aristotle would wholeheartedly support having a mentor. Can we make other links: maybe Mill’s utilitarian point of view resonates with feedback, for example? Actually, I’m surprised at how hard it is to find explicit Kantian resonances with the deliberate practice model; is that a sign of something deep, or is that just a sign that the idea of having principles to guide us is to obvious as to not need stating? (As a side note, right now I’m finding the idea of following quite detailed Kantian principles in software development to be strangely appealing.)

The nature versus practice question is one that I’m interested in for both personal reasons and parental reasons. Take the question of how nature affects our practice habits: I’m a decent musician, but I was never one who was drawn to spend hour after hour after hour in practice rooms honing my art. I’m sure I could have become a better musician than I actually am, though I don’t know where my ceiling would be (if that concept even makes sense), but I do know that doing so would have required quite a bit more desire out of me. And I certainly support Poppendieck’s claim that not all practice is created equal: I’ve seen more than enough of people doing “practice” in ways that strike me as noticeably suboptimal.

As for nature and raw talent: I’ve seen enough exceptional people that I don’t believe that nature is irrelevant to becoming a world-class expert, from an outside point of view. But, from an internal point of view, it’s probably best to pretend that it is irrelevant: Poppendieck’s deliberate practice recommendations sound pretty solid to me, and I’m fairly sure that anybody following them and putting in the time would improve anybody’s skills. They also suggest a meta-approach: improve your skills at deliberate practice. Though, of course, you can’t just do that in isolation: you want to deliberately practice deliberate practice, which (among other things) means actually learning stuff.

Looking at holes in my own practice: of Poppendieck’s four recommendations, the area where I probably do worst is in finding mentors. (Indeed, in retrospect I probably should have spent rather more time acting as a mentor while managing the last few years. Sorry!) I imagine I shy away from feedback (both giving and receiving), too.

Important stuff; I hope we can all figure this out.

multiuser memorization

September 8th, 2009

I’ve been using a program I wrote to help me memorize stuff (mostly Japanese vocabulary) for more than a year now. And for almost all of that time, I haven’t modified the program at all: I had plans right from the beginning to add multiuser support (if for no other reason than to make it safely accessible outside my LAN), but ssh tunneling worked well enough for remote access, and in general the program worked fine for my purposes. (Well enough, in fact, that I have almost 5000 items stored in it!)

Buying an iPod Touch changed that, though. Once I took a bit of care to add a stylesheet that looked good on the device, I found that it was just as easy to go through my vocabulary on the iPod as it was on the computer, and it was hugely easier to fit the review into spare moments of the day. So I switched from doing one big review a day to at least three a day, plus a few more when I had spare moments around the house.

So that was a huge help. I still couldn’t review vocabulary during spare moments at work, though; and once I got an iPhone, the number of places where I could conceivably review vocabulary but couldn’t actually do so got even larger! This made making the program available safely on the internet a lot more urgent.

I ended up using authlogic for authentication support; there were a few odd testing issues, but in general it worked quite well. (I think I’ve figured out at least one of the testing issues; I hope to have time soon to confirm my hypothesis and submit a patch.) And once that was in place, adding the general plumbing to link items with users was straightforward. (And I learned something about Rails in the bargain.)

I still don’t necessarily recommend that anybody else use it. For one thing, I suspect that the spacing of my review sessions isn’t optimal: I’m using exponential spacing more out of optimism than any strong evidence that it’s the best pattern to use, and in fact I get the feeling that some of my gaps in the months-out range are a little bit off. And, for another thing, I’m sure that there are features that I don’t need that others would find important; I can’t promise to be able to add them.

I will, however, strongly recommend that, if you have an iPhone or an iPod Touch and are considering using some sort of timed review program, that you don’t choose a desktop-only solution (unless you have a desktop computer in your bathroom): it makes a huge difference to be able to nibble away at your items when you have free time instead of having to do larger batches at less frequent intervals. And I hope that I’ll be able to add feature requests that I deem sensible without making you wait too much; alternatively, I’m happy to make a Mercurial repository available if you want to tinker with it yourself. I will also back up your data offsite nightly (though I make no uptime guarantees for the server my program is hosted on: it’s my home computer, and if something bad happens while I’m on vacation, it could take a couple of weeks to get it fixed). And you should be able to export your items / timing information as an XML file at will, if you want to change solutions. (Though it’s your problem getting that XML file translated into whatever format the other solution wants!) Having used it for more than a year gives me confidence that I’ll remain interested enough that it shouldn’t disappear for the forseeable future.

So if any of you wants to give it a try, let me know and I’ll set you up with an account.

Incidentally, I mentioned a few months ago that I was feeling a bit swamped with projects and conference prep, and was planning to step back some from my normal blogging schedule. (Especially the video game related parts of it.) Fortunately, Agile 2009 is now over (though, don’t get me wrong, I enjoyed both the preparation and conference very much!), and some of my side projects are winding down, so things should be getting back to normal around here. In fact, over the last week and a half things have been much more prolific than normal on this blog; I don’t plan to keep that up, but it is very nice both to have the time and energy to blog like that and to remind myself that I really enjoy doing so.

this is why you write the failing test first

September 7th, 2009

I finished adding multiuser support to my memory project this weekend. I’d added the ability for users to log in and out while I was on vacation this summer, but I hadn’t actually linked up the users with their lists of items to memorize.

The relevant models are a User model and an Item model. A user has_many :items; part of the Item class definition was the following:

class Item < ActiveRecord::Base
  ...
  def self.next
    find(:first,
         :order => "next_review_time",
         :conditions => pending_item_condition)
  end

  def self.pending_review_count
    count :conditions => pending_item_condition
  end

  def self.pending_item_condition
    ["next_review_time <= ?", Time.now.utc]
  end
  ...
end

As written, those would, for example, add up the total count of all users’ pending items; I wanted instead to be able to ask those questions on a per-user basis.

The has_many declaration gives me a collection user.items for each user. And if I pass a block to has_many, I can add methods to that collection; that seemed more stylish than, for example, adding a user parameter to the above methods. So I modified my User unit tests to make sure that there were items owned by multiple users, and copied over the Item unit tests for the above methods, replacing, e.g. calls to Item.next with calls to user.items.next.

Which I expected to fail, complaining about an undefined method “next”. But not only did the tests not fail for that reason, they in fact passed, ignoring the items for other users! At first, I assumed I’d made a mistake in my tests, but no: when I replaced the calls to user.items.next with calls to Item.next, they failed as expected. So the functionality I wanted really did seem to be working without my having to lift a finger.

But how? I could imagine some sort of method_missing implementation that forwarded functions on the collection to functions on Item. But if it were doing that, how was the functionality getting restricted to items owned by the user in question? I would hope that it wasn’t doing a broader search in SQL and then subsequently ditching inappropriate items in Ruby; sure enough, a look at the logs shows that the SQL queries that are issued do include the user_id restriction.

I haven’t verified it yet, but the only hypothesis that I’ve come up with so far is that the collection objects that are returned by user.items start off life as clones of Item; so they have all of the class methods on Item. And then some key method (find, say) is overridden so that the user restriction always gets applied, and all other lookup methods are implemented in terms of that key method, so they get the restriction in question for free.

Which, once I thought about it, makes sense. Consider Item, not as a class but as an object: you can think of it as a collection object, namely the collection of all items. With that in mind, it makes sense for other objects that are also collections of items to be closely related to it, and if we can express that tight linkage in terms of the implementation, by thinking of Item as the primordial collection of items, so much the better!

An interesting journey. At first, I thought I must be writing bad tests; then I thought I was seeing magic; and eventually I came around to a realization that what I was seeing made a lot of sense conceptually, so I was happy that I was working with a language and a framework where I could get such sensible behavior for free. And, no matter what, it was a useful reminder that there’s a reason why the TDD cycle is red, green, refactor, not just green (with simultaneous test+implementation changes), refactor: if I’d done the latter, I would have missed a useful learning opportunity.

Though there’s a postscript to the story. I’d learned that my original implementation idea was unnecessary; the question remains, though, whether the original implementation idea was a good one or not. And, after giving it some thought, I decided that I preferred having these methods in the User model rather than in the Item model. If I left them in Item, it would be easy to write code representing concepts like “what’s the next item that any user will be asked?” or “what’s the total pending item count across all users?” Which aren’t natural questions to ask, so I was setting myself up for bugs by leaving those methods in Item.

So, with my tests in place, I moved them to User:

class User < ActiveRecord::Base
  ...
  has_many :items do
    def next
      find(:first,
           :order => "next_review_time",
           :conditions => pending_item_condition)
    end

    def pending_review_count
      count :conditions => pending_item_condition
    end

    def pending_item_condition
      ["next_review_time <= ?", Time.now.utc]
    end
  end
  ...
end

Leaving me where I expected to end up when I began, but having taken a much more interesting route.

random links: september 6, 2009

September 6th, 2009

art style: pictobits

September 5th, 2009

Art Style: Pictobits is a funny mix for a puzzle game. Many puzzle games challenge you by throwing random input at you faster and faster until you break. (Tetris is a classic example.) And many puzzle games give you set-piece challenges that, while perhaps requiring some quick thinking and precision (and even having a bit of randomness), let you develop approaches that are targeted to the layout of a specific level. (Bust-A-Move levels can be examples of this.)

Pictobits, however, is in the middle. At first, it looks like a straightforward example of the “faster and faster random input” school: blocks fall from the top of the screen, the game’s designers actually manage to come up with a new but not particularly gripping twist on how to deal with that, and if you survive long enough, you win. (And unlock a picture from an NES game: Nintendo loves milking the nostalgia.)

That winning is the first sign that it’s not in the “faster and faster” school: you’re not supposed to win in games like that! Anyways, as you progress through the levels, you first run into one additional gameplay wrinkle, and, as the stages harder, you start to fail. And, on replaying the levels, you notice that the patterns seem pretty familiar, that you run into the same sorts of shapes at the same points in the level, and have to figure out ways to quickly arrange your squares to eliminate most or all of the falling shapes most thoroughly. So it really is a “set piece” game, it’s just that the set pieces are quite a bit longer than in most games of that subgenre and have quite a bit more flexibility in how to deal with them.

And then, if you’re like me, the game eventually gets hard enough that you stop playing. Which is okay. It’s the first DSiWare game that I bought; it would have cost me all of five dollars, except that you get ten dollars of credit when you purchase the system, so I effectively got it for free. And I got five bucks worth of enjoyment out of it: a puzzle system with a few new ideas, that ultimately didn’t come together for me, but that I was perfectly happy to have spent two or three hours with, to have had with me on a recent plane ride. I remain a supporter of Nintendo’s Art Style experimental series: I’ve enjoyed the games that I’ve tried in it, and I imagine one of them will end up really pushing one of my buttons.

rhythm heaven

September 4th, 2009

I feel like I should have more to say about Rhythm Heaven. It’s a rhythm game; I like rhythm games. It has quirky Japanese music and images; I like quirky Japanese music and images. It’s a small-scale experiment that was quite popular in Japan; I’m all for that sort of thing.

But I don’t have much to say. I played the game, I liked it okay, I didn’t like it as much as I expected. Part of that has to do with the progression mechanic: you have to finish each stage before progressing to the next one, and there isn’t clear feedback on what you did wrong. So when I found myself stuck at a stage where things just weren’t going right, I just got annoyed. Having said that, I didn’t have much trouble making it through all the regular stages; but I didn’t have the energy to either systematically get bonuses on the stages to unlock further rewards or to go through the harder versions of the stages that appear after you hit the credits. (At least I assume that all the stages after the credits are harder versions, I stopped after the first one, where I did what seemed decently well to me but not well enough to progress. Which is another way that the game doesn’t give you feedback: if you fail, you don’t know how close you were.)

The images and music were pleasant enough, amusing enough. Several of the pieces of music got stuck in my head, but that’s not necessarily a good thing: in particular, this happened to me with the very first stage, whose “music” consists of playing five notes of a scale over and over again. I have no idea why my brain decided to latch on to that, but I don’t particularly thank my brain or the game for that outcome.

Don’t get me wrong, I’m happy enough to have spent a few hours with it, but I’m also glad that I stopped when I did and moved on.


Not much discussion of the game on the blogosphere, but I did enjoy this Offworld article on otaku culture.

change of scene

September 1st, 2009

One of the GDC sessions I attended this year was a charming panel discussion including, among other people, Steve Meretzky of Infocom fame. Which got me curious what he was up to these days—I don’t generally expect people from that era to still be active in the game industry—and was pleasantly surprised to find out that he’s the VP of game design at a company, Playdom, that’s located in Mountain View all of a mile and a half away from my house.

So I filed away their existence in the back of my brain (well, actually, in my GTD someday/maybe list) and mostly forgot about them. Not completely: at the time, I was thinking about possibly changing jobs. But my general conclusion was that I was in general rather happy with my current job, and that while I was starting to feel a bit antsy, I’d probably prefer to change jobs towards the end of 2009 than towards the middle. I sent out a few feelers at the time, but none of them paid off, so I was happy enough to shelve the issue.

It turned out, though, that one of the feelers wasn’t dead, it had just gotten buried for a bit. It resurrected itself in the middle of the summer, and shortly after that happened, I got cold-called by a recruiter who mentioned Playdom! So I sent in my resume, and went in to interview. And I’m very glad I did, they look like they’ll be a very nice match for what I’m looking for. In fact, going down the checklist from the aforementioned blog post, they hit on almost every front: a local game company working in small, cross-functional teams with very fast iterations and which would expose me to many domain and technological areas that I’m not very well steeped in yet. (No Erlang, but I can certainly live with that. It’s also not clear to me how many of the agile technical practices they use, but that’s an area where I should be able to contribute if doing so turns out to be useful; anyways, right now I’m a lot more curious to see what a fast-moving team looks like on the business side than the technical side.)

They focus on social games. Which might seem like a bad fit for me, because my taste in games is fairly traditional. Actually, though, it’s something that I’m rather excited about, for two reasons. (Or perhaps one reason with two sides?) One reason is an aesthetic one, or a cultural one: a new art medium is a gift that we should cherish, so the last thing that I want is to see it have its practitioners bore into a tiny area of the design space, ignoring vast reaches of what is possible. That is, unfortunately, exactly what several major players in the game industry have been doing over the last decade, so I’m very glad to see companies like Playdom consciously setting their sights elsewhere.

The other is perhaps the business side of the same argument: one excellent book that I’ve read recently is The Innovator’s Dilemma. (Ironically, I read it because my current boss made it sound so interesting.) The thesis of that book is that highly successful companies, exactly by doing such a good job of paying attention to their best customers, end up refining their current technologies to make them more and more appealing to the core of their customer base. As part of this, they discount customers that are on the fringes (low-margin customers, frequently with somewhat different interests); new companies can then take slightly modified (and less technologically advanced) versions of those same technologies and use them to build up a following in a new customer base. (And, more importantly, using a new value network: their suppliers, their income sources, their distributors are all different from those of established companies.) What starts as a small market soon grows to a quite respectable size: also, the companies in the new market can typically improve the quality of their technology at a faster pace than companies in the original market, so after a few years, the new companies end up making products that are technically quite adequate for the majority of customers in the original market (but with lower prices and otherwise more appealing!), which quickly spells doom for those original companies. And, as far as I can tell, Playdom looks like a textbook example of a company at the early stages of such market innovation; if they follow the course outlined in that book, the sky’s the limit.

Of course, future promise is one thing, but the question remains of how interesting their current games are. Some of their early games seemed to me more like experiments than compelling packages (though they’re experiments that many people were happy to play); within the last month, though, they launched Mobsters 2, which I’m really quite enjoying. It took me a few days to figure out how the mechanisms in the game worked, what they meant and how they interacted together; that was enough time to get me sufficiently hooked that, even though I’m in general not uncovering too much more in the mechanics, I still happily log into the game a couple of times a day to do some leveling up. (And, as I said before, they iterate quickly, so for all I know they’ll introduce interesting new mechanics next week, next month!) So if that’s what their second wave of games looks like, I have high hopes for what they’ll be producing a year or two from now.

Ironically, the one part of the game that I haven’t explored is its social aspects: I’m currently not much of a Facebook user (follow me on Twitter instead if you want to know my hour-to-hour activities), so I don’t have a big pool of friends to draw from to expand my mob. I would like to change that: if you’re a blog reader, feel free to add me as a friend; if you do so, please give the game a try and ask me to join your mob! (Do Facebook friend requests include a note? If not, and if you’re not sure I know you, just e-mail me or leave a comment or something—I’m happy to add any blog reader as a friend.)

I’ve very much enjoyed my current job: it’s been a wonderful place to spend the last few years, I’ll miss my coworkers very much, and it looks like the product is going through an exciting phase in its development right now that I wish I could see the other side of. Having said that, I’m very excited to be joining Playdom at the end of the month, and I can’t wait to see where that journey will lead me.

joined the twentieth century

August 31st, 2009

Neither my wife or I has ever had a mobile phone. This marks both of us as somewhat eccentric, and it’s not a dogmatic choice for either of us; the truth is simply that neither of us uses a phone much, so why bother paying extra to carry one around? For various reasons, though (probably most notably my iPod Touch enjoyment), my brain started thinking earlier this year that having an iPhone might actually be worth seventy-five bucks a month. So I spent some time investigating that possibility, and then set it aside waiting until something gave me a further nudge.

Which happened last month: some events occurred which made me think that it would be wise for somebody in our family to have a cell phone, we were about to go on vacation, and I was in an Apple store for an unrelated reason. (Repairing the new iPod; good thing it was still under warranty, but I continue not to be impressed with the reliability of Apple’s hardware.) So I walked out of the store with my first cell phone.

About which I have no complaints at all. I was getting a lot of the iPhone’s benefits from having an iPod Touch (I spend a lot of the time at home and work, both of which have WiFi reception, and I can even get WiFi wandering around Mountain View), but it’s still useful having internet access even more frequently. And right before that trip was a good time to get one: the hotel we stayed in on the trip advertised itself as providing free WiFi, but it didn’t actually reach into our room, so I had to go down to the lobby to use it. (Other downsides of the hotel: they used funny-smelling cleaning chemicals; while trying to figure out if they had wired internet, I noted that their phone jacks had no cover, leaving an unsightly hole in the wall; the phone also didn’t have instructions on how to call various locations within the hotel (though pressing 0 got me to the front desk); they shuffled me to an 800 number for my questions about WiFi access; and one evening even the lobby WiFi didn’t work. I will try to avoid the Holiday Inn in Decatur, Georgia in the future, and indeed the chain as a whole.) And it also never crossed my mind that my father-in-law wouldn’t have internet access at all in his house. So I was glad to have a phone available to feed my Twitter habit and look up the occasional piece of useful information.

Fortunately, my mother-in-law had perfectly nice internet access; I even got some reasonable programming done on vacation while in her house. In general, it was a quite pleasant trip; very relaxing, and our hosts were fine with me lounging around and programming rather than, say, visiting Stone Mountain. Though I did go see some sights; in particular, the manta ray at the Atlanta aquarium really is wonderful. We had some quite nice food, too, most notably at Rathbun’s.

And, as I write this, I’m at Agile 2009; having a phone is proving useful to allow me to call home without worrying about exorbitant hotel phone charges. It’s only being moderately useful in terms of internet access, though: the interior of the hotel is pretty much one big dead zone. (I would have naively thought that Hyatt would find it useful to work with AT&T to ensure that one can get cell phone coverage in their hotel, but apparently not? Speaking of hotels that I’m not too impressed with, I’ll add Hyatt to the list: they charge for internet access; the ethernet cable in the room has the plastic locking bit at the end broken (which they could certainly afford to replace, given that they’d make up the cost in a fraction of a day of internet charges); the food prices are ridiculous; and the bathroom manages to hide the light switch, the toilet handle, and the kleenex in odd locations. I may be imagining this, but there may even be something wrong with some of the power jacks in the room; though it may be that my power supply is going south.)

I still think that $75/month is overpriced, especially since I can’t, say, use the phone to get internet access for my computer. But the iPhone and the iPod Touch really are wonderful devices, with their mix of being a solid music player, a very credible internet access device, and a very credible application platform: a more than worthy addition to my pocket.

random links: august 30, 2009

August 30th, 2009

puzzle quest: galactrix

August 29th, 2009

I still haven’t made up my mind about Puzzle Quest: Galactrix. It never grabbed me in the same way as its predecessor; how much of that is due to novelty wearing off, how much is due to the strangely low quality of the DS port, and how much of that is due to the core mechanics?

I actually don’t think it’s the core mechanics, though it may be due to the peripheral mechanics. The non-fixed gravity, once I got used to it, does make the game slightly richer: in particular, any time you swap gems, you have the choice of two directions in which to carry out that swap (and to have pieces subsequently fill in from). That gives you something extra to think about, and meant that playing the game wasn’t exclusively an extension of the habits that I’d built up with its predecessor.

That’s the main combat mode; like its predecessor, there are another half-dozen or so variants of the gameplay, used in different situations. These took me a while to get used to—in particular, like Bill Harris, I didn’t initially appreciate the way that the leap gate mode punished you for setting off chains. (Incidentally, Bill has two other posts on the game; not so much blog discussion of it in general.)

Thinking about it a bit more, though, I eventually changed my mind on that issue. If all the mini-games had the same rules, there wouldn’t be much point of having mini-games; so there’s a real benefit in having what’s good in one mini-game be indifferent or even bad in another. And, on a more subtle point, the main attack game is probably the deepest of all the gameplay modes (which is a good thing!); the other games are typically more focused, and it turns out that the tricks that you learn to focus on from them can help broaden the range of your tactics in the main attack game. For example, a key part of the attack mode game play involves making sure that your moves don’t set up good attacks by your opponent. Controlling cascades is an important aspect of that; the rumor game mode focuses on that, and (as noted above) controlling cascades is also an important part of the warp gate game. Similarly, you have various items which will allow you to move twice in a row; the warp gate game helps you focus on setting up attacks one move out.

So it’s a nicely crafted set of games, one which adds up to more than the sum of its parts. Though they’re not all fabulous; in particular, the games that try to get you to use up most or all of a fixed set of gems didn’t work too well for me, certainly not as well as the monster capture game in Challenge of the Warlords.

The upshot of all of that is that I support the game’s primary mechanics, and some of its peripheral mechanics. Other parts of the peripheral mechanics, though, didn’t work as well for me. In the game’s predecessor, you had a leveling up system that was most important mechanism for acquiring new abilities (not just buffing your stats), which culminated (when you reach the level cap) in a spell that let you largely take control of battles; the game controlled the levels/abilities of enemies that you fought to generally give you well-matched battles. In Galactrix, however, abilities are controlled by buying items for your ships (and you may need to get better ships to have more slots for items). So you have access to abilities earlier, and it’s harder for the game to match your level.

The result is that, on the one hand, I had some early boss fights that were way too hard for me; on the other hand, about halfway through the game I had a ship that had enough slots for a set of items that enabled me to control the playing field whenever I needed to. So, while having more choices for customization sounded nice in theory, in practice it didn’t work out too well. (And, I will add, the way it turned out is a bit of a blessing in disguise: if I’d had to do more customization, I would have had to spend more time grinding on areas of the game that I didn’t particularly enjoy.)

Some interesting seeds here, but I’m still left with an unsettled feel for the game. Coming in, I wasn’t sure if the original Puzzle Quest was a one-trick pony; having played the second game, I’m still not sure! Or rather, it’s clearly not a one-trick pony, but it might be a one-and-a-half trick pony; on the other hand, it wouldn’t completely shock me if the next iteration put it all together in a satisfying way.