Wrap-Up

Overview

Congratulations to the 118 teams that finished the hunt! Special congratulations to ᦿ NEW TAI LUE WIRED MOUSE for being the first team to finish the hunt in just 8 hours, 54 minutes, and 16 seconds.

Thank you as well to all the puzzlers who took part in our second hunt! Out of the 604 teams registered:

  • 473 teams solved at least 1 puzzle
  • 318 teams solved the first meta
  • 65 teams solved all 39 puzzles

Special shout-outs to:

  • We vote for entire messages that people say as team names for being the first team to solve a puzzle (Bugcat) in just 6 minutes and 39 seconds.
  • ᦿ NEW TAI LUE WIRED MOUSE for being the first team to solve the Beta Test, CTO, and COO round metas.
  • Team Goomblor for being the first team to solve the CFO Meta 8 hours and 13 minutes into the hunt and for solving the Impossible Meta Meta in just 30 seconds.

The rest of this wrap up may contain spoilers for various puzzles.

Leaderboard

Stats

  • First non-Bugcat solve: I Replicate by enigMA TEch at 14 minutes and 9 seconds
  • First Beta Test Meta solve: ᦿ NEW TAI LUE WIRED MOUSE at 1 hour and 9 minutes
  • 2546 hint requests from 319 teams
  • # of teams that solved each of the CXO metas first:
    • CFO: 13
    • CTO: 31
    • COO: 123

CXO RoundSolved w/ 5 FeedersSolved w/ 6 FeedersSolved w/ 7 Feeders
CFO325047
CTO545329
COO324087
CFO Puzzle# of times solved before meta (out of 129)*# of times used to unlock meta (out of 145)**
Wordlele120123
Worst Crossword Ever112124
Oceans Apart128115
Binary Choice115117
The Believable Untruth9575
Colorful Boxes10788
Differences11283
CTO Puzzle# of times solved before meta (out of 136)*# of times used to unlock meta (out of 144)**
Chaos in Neopia120123
Magic Ear9386
Morose Codes113110
Map Quests110102
Ask A Ninja11987
All Natural11499
Refreshment Counter122113
COO Puzzle# of times solved before meta (out of 159)*# of times used to unlock meta (out of 173)**
Escape!154150
Tracking Numbers159168
"True" Friends147131
Cryptic Images125100
Triangular Moves148132
Make Your Own Puzzlehunt14178
Random Anagramming135106

* Number of times the feeder puzzle was solved by a team before solving the meta. Teams that did not solve the meta are not included
** Number of times the feeder puzzle was among the first 5 feeders solved in the round. Teams that did not solve the meta are included

Founder# of times a team attempted to password reset a founder
Ruby3
Brick2
Scarlet2

Solves and Guesses per Puzzle

Back solves were approximated as any feeder solved after or less than five minutes before its meta.

Fastest Solve per Puzzle

About Us

The Huntinality 2.0 staff included about 25 people from the Cardinality MITMH team, about twice the size of last year’s staff. We again had a good number of first time authors, but this time about half of us had at least some writing experience (either from last year’s hunt or a few other public hunts).

Goals and Reflections

For Huntinality 2.0, our goals were similar to last year’s goals. We still wanted a hunt that was accessible to beginners - hence our support of both expert and casual tracks, as well as a generous free-form hint system (unlimited hints for casual participants) - and we still wanted to use this as an opportunity to gain more puzzle-writing experience. However, since our hunt staff had expanded since last year, we aimed for a larger hunt with a more complex and ambitious main round.

The one goal that we had that we didn’t quite reach was to have more puzzles with interactions between teammates (e.g. “multiplayer” puzzles). We had some ideas proposed but none of them quite panned out, and since we ended up running tight on overall developer time, this was deprioritized.

Hunt Scope and Design Philosophy

Early on, we aimed for Huntinality 2.0 to be roughly 1.5 times the length of our previous hunt. By the end, we ended up having about twice as many puzzles, and the hunt was twice as long for the most competitive teams. Our target difficulty was somewhere slightly above last year's hunt, but still firmly below the Galactic and Teammate hunts.

