[ Content | Sidebar ]

the evolution of platformers

December 26th, 2007

My current spate of video game playing began in grad school when my friend Wayne gave me his old NES, together with Super Mario Bros.. If I’m remembering correctly, Jordan later found a copy of Super Mario Bros. 3 at a yard scale, after which I was doomed to several years of platforming addiction. Not that they were the only NES games I played—I was rather fond of Solomon’s Key, and Jordan will be pleased to hear that Blades of Steel was just rereleased on the Virtual Console—but I sunk by far the most hours into the two SMB games. I loved running, jumping, and stomping my way through the levels; I loved the way the focus was on the level design, with combat largely there to keep you on your toes; I loved the way you could explore every nook and cranny of the levels and find hidden stuff; I loved it that, even when I died, I knew it was my fault, and if I just tried the level again (and sometimes again and again and again) and just, you know, didn’t screw up, I’d get past it eventually!

So, when I got a job offer, I celebrated by buying a Nintendo 64, and one of the first games I got for it was Super Mario 64. (It was temporarily out of stock, else it would have been the first N64 game I bought; that honor fell to Extreme-G instead.) And it was great! All the crazy jumping and lightweight combat that I liked, just in 3D, but there were these huge areas for you to explore, with stuff all over the place. In fact, the environmental design in some ways took even more pride of place in Super Mario 64 than in the 2D Mario games: there were goals (stars) for you to accomplish, should you choose, but, unlike the persistent forward drive of the 2D games, you could simply wander around the levels if you wished, just poking your nose in places and having fun. There wasn’t even a strict correspondence between levels and stars: each level was big enough to have six different stars in it. (Plus a seventh that you could get by collecting 100 coins.)

I was blown away, and I wasn’t the only one: this wasn’t just the natural evolution of the platforming genre, this way a statement about how 3D games should be made, with lessons for the entire industry in its transition to the first generation of consoles that could really support 3D gaming. I collected all 120 stars, and would happily have collected twice as many; fortunately, Rare released Banjo-Kazooie a few months later. (I didn’t buy an N64 until a year and a half after launch, so they’d had almost two years to learn the lessons from Super Mario 64.)

Again, I played straight through that one, collecting every puzzle piece, finding all 100 notes on each level, and so forth. Those notes are worth mention: one aspect of 2D platformers that turned out not to translate quite as well to 3D platformers is the “find a way to hit every block to uncover secrets” part of the gameplay. I’m not sure entirely why, but my guess is that, in a 2D world, it’s easy to have constricted areas with multiple levels, which means that it’s easy to place lots of blocks that you can jump up to hit. In a 3D world, however, you need many more open spaces, otherwise the camera can’t see anything; while they still have a lot of vertical exploration, they come more in the form of hills (perhaps with paths cut in the side), trees, or just mounds with no open space between. This means that you don’t have as much freedom to place blocks to break open; Banjo-Kazooie‘s solution to this, which I think is as good as any, is to scatter 100 musical notes lying on the ground (or on hills or in trees or in caves or …) in each level. This is great for the game player who, like myself, wants to prove that he can explore every nook and cranny; if I can get all 100 on a single play through a level, I know I’ve mastered exploring that level. (I’d remembered that as unlocking a puzzle piece, but googling shows that I was wrong, so it really is quite optional.)

More platformers followed, but they didn’t have nearly the same spark for me. I finished them, but I didn’t track down every loose end, and they felt like a slog by the end. They kept the same core gameplay design; that was great the first couple of times, but it was getting stale. Levels got larger; at first, I thought this was a blessing, but at times it started to feel like a slog. Also, part of the core platformer tradition is giving your character access to a range of different abilities (the most prominent example of this being the suits in Super Mario Bros. 3); each new game experimented with new vehicles for delivering abilities, but none of them worked very well. (Rare was going through a “let the player switch between multiple characters” phase at this time, and Donkey Kong 64 showed that at its worst.)

The one shining bulwark against the rising tide of platformer mediocrity was Conker’s Bad Fur Day: it was one of the last games on the N64, and one of the best. The reasons, however, had nothing to do with the platforming gameplay, but rather had everything to do with the humor of the game. (And the pop culture references, though I probably didn’t get as much out of those as most people, since I basically hadn’t watched any new movies since moving to California.) The best example, one of my single favorite video game sequences of all time, is the “Great Mighty Poo” song; YouTube has this version with non-singing gameplay edited out, and this longer version without cuts. Please go watch one of them (warning: quite possibly NSFW) and come back. Basically, the main character in the game is a quite profane squirrel; I still laugh when I see a button described as “context-sensitive”, because of a sequence in that game involving such buttons after Conker’s been drinking rather heavily.

