28 March 2009

The generic unified RPG unsystem

Once Dungeons & Dragons was published and was really taking off, it became clear that the game—the booklets themselves—wasn’t very accessible. I’m sure whilst writing them, Gary never dreamed the game would end up on the shelves of a mall bookstore. He was writing to fellow wargamers. Along came Dr. John Eric Holmes with a proposal to do remedy that. Thus, the first Dungeons & Dragons Basic Set.

Dr. Holmes brought some of his own ideas about how the game should work. Later, as the successor to his Basic Set was coming out, he wrote an article for Dragon magazine in which he discussed some of the changes to the game he wanted to make that Gary veto’d. Also, TSR decided that first Basic Set should include bits of and advertising for the forthcoming Advanced D&D game.

I never had the Holmes Basic Set—though I bought the PDF and have it around somewhere—so I don’t know it very well. Jeff posted the following quote from it (emphasis mine):

A final word to the Dungeon Master from the authors. These rules are intended as guidelines. No two Dungeon Masters run their dungeons quite the same way, as anyone who has learned the game with one group and then transferred to another can easily attest. You are sure to encounter situations not covered by these rules. Improvise. Agree on a probability that an event will occur and convert it into a die roll — roll the number and see what happens! The game is intended to be fun and the rules modified if the players desire. Do not hesitate to invent, create and experiment with new ideas. Imagination is the key to a good game. Enjoy!

That pretty much lays out the “generic unified unsystem” that I try to use with any system. I think it is a subtext in many early role-playing games. (And now I know it’s a part of the text of at least one as well.) I particularly like that he used the word “agree”.

Charles Totten

Here is a Rob MacDougall article about Charles Totten: “Dungeon Master Zero

I like the following “genealogy”, though it likely has problems beyond just being overly simplistic.

J. von Verdy du Vernois
Free Kriegsspiel

Charles Totten

Dave Wesely

Dave Arneson

E. Gary Gygax

26 March 2009

Scrabble and overvalued points

There’s an interesting article on the Wall Street Journal site by Carl Bialik: Price Drop: Stocks, Homes, Now Triple-Word Scores

"Za," "qi" and "zzz" were added recently to the game's official word list for its original English-language edition. Because Z's and Q's each have the game's highest point value of 10, those monosyllabic words can rack up big scores for relatively little effort. So now that those high-scoring letters are more versatile, some Scrabble aficionados would like to see the rules changed -- which would be the only change since Alfred Butts popularized the game in 1948.

Which reminds me of the link between skills and the skill points in role-playing games. (Where you can replace “skills” and “skill points” with various abilities and the mechanics for acquiring them.) When you add more skills, you often have to consider whether to change the number of skill points characters get.

These imbalances could theoretically be addressed by narrowing the football goalposts, bringing the three-point line closer to the basket and raising some Monopoly prices. But removing these strategic advantages, and the ability for smarter players to exploit them, can make a game boring, some say.

See, roleplayers aren’t the only gamers to worry about balance or claim a rule is broken. (And don’t think it is something new among RPGers. I remember plenty of balance discussions in the 1980s.)

Scheme in the browser (again)

I found myself reading “Popularity” over at Brendan’s Roadmap Updates...again.

This time, a comment by Mike Ivanov stood out to me:

It took almost a decade for ‘average developer’ to grok JavaScript. Now it is understood, at least. How much time would pass before Scheme achieved the same level of acceptance? I bet forever.

Which again has me questioning that. I can’t believe that anyone who has really “grokked” Javascript couldn’t have grokked Scheme. After all, Javascript essentially is Scheme with C syntax. Grokking the language behind that syntax is much more difficult than grokking the syntax.

I think that Javascript was in a unique position. I suspect almost no-one learned Javascript for its own sake. People learned Javascript because it was (essentially) the only game in town for the role it played. (Indeed, it is still too difficult, IMHO, to use Javascript outside that role.)