We wanted our intro round to be roughly the same difficulty as last year's, but we deliberately made the meta easier to prevent early bottlenecks and to allow teams to see the post-intro content. We intentionally unlocked large or difficult puzzles in each round at the beginning and kept the smaller puzzles towards the end. This was to balance each puzzle's exposure and to ease the difficulty down towards the end.

This year's hunt had multiple points that required revisiting old feeders (two metas and a runaround phase) and a higher number of meaty, more substantial puzzles than last year. Many of these things were written with parallelization in mind, and we were partial to the meta revisiting mechanic and use of mini-puzzle mechanics because we wanted to design an experience that would feel climactic and fun for groups.

We had many internal discussions about how we wanted our hunt to look and its position in the community. There were concerns that the increase in size and ambition would detract from the experience for those who enjoyed that last year's hunt was much shorter and beginner-friendly. We hoped that with enough difficulty control and features like the casual track, hinting system, and increase in team size, we would still make something enjoyable for solvers of many levels.

While in the end, we were happy with the number of teams that made it through the hunt, we had hoped to have a few more teams finish within the opening weekend for their own convenience. We think we shaded a hair harder than we would've liked, partially because the increase in puzzle volume compounded the difficulty of individual puzzles.

Below is a chart comparing the relative length/difficulty of some similar online hunts from the last year. Please note that this is not a comprehensive list of all hunts from the last year -- it is simply a list of recent hunts from which we could easily get relevant data.

*Note that the CMU hunt was only open for 29.5 hours.

Writing

Rounds and Theming

We had a few theme ideas leftover from last year and put out a call for new ideas as well. We ended up with 4-5 proposals and quickly coalesced around a theme of Internet Nostalgia that eventually morphed into the web 1.0 theme that we actually implemented. The old Internet theme felt flexible enough to give us a lot of options for meta, metameta, and overall story direction. It also made “ugly” webpages a thematic choice instead of a consequence of limited web design resources (feature, not a bug).

The original theme proposal focused more on specific sites that were prominent in the earlier days of the web (e.g. MySpace, Ask Jeeves, Alta Vista, Neopets, Napster) and was set in a user interface reminiscent of Windows 95. We had some ideas around using different components of the Windows 95 operating system (e.g. Start Menu, Games, Microsoft Paint, Recycle Bin) as focal points for entire rounds or individual puzzles. There were also more ambitious ideas around AIM chatbots, puzzle-y versions of Minesweeper, Freecell, and Pinball, and pairing everything with a modern counterpart (e.g. MySpace -> Facebook, Ask Jeeves -> Google). To help drive home that old Internet feeling, an early intro round idea centered around trying to connect to the Internet using dial-up so we could use everyone’s favorite audio clip.

After some iteration, we ended up moving away from having the main rounds live in an old operating system and decided to focus on the main rounds being separate personal web pages. We felt trying to mix some operating system components with some browser-based components muddled the story and added too much complication to the site navigation and overall website implementation. We needed some story component to explain why the web pages looked like they were from the 1990s, and the phrase “break the Internet” inspired the startup theme for the intro round and the storyline of the first act.

The final round also underwent a lot of different iterations. We knew we wanted something that wasn’t as long as a full round, and we wanted to err on the easier side so teams didn’t get stuck right before the finish line. The final round also needed to help wrap up the story and return us to the modern web. We won’t go into detail about our other ideas because we might want to use some of them in the future.

Story

Reducing the amount of story text compared to last year's hunt was a very conscious experience, which was partially motivated by the fact that it wouldn't be relevant to any puzzle content this time. Using the Instant Messenger chat was originally intended to be part of the final metapuzzle. Because we didn't end up having the resources or time to implement that concept, we decided to convey the entire story through the chat interface instead.