Conker was a glorious end to platformers on that generation of consoles, but there’s only so much that the industry could have taken from it as a model going forward. By this time, I was pretty burned out on the genre; in the next generation (Dreamcast/PS2/Gamecube/Xbox), I played almost none, and I don’t think I missed much. I did, of course, play Super Mario Sunshine, and it was pretty good, but nothing special: the core level design was solid, but the new gameplay mechanic wasn’t anything to write home about (in fact, in some ways, it weakened the traditional jumping mechanic), and I thought the “explore every nook and cranny” mechanism (blue coins) was actively annoying.

What’s going on here? The basic problem is that Super Mario 64 got so many things right that it’s hard to see what to do to incrementally improve on it. (Hmm, maybe I should spend more time thinking about lessons from completely different games with strong platforming elements, e.g. Shadow of the Colossus.) The idea of big, wide-open world that you can explore to your heart’s content is pretty compelling; Miranda has spent hours and hours over the last three or so years roaming through the environments of Super Mario Sunshine, not trying to get the stars at all, and she’s still not bored with it.

You can tweak this platforming/exploration design by adding new gameplay mechanics (which is inherently hit or miss, since jumping is always the core of platformer gameplay), you can make the worlds bigger (as happened every year), you can even stitch the worlds together so you have more one big world instead of a hub world that can magically transport you to other, distinct worlds. There’s a bit of the latter in Super Mario Sunshine, but to see where the idea of one big world leads you, it’s best to go outside of the genre entirely: if you stitch together all your worlds into one big world, keep the idea of multiple goals (“stars”) within this big world, and give up on the idea that the goals should have anything to do with jumping, then you’re led to the direction of GTA-style mission-based gameplay within a massive world. One of the biggest platformer series during the second 3D console generation was Jak and Daxter, on the PS2; by the time I got around to giving that series a try, in Jak 3, it was no longer a platformer, but had turned into a sort of GTA with furry animals and (much) less brutality.

So: was the platformer dead? Had we mined everything we could out of it, and had the time come for it to step aside and make way to the new genres that it had helped give birth to? I was wondering that myself, and I certainly wasn’t optimistic about Nintendo’s ability to do significantly advance the genre. (See my standard Nintendo review.) But then something funny happened: a year and a half, Nintendo released New Super Mario Bros. for the DS, bringing back old-school 2D platformer gameplay, and the world has lapped it up to the extent of more than12 million copies sold. Which is a staggering amount of sales (significantly more than any Final Fantasy or Halo game, for example), and this for a game that brings nothing new to the table, just revives a genre (2D platformers) that’s been rather out of fashion for a while.

So maybe there’s more to be mined from 2D platformers than we’d seen? Let’s go back and re-envision how the genre might have transitioned differently to 3D. In particular, as we’ve seen above, wide open levels with multiple goals evolved into mission-based gameplay; this is, in retrospect, a significant departure from the linear, independent levels that 2D platformers had. So what if we went back to lots of linear levels, and made sure to turn up the jumping knob even further?

This is exactly what Super Mario Galaxy did, and carried it off extraordinarily well. I’ve seen people say that it’s the Super Mario Bros. 3 of the 3D platformer genre, and I don’t agree: SMB3 is an evolution of the original Super Mario Bros. design, while Galaxy goes back to the 2D roots of the genre and imagines a different way in which the gameplay might have evolved. Like Super Mario 64, it is divided up into a collection of worlds, each with multiple stars in them; unlike its predecessor, however, you go on a linear path to each star, and those linear paths diverge almost immediately after entering the world, sharing only marginally more context than the different levels on one world of SMB3 did.

And gone are the wide open spaces, which are largely incompatible with linear gameplay. The “galaxy” notion isn’t an arbitrary choice of setting in the way that Super Mario Sunshine happened to be set on an island: instead, the astronomical setting lets Nintendo create a level out of a sequence of planetoids. (Or other random surfaces – they’re happy to plunk a water slide with no means of support floating in the middle of nowhere.) On each planetoid, you run around and accomplish a sub-goal (sometimes just reach a location, but frequently you beat a monster or hit a block which triggers an event or any number of other things) which opens up a transportation mechanism to the next planetoid. So you’re still moving in a 3D world, but at the same time the gameplay is always along a clear path, driving you towards the star at the end of the level.

