Puzzle testing

For the past two years, I’ve helped a friend prepare for his annual puzzlehunt. As the test coordinator, my role is a little harder to explain than if I were authoring puzzles or promoting the event. I found myself drawing a lot of parallels to tech industry work, so I decided to write up some thoughts on why I chose this approach and how well it’s been working so far.

Puzzlehunt formats vary, but in contrast to traditional puzzles like crosswords and sudoku, they don’t come with instructions on what you need to do. Also, unlike escape rooms, there isn’t generally a staff member attending to you at all times, actively facilitating your gameplay to keep things moving along. That means that in addition to checking for puzzle correctness, you need to find out where people tend to get stuck and then either revise the puzzle itself or write relevant hints. It’s a tricky balance between being vague enough to give the players room for creativity, exploration, and learning, and being specific enough that they can tell they’re on the right track and don’t flounder around too long.

What kind of testing does PuzzleBang need?

  • PuzzleBang is written over the course of a few months, but revisions may be needed up until shortly before launch. This means that test feedback needs to be turned around as fast as possible. At the same time, it needs to be nuanced enough to convey how and why players got stuck.
  • PuzzleBang runs in conjunction with a week-long university conference. Puzzles are released one day at a time. Pre-written hints are released throughout the first few hours after a puzzle goes live. This means that support might be needed at any point during the week.
  • PuzzleBang is published as a custom site. This means there are very few constraints on puzzle formats, which makes it possible to incorporate sound or video, provide arbitrary interactions, and potentially hide hints in the source code. It also means that the infrastructure itself needs to be tested, not just the puzzle content.

How do test sessions work?

  1. Prepare materials. Game Control prepares for testing by creating a private spreadsheet. Each puzzle gets its own tab. The tab is seeded with a direct link to the puzzle, all scheduled hints, the solution, and a description of any known issues. This allows us to test puzzle content without being blocked by site infrastructure work.
  2. Recruit participants. I reach out to friends to ask them if they’d be interested in giving feedback. The typical test solving team is 2-3 players who already know each other, have their own computers with reliable internet access, and have at least some experience with puzzles. I bring all the materials and I handle notes, so there’s no pre-work or lingering to-dos for the solvers: everything is self-contained within our allotted time.
  3. Set expectations. At the start of our video call, after chatting a bit, I give an official introduction to our testing session. More than anywhere else in the process, I’m drawing inspiration from the UX researchers I’ve worked with for this part. I remind the solvers that the puzzles are a work in progress and that the goal isn’t to solve well or solve quickly, but to provide actionable feedback to Game Control. One thing that can be hard to overcome is getting people to ask for hints. Just about everyone wants to keep working on their own. I try to address this by emphasizing that asking for hints is necessary to testing the hints themselves.
  4. Facilitate the session. Throughout the test session, I need to remain actively engaged. There isn’t always much to say, so I take notes on their thought process just to keep myself focused and not wandering away to other browser tabs. It also helps me provide more details afterwards in case Game Control finds my summarized feedback unclear. Staying engaged also helps me volunteer appropriate hints when people might not think to ask for one, or redirect people if I know they’re going down a time-wasting path. This is always a tough balance, since I want to see their full thought process, but I don’t want them to get frustrated by losing a lot of time to something unproductive.
  5. Summarize insights. At the end of the session, when thanking participants for their time, I emphasize how much insight they’ve provided and how much more polished the puzzling experience will be as a result. This is true every single time: identifying pain points is the most obvious outcome, but occasionally a test session goes perfectly smoothly, which might actually indicate that the author should not revise any further and should leave the puzzle as-is. After they log off, I jot down everything else I remember in the spreadsheet, pull out specific action items, and tag Game Control to alert them to the feedback.

Some of what I’ve written above is aspirational, e.g., I’ve run sessions with solo players, and I don’t always remember to cover all the key points during my intro speech. I have a tendency to ramble when explaining PuzzleBang and puzzlehunts and how they differ from escape rooms. For the most part, I think participants still have a positive experience and Game Control still gets the feedback they need, even when things don’t quite go according to plan.

There’s one exception that I think can derail a session though, and the main reason I’m writing this post in the first place is to warn myself about it in the future: I can’t be in both roles at once. If I’m facilitating, I can’t also participate as a player. All sorts of anti-patterns come out of this, like trying to contact the puzzle author through side channels to ask for help, or getting really stuck on something and not knowing that it’s the wrong path. Even if that’s a realistic outcome during the actual hunt, it just doesn’t fit with the video call test approach. During the actual hunt, you can reasonably assume that you’re stuck because you just haven’t thought of the right thing yet. During a test session, you might be completely blocked because of a bug in the implementation.

Collaborating on PuzzleBang continues to be a rewarding experience. Having something concrete to work on makes it easier to reach out to someone online. It’s a shared experience that provides something to look at, not just another video call with disorienting levels of near-eye contact. Most importantly, it feels good to know that the puzzle author’s hard work will pay off because players will have a smoother experience.