The story of this hunt is not based on any particular company or group of people. That said, the author based it on his personal experience living in Silicon Valley and working in tech. Before settling on "Friemd" -> "I'm Fred", the original random anagramming twist was going to be "Frederick I.M. Haring" -> "I'm Freaking Rich, Der!"

Structure and Puzzles

The design of the hunt structure started with the main CXO rounds. We wanted to avoid creating too many bottlenecks in the overall hunt flow, so instead of having a linear sequence of rounds, we designed multiple rounds that would be open simultaneously. We tossed around the idea of having unassigned feeder puzzles or feeder puzzles that contributed to multiple metas, but for simplicity, we ended up not pursuing either option. Having three independent rounds also made it easier for us to divide up work between various meta owners.

Each CXO meta owner was tasked with creating a puzzle that used 7 feeder answers and solved to an answer that could be a screen name. We deliberately kept the requirements as loose as possible so each meta owner had ample flexibility. As each meta was written, the feeder puzzle answers (and any associated meta requirements) were claimed by puzzle authors. We did a better job this year of finalizing the feeder answers before authors started working. However, two of the CXO metas also introduced some challenging construction requirements for their feeders which made them less suitable for newer authors. The CTO round was originally designed to have a similar mechanic for its meta, but this was eventually scrapped due to scheduling and to provide more opportunity for newer constructors to write freely without additional constraints.

Timeline and Process

We gave ourselves some time to rest after the first Huntinality (May-July 2021) and did some theme pitches/brainstorming in August-September. We had team members jot down expected bandwidth for writing and interest in other roles such as puzzle editor or “whip” (keeping things on track), inspired by Galactic's roles. Compared to last year, we had very few team meetings and opted to communicate via Discord instead, but we had a number of “writing workshop” weekends to brainstorm, write, and test together. We used Puzzlord this year for organizing claimed feeders, who was spoiled on what puzzles, writing feedback, etc.

Our rounds were developed at pretty different points in time, with the COO and CFO metas done around Jan 2022 (fortunately giving authors ample time to brainstorm how to shove equations, anime, and sinful solve paths into their puzzles). The intro meta followed in Feb 2022. The CTO meta was not finalized until Mar 2022 when a few Cardinality members got lured to Tahoe for the weekend with the promise of playing in the snow and then discovered they were there to playtest (worth it though). Looking back, we wish we had been stricter with meta deadlines to keep the rounds more even… but on the plus side, it meant that we didn’t have 30 puzzles clamoring for test solve at the same time.

By late April, we started running a full round test solve every weekend. We chose and announced a hunt date in mid May, ran one full hunt test solve, realized our hunt was way too long, increased the team size, ran a second full hunt test solve, and then wrote the meta meta and final round.

Test Solving

We initially tried to have authors within each CXO round test solve for each other, to save as many people as possible for full round test solves. Similar to last year, we aimed for ~2 clean solves internally before declaring each puzzle as done. For the full hunt test solves, we enlisted help from some members of the wider Cardinality team or other kind folks from the wider puzzle community who could not make the hunt date.

Artwork

The art team was excited when our theme for Huntinality 2022 was finalized, as it was an opportunity to study what differentiates modern and early internet from a variety of perspectives such as layout, UI/UX, and graphic design. Huntinality artists completed assets with whatever tools they were comfortable with, including Powerpoint. This year, the art team relied heavily upon our amazing dev team and our puzzle writers to own art/graphics for individual puzzles, freeing up the art team to focus mainly on creating the correct atmosphere for the story. It was great fun searching for the most trendy styles in website designs across the ages.

Art and story also needed to work more closely together this year, as the storyline dictated which assets and webpages needed modern vs. retro versions (or both). Interactivity and art had to translate between retro and modern formats. The logo was created with this in mind (there were some that suspiciously looked like the Firefox logo…).

logo_1logo_2logo_3

Our lovely founders were found online at Wild Republic and photographed by Ali and Max at work (while hiding from confused coworkers). The bird plushies felt much more whimsical (and less awkward) than taking various photos of ourselves.