The galaxy setting also lets them turn up the platforming mechanics to insane heights. They felt absolutely unconstrained by logic when designing the planetoids; in particular, if they wanted to have, say, a huge mesa rising out of nowhere that you’d run around the outside of, platforming your way up, they would freely do so, giving a very good approximation of a traditional 2D platforming mechanic in a 3D world. But they also used gravity to great effect, having levels where different regions have gravity tugging you in different directions (up, down, left, right), or having traditional “moving platform” segments where, in addition to jumping to avoid obstacles, you could walk around to the bottom of the platform to avoid them.

I could go on to describe the game in more detail; I think I’ll leave that to a separate blog post. Suffice it to say that Nintendo/Miyamoto have revisited the genre’s roots, rethought some very basic decisions that they made in the initial transition to 3D, and ended up with a very convincing alternate notion of the core concept of a 3D platformer. In fact, it’s rather more convincing a translation of the genre than Super Mario 64 was, and, partly because of that, I think it will ultimately be significantly less influential.

In retrospect, Super Mario 64 was an explanation of how to design a general 3D game, and happened to do that in a fashion that involved a lot of platforming. Whereas Super Mario Galaxy is a platformer through and through; I love that genre, a lot of other people love that genre, but I don’t expect to see a thousand flowers bloom from it.

But one beautiful flower has bloomed, which is ultimately all I want out of a game.

culinary note

December 25th, 2007

For future reference: gummi bears are not an acceptable substitute for gum drops when baking. They have a significantly lower melting point.

metroid prime 3: corruption

December 24th, 2007

Whenever I start a new Nintendo game in an established series, I do so assuming I’m going to be disappointed. Their core series made the leap brilliantly to 3D, opening up gameplay in ways that I’d never imagined. And then, with one idiosyncratic exception, Nintendo has mined that gameplay in subsequent installments, not adding anything to the mix. (Actually, I’m happy to say that there’s now a second exception, which I hope to have time to write more about soon.) The resulting games aren’t bad; they’re building off of extremely solid core gameplay, and they’re not doing anything to actively screw it up. They just don’t have the freshness of the originals, or of the best of other recent games.

Which brings me to Metroid Prime 3: Corruption. Any new ideas here? Are they, perhaps, doing something interesting with the Wii?

The answer: no, not really. It’s a good game, I’m happy to have played it; in fact, I ended up with a better feeling about it than its predecessor. I’m not an FPS connoisseur, but the controls seemed good to me: I could aim where I wanted, I could turn reasonably freely, my hand didn’t get excessively tired from having to stay pointed within a fairly small region of the screen (unless I wanted to turn). (And yes, I do realize that the game, while in the first person and involving shooting, isn’t best described as an FPS: I’m just talking about (part of) the control scheme, not the gameplay structure.)

Hmm, other than the controls, what else is there to say, given its predecessors? You go to different worlds instead of different areas of the same world; okay, but it doesn’t make any real difference. The scanning is starting to get to me, especially at the start of the game. I still like searching through the environments enough to revisit them once, trying to get power-ups, after I’ve leveled up fully. Nice that the different beams stack their powers on top of each other, removing the need to switch between them. Ship commands are kind of silly, but not actively offensive.

As I increasingly prefer in my old age, it’s pleasantly easy. Gone are the days when I have the time or desire to devote dozens of hours to master most games, especially games that make it actively difficult to do so; while I gave up its predecessor in disgust at the final boss battle, I had no such problem with this game. I had to fight some of the bosses two or three times, but I always felt that I was learning something, and just as frequently I beat them the first time on my last energy tank, with a pleasant sense of accomplishment. Hmm, now that I think about it, its predecessor’s bosses weren’t bad except for the last one, and in this game as well they committed the same structural flaw of having your last fight go too long without a save opportunity; it would have been better if they’d fixed that flaw instead of addressing the problem by making the last boss a bit of a pushover, but I’ll take what they ended up with.

As always when I write this sort of review, I feel guilty at the end. Really, it’s a good game; really, if you haven’t played another 3D Metroid game, you should give something in the series a try, and this one is a good choice. And even though I wish I were seeing more new, I’m glad to have invested 15 hours (or however much it was; a good choice of length, incidentally) of my life in playing it. In fact, I really should go give Super Metroid a try, now that it’s been released on the Virtual Console; if only there weren’t so many allegedly great games out this fall…

updating web pages dynamically

December 24th, 2007

I’ve now written my first AJAX code: if you go to a random web page in my book/game database, you should be presented with a list of blog posts that refer to that item. At least assuming that I haven’t accidentally used functionality that your favorite browser doesn’t support, which I hear is easy to do with JavaScript; fortunately, Internet Explorer seems to be the most likely candidate, and my CSS is already broken there, so I should be safe enough. (I’ve only tested under Firefox and Safari 3.)