That’s certainly why I learned it. At the time, I would’ve much rather used Perl, but my customers had Javascript built into their browsers. I wasn’t going to ask them to install client-side Perl.

Likewise, I suspect that Javascript is one of those languages that was the first programming language for a lot of people. Those are people who aren’t coming in with syntax-bias.

Which may be pointless speculation, but that’s what thinking-out-loud is for. I still give thanks to Brendan that I’m required to regularly, at work, program in Scheme/Self even if it is with C syntax.

Guitar Hero stifling potential musicians?

Michael over at Fretbase wrote:

I’ve always argued that Guitar Hero is a tragic diversion for potential musicians who will never learn how to play an actual guitar. Worse, anyone playing Guitar Hero is not even responsible for making the music; they can only “hit” or “miss” the notes already laid out for them. The only way to remove a person any further from the process would be to handcuff them to a chair and blast an iPod Shuffle from across the room.

I think Michael is wrong on this. I haven’t seen any of the people I play Guitar Hero and Rock Band with thinking of it as playing music at all. They think of it as a game. For—I think—exactly the reasons Michael criticizes it. For the most part, it doesn’t feel like playing music at all. It feels like playing a game. I see nothing to convince me that any of the non-musicians among them would take up an instrument in the absence of these games, or that the musicians are making music less than they would. If these games are taking time away from something else, it is other games.

A friend once said to me, “I know a lot of people who own guitars, but you’re the only one who knows how to play it.” I find it hard to believe there are many potential guitarists who aren’t taking up the instrument because of Guitar Hero.

Moreover, another Fretbase contributor, Brian, posted an article about how a survey shows that—because of these games—players are more likely to start playing guitar or play more often if they already do.

24 March 2009

Third hand

My Digitech RP350 (“Modeling Guitar Processor”) has the ability to control almost any parameter with its expression pedal. Some of the things I’ve had fun playing with have been...

  • Reverb depth
  • Tremolo speed
  • Amp gain
  • The mix between the original signal and the harmony generated by the intelligent pitch shifter.

When I do this, though, I always wonder how might do it with individual pedals. Well, I chanced across a device that claims to do exactly that: the Third Hand by Tone in Progress. An expression pedal that appears to be able to mechanically turn a knob on an effects pedal.

Good metagaming; bad metagaming

In role-playing game circles, metagaming often has a negative connotation. (Wikipedia also has an article on metagaming in role-playing games.)

In general, this is not the case, though. A metagame (“beyond the game”) adds an extra layer—a higher level—that can often (though not always) make the game more interesting. e.g. Trading in Monopoly could be considered a metagame.

I want to ramble about two scenarios today.

Scenario 1: A magic-user is about to drop a fireball on a bunch of enemies. The character doesn’t know that the party thief, who is out-of-sight, will get caught in the blast. The player, however, does know it. The player also knows that there’s a good chance the fireball will kill (or knock out) the thief.

One might argue that the player should have the magic-user choose a different action because: (1) A player shouldn’t knowingly have their character do something that substantially risks the fun of another player. If the thief character were to be killed by the fireball, the thief’s player is going to be out-of-the-game for an indefinite period of time. (2) There are surely other actions the magic-user could take that wouldn’t be out-of-place or out-of-character.

I tend to argue, however, that a large part of the fun of role-playing games for me is having things play out in a “natural” manner. Trying to prevent yourselves from getting caught in a situation like this and suffering the consequences when you do find yourselves in this kind of situation is important

Scenario 2: Black Dougal fails a saving throw versus poison and dies. (This also applies to characters who are otherwise disabled or simply not present at the current scene for some reason.)

What I’ve typically seen in this situation is that Black Dougal’s player is relegated to quietly watching the game since they no longer have a live and present character to speak through.

These days, however, I tend to think that there is no reason that players should not be able to advise other players.

(This post partially inspired by Grimm Studios podcast episode 19.)

Why MIT 6.001 switched from Scheme to Python

From wingolog: international lisp conference—day two:

The “debate” had an interlude, in which Costanza asked Sussman why MIT had switched away from Scheme for their introductory programming course, 6.001. This was a gem. He said that the reason that happened was because engineering in 1980 was not what it was in the mid-90s or in 2000. In 1980, good programmers spent a lot of time thinking, and then produced spare code that they thought should work. Code ran close to the metal, even Scheme—it was understandable all the way down. Like a resistor, where you could read the bands and know the power rating and the tolerance and the resistance and V=IR and that’s all there was to know. 6.001 had been conceived to teach engineers how to take small parts that they understood entirely and use simple techniques to compose them into larger things that do what you want.

But programming now isn’t so much like that, said Sussman. Nowadays you muck around with incomprehensible or nonexistent man pages for software you don’t know who wrote. You have to do basic science on your libraries to see how they work, trying out different inputs and seeing how the code reacts. This is a fundamentally different job, and it needed a different course.

So the good thing about the new 6.001 was that it was robot-centered—you had to program a little robot to move around. And robots are not like resistors, behaving according to ideal functions. Wheels slip, the environment changes, etc—you have to build in robustness to the system, in a different way than the one SICP discusses.

And why Python, then? Well, said Sussman, it probably just had a library already implemented for the robotics interface, that was all.

SICP is the textbook, Structure and Interpretation of Computer Programs.

14 March 2009


Back when the Macintosh was first being designed, user testing suggested that many people had a hard time remembering what more than one button on a mouse was used for. So, they put one button on the Mac mouse.

They really seemed to feel the need for more functionality, though, so they added double-clicks as a short-cut to some extended actions. Of course, double-clicks were hard for some people.

So the cardinal rules of double-clicks were:

  • Double-clicks should never be the only way to do something; they should simply be short-cuts
  • A double-click action should be a natural extension of the single-click action

Of course, one of the big problems was that users ended up learning to always double-click. I’ve run into people who were genuinely surprised to learn that a single-click did anything. Even more people didn’t realize that there were other ways to accomplish double-click actions.

It’ll be interesting to see how Apple’s choice to have some functions on the new iPod shuffle only accessible through double- and triple-clicks and holding works out.


One of the great things about the Dragonsfoot forums is that some of the members made an effort to track down and invite a lot of old TSR employees—besides those who were already there—to come participate.

The more I know about people, the harder it is for me to call their creations “arbitrary”.

10 March 2009


I love the story of 65amps.

Sheryl Crow’s guitarist, Peter Stroud, basically called up his friend, Dan Boul, and said: “Sheryl’s tired of screaming over my Marshalls.” So they started a company to build a lower volume amp with good tone (18 watts) that was flexible enough for Sheryl’s repertoire and rugged enough for touring.

They have a “master voltage” circuit for lowering the volume even further without compromising the tone. (They say it works better than a power attenuator.)

Ironically, they keep getting demands for higher powered amps. They now have an 80 watt, and I believe they said they have a 100 watt in the works.

I just wish I could afford one of their amps. The new Lil’ Elvis looks nice, but it’s still over $2,000.

06 March 2009

Why HTML validation matters

Anyway, we validated as the much saner HTML 4.01 strict, and even then I'm not sure it was worth the time we spent. So many of these validation rules feel arbitrary and meaningless. And, what's worse, some of them are actively harmful. For example, this is not allowed in HTML strict:

<a href="http://www.example.com/" target="_blank">foo</a>

That’s right, target, a perfectly harmless attribute for links that you want to open in a different browser tab/window, is somehow verboten in HTML 4.01 strict.

—Jeff Atwood, “HTML Validation: Does It Matter?


  1. The target attribute is harmful. The user should decide where a link opens.
  2. If you validate against the strict doctype, expect it to be strict. If you want to do rude things like use the target attribute, then HTML 4.01 strict is not for you.

But enough haranguing, on to the question at hand—assuming you’ve picked an appropriate doctype to validate against.

But the question remains: does HTML Validation really matter?