For the modern website for our intro round, we wanted it to be clean and intuitive by focusing heavily on visual design and layout, while also adapting it to the needs of the website runaround. We considered making it minimal or unnecessarily interactive to the point of being annoying to further play into the modern web stereotype, but we ultimately chose to make it more user-friendly for our audience’s sake. A lot of emphasis was put into upfront exercises of logo design and building a basis in the fundamentals of graphic design, so we hope to be able to show you more in the future!

For the retro feel, we relied on crowdsourced collective team expertise to ensure our websites had features that evoked nostalgia. Since we had no experience in GIF creations, we relied upon curating tasteful(?) old GIFs and patterns to make the websites as cluttered and old as possible until we were satisfied. (“More colors! More comic sans!” was a commonly given piece of feedback.) By pure coincidence, the DNA GIF for the CTO puzzle completion was chosen, and a team noticed that the first letters of 7 domain websites spelled out GENOMIC from each of the the unique top-level domains.

From the art team, a special thank you to everyone on the team for making Huntinality happen, especially to the devs who brought it all to life and the story team for leveraging the website art as a key component of our beta testers’ immersion experience. Also, thank you to all of the feedback that brought us much glee on how “good” the retro internet looked. You’re welcome.

Website Development

The dev team had their first meeting in February to decide between reusing last year’s tech stack or switching to something new. We settled on rewriting the front end, replacing Django templates with React and NextJS with hosting on Vercel. The addition of Peter and Violet, who were enthusiastic and had deep expertises with front end development, to the dev team was a big driver of this decision, and we felt some confidence in the decision, since Teammate hunt had done something similar over the original gph-site code.

In retrospect, the overhaul of the front end ended up being a great source of work and stress given our limited dev resources. However, it also enabled us to have site features that we think added tremendously to the solving experience. A lot of credit goes to:

  • Sushi for leading the overall development effort, keeping the team on track and contributing key changes to all areas of the stack, including frontend, backend, infra deployments, developer docs, etc.
  • Peter for the elaborate internet disruption cutscene and bringing our artists’ visions to life for the modern and Web 1.0 site and the CTO and COO round pages
  • Violet for single handedly creating most of the new front end infra, as well as the CFO round page, answer button disappearance, chat interface, unlock simulator, and being a reliable encyclopedia of front end knowledge
  • Akira for the initial proposal for the front end rewrite and setting up the load test infra
  • Cancellations in Ryan’s schedule in the last weeks before the hunt, which freed up him to join the dev team’s final push for the meta meta chat interface and CXO personal pages
  • Teammate’s tph-site and Galactic’s gph-site for open sourcing their sites. We are standing on the shoulders of giants

Other than adding endpoints to the backend to support the new frontend, the only major change was the addition of Websocket via Django channels. This functionality was originally for a collaborative minesweeper game. Although that game was eventually cut from the hunt, the infrastructure we wrote to support it allowed for other site features, such as the collaborative state syncing in Wordlele, solve notifications, synchronous disruption of the internet for all team members after the intro meta, and the chat interface.

Loadtesting

We ran our website on Vercel (frontend) and Heroku (backend), mostly out of convenience and familiarity. Vercel provides automatic scaling, so we didn't load test our frontend code, but we revisited last year's load testing infrastructure based on k6 for the backend. This year, we focused our testing on Websocket, which was a new feature in the Huntinality 2.0 site.

We tested with 400 simultaneous Websockets connections and discovered to our dismay that the site crashed after a few minutes of load. Fortunately, we discovered a useful github thread from others with the same issue who provided a workaround, which we applied. Unfortunately, 400 connections was an underestimate for the load we would see at hunt start and this overwhelmed our Redis store. Luckily, the increase in load started ~15 minutes before the hunt started, which gave us enough time to throw more money at Heroku for a more robust Redis tier, just in time for the hunt’s start.

Similar to last year, we were paranoid and started with more Heroku dynos than was likely necessary at the start of the hunt. After the initial weekend, we migrated to a cheaper database and reduced the number of dynos to save on costs, at times a bit too aggressively, which explained some disruptions to the site in the later days of the hunt.