It was fun and not too hard, all things considered. I didn’t have any prior JavaScript experience, but I figured that googling would quickly turn up instructions for how to do what I wanted. Which didn’t seem to be the case in the first 15 minutes or so of searching, but I remembered getting the idea from an example in the REST book, so I looked that up, googled some of the more specific language constructs I had questions with, and had something working in another hour or so.

Aside from stupid mistakes, the main initial difficulty that I ran into was in the guards against cross-site scripting vulnerabilities: my blog has its own domain, while my database is in bactrian.org. (And I was doing my initial prototyping on my home computer, which is a different physical machine.) The easiest way to get around that seemed to be to set up a proxy (or rather, two of them, one on my home computer and one on bactrian.org); a bit of mod_proxy configuration later and my prototype worked on my home computer.

I copied the prototype over to bactrian.org, and updated paths; it stopped working, again giving me a frustrating error message related to cross-site scripting. I couldn’t figure out what was going on, and spent a quite frustrating hour or so alternating between googling for help and trying to install and run a JavaScript debugger. (For some reason, the Venkman package in Ubuntu didn’t work for me.) Eventually, though, I remembered one more path that I would need to translate when moving the prototype; I changed it, and the prototype worked in the deployment environment.

After which it was a simple matter of programming to make the change and update the tests. Most of the work was in the latter: I have the web page skeleton abstracted fairly well out of the tests, but even so I have to modify a few different places if I change the output in a way that affects all pages. And I ran into one more road bump along the way, where inserting some white space in the HTML turned out to require me to change my JavaScript, but I figured that out pretty quickly.

So here we are. I’m really pleased with the results: there’s a big difference between being invited to click on a link to search for related blog posts (which may not even exist) and having a list of posts appear in front of you. This is the last change that I plan to make to the database for the time being (well, I might do a bit of trivial tweaking); a good change to go out on.

Random JavaScript-related thoughts:

  • Based on my limited experience, JavaScript is pleasant enough. I wasn’t impressed with its collections, but other than that the language behaved in the way I wanted, and it was quite easy to search through XML and pop some data into view.
  • I’m still mostly at sea if something goes wrong with my JavaScript. The console gives some basic help, but there were a couple of instances where I ran into a more serious problem and either wished that I could get more information out of the error or poke around data structures or something. Probably the debugger would have helped, if I’d gotten farther with using it.
  • I don’t have any acceptance tests for this, which makes me sad. It’s little enough JavaScript code that I’m happy to skip unit tests for it, but I really would like to be able to push a button and have reasonable confidence that I haven’t broken anything. (Especially since the functionality depends both on my JavaScript code and on WordPress’s behavior, so I’m going to have to manually test this every time I upgrade WordPress.) Some people on the XP list suggested some tools (Selenium in particular); maybe I’ll give that a try at some point.

first german lesson

December 22nd, 2007

Miranda had her first German lesson today. Which has taken me quite some time to arrange: while I’m reasonably good at getting around to trivialities, I’m not always so great at doing actual important stuff. So we’d been planning to get her foreign language lessons for a couple of years, but I hadn’t gotten around to doing much about it.

I did actually try to arrange something a year ago. At that time, she was more interested in French, so I did some googling and called a few numbers, but I didn’t find anything that seemed quite right. Not that I looked very hard – I should have followed up some of the possibilities more. Then I let it rest for a while, and when I asked her again, she’d decided that she’d rather learn German.

One of the other parents who helps out in the school library is from Germany; she gave me a few references. I didn’t do anything with them for a few months, but I eventually got around to sending some e-mails at the end of November.

We visited one potential class three weeks ago. It was a group lesson, and neither Miranda or I liked it at all, for different reasons: Miranda was quite nervous at the idea of being in a group where the teacher spoke almost entirely in German and the other kids already new something, while I didn’t like it because most of the kids apparently had no interest in paying attention and the teacher wasn’t doing much to fix that. Based on that, it seemed like individual lessons might be a better idea, so I exchanged a few more e-mails with somebody who was offering individual lessons. It took a few weeks for us to actually meet (everybody involved managed to come down with a cold), but Miranda finally had her first lesson yesterday.

Which went quite well. It was an hour-long lesson, the teacher was very friendly and sensitive to Miranda’s nervousness, and they covered a lot of stuff. And Miranda said she really enjoyed it. So early signs are good!

holidays

December 11th, 2007

Sun gives us the week from Christmas to New Year’s as a holiday; this year, those days fall on Tuesdays, and they’re giving us Christmas Eve as well. And we’re not going anywhere over Christmas, nor is anybody visiting us.

