Friday, April 02, 2021

The Easiest Boxes Prank....

I had an idea early in AQ's history. I no longer remember precisely when the idea first occurred to me, but it was probably within a few years of starting Atlas Quest: A way that AQ could measure your chance of finding a specific letterbox.

It was a real idea, but I never ran with it. I mentioned it to a few close friends over the years more as a curiosity--the ideas that never happened--but I deliberately never posted about the idea publicly since I was sure it would be controversial and why start a controversy if I had no intention of implementing it?

Rozebud and geckospot, shocked by the April Fools prank!

The idea appealed to me greatly on an intellectual level. I was curious how accurate I could make such a feature. Theoretically, it wouldn't be hard to run a statistical analysis on a box and determine how likely a specific person would be to find a given box. Depending on how many variables are checked for, the math can get a little ugly. From an intellectual standpoint, the problem ranked up there with the traveling salesman program. I wanted to do it for fun! =)

But I didn't. And not just because I thought it would be controversial. Anyone who's been on AQ for a bit knows I've pushed on with controversial features if I thought the benefits would outweigh the negatives. (Or, more likely, I didn't think the supposed negatives weren't as bad as people imagined they would be--and always knew I could undo a feature if I turned out to be gloriously wrong.)

Nope, the reason I never implemented it was that I never thought it would work. Atlas Quest is a small little website, a micro-site in the vastness of the Internet, and it doesn't have a lot of data about boxes. The average box only has a handful of finds, and is lucky to have more than a couple of attempts recorded. How could I accurately determine the "findability" of a box with such a small sample set? Unless hundreds of thousands of people started using AQ on a daily basis, there would probably never be enough data to make the necessary calculations that could be both accurate and reasonably precise.

So I never implemented it. It was a dead end not even worth trying.

Photo by thunderbird.

 Fast forward to earlier this week, and I needed an April Fools Day joke. I always have a few ideas in mind, and often times, I wind up choosing one based on how much time I have available to implement it. In this case, I had less than a week to throw something together.

And this old idea I had for a real feature, I felt, had some potential. I could finally implement my idea! Of course, it would never work, but that was okay--it was an April Fools joke, after all. It didn't have to work!

And a few days ago, I sat down and spent a couple of hours hacking out an algorithm for classifying boxes by "findability." It wasn't a complex algorithm. I just wanted something that, with a passing glace, appeared to be legit. So I used things like the status of the box, how many strikes it had, how long it had been since it was found, etc., to group boxes into easy, average, hard and impossible groups. Box is unavailable or retired? Impossible group! Box was active, planted yesterday and had no strikes? Easy!

Then I pulled up about a hundred listings to see how well the results turned out. It didn't have to be perfect--just something that didn't look totally random. 

But it turned out perfect. I was absolutely stunned looking through the boxes. Box after box, I mentally calculated where I would have classified it with the information available on AQ database, and my algorithm--box after box--put it in the exact same category. It was a little spooky.

And not funny. Not funny at all.... This wasn't an April Fool prank anymore. It was a real feature! Crap. The joke was on me!

The joke was also on Angel Winks
when she woke up in the morning, but I'll talk
about that later....

What to do? What to do?

Wassa--my right hand advisor for all things April Fools--suggested that I just sabotage the results and randomly throw boxes in various groups.

But I thought of another way to sabotage the results--make the different groups look and sound more-or-less the same. All of the categories would be some degree of "easy". And that's the road I started heading down.

There were several layers for this prank I had had in mind, and I wasn't sure I would have them all ready before April Fools, but that was okay. I'd just launch the joke with whatever I had completed. So the first step I did was just list results--calculated on the fly--on the box details page. That had been my proof of concept that went so terribly, terribly wrong.