op. cit.

I validate my HTML to ensure that any errors in it’s use aren’t my fault.

Note, however, that this isn’t so that I can say, “It’s not my fault!” when something goes wrong. I may still tweak things to work around quirks in a particular browser or other program that may read that HTML. Rather it is to minimize the miscommunication.

People understand instinctively that the best way for computer programs to communicate with each other is for each of the them to be strict in what they emit, and liberal in what they accept. The odd thing is that people themselves are not willing to be strict in how they speak, and liberal in how they listen.

—Larry Wall, “2nd State of the Onion

04 March 2009

My first quine

I’ve started trying some of the études at the Programming Praxis blog and came to A Self-Reproducing Program. I realized that I’d never actually attempted a quine before.

I decided to open DrScheme and just dive right into typing and see where it’d lead me. After a couple of false starts, I found myself with something like this:

(define text '("#!r6rs\n(import (rnrs))\n(define text '(" ??? ")\n(for-each display text)"))
(for-each display text)

It then wasn’t far from there to...

(import (rnrs))
(define text '("#!r6rs\n(import (rnrs))\n(define text '" #f
")\n(for-each(lambda(item)(if item(display item)(write text)))text)\n"))
(for-each(lambda(item)(if item(display item)(write text)))text)

Not particularly clever, but it works. I think my C background is showing.

The “answer” given at Programming Praxis is really an expression that evaluates to itself rather than a program that prints itself, which I suppose is more “Schemish”.

I then set about trying to modify it to be nicely formatted and to reproduce that formatting. That actually proved rather tricky without resorting to a pretty printing library.

Check The Quine Page for lots of quines.

01 March 2009

Guitar name poll 2: Nominations

I don’t remember if I ever posted the results, but “Trixie” was the clear winner as a name for my red Telecaster. Thanks to everyone who voted.

Now, it is time to finally give a name to my older, black electric guitar.

She’s a Westone Spectrum ST. She’s been upgraded with DiMarzio pick-ups—an X2N in the bridge position and a Super 2 in the neck position.

So go make a nomination!

This is the guitar you hear on all three of the “finished” Söundcheck songs. (MySpace, Facebook)

I actually had the bridge pick-up before the guitar. I guess I must’ve gotten the guitar c. 1986. (The serial number indicates it was made in 1985.) I’ve been really happy with it. If I were ever able to have a custom guitar made, I’d probably have the neck of this one copied. For some reason I’d never bothered to upgrade the neck pick-up, but that has now been remedied.

Westone isn’t around anymore, which is a shame, because they built fine instruments for affordable prices.

an imaginary family tree


This is either brilliant or silly. Probably both.


I tend to think that study—considering context, thinking about, talking about—is more important than rote memorization.

In fact, I should probably take Disciple I again.

iPhone app: Stanza

I was looking at the growing pile of books on my nightstand. So, I pulled up Stanza.

Stanza is an e-book reader for the iPhone. I’d read The Metamorphosis and a few HP Lovecraft stories with it. I’d downloaded a few other free books I intend to read.

One of the great things about Stanza is that you can browser free e-book repositories and download books right from the app itself. You can also browse and purchase from some e-book stores.

It turns out that most of those books on my nightstand were available from the Fictionwise store for Stanza. I’ve now read Fool Moon (the second book of the Dresden Files series). I’m now reading Wicked.

So, yeah, they are “protected” by “DRM”. Still, having the books on my phone means they’re always there when I get a chance to do some reading rather than gathering dust on my nightstand.

Mac menu bar + multiple monitors

Yes, Fitts’s Law justifies the Mac menu bar being anchored to the top of the screen.

But then I find myself doing this dance:

  1. Move mouse onto secondary monitor to active a window.
  2. Move the mouse back to the primary monitor to get to the File menu. (Of course, my second monitor is on the right and the File menu is on the left.)
  3. Move the mouse back to the second monitor to choose options in the print dialog box that slid out of the active window’s title bar.