Wednesday, June 24, 2009

AQ Turns Five; Stops Sucking Thumb

If you haven't been able to tell from the theme, it's another AQ birthday, turning five years old today. Last year, I had this idea to buy another domain name and put the original version of Atlas Quest up so everyone could see how much it has changed and grown over the years. Alas, I never got around to it. Seems like there are always more important things to be working on. Maybe next year? Maybe for when it turns 10 years old? Gotta love those zeros at the end of numbers.

Five years ago today, I bought the domain name atlasquest.com and started setting up the account and copying files over, turning the site live. I remember the day well. It was the first time I ever bought a domain name, and it was rather exhilarating. I always thought it would be fun to have my own domain name to play with, but never had any compelling information to put on it so never did.

The site was "feature complete" for about a week or two before I bought the domain name. I spent the time testing the website, letting a handful of close friends take a peek at it before making it live, and debating what domain name to buy. At the time, I was happily unemployed and had absolutely no income, which was why I waited until June 24th to actually take action. That's when a "new month" would start, and I could wait nearly two month to pay off the bill without incurring any interest or penalties. =) If I brought the site live just a day earlier, I'd have only had a one month grace period before the bill came due.

The 24th is burned into my brain for another reason. Since that was the date I started Atlas Quest, it was a convenient date to run monthly backups. There are some tables in the database that almost never change (such as the names of all the cities in the world), so it didn't make sense to save those tables every night. What a waste of space and computing power. So I ran them monthly. Full backups, once each month. Atlas Quest would also check for certain inconsistencies in the database and fix them. And it would compress the data to fill in all those gaps when data was deleted. AQ was pretty busy every month on the night of the 24th doing all sorts of things that never happened at any other time of the month.

There still are some activities that AQ runs on the 24th of every month, but it's a bit more spread out now. Full backups are now run weekly. Space for the database to run isn't nearly as restricted now as it was in that first year when Atlas Quest ran on a shared hosting provider.

When Atlas Quest first went live, I never expected it to become what it has. I imagined a little site with a really cool location-based search, and since I absolutely loathed the Yahoo Groups, figured I might someday add some message boards. (AQ 1.0 had no message boards at all.) But I was running out money, living off of my live savings, and needed to think about getting a real job that paid real money. I wanted Atlas Quest to be my foot in the door. "Yes, I do have a sample of my work. Check it out!" Keep in mind, I had been unemployed for about 2 1/2 years at this point--a rather large hole in my otherwise flawless resume! ;o) I felt like I needed something to compensate for that and impress the pants off of a potential employer.

Later that same year, Atlas Quest continued to grow. Since the site was hosted on a shared server, e-mails from AQ bounced like crazy whenever the IP address was banned for being a source of spam. (I didn't send any, but other websites on the same server apparently were.) So I created the AQ mail system to get away from the bouncing e-mail.

I also implemented the first, rather primitive version of the message boards. And finally, created the Trip Planner, another innovative method of searching for boxes to serve my own selfish needs: An easier way to find listings for boxes on some of my road trips. =)

And, just before the end of the year, I made a huge decision. I set up a system for premium membership. Atlas Quest was growing remarkably quickly, and I was scared my web hosting provider would eventually boot me off for 'abusing' resources. I could afford to run Atlas Quest out of my own pocket with a shared hosting provider, but I certainly couldn't afford to run it on a dedicated server that looked like it would cost somewhere north of $100/month for even the cheapest plan. That's a lot of money when you're unemployed! Heck, even if I were employed, I didn't really want to be spending that kind of money on a hobby website! =)

So I set up the premium membership as an option, hoping it would at least cover the cost of a dedicated server if it ever came to that. One of the main perks it had was the ability to record finds on unlisted boxes--something I never considered a critical feature for letterboxing, but something a lot of people were requesting.

Within an hour of uploading the premium membership option, two people had signed up for premium membership at $15/year. I called up my mom, telling her--she was skeptical anyone would ever sign up for a "premium" membership--and I told her, "Guess what?! I have two, count 'em--TWO premium membership! Thirty bucks!" (I didn't mention to deduct the PayPal fee from the $30.)

And my mom was shocked. SHOCKED! Her exact words were, "What IDIOT would give you money for your website?" =)

I still tease her about that, calling her up again when the 100th premium member signed up. "Guess what?! There are now one hundred IDIOTS who've given me money for my website!" =)

(I use the term "idiot" with the greatest of affection here. Honestly, I think the relatively cheap price of a premium membership is well-worth the amount of fun and enjoyment the site provides for regular visitors.)

And a wonderful thing happened--the site started earning enough money to pay for a dedicated server. So shortly before AQ's first birthday, I started shopping around for an improved web hosting experience. There were two issues I wanted to focus on: One, getting AQ off of a shared server, and two, using a web host that had excellent support options.

