Mystery Hunt lessons
[info]cananian
It's almost February, but I still haven't posted my wrapup of the 2009 MIT Mystery Hunt. Before I get to the puzzles, let me just say that the mystery hunt has made job interviews very awkward for me! Every time I've been on the job market, I find that I want to cite "lessons learned" from mystery hunts past -- which then forces me to explain what the mystery hunt is ("well, imagine the world's hardest scavenger hunt, with puzzles"), and I end up sounding like a huge geek. Which may not be a bad thing, I guess...

Why does the Mystery Hunt keep cropping up? Well, in my recent interview it started with a discussion of the difference between "enforced" and "permissive" management styles. There is a great and good tendency in any large endeavor, corporate or puzzle-hunt, to draw up "best practices" to codify lessons learned about the most effective ways to do things. But what happens next? There is a crossroads between two fundamental strategies. The "enforcement" strategy tries to figure out how we can forcibly prevent people from doing things other than the "best thing". Bureaucracy and long lists of rules follow, along with authority: someone who will not let X do Y unless they have been convinced that Z has happened.

A better strategy is "permissive": assuming good-faith on the part of all involved, just passively monitor the situation, so that "bad things" can be remedied without intruding on all the people trying to do good things. This is a much more efficient strategy, especially if your resources are constrained — it's less costly to monitor than to prevent — but it involves a lot of trust. Some cultures can sustain the necessary trust, and some cannot.

Mystery hunt example: how do we prevent people from calling in too many wrong guesses at an answer? Team ACME solved the problem by just putting the communal answer phone at the front of the room, so that everyone would notice if someone got crazy with the guessing. Team Codex uses an enforcer: all answers must be called in by the designated operator-on-duty. Lest you get the idea that permissive==good and enforcement==bad, let me state clearly that Codex has solid reasons for its choice: it has so many remote team members (not physically present in team headquarters) that monitoring is difficult -- the simple "phone in the front of the room" doesn't work when your rooms are scattered across Seattle, Zurich, and countless other places.

At OLPC we faced the same issue with system administration: how to we keep our network and computers secure? OLPC came from the permissive MIT/Media Lab heritage: since it is a research and learning organization, MIT uses the permissive strategy, letting users do what they please on the academic network and focusing effort on detecting "bad behavior" (worms, cracked machines, attacks, misconfigurations) and efficiently and effectively black-holing small pieces of the network to contain these problems. If a naive user doesn't properly patch their personal computer and it gets hacked, that machine is noticed almost immediately and dropped off the network. "Traditional" system adminstration focuses on enforcement: by forcing all users to use only patched versions of approved software, we can proactively prevent problems -- but at the cost of also preventing Real Work and Unexpected Solutions.

Back to the mystery hunt: since the hunt is a competitive event, it's easy for people to get carried away with secrecy to protect the team's competitive advantages. But the mystery hunt starts at noon on a Friday, with people arriving that morning from around the country, and it is crucial to get all these new people integrated into the team as quickly as possible. Every minute that some team member can't print/can't access the network/can't access the wiki/can't access the chat rooms is a minute that could be spend advancing the goal: solving puzzles. Permissive strategies are a big win here, especially because the hunt code of conduct, observed by all seriously competitive teams, ensures the necessary trust. Other teams aren't actively seeking to hack into our systems; preventing Google from sucking everything into its archives and index is usually enough.

Another OLPC example: build systems. During the run-up to a stable build, it's very important to keep build changes under control. How to prevent developers from making uncontrolled changes to the stable build? The enforcement strategy appoints a build master Who Alone Is Powerful and forces all changes to be made via the build master. The permissive strategy says that developers are generally trustworthy (and are accountable to management if not!) and retains the ability of anyone to affect the build at any time. Instead of making it arbitrarily harder to fix things as the build approaches stability, we (a) trust the developers to commit only appropriate fixes to stable, (b) watch all the changes (which has the benefit of catching even unintentional changes) and (c) back out any well-intentioned fixes that might adversely affect stability. The buck still stops with the build master to determine what's "safe" for the stable build, but their direct intervention is limited to backing out the infrequent "bad thing" instead of being interposed in every frequent good thing.