This means that I have eleven solid days at home with no demands on my time. Has that happened since I left academia? I’ve certainly taken two-week vacations before, but those involved flying somewhere. And then there was the time I missed three weeks of work because of a flu that turned into pneumonia, but this break from work will (I hope!) be different. (Less vomit, for one.)

The mind boggles at the number of things that I could possibly do. In fact, I’m kind of scared of making a list or plans, because if I start, I will make one that is too long for me to accomplish even in that vast expanse of time, which will lead to disappointment. Some reading, some programming, some blogging, probably a fair amount of video game playing, probably a noticeable amount of going through long saved items in the feed reader. (Even if I keep my blog reading time constant, the amount of incoming posts will probably decrease.) And, of course, hanging out with my delightful daughter. (But she is eight years old, which means that she won’t be demanding my attention as frequently as she would have when she was younger.)

I am looking forward to it. Don’t get me wrong, I quite enjoy my job, but it is nice to be able to dive into a somewhat broader range of my interests at times.

i am dense

December 11th, 2007

Over the months of reading server usage states for the blog, I have noticed that many of the search results that bring people here include the word “bianca”. Hmm, I thought, I didn’t recall writing about “bianca red latex”. Is Bianca some character in a video game that I wrote about but have since forgotten?

It only dawned on me this weekend that the frequency of the word comes from the title of the blog. I am slow at times.

Though that did get me thinking: I should have an Xbox 360 arriving tomorrow, I plan to sign up for Xbox Live, so I will need a gamertag. (I believe that’s what account names for the service are called.) I normally use names that are relatively closely aligned with my real name, but I assume said service is popular enough that carlton, dbcarlton, etc. will be taken. But surely nobody has taken “malvasia bianca” as a gamertag? The idea of using a female-associated name on the service (which is apparently full of sexist, bigoted assholes) has a certain sick interest.

Not that I plan to play multiplayer much, if any.

waiting until the last responsible moment

December 7th, 2007

From 37 Signals’ Getting Real:

People often spend too much time up front trying to solve problems they don’t even have yet. Don’t. Heck, we launched Basecamp without the ability to bill customers! Since the product billed in monthly cycles, we knew we had a 30-day gap to figure it out. We used that time to solve more urgent problems and then, after launch, we tackled billing. It worked out fine (and it forced us into a simple solution without unnecessary bells and whistles).

Not sure I would have thought of that strategy myself. Or had the courage to follow through if I did…

maybe i should become a basketball fan?

December 7th, 2007

It looks like the Warriors are going to be more entertaining than the A’s this year; maybe I should change my TV-watching habits? Starting the season 0-6 was not so great, but getting back to a .500 record a mere 8 games later was quite impressive, and they’re now 11-8 after a very good comeback in tonight’s game.

careful with your layouts

December 7th, 2007

I recently turned on “fast user switching” on the Mac, and just discovered that the login dialog keeps the previous user’s keyboard layout, instead of reverting to the system default. Which is a problem if the previous user uses Dvorak, the new user doesn’t, and the new user is typing in a password so she can’t even see that something’s gone wrong by looking at the characters that appear.

In fact, switching layouts and then switching users doesn’t work, either: it goes back to Dvorak! Weird. Changing to the Finder, then switching layouts, then switching users works.

To be fair, I can see how this sort of usability bug could slip through testing…

upgraded to leopard

December 2nd, 2007

I was in an Apple store the day before Thanksgiving to get a replacement power brick (the cable on mine had started to fray), and decided to pick up a copy of Leopard while I was there: the .1 update was already out, and while I was worried about the keyboard freeze problems, it didn’t seem widespread enough to terrify me. So I installed it over Thanksgiving.

Works fine. I gather there’s nice stuff under the hood, but I don’t particularly care about any of it yet. (Though I may buy a USB hard drive for use with Time Machine – there’s nothing irreplaceable on the machine, but it still feels like the right thing to do.) The extra eye candy is stupid, and in particular I could do without the new low-contrast “important folders” design, but I’ll live. The guest account is a nice idea, and my father used it that same weekend.

The autostarting X server is an interesting idea, and I like it if for no other reason that it means that I only start X if I ssh to another machine (which I only do about half the time), reducing the number of times that I have to tell the computer “yes, I really do want to shut you down, even though an apparently incredibly precious X server is running”. Though I could do without the new Safari warning when I have the temerity to shut down the computer if I have multiple tabs open in my browser.

Nice to see SVG support in Safari. There’s a bit of focus weirdness that interferes with my Reader workflow; I hope some of that gets fixed, but it’s not a big deal.