I wanted to get AQ off of the shared server so e-mails would be more reliable, DOS attacks against other websites on the same server no longer affected AQ, improved security, and a whole bunch of other reasons.

And when I had a problem or something didn't seem to be working as expected, my experiece with their customer support was terrible! If there was a problem, I wanted someone hosting my website that would hop on the problems in minutes and 24/7, not "within 24 hours" or during "normal office hours."

And while looking for the ideal host, I discovered a magical thing called VPS. Virtual Private Servers. Not really a shared server in the traditional sense, but not quite a dedicated server either. It was sort of this middle ground, nearly as cheap as many shared hosting providers, but with all the benefits of a dedicated server. It was a "virtual" dedicated server.

To make a long story short, I upgraded to a VPS. The cost of running the website went from about $10/month up to $45/month overnight. Which was FAR less than I had been expecting of even the cheapest dedicated servers. (I've upgraded the VPS a couple of times since then, so it's costing more now, but Atlas Quest to this day is still running on a VPS. Someday, I might have to upgrade to a dedicated server, but that could still be years away!)

So I found myself in an unexpected situation: Atlas Quest was profitable! =) I was planning on spending anywhere from $200-$300 per month on a quality dedicated server, set up a premium membership to pay for it, then it turns out I'm paying $45/month for a hosting service that precisely met my needs. Depending on the number of premium members signing up in any given month, I would be profiting anywhere from $150 to $250 in most months.

Okay, that's not a lot of money, but when you've been unemployed for 3 1/2 years (at this point), it sounds like a fortune! Which was the first time I started wondering, "Could I actually make a living off of this website?" I was still living primarily off of my life savings, but at least my life savings wasn't being depleated at the same rapid rate that it had been before.

The next couple of years, I kind of felt like I was somewhat in a race. Could I earn enough to live off of before I ran out of my live savings? I actually did apply for a couple of part time jobs, hoping to suppliment the earnings from Atlas Quest enough to make an actual liveable wage, but alas, nothing happened of them. (Even REI turned me down. ME?! After thru-hiking the Appalachian Trail, they didn't think I was up to snuff? The losers. *shaking head*)

It wasn't until 2007 that Atlas Quest finally earned enough that, for the first time in 6 years, I was able to pay all my expenses without having to dip into my savings. My earnings were still below minimum wage given all the hours I put into the site, but I was happy. I no longer needed to worry about finding another job. I had somehow changed from being unemployed into being self-employed. I may not get paid much, but I felt like I more than made up for it in the joy of working at a job I loved to do. =)

Last year, I started funding my retirement accounts again. (Not sure why--now I don't even want to retire!) And perhaps there's a better, more-fullfilling job out there somewhere, but I'm not aware of it. I feel like I'm the luckiest person in the world to have somehow stumbled into this job.

Five years later, and it seems like I should do something particularly special for Atlas Quest on this birthday. I thought about having a "Free Listing WEEK!" Maybe keep up the balloons and confettii for several days instead of the usual one.

Except that I'm in the middle of a major upgrade (mostly under the hood type of stuff--you won't be seeing major changes to the public interface), and I don't really want to make any changes to the live site right now in fear I'll break something. But then I remembered.....

I keep forgetting about Free Listing Day. There's a small piece of code that lists which days of the year is Free Listing Day. I keep forgetting about it, and never update the file. For those who were on the ball, you would have noticed a Free Listing Day last May 8th, also known as Cranmere Day. But I forgot to announce it.... And today, AQ's birthday is a Free Listing Day, but again, I forgot to announce it--until now. =) (A little late in the day for most people, I would image.)

Free Listing Day started as a way of saying thank you to all those people who support Atlas Quest in something other than monitary ways. I know there are times when money is tight--I've been there, done that. Given the economy of today, there are likely a number of folks who can no longer afford a premium membership even if they wanted to.

Perhaps you've help other members with their questions on the message boards, or suggested improvements that have made Atlas Quest website a better place to be, or have acted as a comic relief when things get tense. There are many ways to support Atlas Quest beyond becoming premium members, and the Free Listing Day was started as a way of saying thank you to those people.

But now, I keep forgetting to say thank you and have forgotten to announce the last two Free Listing Days completely. *slapping self* So, I'm tweaking the way Free Listing Day works in the future. From now on, they will be more often and predictable. There will be at least one Free Listing Day each month. And (for the time being, at least), it will be on the 24th of every month. I'm thinking it might be fun to make the day each month selected at random so it's more of a surprise when you do see it, but for now it's set up to run on the 24th of every month. (And remember, AQ runs on Pacific time, so remember about time zones if you aren't in this timezone. It's the 24th of each month, Pacific time.)