Discord Outage

Around June 21, Discord had a few unexpected outages. This caused some unexpected disruptions to our hunt site because our code required discord notifications to complete successfully in order for answer checking and hints to go through. We eventually removed the blocking call, but in the meantime, we definitely wondered if this was the universe’s revenge for all our jokes about “disrupting the internet.”

Discord’s own tweet looked like something out of our own hunt storyline:discordTweet

One hunt staff member also resorted to using a hint request from a fake account to communicate, since she knew that our hint team tended to reply really fast:hintRequest

Hinting

Similar to last year, we had each puzzle author prepare a handful of hints ahead of time, so that our hinters could respond more consistently and quickly. We also again subjected ourselves to an unofficial internal competition to see who could answer the most hints. While we made sure to note from the start that our response times would be slower overnight and during work hours, we are once again a mix of horrified and impressed by how little our response time seems to have reflected that.

Hints Over Time

Hints Answered

Hints per Puzzle

Our hint philosophy was once again to meet teams at their current position along the puzzle solve path and give enough of a nudge to get them going in the right direction. While it was sometimes tough to choose between giving more information (and risking stealing an aha moment) or holding back (but leaving the team frustrated or stuck), as the week went on, we tried to be more generous with our help, to get as many teams through the hunt as we could. We always tried to match the tone of the hint request, whether through verbosity, jokes and exchanges, or even writing rhyming responses.

Given that the number of puzzles doubled this year, it was definitely more difficult for our hinters to become as familiar with the full set of puzzles. As the week went on, though, we had more options to copy and paste from other hinters’ responses - at one point, we even accidentally included a vestigial note to “look at column L” to a team that hadn’t shared their spreadsheet; even spookier was that the info they needed also happened to be in their column L as well.

Future

Will we do this again?

Undecided. We are in need of a long break to recover from all the sleep deprivation and hand pain. What happens after that is still up in the air.

What will happen to the current site?

Similar to last year, we will aim to make the site entirely static over the coming weeks. This will decrease the cost for us to run the site, but the site should look and feel the same as it does today. We hope that this, along with the unlock simulator, will help future puzzlers experience the hunt as closely as possible to when it was live.

Credits

As always, putting on a hunt like this takes a village. It would not have happened without a long roster of amazing puzzle/story writers, devs, artists, hinters, and test solvers. Thank you as well to various artists across the world and internet for providing beautiful clip art for our puzzles and site.

We are also thankful to the entire puzzle hunt community. Writing and publishing hunts is a labor of love. Not only are the hunts themselves memorable, challenging, thought-provoking, and entertaining, but they also give us a setting to get together with close friends for a few days of mentally stimulating fun.

A general note: If you would like us to change/remove the appearance of your name below, please let us know and we’re happy to fix it.

Writers

Akira Baruah
Alison Chang
Andy Chen
Anthony Hsu
Benji Nguyen
Bryce Cai
Caroline Zhou
Dan Simon
Darren Lee
Eli Chang
Joshua Chan
Kagami
Kevin Lin
Kris Brown
Max Chang
Melissa Yuan
Peter Vera
Pichusuperlover
Shuxin Zhan
Victor Chan
Violet Xiao
Yifei Luo

Head Editors

Benji Nguyen
Max Chang

Casual Track Editors

Alison Chang
Max Chang
Darren Lee

Devs

Akira Baruah
Anthony Hsu
Dan Simon
Peter Vera
Ryan Liu
Shuxin Zhan
Violet Xiao

Post Prod

Max Chang
Shuxin Zhan
Violet Xiao

Artists

Jamie Lai
Melissa Yuan
Peter Vera
Ryan Liu
Shuxin Zhan
Violet Xiao
Yifei Luo

Hint Staff