Not really sure that I’ve gotten $129 worth of value, but not a bad experience.

low energy for japanese

December 1st, 2007

I’m going through a low energy point in learning Japanese right now: I’m on the ninth chapter (out of thirty) in the textbook, I’m going at a rate that makes it pretty clear that I have at least a year to go before I’ll be done with the book (a year and a half looks more likely), and I’m past the stage where I’m reviewing old material (either grammar or vocabulary) but nowhere near getting a real payoff yet. No big crisis or anything – I knew this was going to take a while to pay off (I’m no longer seven years old, paired with an excellent teacher, or about to be living in a country that speaks the language), and this is a natural time to expect a down spot. Still, I might as well look at my workflow and see if there’s anything I can do to help improve my mood.

Actually, I started looking at the workflow a couple of weeks ago. One problem I was having was that it was taking me more and more time to review my vocabulary each night, and yet I still wasn’t sure I really really knew words when I claimed I did! Before I go further, I should explain my vocabulary flow: I have three bins of cards. One is a bin of words I know, one is a bin of words I don’t know. And there’s a third bin, of candidate words that I think I know, but need to prove it.

I go through the “words I don’t know” bin every day. But, on weekends, I also go through the cards in the “candidate words” bin, and every card either gets promoted to “known” or sent back to “unknown”. On the same day, I also go through the “unknown” bin and promote words that I’m comfortable with to the candidate bin.

The theory here is that having words spend a week in the candidate bin will give me time to forget them – it’s one thing to be able to remember a word night after night, and another thing to remember it after not seeing it for a week. I’ve been using variants of this system for decades, and it works pretty well. (I wish I could remember exactly how I used this system back when I was in college – was I using it just like this, or in a different way?)

The problems, though, were that I wasn’t sure spending a week in the candidate bin was long enough for me to forget words, and that also I would spend a noticeable amount of time going through words in the unknown bin that I actually knew pretty well. Fortunately, when you phrase it that way, the solution to at least the latter problem is pretty obvious: promote more frequently. (I was probably conflating the notions of transfer batch and processing batch.) The easiest way to do that is to introduce another bin, the “early candidate” bin; I can move words in there at any time, and then, on weekends, after clearing out the candidate bin, I promote everything from the early candidate bin to the candidate bin without looking at them.

Seems to be working well so far – it’s cut down the time I spend on vocabulary review each night, without any obvious cost. And it actually helps my first problem, too, since words are in one of the candidate bins for a week and a half on average instead of a week. If that’s not good enough, I guess I’ll introduce another candidate bin, to let words sit for (at least) two weeks before final approval instead of one.

That’s helping with the time I’m spending midweek. But, last week, I must have spent three or four hours studying, which is a pretty good-sized chunk of my weekend free time. And today, I really wasn’t excited about doing the exercises in the current chapter over again, as well as writing new vocabulary cards, going through the above candidate rigamarole, etc.

I’m not entirely sure about what to do with that, but at least part of the problem is that I’m trying to do too much at once on the weekends. (Especially on weekends when I’m starting a new chapter.) I think the lesson here is that I should just avoid doing everything in one sitting: I shouldn’t read through a chapter, do the exercises, sort through old vocabulary, and write down new vocabulary on a single day. There’s simply no need for me to do all of that at once: e.g. today I sorted through old vocabulary and wrote down new vocabulary, which was maybe an hour’s worth of work, so why not defer redoing the exercises until tomorrow? And, on weekends when I’m starting a chapter, maybe I can defer some of the work until midweek, or even the next weekend?

The down side of splitting that up is that it means that, on weekends when we have something planned to do, it will be hard to find time on both weekend days. Still, I don’t want to stay in a situation where I’m not looking forward to learning because of the quantity of work; if need be, it’s better to take three or four weeks for a single chapter than to push myself too hard, I’m fairly sure.

On a related note, Miranda and I looked at one German class today, and will probably look at another one next week; hopefully she’ll start lessons this month or next month.

stupid cliffhangers

December 1st, 2007

I was happy when volume 11 of the DVD of Hikaru No Go included 5 episodes instead of 4 – more stuff, and we’ll make it through the qualifying tournament, right? Well, no: more stuff, but they leave us half way through Hikaru’s match versus Ochi. (Instead of stopping before the match, as would have happened if they’d included 4 episodes.) Grr…

creation and benefits of implementation patterns

November 25th, 2007

From Kent Beck’s Implementation Patterns (p. 20):