So enjoy some of the perks of premium membership one day each month, even if you can't afford it. You deserve it. =)

Saturday, June 13, 2009

Subterfuge, Deception, and Lots of Fun!

I attended the Spy vs. Spy event this afternoon. The description for the event includes: You are a spy. You steal. You lie. You cheat. You live in the shadows. You sleep in "safe houses". You do all of this in the name of the country that pays you the most. You are dishonorable. You have no alliances.

That sounded like fun. Serious fun. And a little while later, I got an e-mail from Doublesaj asking if Amanda and I would be interested in joining her and John as Team Chuck. Chuck, being the geeky inadvertent spy from the Chuck TV series. I can identify with Chuck, so a team was formed.

Doublesaj says she invited us into her team because she knew we'd be competitive. We'd take the spy thing seriously. We'd play to win.

We didn't want to disappoint. Given the nature of the event, sabotage was the first thought that came to my mind, but alas, the few rules that were established said we were not allowed to remove or move letterboxes to other locations. Just as well, I suppose, since otherwise other teams would have done that to us. But surely we could work out a couple of sneaky little tricks to put ourselves ahead and/or put other teams further behind. But how?

We came up with numerous scenarios, most of which my teammates blame on me. Hmm.... Okay, admittedly, I might have been the most intrigued with how to follow the letter of rules while enthusaisticly breaking the spirit of the rules. =) We were spies. It was expected.

The e-mails we got about the event included interesting pieces of information about Slick Kitty, who hosted the event. She likes the color purple. She likes Dr. Pepper. She likes diamonds, and chocolate-covered strawberries with almonds. So we found potential bribes. We had a purple visor, Dr. Pepper (both soda and Jelly Bellies). We had bribes. We weren't sure what we would use them for, but we wanted to be prepared. Better to have it and not need it than to need it and not have it. We were spies. Bribes were not above us.

We also needed to know the lay of the land. We headed out to the park the day before, and scouted out the area. Learned the trails, identified likely landmarks that might be used in clues, and... hey, we were in the area.... we looked for boxes. We didn't have any clues, but I never saw a rule that said we couldn't try looking for them anyhow. We did find one of the boxes that afternoon, the codebook, giving us an official head start.

And despite looking for these boxes with an enemy combatent (Princess Lea was with us), we managed to keep the secret of the codebook from her. There were 18 boxes in total, but 4 were the critical ones we needed to win the game, and we already knew the location of one of them.

But our big idea, the one to really get us ahead of the game, was to create decoy boxes. We couldn't do anything to the real boxes, but what if someone found what they thought was the real box? They'd log into that and move on, not knowing that they'd been had until it was too late.

So the night before, I secretely created a few extra boxes to use as decoys. I made logbooks, I carved stamps, and I created decoys.

The decoys actually served two purposes. The first and primary purpose was to get teams to overlook the real boxes hidden just behind the decoys. The second, in the event that the decoy did not fool a team, it would still slow down the other teams. As every letterboxer knows, when a letterboxer finds a letterbox, you HAVE to stamp in. It's ingrained in our culture. It cannot be avoided, so in a worst-case scenario, at least the decoys would slow other teams down as they stopped long enough to stamp into both boxes, and perhaps cause a great deal of confusion when they found two boxes rather than one.

We also considered how to improve our stamp-in time. I carved a team stamp the night before so we could just stamp in with one stamp rather than each of our signature stamps, and we used an ink pad rather than our usual markers since we could stamp with an ink pad faster than markers.

The morning of the event, before the event started, we got there early enough to plant the first decoy for the codebook since we already knew where that box was. Then we had another hour before the event was officially to begin, so we continued looking for additional boxes early.

We found two more--Sherlock Holmes and the Disguise. The Disguise was one of the four that we needed to get to win. Sweet! Sherlock was nice to know about, but wasn't critical to winning the game. At least that meant we didn't have to waste time "finding" it later. We were incredibly lucky that of the three boxes we found before the event actually started, two of them were the critical ones we needed. We planted another decoy box with the Disguise.

We also had another incredibly lucky stroke of luck--there was a mole we needed to find, and as it turned out, John was the mole. He let us in on this secret that morning, and another diobolical plot was hatched. We didn't want others to find the mole--he needed to be found to win the game as well. People were to tell John a phrase, and if they were correct, he would give them the last of the five stamps necessary to win the game. We needed to make sure nobody else got his stamp.

So we implemented a 'defense.' Whenever we saw another group, John would hang back so if someone tried to guess the secret phrase, they'd ask one of us first. And we'd give them a stamp! Once they thought they had the mole stamp, they'd stop asking around and never get around to John....