The second layer was to show the results on a page of search results--so one could glance through a lot of boxes to identify the easiest finds. This took a lot more work on my part. I needed to calculate the groupings ahead of time and store them in the database to be looked up when needed. It could calculate the groupings for boxes one at a time fast enough, but a search results with hundreds of results... no, that would be too slow. They needed to be calculated ahead of time and stored in the database.

So I did that, got it all working.

I just love it when things just "work." =)
Photo by Travel'n Turtle

Powered by the database now, I could add additional layers of "functionality". I could let people run searches based on the box's findability. I could add a widget to calculate the "easiest" box to find within a certain area. 

The data in the database was actually very real, but the results AQ displayed were sometimes a little.... fake? Is that the right word? Yes, I think that's a good description of the situation.

For instance, the high degree of precision on the box details page (e.g. 99.8352% ±89.84%) were totally made up. I gave a ridiculous number of decimal points with a range so wide that it would be completely worthless. Although I needed to make sure the numbers for "incredibly easy" boxes would be higher than "super easy" boxes, and those would be higher than "very easy" boxes, which would be higher than the mere "easy" boxes. So I subtracted 10% of easiness every time the group went down a level. But the decimal points were pure random.

The widget to show the easiest box on AQ as well as one's home area was, perhaps, a bit misleading. AQ did divide boxes into 4 categories, but within a category, there was no ranking--so there was no "easiest" box to identify. Instead, I had it pick a box at random from the "incredibly easy" category. Wassa suggested that I modify it a bit and have it pick a box that people have attempted but never found just to mess with them. Excellent idea! Although I added an additional requirement that the box still needed to be active. So I tweaked the "home area" results to do that, which pleased me to no end when people pointed out on the message boards that it was sending them to boxes that they had already tried to find but that they "knew" they were missing. =)

Memere titled this photo "Late night antics."
Late night antics indeed.... =)

As far as jokes go, though, it was one of the dumber ones I've created. I really needed to "sell" the joke well, and that's what I spent all evening on March 31st working on: the Easiest Boxes on Atlas Quest post. I mixed a lot of fiction in with few actual facts, and tried to think of anything funny that I could add.

That list of factors used in the "complex calculations"... the first three entries in that list were actually real. The rest of them I spent the better part of an hour making up. It didn't matter if the idea was preposterous and impractical to implement even if I wanted to--if it sounded like it could have any effect at all on the chances of someone finding a box, I included it.

After finishing the text of the post--and there was a lot of text--I wanted some pictures to break it up and make it look pretty. What kind of photos did I have? Screenshots of the feature didn't seem like the right way to go with it. Ah ha! I know! A few months ago, I created a special photo album asking for photos that I could use on AQ. I should take a gander at those. That's what I created the album for, after all!

The gag, of course, was basically promising that every box you looked for would be "easy," so I focused on the images of people showing successful finds. There were a lot of good candidates, but I ended up choosing two photos from Angel Winks (here and here). And although I wasn't looking for it, I saw the inky fingers photo by Wise Wanderer and thought that would be a nice change from just people finding boxes.

And while adding that photo to the post, I got the idea to add a fake testimonial, which tied in nicely with the photo. Perfect! It looked awesome! =)

Mosaic Butterfly found the missing 'box!
For those of you who missed Mosaic Butterfly's fake
endorsement on AQ's home page, this was the photo I used.
I think it said something like "I can't believe it really works!"

I was a little concerned that--although they submitted the photos to the photo gallery for use on AQ--perhaps they might not like the idea of it being used with fake testimonials or implying an actual endorsement of the new feature on AQ, so I quickly wrote them AQ mail pulling them in on the joke. By this point, there were only a couple of hours until midnight when the prank would go live. Angel Winks lives a couple of timezones ahead of me--she could already be asleep and not even know I've used her photos until she wakes up in the morning! I crossed my fingers and hoped she'd be okay with it. It wasn't as late for Wise Wanderer, but it was still late. I felt pretty sure that they wouldn't mind my using the photos, but I was ready to remove them if they sent me irate messages in the morning telling them they did not approve of how I used them

