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! =)
|
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.
- All boxes start as easy.
- If the box has an unknown status, it'll be moved to average.
- If the box has an unavailable or retired status, it'll be moved to impossible.
- 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.)
- 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.)
- If the box has not been found for at least one year, it will be downgraded one level--but not down to impossible.
- 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. =)
|