From: Carl Worth Date: Mon, 22 Dec 2014 21:07:35 +0000 (-0800) Subject: Add blog post describing all of the history of the Christmas code. X-Git-Url: https://git.cworth.org/git?p=cworth.org;a=commitdiff_plain;h=93addf7ab050c5b508f79549e1359770c7116373;ds=sidebyside Add blog post describing all of the history of the Christmas code. And link to decriptions of the puzzles for prior years. --- diff --git a/src/christmas_code.mdwn b/src/christmas_code.mdwn new file mode 100644 index 0000000..7c3f6f1 --- /dev/null +++ b/src/christmas_code.mdwn @@ -0,0 +1,193 @@ +[[!meta title="Carl's Christmas Puzzle Hunt"]] + +[[!tag puzzles]] + +I've slipped into an accidental tradition of composing a puzzle hunt +for my sons every year at Christmas time. We call it "The Code" and +it's now one of the most anticipated events every December. + +If you'd like to see some examples of what the puzzles are like, you +can look at them here (or even try solving them yourself): + + * 2014 Christmas Puzzle Hunt + * 2013 Christmas Puzzle Hunt + * 2012 Christmas Puzzle + +As one might hope, I believe my puzzle-designing skills are improving +with practice. So hopefully the more recent puzzle above show some of +my better work. + +This tradition has become sufficiently involved that the history of +The Code really deserves to be captured. Here's the story of how it +all started, and how it's changed over the years. + +## On Keeping Christmas a Surprise: The Invention of The Code + +One year, my wife and I were lamenting to some friends that Christmas +gifts were losing their mystery at our house. Our boys were getting +good enough at poking, prodding, and predicting their presents that +there weren't a lot of surprises left for Christmas morning. Our +friends had had similar problems with their children, and we ended up +comparing notes on things we had done to keep gifts secret. + +One obvious tactic is to disguise a gift while wrapping it. This +technique has already been developed to an artform by our boys. They +love giving each other a large, wrapped gift which, when opened +reveals a smaller, wrapped gift inside. Then, like a set of matryoshka +dolls, that gift reveals a smaller, and smaller gift. In our family, +as soon as this unwrapping process is started, everyone knows what the +end result will be. The final few layers are so tiny that there's no +room for boxes anymore, just many, many layers of different colored +gift wrap and excessive amounts of tape. These last layers take a +tremendous amount of effort to get through. And the reward for all of +this hard work of unwrapping? Inevitably, it's a single penny. We +don't recall who wrapped the first penny, but it's now a standing +tradition where the boys try to outdo each other each year by +disguising a penny in the most elaborate way possible. + +Clearly, we're not willing to go to such heroic efforts to disguise +every gift we wrap. We had experimented with waiting to put the +Christmas gifts out under the tree until just before Christmas, but +that wasn't much fun. It robbed the boys of a lot of the fun +anticipation of seeing the gifts under the tree throughout December. + +Our friends shared an idea that had worked well in their family. What +they did was not write names on any of the gifts, but instead wrote a +single number on each gift indicating the recipient. And the method +for choosing the numbers was selected in a new and unpredictable way +each year. For example, one year my friend (who happens to be a +dentist) wrote the number of teeth that each child had lost on their +gifts. + +We thought this was a great idea, and we decided to give it a try. And +none of our Christmas gifts have had any of the boys' names on them +sense, (though they've had just about everything else possible). Read +on for a rundown of what we have done for the code for each year. + +## The Early Years: Locking the Code up Tight + +For the first year, we adopted a very simple strategy. We wrapped each +boys gifts in a unique color of wrapping paper. We didn't explain +anything, and when the boys asked why none of the gifts had names on +them, we were evasive. Then, on Christmas morning, we told them which +color of gift wrap corresponded to each boy. + +The second year, the boys correctly predicted that we wouldn't use the +same technique, and they immediately set about trying to crack "the +code" for the Christmas presents. They started convening secret +meetings to discuss theories. We discovered some of the notes from one +of the meetings and found that they had constructed an entire table +mapping out the following variables for each gift under the tree: +Wrapping paper color, Number of bows, Colors of bows, Picture on the +tag, Names on the tag. You see, this year, I did put tags on the +presents, but instead of their names I wrote the names of characters +from nonsense poetry: "To: The cat; From: The fiddle", "To: The cow; +From: The moon", "To: The dish; From: The spoon", etc. + +Their table was fairly effective. They were able to eliminate many +variables that couldn't work. If there were more colors of wrapping +paper tan children, they assumed that could ignore that. If there were +only one or two bows per present, they assumed that couldn't identify +one of the four boys. Fortunately for me, they didn't crack the code +that year, but only because their table hadn't accounted for the color +of ribbon on each present. + +By the third year, I realized that I had to put more thought into +designing the code. Here was an active group of intelligent agents +determined to find the information I was trying to hide. I was careful +this time to imagine every variable they could track, and ensure that +each variable appeared with four different values, evenly distributed +among the presents. I also ensured there was no correlation between +any of the variables. Grouping the presents by wrapping-paper color, +bows, ribbons, or anything else would always yield four entirely +different sets of presents. (So yes, this meant that now my wife and I +needed to consult our own table before we could know how to correctly +wrap each gift). + +Then, for the actual information, I chose two variables I thought they +would never track. We carefully folded the flaps on each gift either +in the same direction on each side or in opposite directions on each +side. Then we either folded all cut edges away to leave clean creases, +or left the raw edges exposed. This gave us four sets of presents: +Matching flaps creased, Matching flaps raw, Opposite flaps creased, +and Opposite flaps raw. + +Of course, the boys never even looked at the flaps, and all of their +attempts to find logical groups were foiled. When I revealed the +answer on Christmas morning, I was smug, thinking I had "won" by +creating a code they couldn't crack. Of course, the boys called me out +saying that what I had done was totally unfair. (How could it have +been unfair I thought? This was a game that I had invented myself?) +But the boys were totally right. My problem was thinking that this was +a game, when in fact, this should have been a puzzle. + +Years later, I read the book "Puzzle Craft" by Mike Selinker and +Thomas Snyder. In the introduction, Mike Selinker describes the lesson +that my boys were teaching me. He says that a game is a contest with +two equal sides and the outcome is in doubt, (either side has a +roughly equal chance to win). In contrast, a puzzle is a contest with +two wildly-unequal sides where the outcome is never in doubt, (the +weaker side will always win). When I treated The Code as a game, it +wasn't fun for any of us. The odds were stacked too much in my +favor---I could always create an impossible-to-solve puzzle, but who +has fun with a puzzle that's impossible to solve? That just leads to +frustration and giving up. A good puzzle, in contrast, has plenty of +frustration, but enough fun and reward that the solvers stick it +through to the end. So I needed to learn to create a puzzle. + +## The Code Today: The Code as a Puzzle + +My boys taught me that the code needed to be fair. That is, they +needed to be given enough information to be able to solve the +code. There could still be lots of deception and trickery, but they +needed to know that with perseverance, patience, and creativity they +could actually find the answer. They also gave me a second ground +rule: The solution to the code must be relevant and interesting. A +final answer of "you get the presents with the matching flaps with the +raw edges" doesn't cut it. Instead, the solution to the code should +actually point to the boys themselves. Basically, they were telling me +"Design us a puzzle", and "Make it a good puzzle", and it just took me +some time to figure that out. + +Christmas 2012 was the first year I approached The +Code as a puzzle. For that year, I labeled each present with nothing +more than a small QR code. Scanning the QR code linked to a web page +with a silly animated GIF, a solid-color background, some nonsense +poetry in the title, etc. Somewhere in all of that was a hidden +indication of who the intended recipient of each present was. So this +was simply one puzzle, and a lot of obfuscation. I thought this puzzle +would have been easier than it was, (a common problem for early puzzle +designers from what I understand). But the boys had a lot of fun with +it, and with some hints at the end, they figured things out by +Christmas. + +Christmas 2013 was the first year I stepped up and +instead of designing just one puzzle, I designed an entire puzzle +hunt. A puzzle hunt is a connected series of several puzzles. Many +puzzle hunts also included "meta-puzzles" where the solutions to +several puzzle combine to form a new puzzle. This was my first puzzle +hunt to design and it included 24 puzzles, 5 metapuzzles, and 1 final +metametapuzzle, (where the solutions to 4 previous metapuzzles had to +be combined in another puzzle) That was probably over-ambitious for my +first puzzle hunt, but it worked fairly well. There were a couple of +bugs in the puzzles that I should have caught with better testing in +advance. + +One thing I was really pleased with was that I intentionally +included every element from the previous puzzle, (animated GIFs, +random background colors, nonsense poetry, etc.). But where in 2012 +many of these elements were meaningless red herrings, in this year's +hunt, every element was used in at least one puzzle. I was also happy +that I included a mechanism for providing additional hints along the +way. (And I did this in a way that I could revise those hints before +the boys encountered them, so I could fine-tune the hints based on +where they were getting stuck.) That was very useful, and I used that +to my advantage again in 2014. + +Christmas 2014 was my second puzzle hunt, so it's +clearly now a new tradition that we won't give up for some +time. (We'll just need to adapt things when some of the boys move out +of the house, etc.). I do feel like I'm getting better at puzzle +design, and the boys are still having a lot of fun solving this. I +wrote up a blog post giving some of +my feedback on how the solving experience went this year. diff --git a/src/christmas_code/2014.mdwn b/src/christmas_code/2014.mdwn new file mode 100644 index 0000000..179d952 --- /dev/null +++ b/src/christmas_code/2014.mdwn @@ -0,0 +1,41 @@ +[[!meta title="Christmas Code 2014"]] + +[[!tag puzzles]] + +My boys just finished this year's Christmas puzzle hunt, (known in our +family as "The Code"). Read below for a summary of how things went, or +check out the actual puzzles if +you want to solve them yourself or just wonder at the amount of work +my poor boys have to go through before they get any Christmas +presents. I've also written up a brief history of +the Christmas code linking to all the puzzles from previous years. + +I'm really pleased with how things went this year. I scaled the +difficulty back compared to last year, and that was good for +everyone's sanity. It's easy to see the difference in just the +numbers. Last year's hunt had 24 puzzles, 5 metapuzzles, and 1 final +metametapuzzle. This year there were only 9 puzzles and 2 small +metapuzzles. I was nervous the boys might think I did too little, but +I think I actually got the difficulty just right this year. + +They did solve it a few days before Christmas this year, but that's a +good victory for them. Last year, there was a tough Battleships +metapuzzle and the deciphering of a Playfair cipher that all came +together only late at night on Christmas Eve. + +Of course, the most important feedback comes from the boys +themselves. There was a priceless moment last night as one-by-one, the +boys in turn had the final flash of insight needed to solve the last +clue. There's nothing better for a puzzle designer than getting to +watch that "ah-ha" moment hit with its explosion of laughter. And that +laughter is always mixed---appreciation for the disguise of the clue +and a bit of disgust at not being able to see through it all +earlier. And last night, it was a perfect cascade of these moments +from one boy to the next. After the first one finally got it, just +knowing it was possible was all the others needed to reach the same +insight themselves. It was perfect. + +This morning the boys reported that this year's code was the "best one +yet". I think I've heard that three years in a row now. That's what +gives me the motivation to do all this again. I guess I had better +start planning now if I want to improve again next year! diff --git a/src/christmas_code/2014/index.mdwn b/src/christmas_code/2014/index.mdwn deleted file mode 100644 index d3a8462..0000000 --- a/src/christmas_code/2014/index.mdwn +++ /dev/null @@ -1,40 +0,0 @@ -[[!meta title="Christmas Code 2014"]] - -[[!tag puzzles]] - -My boys just finished this year's Christmas puzzle hunt, (known in our -family as "The Code"). Read below for a summary of how things went, or -check out the actual puzzles if -you want to solve them yourself or just wonder at the amount of work -my poor boys have to go through before they get any Christmas -presents. - -I'm really pleased with how things went this year. I scaled the -difficulty back compared to last year, and that was good for -everyone's sanity. It's easy to see the difference in just the -numbers. Last year's hunt had 24 puzzles, 5 metapuzzles, and 1 final -metametapuzzle. This year there were only 9 puzzles and 2 small -metapuzzles. I was nervous the boys might think I did too little, but -I think I actually got the difficulty just right this year. - -They did solve it a few days before Christmas this year, but that's a -good victory for them. Last year, there was a tough Battleships -metapuzzle and the deciphering of a Playfair cipher that all came -together only late at night on Christmas Eve. - -Of course, the most important feedback comes from the boys -themselves. There was a priceless moment last night as one-by-one, the -boys in turn had the final flash of insight needed to solve the last -clue. There's nothing better for a puzzle designer than getting to -watch that "ah-ha" moment hit with its explosion of laughter. And that -laughter is always mixed---appreciation for the disguise of the clue -and a bit of disgust at not being able to see through it all -earlier. And last night, it was a perfect cascade of these moments -from one boy to the next. After the first one finally got it, just -knowing it was possible was all the others needed to reach the same -insight themselves. It was perfect. - -This morning the boys reported that this year's code was the "best one -yet". I think I've heard that three years in a row now. That's what -gives me the motivation to do all this again. I guess I had better -start planning now if I want to improve again next year!