After that was done, I realized that there was no announcement for anyone coming into AQ through the home page. I figured I should add a new section to announce the new feature, then headed back to the photo gallery to look for a photo that would fit well, and this photo hit the jackpot. =) Perfect! It needed another fake testimonial too. After getting that added, I hurriedly send Mosaic Butterfly a message to formally welcome her into the conspiracy as well. =)

And then.... By the time I was ready to say everything was done, I had about an hour to wait until midnight. So I killed some time watching YouTube videos and counting down the minutes.

Most of the features were set to automatically start working the second midnight struck, but a few items I had to manually set up. The new widget, for instance, I needed to run a line in the database to make sure it got added to everyone's My Page setup. But I also discovered that the theme was changing randomly! I had put that in to run on April 1st as a placeholder last December thinking I'd create some sort of theme for April Fools, but then I had forgotten to take it out when I ended up not creating a special theme for the day. Drats! So if any of you had been on AQ within a few minutes after midnight, you would have seen the theme change with every page load. If anyone noticed, they didn't post about it--for which I was thankful. =) 

On a related note, that random-theme them was the first April Fools joke I ever played on AQ, and I've used it a few other years the day after April Fools to mark the end of a joke. It wasn't supposed to run at all this year, though.

I had to check for gremlins in the night....
Photo by Super Hedge Hoggie

I poked around the website, trying all the features making sure they were all working correctly. I found a couple of issues if someone tried to access the new features but weren't logged into an account. Minor bugs in the code that were never found since I didn't create unit tests to check these changes. (I tend not to make unit tests for code that I know will only run for a single day and isn't particularly complicated.) So I spent several more minutes fixing bugs--but so far as I can tell, nobody found them before I was able to fix them.

After everything was all set and done, I watched a couple of more YouTube videos to kill some more time. I was dead tired but didn't dare to go sleep yet for a couple of reasons: (1) in case somebody discovered a bug, I wanted to fix it and (2) I wanted to see who would comment on the joke first and what they had to say. Lame? Great? Hilarious? Stupid?

But by 1:30am, I couldn't keep my eyelids open anymore and finally called it a night.

I slept in particularly late. After being up so late at night, I slept in late too. Time to check up on how the April Fools joke was going over....

And... it was okay. =) Not great, not bad, but okay.... More or less what I expected out of it.

What would everyone be doing while
I got some much needed rest? DrCAWatson
appeared to keep on boxing....

But there was still one last joke to play.... to announce that this feature is actually real! Not the version that ran on April Fools Day, of course. I deliberately sabotaged those results for that day. But the data in the database was actually pretty good data and I wanted to give it life. Seems like a waste just to throw it away. That hadn't been my intention when I first ran with this joke, but that's what it turned into!

So I've dismantled the fake widget and fake results. I've rename the categories into their proper descriptions of easy, average, hard and impossible. (To be fair, it's not so much a measure of how difficult the boxes are to find, but more about the likelihood about the chances of finding it. But "findability" seemed like a weird word to describe the feature, but maybe it's a better name for it?) 

And I know there are some people who would prefer not to see this information, so you really can remove the "difficulty" of a box from search results and box listings in your letterbox & search preferences. When I announced that on the message boards, it because that was real.

But I like the feature. Not so much for trying to decide whether I should look for a box or not, but it just gives me a sense of the likelihood of whether the box is there or not which I tend to do anyhow. The status isn't always accurate since listings are often abandoned, attempts aren't always accurate since they can be recorded on boxes that are still in place, and the length of time since the box has last been visited doesn't tell you anything about whether the box is still there or not. There's not really a perfect way to determine the viability of a box--but combining all those discrete pieces of data gives me a ballpark idea of what to expect without having to individually check all the discrete pieces of data manually. I like it. =)

It's the April Fool's Day prank that lived!

I'm pretty sure that even Essex Explorers's kids like
April Fools more than Christmas. (Right?)

