the MIT-Stanford style of design

I discovered an article by Richard Gabriel today that describes a design trend that he calls “Worse is Better.” He contrasts this design trend with his own design philosophy: The MIT/Stanford style of design (a.k.a. “the right thing”).


The design must be simple, both in implementation and interface. It is more important for the interface to be simple than the implementation.


The design must be correct in all observable aspects. Incorrectness is simply not allowed.


The design must not be inconsistent. A design is allowed to be slightly less simple and less complete to avoid inconsistency. Consistency is as important as correctness.


The design must cover as many important situations as is practical. All reasonably expected cases must be covered. Simplicity is not allowed to overly reduce completeness.

Home | POA


I found a few CDs in my closet that I hadn't re-ripped yet (in my obsessive-compulsive desire to re-rip everything as 256kbps AAC). In the short stack was a burn of the P.O.A. album "Home" that Mark Eadie made for me a while back. While the disc was ripping, I decided to see if the Internet, in its near-infinite breadth, had album artwork. The first hit gave me not only album artwork, but a descriptive enough comment to get me track titles for the whole album.

Oh, and there was a comment on the page from my dad who, incidentally, is one of the performing artists on the album, and is pictured on the album cover.

Track list:

  • Not So Cheap Thrills

  • Lantern

  • Soul Brother

  • Keep on Trustin'

  • Jesus May Come Today

  • Sleeping

  • Son Rise

  • Home

  • Rock of Ages

Pathfinder reference document

Need to look up a rule but don’t have access to your sourcebooks? It turns out that Paizo publishes a reference document that contains only the “Open Game Content” as specified in the Open Game License. It’s available at

It’d be cool if, eventually, I’m able to translate that to markdown for better internal reference and whatnot, but you can refer to the reference document for any rules questions. I certainly will.

merging two disjoint git repositories

I have this persistent desire to play Pathfinder with some friends. A while back I set up a separate ikiwiki repository for it, but decided today that I wanted to handle it as just a section of this main wiki.

I considered just copying what little content I already had from one wiki to the other; but a little reflection led me to try to just merge the two repositories.

First, I just moved everything in the RPG wiki to the /rpg directory in that repository. Then I added the rpg repository as a remote for the primary repository. git fetch rpg && git merge rpg/master. Done.

Git is awesome.

Playing pathfinder online

I want to get a play-by-post Pathfinder game going. Maybe doing it online will make it easier to play consistently. Maybe I’ll be able to get Jordan to play too.

I’ve got ideas for most of the issues that will come up in this forum. I already have a proof of concept for the actual play posts that should work pretty well, and have worked up a quick stylesheet to make the default comments interface less annoying for this use case. I figure that we can eventually archive the stream (manually at first, but automatically eventually) and possibly even keep a (collaboratively-edited, in the wiki spirit) prosaic writeup of what happened in the campaign.

(Note to self: I need to check what happens to comment numbers if previous comments are removed. If it fills in the missing numbers, that could make it difficult to archive the stream to a single point. I can think of a couple workarounds, but it’d be better if the comment numbers stayed unique within a stream.)

I need a die roller that converts die text like [[!dieroll 1d6+1]] to <span class="dieroll" title="1d6+1">5</span>, rendering like 5. That way our die rolls will be consistent and fair.

I might also want the roller to sign the roll with an encrypted key. It will need to include the date of the roll, too. Maybe “1d6+1 @ 1 January 2010 12:00 => 5”.

Or maybe it can just log the die rolls server-side.

Really, though, nothing would be standing in the way, now that the post interface is ready, of us starting, baring the creation of characters and campaign notes.

Speaking of campaign notes: I need a way to protect sections of the wiki from player eyes, probably in a /users/$user/private area or similar.


I just made my first whole presentation with the LaTeX BEAMER class. It wasn’t terribly painful, but wasn’t all that intuitive, either.

At least now I’m in control of the data.

civilfritz wiki renamed, moved

I’ve done a bit of cleanup with urls and names today. In particular, the civilfritz wiki is no more! Rather, it’s no longer known specifically as the “civilfritz wiki”. It’s just “civilfritz”, and I happen to be using ikiwiki as the CMS.

What does this mean for you?

First, becomes just This should be handled by your browser automagically as a 301 redirect, but update anything else that you wish.

Second, you should see the ikiwiki name of the site change from the generic “wiki” to the more specific “civilfritz.”

Thanks to Josh Ball for (unknowingly) pointing this need out to me.

zipfile | Python Batteries

Did you know that many modules in the Python standard library have __main__ sections? They’re included mainly as examples for using the standard library itself, but there’s some useful functionality in there.

You can run these examples on the command-line with python -m $module.

Today, the zipfile module:

Usage: -l        # Show listing of a zipfile -t        # Test if a zipfile is valid -e target # Extract zipfile into target dir -c src ... # Create zipfile from sources

Using nothing but the standard library, you can list, test, extract, and create “standard” zipfiles, just like this:

numfar:~ janderson$ python -m zipfile -l ZZT.ZIP
File Name                                             Modified             Size
TOWN.HI                                        1990-01-24 17:10:16         1590
TOWN.ZZT                                       1991-11-02 18:50:24        73959
CAVES.ZZT                                      1991-11-02 18:56:04        80376
DUNGEONS.ZZT                                   1991-11-02 18:56:58        71378
CITY.ZZT                                       1991-11-02 18:58:24        63943
DEMO.ZZT                                       1990-01-26 01:35:58        26465
TOUR.ZZT                                       1991-11-02 18:48:52        33941
ZZT.DAT                                        1992-01-10 16:59:24        35823
ZZT.CFG                                        1992-01-10 15:29:30           18
HELPME.EXE                                     1994-01-30 20:21:42         6288
ORDER.DOC                                      1997-09-26 15:56:28         5174
HELPME.DOC                                     1994-02-18 10:46:16         7884
PRINTME.BAT                                    1991-10-19 21:59:28          274
ZZT.EXE                                        1992-05-21 08:38:24        47764
LICENSE.DOC                                    1997-10-09 16:14:50        26112
license.txt                                    1997-10-09 16:10:30        14428
ORDER_UK.DOC                                   1997-09-26 16:43:46         4967

beat Myst V

Andi and I beat Myst V last night. It certainly wasn’t bad; but like old-man Atrus at the end, it hobbled to the series conclusion.

In fact, the ending was the worst part: so terribly over-dramatic; and, as always, Yeesha just wouldn’t shut up.

Some of the puzzles were pretty good, but because most of them centered on the use of the slates, they tended to feel samey. The abysmal interface and level of environment interactivity didn’t help matters either; virtually the entire world was static, with only puzzle elements offering any manipulatability.

Still, it was good to have some Myst to play. I might eventually even get around to the expansion ages for Uru… but that would mean playing through all of Uru again.

Maybe I’ll do Grim Fandango first.