Once a set of implementation patterns has become habitual, I program faster and with fewer distracting thoughts. When I began writing my first set of implementation patterns (The Smalltalk Best Practice Patterns, Prentice Hall 1996) I thought I was a proficient programmer. To encourage myself to focus on patterns, I refused to type a character of code unless I had first written down the pattern I was following. It was frustrating, like I was coding with my fingers glued together. For the first week every minute of coding was preceded by an hour of writing. The second week I found I had most of the basic patterns in place and most of the time I was following existing patterns. By the third week I was coding much faster than I had before, because I had carefully looked at my own style and I wasn’t nagged by doubts.

more studio ghibli movies

November 23rd, 2007

I was in Japantown in SF today, and picked up copies of Tales of Earthsea and Ocean Waves. (Both in Japanese, with English subtitles available.) The former of which I’m wondering about: no booklet, bad printing, claims to be region 1, and now that I’m poking around, I’m not convinced that there is a legitimate region 1 version available? We’ll see what the video/presentation quality is when I play it…

The latter is region 2; now I have to figure out how to play it as well. I’m planning to use my Mac for that; my options are:

  1. Use an external DVD drive, set to region 2.
  2. Use the internal DVD drive, with software that can read from all regions.
  3. Use the internal DVD drive, set to region 2.
  4. Use the internal DVD drive, with new firmware.

Which is more or less the current order that I’m planning to try them in: I have an external DVD drive around, so I might as well set it to region 2, but if I have to end up setting the internal DVD drive to region 2, no big deal – I don’t plan to start watching DVDs on it in general, and if I change my mind later, the machine will let me change regions back to region 1.

Still looking for a copy of Only Yesterday. I was thinking about doing an order from Amazon Japan soon; I guess I’ll just throw it on that.

mistakes, measurements

November 19th, 2007

Some things that have passed through my earphones recently:

  • In a recent lean blog podcast episode, Norman Bodek talked about how great mistakes are, because making a mistake is the best way to learn something.
  • In an episode of The Cranky Middle Manager that I just listened to, Patrick Lencioni talked about how one of the signs of a bad job is that you can’t tell whether or not you’re doing a good job at it.

Everybody wants to do things right. But if you make a mistake, don’t freak out about it: notice that you made a mistake, figure out how to do things right the next time.

This has two hard parts: you have to notice that you made a mistake, and you have to not freak out about it. Which points at a problem with our educational system (among other aspects of our culture): it’s designed to get you to freak out about making mistakes, without giving you nearly enough tools to help you notice that you’ve done it. As math teachers all know, telling students to check their work isn’t sufficient support; helping students develop the skills to notice when they’ve made a mistake is hard, and I suspect that attacking them when they screw up probably isn’t the best way to go about it.

Of course, while making mistakes is all well and good from a learning perspective, we don’t want to go too far with that. Which is why, as Bodek continues, we should distinguish between mistakes and defects. Making mistakes is all well and good, but we don’t want other people to suffer from them. This is where poka yoke devices come in: they help improve quality by making it as easy as possible for people to notice when something is going wrong.

The big news around here for the last week has been the oil spill in San Francisco Bay. The news coverage has been all about whether or not it was the fault of the pilot or of a machinery malfunction: train wreck management, or at least train wreck news coverage, at its best. I have no idea what really happened there, but I hope the actual investigation is focusing more on learning about what went wrong and preventing this in the future than on figuring out whom to point fingers at.

(I can’t remember where I read this – Gerald Weinberg somewhere, maybe? – but if you really feel a need for a rule on how to point fingers, here’s one: if you aren’t authorized to sign off on a purchase for X dollars, then you’re not ultimately responsible for a mistake that costs your company X dollars. Again, I don’t want to excuse defects, but people higher up in the company should be growing an environment that minimizes the chance of defects happening at an unacceptable frequency.)

random thoughts: november 11, 2007

November 11th, 2007

