Sunday, May 27, 2007

New Camera

So my old camera, an Olympus Ultra Zoom is busted. There seems to be some sort of short in the power supply, but regardless of how simple the issue may be to fix, it's a $175 flat rate to repair, plus shipping. It's a nice camera, and it's decently new (though not new enough to be under warranty), but at that price, it's simply not worth fixing.

I wanted to be able to take pictures last weekend when we ran the game, since I was going to be at the start site and the end party, and Linnsey was going to be staffing a number of clue sites.
I've also been meaning to learn how to take much nicer pictures. So I caved and bought a Canon Digital Rebel XT, which was recommended to me by several friends, as well as half the goddamn internet. It's a digital SLR, 8 megapixels, 7 point auto focus, a few thingymajigs, some whosamawhatsits, and I think, if I can navigate the menus right, that it will make me some toast as well.

I have no clue how to work this thing! But you can see my pictures anyway! Here's my picasa gallery!

Terrarium Fun

Many of you may remember a goal I set in a previous post: "after May 19th, I plan to ... tak[e] on any side projects for a minimum of 2 months." Well, I am happy to report that I have kicked off the voracious pet project undertaking by building a terrarium out of my leaky 20 gallon tank. I have posted some pictures in a picasa album. For those of you familiar with the layout of our apartment, the terrarium has replaced our TV, which we no longer need now that I have a nice projector.

For anyone interested, some good instructions for building terrariums can be found here. The plants in my terrarium are:

  • Maidenhair Fern (back left)
  • Big leafy plant whose name escapes me and whose plant tag thingy I can't seem to find (back middle)
  • Pink Polka Dot Plant (back right)
  • African Violet (front left)
  • Button Fern (front middle)
  • Blue Star Creeper (ground cover)
I selected the plants both for looks and because they should all do reasonably well in slightly moist, medium light conditions. I also put in a frog decoration and a couple pieces of deadwood I picked up at the local fish store. Since it used to be my fish tank, I have a hood that fits and a nice bulb that mimics solar light. Add water, close the top, put the light on a timer, and it should go for months without maintenance!

On a somewhat related note, I've already started porting my comics script to python, I'm researching names for when I open source my puzzle solving scripts (Pyzzle is already taken), and Linnsey and I are discussing where and when we want to have our wedding. Yay for staying busy!

Thursday, May 24, 2007

Server Postmortem (plus graphs)

Upon solving a clue, teams would call in the answer to an automated server, which would tell them where to go next, assuming they were correct. During the course of the game, the server received almost 2000 calls from 66 different phones. Here are some graphs of interesting data:


The phone load graph is particularly interesting, as you can see when the phone server blew up on the first clue, as well as when teams started to hit the Virus clue or when they left a bonus site.

Note: I am a complete gnuplot n00b, and so if you have suggestions as to how to make the graphs look better or suggestions on other data that might be interesting to graph, drop me an email at offpath@gmail.com.

The System

Well in advance of the game, we purchased VoIP service from VoicePulse Connect. They have a deal that's really nice for planning a game, in that the first 4 channels are only $11/month. This allowed us to work on and test the server for a period of 4-5 months for very little money at all. Then, a week in advance of the game, we upgraded to 8 channels, just in case we got a lot of teams on the Virus clue at the same time.

On our end, I ran a Linux box with Ubuntu, Asterisk, Apache and MySQL. When someone called in, a python script triggered by asterisk looked up their phone number in the mysql database, associating it with their team, as well as the clues they were currently on. All guesses and advancements were logged through the database.

Upon solving a clue, the server would lookup the next site on the route that was neither closed nor marked compromised and move the team there. At two points in our game, we had branches where teams followed different routes to reduce the load on certain sites. The server was able to dynamically route teams based upon how many teams it had sent down which route.

Since we were able to log everything in a central place, unlike a palm based system, GC could tell where all teams were headed at any given time. We were also able to change the route at a moment's notice if necessary. This allowed us to have backup sites in case of rain and to mark sites as compromised if something went wrong. Corey (of The Burninators) had told me how useful this would be, and I don't think it was until we were actually running the game that I realized it.

On the GC end of things, we had a set of mod python psp scripts running on my apache server. This let us lookup the location of teams and add notes every time they called. We also had a giant leaderboard, which for a giant table of very slowly changing numbers, was amazingly interesting to watch.

What Worked
  • As I said before, the server answered almost 2000 calls. That is 2000 calls that GC did not have to manually answer and gave GC a surprising amount of down time.
  • Both Twisters Gym and the Bank Heist were restricted in terms of the number of people we could have on the clue at a given time. In this case, we split teams across 3 and 2 sites respectively. Handling this sort of routing would have been very difficult manually, but it happened seamlessly through the server.
  • At several points, we had to have backup sites in case it rained or in case we couldn't use a building at Stanford. We actually had to use the backup site, and we had to change site closing times in a few other cases. Each of these actions was pretty easy to do over a web interface.
  • As with most recent games, having an automated system allowed us to use arbitrary words as answers, making it easier to use various encodings, and making clue writing mostly independent of route.
  • Because the leaderboard was a website, it was accessible over the internet and all GC members out in the field with an internet enabled cellphone could see where all of the teams were and how long they'd been there.