This post is very long, and I've only discussed one of the "mystery hunt lessons". Others include effective ways to collaborate with remote resources/solvers, and the importance of making "the right thing easy". The best way to get people to do "the right thing" is to make it the easiest thing to do. For example: a perennial problem is keeping remote hunters "in the loop" about what puzzles have been solved and what new puzzles have been made available. Further, there's a lot of internal bookkeeping that needs to be done on these events. My best solution to the problem was a chatbot who lived in the chatroom ACME used to keep in touch with remote solvers. When a solution was phoned in, we'd type "bot, the solution to FROBNOTIC UPGRADES is BAZNIC". When a new puzzle was made available, "bot, new puzzle: GROOVY FROOD". This was the (only) means to update our collaboration software: the puzzles/answers would be added to the wiki's automatically generated "status blackboard", and new puzzle pages would be created in the wiki to track work done. But, by performing the operation in the shared chat room, it notified the remotes at the same time. Suddenly no one had to be reminded to update the remote hunters! (Codex has a similar system: all answers are phoned in by a dedicated operator, and you are encouraged to communicate with the operator via the shared ringhunters chat room. Codex doesn't have an effective a "new puzzle notification" system, although you could monitor the changelog of the wiki to see new pages being created.)

In our latest hunt, we used Google Spreadsheets extensively to collaboratively solve puzzles. Team members would typically create new sheets in the spreadsheet to test different theories for how the puzzle might work. This had the unexpected side effect of eliminating almost all updates to the puzzle's wiki pages -- it was easy to work in the spreadsheet, and hard to keep switching back to the wiki. The problem was that it is also "hard" to write long free-text blocks inside a spreadsheet, and so most sheets in the spreadsheet were "undocumented", and it was hard reconstructing what had been done on a puzzle when a newcomer picked it up. The discussion on our mailing list started along familiar paths: can we somehow force people to update the wiki? The "make the right thing easy" lesson suggests it would be more profitable to make it "easy" to add free-text blocks to sheets of the spreadsheet -- then the "right" thing will just naturally happen.

Putting teams on notice
[info]cananian
Teams On Notice
Thanks, [info]thedan.

Great Hunt!
[info]cananian

I really enjoyed this year's Mystery Hunt. Kudos to the Mad Bombers for a nicely-paced, well-constructed hunt. ACME was smallish, and slept often, so we weren't competitive in the race for the coin, but everyone I've talked to seemed to really enjoy the solving atmosphere this year. I really appreciated that Bomber HQ stayed open until 3pm Sunday, giving us a chance to finally solve those last pesky puzzles plaguing us, and to experience and enjoy some of the puzzles in the later rounds. Of course, some people went home to go to sleep late Saturday evening — and they missed all the fun. =)

I was asked about my favorite puzzles from this year. This was my response:

I really enjoyed "Logical Digits", a electronics & circuits puzzle in the very last round that emerged late. "Blather" is another programming puzzle with a clever construction. "Embezzler's Quest" is a lot of fun if you're familiar with the conventions of old text-adventure games. "Unscrambled Cable Porn" is fun to show other people, especially if you know the aha. "IAP Mystery Hunt" is a good example of a "classic" one-page mystery hunt. See for example:

from the first hunt in 1980.

The "Hell Runaround" might be fun if you've got a bit of time to kill and want to explore some of the more obscure corners of MIT — it takes you on a large loop around main campus, but doesn't require any MIT-specific knowledge. I still prefer ACME's runaround from 2003, though:

http://www.mit.edu/~puzzle/03/www.acme-corp.com/solutions/endgame.html

which can be run in both the "real" MIT and the "virtual" puzzle-matrix of that hunt. The monopoly hunt had a good run-around, too; I'll have to check to see if it can still be followed as written.

Puzzles we didn't try to solve, but which look fun: "Choose Your Own Misadventure", "War Dances" (for PC gaming addicts), "Manual Transmission", and the Hell puzzles in general (since we never put our two parts of these together).

"Squad Car" was reputed to be very enjoyable "for those who enjoy that sort of thing" (cryptograms). "Negative Ad Campaign" was reputed to be hilarious. "Hang 'Em High" has a number of interesting bits to it, despite being fairly straightforward. "The Central Science" isn't too hard, and is nice and science-geeky. "Friends You Can Count On" might be nice for those with small children.

Other puzzles I helped work on/solve: "The Continental DiViDe", "Team Dynamics", "Clash of the Titans", "Encore! Encore!", "Scoring Points" (didn't work on, just witnessed the first aha), "Choose Your Weapon" (same deal; teaching Anna about gang guns was a hoot), "Episodic Disorder", "D4: Ducks Playing Poker" (wouldn't it be fun to combine a duck puzzle, a "locate-places-at-MIT" puzzle, and a runaround? but instead we got a slightly tedious vanilla duck puzzle), "Celebrity Scrabble" (there is, perhaps, still a bug in my scrabble-solving program—which I wrote for Rack Your Brain in the 2000 hunt—as I'm told that the puzzle itself is blameless), "Now That's High Finance", "Flip Flop Ya Don't Stop" [I just stopped by and read the answer after others had done the real work =)], and the round 1, 2, 3, and 6 metas. If you want to tackle one of these, I might be able to give reasonable hints.

Notably, I personally worked on many many more puzzles this year than last. And this despite being the team leader! Not exactly sure of the reason for this. Perhaps because most people went home late at night to sleep, allowing me and the die-hard puzzlers to get some quality early-morning solving time. Maybe because the hunt really was much more self-organizing this year, and so I wasn't responsible for "doing stuff" for people as much. Lots of people took their turns updating the bot/wiki (Nick, especially!), there was a dedicated printing machine so I didn't have to pull print duty, Richard took care of the namebadges, and people fixed their own food (with the exception of Friday/Saturday dinner). I certainly enjoyed myself!


Mystery Hunt Rah Rah Rah!
[info]cananian
I'm forming a mystery hunt team this year. It will be fun! We will be competitive enough to see most of the hunt! You should join! Well, not too many of you. But enough for a reasonably-sized team. You know.

In particular, anyone reading this journal who I haven't seen for a long while should join my team so I get an excuse to spend a whole weekend with you! Well, with you and a roomfull of other people clamoring for my attention. You know. But we'll be in the same room!

The team is provisionally called ACME, because the people I know for sure will be present are all former ACME-ites. There may be a good number of Pturnips, too -- and Pturnips were ACME once (well, Iliaphay; whatever -- before my time). Anyhow, if you're a recovering ACMEite, I particularly want you to rediscover the addiction. Maybe then we'll even keep the name ACME! Otherwise it's at risk of being renamed "Evil Dr. Lotte", and teams named after a dog are just lame.


Mystery Hunt
[info]cananian
This past weekend was the 26th annual MIT Mystery Hunt, my 8th hunt, and my second with the pterrific Pturnips. The hunt was very elegant and well-constructed, although I didn't see quite as many stand-out terrific puzzles---perhaps because I just didn't work on as many puzzles this year. It was also short, as hunts go -- barely 36 hours long -- although that's certainly better than the Tuesday morning hunt past years have seemed to foretell!

One of my favorite puzzles this year was Blue Steel, although the puzzle's solution meant that many (most) teams took an easy and obvious shortcut to the answer. I also spent some enjoyable time on Pentris, although it was really a one-aha puzzle with a completely straightforward programming solution. I tend to prefer puzzles where the existence of a good program is not so obvious, or where multiple programming strategies might be employed. Square Mess is a reasonable example from last year, although its constructor neglected to consider that people would be using dictionaries different from his own. Too Precious For Words from the 2004 hunt is the puzzle I am most proud of programming to solve.

Quick list of puzzles I worked on: Ask Ye Silly Question (wrote solving program), Blue Steel, Disarray (didn't manage to solve; I don't think A=1 was clued well enough), Louder Than Words (didn't manage to solve; clueing was obscure), Long Division (didn't manage to solve; probably should have looked for outlines, but xor admits multiple ways to get the target letters out), Pentris (wrote solving program), All for One and One for All (solved after hunt).

Puzzles I didn't work on which looked like fun: Badness 10000 (adventure and bugs), Do Sa Do (square dancing!), Some Trolleys Named Lust (packet assembly, etc), Surely You're Hexing (feynmen jigsaw), American Championship (automated scrabble search?), Head of Sales (mit puzzle).


Mystery Hunt wrap-up (belated)
[info]cananian
Dan and Tanis have done better write-ups of the Mystery Hunt already, but I thought I'd throw in a word or two on behalf of team ACME.

This year's hunt was made a lot of fun by the people on the team, who were all brilliant and made me feel so much smarter for just being among them. My co-captain in particular did a great job of backing me up and making the hunt as a whole enjoyable, even though we finished decidedly in the middle of the pack.

I'm ashamed to admit that this is the first year that I've been involved in the hunt in which the team I was on utterly failed to even identify the theme of the hunt, partly because no one on my (admittedly small) team can remember having seen the movie in question, but we also neglected to do the obvious google search. The greedy dwarves--Wally in particular---stuck out, but we never made the leap. We instead came up with an alternate theme involving the "25 years of Mystery Hunt" and slant tributes to previous hunts, including the "loose cyberpunk", "captain red herring's mystery island", and even the monopoly hunt (looking at the border for the aztec map). Oh, well. That would have been a cool theme, if that would have been what they'd chosen. =)