And I'm going to explain exactly the algorithm AQ uses to determine which difficulty level to assign to a box. By knowing exactly how the algorithm works, you can decide for yourself if the results are something you might find useful. If they aren't, you can ignore the option in your preferences.

But I can imagine that some people might be upset if their box ends up being categorized as "hard" or "impossible" even though they checked up on the box just yesterday and it's perfectly fine. So knowing how the algorithm works also allows you to better manipulate how your own boxes show up.

So, here's how the calculations are made. Internally, the categories are stored as easy, average, hard or impossible, so four possible categories.

  1. All boxes start as easy.
  2. If the box has an unknown status, it'll be moved to average
  3. If the box has an unavailable or retired status, it'll be moved to impossible.
  4. If the box has one strike, it'll be downgraded to average. (If it's already at average or below, it will not be downgraded further.)
  5. If the box has two or three strikes, it'll be downgraded to hard. (If it's already at hard or impossible, it will not be downgraded further.)
  6. If the box has not been found for at least one year, it will be downgraded one level--but not down to impossible.
  7. If the box has not been found for at least five years, it will be downgraded an additional level--but not down to impossible.

And that's it. You'll find that a box can never be classified as "impossible" unless it has a status of unavailable or retired. That's the only thing that will move the box to the "impossible" category.

If I had to guess, the most controversial part of the algorithm is that I use the last found date at all to determine if a box is viable, but I figure even if a box IS still there after 5 years, it's okay to mark it as "hard" because after that much time, there's a good chance that significant landmarks could have changed if it's a long hike, and a significant chance it really did go missing if it were in an urban environment. So boxes without a find for at least 5 years will always be labeled as hard.

But... you also have indirect control over which category your boxes fall into. A maintenance visit, for instance, counts as a "find" as far as AQ is concerned, so you could just record a maintenance visit to remove the "old last found" penalty. Ideally, you'd go out in person to check the box and make sure the clues are up-to-date and fresh, but that's not a requirement. Recording a maintenance visit can also reset the strike count back to 0, which removes the strike penalty as well.

After that, the only thing left affecting the difficulty of the box is its status--which you, again, have full control over.

Anyhow, I hope some of you find the feature helpful. Not simply to decide which boxes to look for or giving you a ballpark idea of the likelihood that the box is findable, but even for which boxes of your own that, perhaps, you should check up on.

And hey! Have you enjoyed the photos on this blog post? Want to, perhaps, see your own photos used someday? Then be sure to submit them to the Letterboxing Photos for AQ gallery! That's where I grabbed all these photos from. (That photo album, I think, is the best idea I had all year!)

Happy trails!

You might think this is part of an April Fools Day joke, but you'd be wrong.
It's just another letterbox adventure for AdventurousAcorn. =)

Thursday, April 01, 2021

April Fools: A short history

Yes, it is that time of year again, as most of you quickly figured out, and once again, AQ could not go a year without some sort of shenanigans to celebrate the day. It's a yearly tradition that has been happening every year since 2006. That year, it was a small event, where random themes would be used every time you loaded a page. 

In 2007, it was another small prank--this time, introducing a slew of new icons. At the time, AQ still felt very new and people were constantly suggesting new icons. I included some of the real suggestions among the fake icons, but some of them were clearly ridiculous. It was meant more as a joke. I didn't think anyone would really believe that I would entertain the idea of adding such a massive number of icons. It would have been so unwieldy! People wouldn't even be able to remember what all of them meant! And a number of the icons were just so absurd. (Dinosaur crossing? Really?) Nobody would really think it was a real feature.

But many people did.... much to my surprise!

So the next year, in 2008, I came up with a ridiculous idea... but could sound somewhat plausible. I figured if the previous year's implausible idea fooled people, a plausible idea could fool a lot of people!