What Didn't
  • The server on the first clue. The last 5 teams to leave Plaza Del Sol had to be manually routed because a hoard of rabid squirrels attacked my server. I've poured over the logs generated by asterisk, my python scripts, and mysql, and for the life of me, I can't figure out what happened. Somehow, a runaway mysql process began eating 100% CPU, and for lack of a quicker fix, I had to restart the whole server. After that, it worked fine--go figure. Then I had the fun task of cleaning the bad data that got entered and manually fixing things to route the teams on the server where we had told them to go over the phone.
  • The server basically tied me to my apartment. We had generally planned to have me around GC for most of the game, but after that first snafu, it became clear that I really couldn't leave. Despite being a team of too many coders, I was the only one familiar enough with my code to fix it if it broke. If we had it to do over again, I'd have more actively tried to distribute the server knowledge.
  • There's nothing like 20 teams running through the game to test the code. Obviously, I should have written more tests, but I write code all day, and as much as I love coding, I don't always get home itching to do more of it. Other than the big crash, Here Be Dragons was incorrectly skipped over charades. Fortunately, the leaderboard acts as a manual double-check. I actually got calls from 2 GC members out in the field before I was able to fix this. All I have to say for myself is that 3-value logic is a scourge that should be cleansed from the land.
Wrapup

We really liked the server. It was a lot of work before hand to put it together, but it really paid off on the day of by allowing us to do creative re-routing on the spot and by taking some phone load off of GC. It had it's bugs, but none of them were fatal. I'd highly recommend a centralized server system to other new teams who have a coder or two on their team. It takes a good amount of uncertainty and guess-work out of the route.

No More Secrets Postmortem

Links to postmortem writeups:

  1. Server
UPDATE: Jan has also written a postmortem of our game on her blog. It can be found here.

As you may know, coed astronomy ran a Sneakers themed game this past weekend, titled No More Secrets. Some things went right, some things went wrong, and I'm going to slowly write up a postmortem for posterity and so that I can finally tell friends what I've been doing with the past year of my life instead of hanging out with them.

This is the first major game that coed astronomy has planned (as a team we have done 2 smaller games, and as individuals we have planned or run various other things in the past), and so before I begin to forget the details, I'd like to write out my thoughts on the process we went through. Hopefully what I write here will be useful to any other new teams who are considering running a game. I make no warranties that what worked for us will work for you or even that my opinions are shared by the rest of coed astronomy.

Over the next several posts, I'll take several different aspects of our game and try to go into detail about them and where they worked and where they failed. Since I have a somewhat personal interest in it, and since I can't presume to know how other people felt, I'll try not to comment on how I thought the game went for the players and instead stick to how it went for GC. So without further ado...

Sunday, May 20, 2007

Done!

The game that I spent the last year of my life helping to put together is finally over. I think it went well, but now I have to sleep for the next million or so years. More info later.

Saturday, May 19, 2007

Lloyd Alexader: Gone, but not Forgotten

This past week, another icon of my childhood passed away. Lloyd Alexander holds a singularly special place in my childhood memories, tucked in between C.S. Lewis, whom I read before I could quite understand what was going on, and J.R.R. Tolkien, whom I read long after the fantasy genre had lost its magic over me. By the fourth grade, I had already read the entire Chronicles of Prydain series more times than I've ever read any other book in my life.

Though they lack the intricacies and popularity of Harry Potter, through their simplicity and timelessness, they allow the reader to grow with the characters, rather than forcing the reader to grow up just to read all 800-some-odd pages of the next book. Despite winning a Newbery Medal, among other awards, The Chronicles of Prydain really is the best children's series you've probably never heard of.

Lloyd, your books have inspired the hearts and minds of young assistant pig keepers everywhere to do great things. You will be missed.

Tuesday, May 15, 2007

The Champagne of Puzzles

Sorry for the lack of new posts. I'm super busy working on game stuff, as you might imagine. Just 4 more days!!

Anyway, for those of you who haven't seen it, it's The Champagne of Puzzles, brought to you by The Champagne of Teams.

Friday, May 4, 2007

Obama on Open Presidential Debates

Regardless of your political views, I don't think it's possible to make a rational argument that this won't improve the public discourse in this country. That political parties and TV networks could potentially use copyright claims to stifle political commentary is pretty ridiculous. Who knows, being legally able to post this stuff to YouTube might even get my generation to actually vote for a change!

Obama didn't exactly come up with this idea himself, but I think it's a bold step to be the first major presidential candidate to come out in support of it. It's nice to see a politician understand copyright and technology for a change.

More info on Prof. Lessig's Blog.

Tuesday, May 1, 2007

Leakiness

Our 20 gallon fish tank sprung a leak! =( So that's what I got to spend my Sunday afternoon dealing with. I had to drain the whole tank and catch all the fish so that I could swap the whole thing out for a new one.

It wasn't all bad though--we got rid of a bunch of plants that had gotten overgrown, as well as the dingy looking black gravel. I rearranged the tank to show off the piece of driftwood I got a while back for our pleco. The java ferns have finally gotten well attached to the driftwood, so it looks kinda neat. The gravel is also replaced with much more natural looking pebbles. Even kitty thinks the tank is improved now that the fish have fewer places to hide. I'll post pics as soon as I get my camera fixed.

Any ideas for what to do with the old tank? I'm such a pack-rat that I feel bad just throwing it away. We already have 3 fish tanks (plus a quarantine tank), so even if we could fix it, I'm putting my foot down against filling it with water. Current ideas involve a terrarium, maybe with cacti or lizards or something. Now that we have a projector, we can get rid of our tv and put it there.