My first sewing project

After I recently learned how to use a sewing machine at an all-day bootcamp class, I ordered my own machine from Amazon. I knew that I wanted to reinforce the things I had learned as soon as possible, but I didn’t think that I would be able to finish anything useful in time for my current cosplay projects in progress. San Diego Comic-Con is less than a month away, and my remaining items include brown skinny jeans and a white jacket, both of which are too structurally complex for a total beginner.

However, after unsuccessfully shopping for plain square scarves or handkerchiefs that were the right shade of red, I realized that I could buy some fabric, cut out the squares, and sew the edges to look neat and tidy. In Super Smash Bros. for Wii U, which is the character design that my roommate and I are using for reference, it looks like Fox and Falco wear the same color scarf as each other. (You can see this costume on the Fox amiibo.) Fox wears a military green jumpsuit, so that’s easy enough to match, but Falco wears a red one. It’s important for the sake of Falco’s costume to get the right shade of red so that the scarf is vivid but the jumpsuit doesn’t clash too badly.

I stopped by Britex Fabrics in the Financial District because I had a few spare minutes before attending a nearby conference. After accidentally browsing some $95/yard fabric near the entrance, I ventured farther into the store and found some 100% cotton fabrics that were much cheaper. I looked at probably two or three dozen different shades of red, most of which looked pretty much the same to me, so I chose based on price and how it felt like the fabric would drape when I wrapped a triangle around my neck as a scarf. A store employee helped me estimate how much material I would need for two scarves, then measured and cut a yard (around $12) for me.

A few nights later, when I finally got around to setting up my sewing machine on our kitchen table, I had difficulty threading the bobbin case. I did this once during the bootcamp class, but when I tried following the instruction manual, I struggled to translate the written instructions and simple line diagrams to real life. After watching a few different YouTube videos that explained other steps really well, but not my particular step, I gave up (bad idea!) and decided to just poke the thread where it looked vaguely right, and figure out later on whether it mattered.

Unsurprisingly, it did matter, so when I started feeding my scrap fabric through the machine to test it out, the bobbin thread kept bunching up and then breaking. This is apparently a common enough failure that it was included in my instruction manual’s one-page troubleshooting guide. At this point, I called my roommate over (“Hey, you can complete puzzle games where you rotate blocks, right? Can you help me rotate some real-life blocks?”) and together, we threaded the bobbin case successfully. Everything went pretty smoothly from that point on. I was able to back tack when starting and finishing my stitches, and when I got sloppy and let the fabric wander too far away from a straight line, I used a seam ripper to undo my mistake.

It took me a while to set up the machine, cut both squares of fabric, iron all eight edges, sew all eight hems, and tidy up my materials, but it was so incredibly satisfying to be able to produce exactly what I needed for our cosplay project. I’m glad I found a simple project to reinforce my new skills, and I’m looking forward to making something more challenging next time.

A test pose with my new scarf

You can see what Falco looks like on Smashpedia.

Sewing bootcamp

Last Saturday, I took a 7-hour class at Workshop as an intense introduction to learning how to sew. I registered for the class partly for the sake of trying something outside of my comfort zone, but also because I wanted to decide whether to buy a sewing machine to continue teaching myself at home. Back in college, I never wanted to learn how to cook to feed myself. I was only interested in learning how to bake cookies to give as gifts or to host rush events for my service fraternity. Likewise, I don’t want to sew in order to alter my regular clothes or save money. What I want is to wear better costumes at Halloween, Bay to Breakers, and comic / anime conventions.

Workshop’s 7-hour sewing bootcamp was the perfect place for me to test my interest. They provided a bunch of identical sewing machines and boxes of sample fabrics that our instructor had already pre-cut to the sizes we would want to use for the day’s starter projects. We started by gathering around one machine while our instructor gave us a rapid-fire explanation of the various components and what we would do with them. Several of us looked stricken at this point, so she reassured us that we would get the hang of it very quickly once we got our hands on the machines.

When I first returned to my seat, I felt like I had already forgotten everything she told us. After taking a moment to poke at the machine and try some reasonable guesses, I raised my hand and told her that I couldn’t remember at all where to start, so she reviewed the first three steps with me. Once I had actually gotten started, I found myself remembering more than I expected. It was also useful to have classmates on both sides (there were ten of us gathered around a long table) so that I could ask my shorter, simpler questions to a peer without waiting for the instructor to return to me.

The first thing we did was to load top and bottom threads onto the machine. The threads hook onto each other, which is how they stay in the fabric after they’ve been pulled through by the needle. Our “hello world” task was to add a stitch onto a piece of scrap denim. After we had confirmed that the thread was indeed going into the fabric, we continued practicing different stitch styles and speeds, backtracking (which is like reversing the gear to go back over the same section), and stopping to lift the foot so that we could turn the fabric and then continue stitching at a 90 degree angle. I was surprised by how much we were able to make mostly just using those two skills.