I would seem to be more confused than normal these days. Which, in the past, has frequently been a good sign; maybe my brain is figuring something out? Or maybe I’m just clueless. Anyways, I present to you a random collection of thoughts, which may or may not be related to each other in some way.

  • At work, I think we’re doing a reasonable job of adding new features. Though I’m sure there’s room for improvement.
  • I also think we’re doing a reasonable job of fixing bugs: acceptance test failures are way down, and we’re even successfully attacking sporadic bugs and old, thorny bugs.
  • Not so sure about code maintainability: there’s even some evidence to suggest that our code maintainability has, in some areas, gotten worse recently.
  • Code maintainability is harder to measure than features and bugs. And there’s less external pressure to get it right, so not surprising that it’s fallen by the wayside. Because of our successes in other areas, and because we’re doing a better job of planning this release than the last one, though, we have some time to attack it.
  • I wish I were better at helping various teams that I’m part of improve our processes.
  • One-on-ones are a good idea, even (especially?) if you don’t know what you’ll get out of them. And the more frequently you have them, the lower the pressure, which is a big help to everybody.
  • The book I’m currently reading at work is Matthew May’s The Elegant Solution. Which is reminding me of some aspects of lean that I hadn’t been focusing on, especially on the “respect for people” side.
  • Having the team all focused on the same, small-granularity tasks is wonderful in terms of making concrete progress in ways where our work reinforces each other and matches business value. Not necessarily so great in terms of letting people, say, focus on what they do best or define their own job.
  • One thing that May talks about is the power of opposing goals (make a car faster and get better mileage and lighter and cheaper by these specific amounts), and the evils of satisficing. Simultaneous satisfying all your goals sounds wonderful if you can do it; I wish I knew how. I suspect that Toyota has some very useful techniques to this end.
  • Alexia Bowers gave a good examples of meetin opposing goals, if I’m remembering the podcast correctly.
  • The book before last that I read was a guide to the ToC thinking tools. (See also It’s Not Luck.) Do these actually work? My brain is strangely resistant to even giving them a try.
  • I think I’m getting better at not talking in meetings, about chiming in and then letting other people argue for a while. Gratifying that, not infrequently, other people make the arguments that I would have made were I talking.
  • I stayed home on Friday, because Miranda was sick, and called into two meetings. Both of which were very frustrating. I think part of it was that I missed some of the cues of the flow of the meeting, and part of it was that I wasn’t very good at explaining, or even seeing, how we were talking past each other. (I did think of an evaporating cloud to explain one of the conflicts after the fact, for better or for worse.)
  • I wish I spent more time talking to people in other parts of Sun.
  • What do I want to do when I grow up?
  • After taking a break for a few years, I’ve gone to one conference each of the last two years, and gotten a lot out of each of them. I should continue this going forward. (And possibly even ramp it up a bit, since if there are further Agile Open Californias, I’m not going to stop going to them.) Where should I go next year?
  • What communities do I want to be part of? What does it mean to be part of those communities?
  • What teams am I currently part of? Do those teams behave how I think a team should behave? If not, how should I behave?

I could probably ramble on in this vein for quite some time; time to go to bed. Happy Armistice Day, all.

lessig’s ted talk

November 11th, 2007

Watching Lawrence Lessig’s TED talk was an excellent use of 19 minutes of my time; if you don’t know the examples (both historical and present day) that have motivated his recent work, you’re missing something.

go buy zack and wiki

November 11th, 2007

To all you Wii owners, I add my voice to the chorus of recommendations for Zack & Wiki. I’m not sure whether to call it a point-and-click adventure game or a puzzle game: it’s a sequence of set pieces all revolving around manipulating your environment to get to where you can open a treasure chest. Say you, for example, see a chest behind a door surrounded by bad guys. If you just go down there, you’ll die, so you go around the side passages until, say, you find an item that you can use to distract them. But the door is locked; you need a key. Oh, there’s a key hanging from a peg that you can’t reach; can you find an item that will let you reach up there?

The pointing and clicking to move and examine is, of course, done with the wiimote. But using items is also done with the wiimote, and is one of the better uses of its motion sensing: you hold the remote like would hold the actual item, and turn it or shake it or flip it or whatever to cause the item to do what you want.

We’re all playing; the puzzles are usually too hard for Miranda to figure out completely on her own, but she likes watching us and giving us suggestions, and then replaying the levels on her own later. I suspect that the levels will soon be hard enough that Liesl and I won’t be able to solve them independently, and will need to both work together to solve some of the tougher ones.

Something new, and the game isn’t getting nearly the publicity or shelf space of some other titles, so I wanted to help spread the word. It’s even a bit cheaper than your typical game.

stylesheet tweaks

November 8th, 2007

Okay, my stylesheet is mostly back: I’ve turned off comment formatting idiocy, restored my list bullets, turned off double justification, bumped the text back up to a non-microscopic size. I left the widths as-is, though, this time: I wish it were a bit wider, but I can deal with it, and it doesn’t look so bad on this computer. (I’ll see what it looks like on the mac.) Hmm, looks like I reordered the sidebar last time; I certainly don’t need 38 months of archive links right at the top of the sidebar, do I? (It would seem that I’ve been at this for a while; many thanks to all of you for putting up with me!) I’ll go move that, too.

One of these days, when I have some free time, I’ll go and look for a new theme. Though the last time or two when I did that, I just ended up back where I started. Which is okay, nothing wrong with the default one.