Alison Chang
Anthony Hsu
Benji Nguyen
Dan Simon
Darren Lee
Joshua Chan
Kevin Lin
Max Chang
Peter Vera
Pichusuperlover
Shuxin Zhan
Victor Chan
Violet Xiao

Story

Benji Nguyen

Whips

Alison Chang
Andy Chen
Max Chang

Test Solvers

Cameron Montag
Charlie Shen
Dennis Mou
InvalidD
Jamie Lai
Jeffrey C.
Joanna Sands
Jon Schneider
Joshua R. Wang
Ling-Ling Z.
Linus Hein
Mason Z.
Mel Shu
Nathan P
Paulina Davison
Russell Chou
Tim Miller
Yoojin Kim
…and most of our puzzle authors

For Fun

This section contains spoilers for various puzzle answers.

Funny Answers

PuzzleTeamGuess
Accept CookiesNot Bond GirlsMOREOREOS
Accept CookiesThe Puzzling ElvesCOOKIERUNKINGDOM
Huntinality 2.0.0.0.0.0.0(73 teams)RUNTIM
Authentic IdiocyDumb LuckHOWDOIDBSCANWITHOUTKONWINGHOWTOCODESADGE
Me Myself & I(7 teams)MAX
Me Myself & IM-ployer BenefitsDYNAMICCHICKENING
Me Myself & IYukiDYNAMICTHICKBEING
Beyond Good and EvilThe Blob WizardsGALACTICHACKER
CTO puzzles(18 teams)PLUMBING
Escape!(84 teams)PATIENCE
Tracking Numbersex-rocketsLIT
True FriendsDan CityTRUEFRIENDSWOULDGIVEUSFREEHINTSSMILE
Make Your Own PuzzlehuntInternet Ornate Hawk-eagleIMAGINEBEINGSTUCKONAREGULARXWORDCLUECOULDNTBEME
Fan o' PlanesrocketrocketrocketDEBTLORD
Brick's PasswordHuntinalityality (and Homies)sudopassword
Brick's PasswordHuntinalityality (and Homies)chmodpassword
Brick's PasswordThe C@r@line Syzygydo you also love money like scarlet
Brick's PasswordThe Flemish Giantswhatcss
Scarlet's Passwordplughi love morse
Scarlet's PasswordThe C@r@line Syzygycan't you remember this
Scarlet's PasswordTeam GoomblorILOVEMANGA
Scarlet's PasswordTech Startup Beckoning Investorsnomoney
Ruby's PasswordThe C@r@line Syzygyyou sound way too casual, this is metameta time
Dude Where's My Answer Checker?The real puzzle was the friends we made along the waytrade your wifi for marscoin
Dude Where's My Answer Checker?Earnest Jestercreate your own fortune machine
Dude Where's My Answer Checker?Networking Efficient SynergyGREASE YOUR WAYFORWARD MACHINE
Dude Where's My Answer Checker?The C@r@line Syzygywhy did you hire these birds

Beyond the answers, here are some assorted screenshots and quotes from our own hunt planning, hint requests, and feedback forms.

As always, if you are not comfortable with something quoted here, please let us know and we will remove it!

Huntinality Internal Discord

ali_hint_chat

discord_outage

Found in Email

email_plusemail_plus

move_on_with_life

Found in Hint Requests and Spreadsheets

All of Spin My Hovercraft's hint request were given in verse:

spin_my_hovercraft

Hint signoffs with this team has a lot of Zhangs on it

zhangzhang

nutrimatic_guessing

spreadsheet_art

sheet names

Memebird_logo

Accept Cookies:firelab_thank_you

Q&A with Eleqsa:q_and_a_with_eleqsa

Me, Myself, and I:me_myself_and_i

Wordlele:wordlelewordlele_hint

Magic Ear:double_hint

Ask A Ninja:

ask_a_ninja

Escape!:escape

Tracking Numbers:tracking_numbers_1tracking_numbers_2tracking_numbers_3

"True" Friends:true_friends

Cryptic Images:cryptic_images_1cryptic_images_2cryptic_images_3cryptic_images_4