We made two projects before lunch: a pouch that tied with an attached string or ribbon, and a beer or soda koozie (which I’ve always called a cozy, so that was disorienting to hear all day) with a little decorative pocket. I made noticeable mistakes on both of these projects. I knew that we would be making the pouch by pinning two rectangles together and then sewing the two layers together along three of their four sides. However, I pinned my ribbon to the wrong spot, so when I sewed those three sides, I also sewed the ribbon halfway into the inside of the pouch. After turning the pouch inside out and realizing what I had done, I considered my options and then cut the ribbon mostly off, tying it to a little loop that had formed on the outside and deciding that it would now be decorative instead of functional. I sewed the beer koozie correctly, but when I traced the pattern using a tailor’s best friend (a white crayon for temporary markings that are easily removed without laundering) and then cut it out with bulky scissors, I made it quite a bit bigger. Even after some adjustment (I borrowed a can of PBR from a classmate to size it), I still ended up making it a bit too big.

Lunch was a welcome break from intensely focusing and talking out loud. I went across the street and ate a sandwich and mindlessly read articles on my phone. In retrospect, though, I wish I hadn’t done that last bit, since my eyes and my mind could have used a bit more rest.

After lunch, we used scrap denim again, this time to learn how to make button holes and attach buttons using a sewing machine. We were impressed to learn that one of the wider stitch options could be used to send the needle precisely through the holes of each button, as long as we were careful to adjust it manually before stepping on the pedal. A few students broke their needles at this point, so they got an opportunity to learn how to change the needle on their machine. We also used a different foot to hold down the fabric when making button holes. This special button hole foot had a guide that helped us keep track of how large we were going to make the hole. On my first try, I ended up making the button hole too small, but after I measured the button more precisely, I made it fit easily.

The toughest part of the afternoon was making a zipper pouch. Like the earlier pouch, this was mostly two rectangles of fabric that were attached together on three sides. However, we had to start by attaching the zipper to the top edge, which was a precise task that required swapping out for yet another foot (shaped differently than the standard foot and the button hole foot) and ripping out some loose temporary stitches after putting the real ones in place. The hardest part for me was guiding the fabric through the machine after I had already attached a zipper to it, since the zipper was bulky and not flat, unlike everything else we were working with that day. I ended up with a somewhat lopsided zipper pouch, even after detecting the problem partway through and ripping out some stitches in order to redo the bottom edge. I also learned the hard way that I shouldn’t cut fabric with the only interesting parts of the print at the very edge, because those edges get folded into the final product, so my pouch that was supposed to have cowboy boots just looks like it has some abstract colors instead.

Our final project was a tote bag, which was conceptually simple but still tiring, especially after a long day of learning. It was really satisfying to call upon the basic skills that we had been practicing all day, and to realize that we were getting a lot better and that things that had seemed baffling at 11:30 am were now simple at 6 pm. Some students finished so quickly that they made an extra pouch or an extra beer koozie, but I used most of our allotted time to finish my tote bag.

I’m really happy that I signed up for this class. I appreciated the hands-on guidance when using a sewing machine for the first time, since that had really intimidated me. (I have no experience at all with most crafts and physical tools.) I’m also glad that we started making things almost immediately. It was fun, of course, but also crucial in solidifying what we learned. I’ve ordered a machine to use at home and I plan to head to a craft store to start buying some starter threads and fabrics next week.

Learning a language

There’s a lot of big talk about how technology can change education. As a very fortunate student who genuinely enjoyed school and had the resources to realize that, I can’t relate to a lot of it. Gimmicks that make school feel more like a game or a movie didn’t appeal to me. I liked books just fine the way they were.

One of my few miserable subjects in secondary school was the foreign language requirement. Despite all my frustration, I didn’t exactly quit — I studied it for five full years, eventually passing the IB SL French exam, but shirking the option to take the AP exam. At the time, I was pretty unhappy about having trudged through all of this. I was also bitter that my public school couldn’t teach it to me when I was five years old and could absorb languages much more easily.

The first step was to automate some of my problems away. One of the first computer programs I wrote outside of class was a flash card app to drill myself on vocabulary words. This was well before the advent of slick mobile apps, so I never felt deprived when tapping through my command-line Java program. The next step was to find source material that I actually cared about. TV shows and comic books were hard to find and slow to download, so I settled for Wikipedia articles on familiar topics.

The last piece I never found in high school was confidence. I spent many hours learning how to read French, and that paid off at exam time, but I never learned how to feel comfortable listening to someone speak or having someone listen to me speak. Duolingo has finally started to change that. While I’m still no sparkling conversationalist en français (or for that matter, in English; let’s be honest), playing with this app in the comfort of my own home has gotten me to enjoy these crucial practice drills in a way I’ve never enjoyed them. For the first time, I actually feel happy and excited to be studying another language. That’s a pretty powerful feeling.