So I pondered the most horrible thing that could happen to letterboxing--the stuff that would give people nightmares if it were true. What if... AQ joined forces with McDonald's to promote letterboxing as a fun and healthy activity for children?

I'd create a McDonald's-based theme and make a grand announcement. That was it. Relatively simple and easy. I swung the idea by Wassa for his thoughts. Even then, I knew he was a gold mine of ideas when it came to pranks. And he did not approve of the idea at all! "No," he told me, "this is definitely not acceptable. It must be bigger! Much bigger!"

Then he followed up with: "We can do much better."

We...? Somehow, I lost control of my own April Fools joke. I didn't have time to work on anything more extensive, but Wassa said not to worry about it--he'd take care of everything. As if that was going to put my unease at rest.... *shaking head*

I knew a little about what was he was up to. He needed my help to create a system that would automatically create hundreds or even thousands of new McAccounts to sell the illusion that McDonalds was promoting letterboxing and thousands of new members were joining. 

He created the McBoxer alias--supposedly a marketing director at McDonald's headquarters months ahead of time to seed the story, built up McBoxer's bona-fides on the message boards and found willing helpers to record real plants in boxes near McDonald's headquarters.

The only known photo of McBoxer.
He does look a little shady....
I'm not sure why anyone would have trusted him.

He found help to create an entirely new McLetterboxing website, which I knew about because I bought the domain name and added space on the server for the site--and the site even included an actual letterboxing-themed happy meal. He found I don't know how many people before the Big Day to post to the message boards, saying that they went into McDonald's to see for themselves if the story was true and posting about their (positive) results.

The amount of hours and preparation that went into this joke was vast. I knew Wassa was a wonderful source of ideas, but I was truly scared at the size of his ideas.

And then the Big Day arrived. April Fools. I had automated the announcement to post automatically on the home page because I was on a thru-hike and far from civilization. Eventually, I saw some of the posts when another hiker lent me his smart phone to read some of the message boards, but I wouldn't read the entire day's posts until I made it to the next trail town a couple of days later. (To this date, April 1, 2008 still ranks as the busiest day of posting ever on AQ.) But for the most part, I was basically MIA for the Biggest and Most Awesome April Fools prank ever played on AQ.

I didn't realize it at the time, but Wassa was also missing the fruits of his creation. It was on this date when he picked up his new dog, Lucy, and he spend a good portion of the day just driving to Livermore and back. He was a little disappointed miss the unfolding of his epic creation. But it's a little ironic: I, who initially conceived of the idea and certainly played an important role as well as Wassa that super-charged the idea into letterboxing history, were both missing the actual fireworks.

Wassa largely missed the unfolding of his greatest
AQ prank to pick up this cute little dog, Lucy.

There have been many more gags and pranks over the years, some better than others, but none of them really matched the epic heights that McBoxer pulled off--and likely never will again. We've batted around ideas for such epic pranks, but now everyone expects there to be shenanigans, and immediately post reminders of the fact. Sometime people even post a day or two early pondering what might be in store for April Fools. We can't really pull anything big off anymore because y'all are watching too closely and too suspicious of us. So the gags now tend to be more amusing in nature. Inside jokes, ridiculous features, or whatever. If some people fall for it--awesome! If absolutely nobody does.... well, I hope they got a laugh out of it anyhow. =)

Anyhow, Wassa emailed me that Lucy--the dog that entered his life during the Great McLetterboxing prank, had been suffering from health problems and had to be put down yesterday. So Wassa spent part of the afternoon yesterday scrolling through the old McLetterboxing posts, reliving the day he picked up Lucy. And marveled that not only did that joke work so well, but that is was probably improved by not having him around to respond or react as much. So in her own special way, Lucy contributed to the Great McLetterboxing April Fools Day prank. Thanks, Lucy! Rest in peace!

This post is long enough as it is, so I'll post tomorrow about the details of this year's April Fools prank which has its own interesting and unusual plot twists.... 

Thanks for the assist, Lucy! =)