Some would say we cheated, but that seems a little extreme. We were spies, after all, expected to be "dishonorable." Other teams should be doing the same, and we racked our brains trying to think of ways that other teams might trick us! We worried most about wassamatta_u. We knew that of everyone involved, he would be the most dishonorable lout of them all. But we were pretty pleased with our advanced preparations.

The event started. Slick Kitty interrogated most of the teams, including us, and she seemed to focus on John and myself as being most likely to be the mole. We pointed to Amanda, describing her recent travels to Amsterdam and Dublin, but Kitty would have none of it. Sweet little Amanda? (That's what makes her such a good spy!) Yes, as spies, we'd even throw each other under the bus. =)

The game was now afoot, and we finally had the official clues to all of the boxes. We worked out the codes in them, then started off to find the ones we hadn't already found. We were amazingly quick and efficient, and our incredible luck finding just the boxes that were necessary to win the game kept coming up surprisingly often. One of the needed stamps was held by Sherlock Holmes, a character walking around who quizzed us about the character. We couldn't exactly hide a decoy on the person, we went went with plan B and planted the box with another nearby box that wasn't necessary to find--just to slow down other teams who needed to log into two boxes instead of one.

After we got the last box, we thought we were home free. We just needed to check in and we had it bagged. Until we crossed paths with the Salad Tongs. They accused us of being Russian spies, and--most horribly--they were right. We were employed by the Russians and having been caught, we were to be branded traitors and hung. Do not pass go, do not collect $200.

But we were spies. We wouldn't go out without a struggle. We offered gifts, some people might call them bribes, but 'gifts' sounds nicer. Most of the gifts were the bribes we brought for Slick Kitty. Now we had more important things on mind--saving our necks. We bribed their kids. I offered some hand-carved Tortuga stamps. We squirmed. We begged. There may have even been tears.

They made out like bandits, but they finally agreed to let us go. We checked in, officially winning the game, at which point we admitted to our deceptive, nefarious ways to get so far ahead.

Because, quite literally, we could not have won without the clemency granted by the Salad Tongs, we gave them a trophy we won in appreciation. They helped us win, after all (though admittedly, if it wasn't for them, we wouldn't have been in such trouble in the first place!)

We ate, we laughed, I warned others about the decoys we had set out so people could find the real boxes now that time was no longer of the essence. Eventually, we headed out again to find the rest of the boxes that we hadn't found yet--those that weren't necessary to win the game, and we picked up the decoys we had planted earlier now that they were no longer necessary.

The decoys did work, too! The codebook decoy had two teams that stamped in, but did not stamp into the real codebook box. The disguise decoy had three teams that stamped in, but only one of them found the real box when we finally pulled the decoy. Several people logged into the key decoy, though one person wrote, "Ryan, you evil bastard!"--so I don't think that decoy fooled him. ;o) I did see how many people logged into that decoy, but I didn't check how many of them logged into the real box. Of the three, it was the least effective decoy given the hiding spot involved. The passport decoy wasn't much of a decoy since we hid it with a different, unrelated box, but several people did sign in so we know it did work to slow other teams down at the very least. Mission accomplished! =)

Speaking of those decoy boxes.... I've listed them on AQ for those who found them and want to record the find. (They are real letterboxes, with stamps, a logbook, and even clues to follow--though admittedly, the clues were poached. Being spies, however, we felt it was okay in this particular instance.) If you aren't sure if you found the decoy or real box, the decoy stamps didn't actually fit into the box of the official stamp-in sheet since we didn't know the correct sizes of the stamps ahead of time. If your stamp didn't fit the space for them correctly (either too small, too large, or the wrong ratio for the dimensions), it's a decoy.

There are some members of my team who would rather not have me reveal our diabolical methods to win the game. I'm telling you them for two reasons. One, I live in Seattle and there's a good chance I wouldn't make it to subsequent events. And two, the next time there is such an event, I wanted to encourage more subterfuge and deception among the teams. =) More paranoia. More backstabbing. More fun! To make it harder to fool people with decoys next time, and perhaps to get a few new rules added to the game next year. (It's always cool when you know there's a new rule--only because of your evil ideas.) Though I kind of hope that decoys aren't forbidden in the future. That was fun, and it would have been very interesting to see how things would have played out if several teams were out planting decoys. I tell you--we were extra careful looking for additional boxes behind the first ones we found and making sure we found the real box... just in case another team was planting decoys as well, we didn't want to fall for our own trick!

What a great time we had, though! Thanks Slick Kitty for putting the event on, even if we did stretch the rules to the fullest extent that we could get away with. But hey, we're spies. We never claimed to be honorable. ;o)