Tuesday, December 27, 2011

Looking Forward....

What ideas are floating through my head regarding AQ next year? Actually, I don't really have many. Oh, there's a long list of things I want to do, but I don't really know which features I'll work on next usually until I actually decide to start working on them. The photo gallery really needs a complete re-do from the ground up. That would be a major undertaking, and I'd want to make sure I have at least several months available before I start to tackle that beast. There are some tutorials I'd like to create. I'm always creating new themes, but I couldn't tell you which ones I'm most likely to do. (Well, the state themes I've already committed to, but beyond that, I have ideas... but no idea which ones I'll actually use.)

I also want to start creating more LTCs. Those LTCs many of you send in for the Majorie's Potpourri are quite inspirational, and I want to do stuff like that! Maybe 2012 will be the year I get down and start being more creative. =)

I also have it in my head that I want to develop http://www.atlasquest.mobi into a mobile-specific website. I've played around with it a little on my develop machine already, but largely abandoned my efforts when Aiphid created Box Radar. Suddenly, I'm getting no requests at all for mobile apps anymore. =) But I find the idea an intellectual challenge and an intriguing one at that, so I find myself still wanting to pursue it. Additionally, I like the idea of limiting myself to the public AQ API that those Android and iPhone apps use. I kind of feel like I neglect that API too much because I don't actually use it myself. My motivation increases dramatically when I use a feature myself! =) It would be an excellent way to test my own API and get a user's point of view for it. So perhaps I'll run with that feature in 2012.

Or perhaps not? Like I said, I don't really know. I tend to work on whatever hits me as most interesting, or best use of my time, or whatever floats my boat. I'll finish a major upgrade, then I scroll through old, bookmarked posts with suggestions and work on those for awhile. They're usually relatively quick and easy changes--and after a couple of weeks of this, I'll settle on the next "big thing" I want to work on and start working.

And perhaps I'll wind up building a feature I haven't even thought of us. Or I'll finally figure out a solution to a problem that prevents me from implementing a feature I really want. (That whole custom location feature I've wanted for years but couldn't figure out how to pull off until this year!)

One thing I know will happen--the number of regression tests for Atlas Quest will increase substantially! But that's not something you'll see directly. =)

One other thing I know: I'll be in Northern California on May 20th, from 6:26 PM through 6:31 PM. Which is actually something of a surprise to me--when I woke up this morning, I assumed I'd be somewhere in Northern Spain during that time. =) Yep, for those five minutes, I'll do just about everything in my power to be there in Northern California.

In an annular eclipse, the moon doesn't quite cover the
entire surface of the sun so you wind up with a
"ring of fire."
I learned just this afternoon that there's an annular eclipse that runs directly through Northern California, which is a relatively easy place for me to travel to (as long as I'm not in Northern Spain!). Annular eclipses are pretty darned awesome and an extremely rare astronomical event, and they follow a very narrow path only a few hundred miles wide. Check out the entire eclipse path at http://eclipse.gsfc.nasa.gov/SEgoogle/SEgoogle2001/SE2012May20Agoogle.html. Most of you in Nevada will also be able to watch it, along with a large portion of Utah and New Mexico. I've already listed an event for anyone who wants to join me for this amazing astronomical spectacle. I'm still trying to work out an exact viewing location, but I'll likely be within an hour's drive of Redding, CA. =)

But what's an annular eclipse? It's a lot like a total solar eclipse.... except that the moon isn't quite big enough to completely cover the sun. Due to the slightly elliptical orbits of the moon around the earth and the earth around the sun, their apparent sizes change slightly. Sometimes the moon can completely cover the surface of the sun--a total solar eclipse--but when it doesn't, it's an annular eclipse and you'll see a ring of fire completely encircling the moon. Amanda and I saw one in Panama several years ago and it was absolutely spectacular! Well worth a view if you live anywhere near the eclipse path! *nodding* The next annular eclipse in the United States doesn't happen until 2023 so if you miss this one, you'll have quite a wait to see the next one. (Full disclosure: There actually is a total solar eclipse that cuts through the US from coast to coast in 2017, but your next opportunity to see a "ring of fire" around the moon won't be until 2023.)

If you want to watch a transit of Venus,
do it on June 5th. Your next opportunity to
measure the size of the solar system
doesn't come until 2117!
There's another rare astronomical event happening on June 5th--Venus transits across the sun for the last time in over a hundred years. If you miss this transit, you'll never see another one in your lifetime. The Venus transit across the sun actually has some historical significance--measuring the time it took Venus to cross the sun's surface was the first time scientists were able to calculate the size of our solar system. For many years they knew the relative ratios of the distance from the earth to each of the planets--but they didn't know the absolute distances. To be honest, I'm not exactly sure how measuring the time that Venus transits the sun can be used to calculate the size of the solar system, but I still think it's pretty darned cool! On a side note, if you want to tell your friends that you helped measure the size of the ENTIRE SOLAR SYSTEM, they're apparently making an app to do that. =)

So you can be pretty certain I'll be looking at the sun during this time, but where I view it from is a lot more flexible than the annular eclipse. In fact, I'll probably just walk out on our deck to watch it. =) To view the entire transit, though, I might make an effort to go up to Alaska. (It's either that or fly to China, Japan, Australia, or New Zealand, but those are more difficult and expensive for me to travel to!)

I want to see these two astronomical events so bad that I decided to postpone my Camino de Santiago thru-hike until the autumn instead of doing it in the spring like I originally intended. =) Neither of these events would be visible from Spain! I plan to take two or three months hiking through France, Spain, and (maybe) Portugal, undoubtedly an epic adventure that you'll be reading all about on Another Long Walk. =) Which really has absolutely nothing to due with Atlas Quest, but fortunately all of the lodging and churches along the way each of their own stamps so I'll still be doing plenty of stamping along the way. =) And probably plant a few boxes as well....

Speaking of the camino, a.k.a. The Way of St. James, there's a movie out in theaters now called The Way starring Martin Sheen and Emilio Estevez. Martin Sheen hikes the camino, carrying the ashes of his son (played by Emilio Estevez before he becomes ashes!). It was filmed on location on the very trail I intend to hike--and it's a very entertaining film to boot. I'm not saying that just because I intend to hike the trail! =) This film didn't give me the idea to hike the trail--I first got the idea to hike the trail from reading The Journey in Between by Keith Foskett, a hiker I met while thru-hiking the PCT. (I'm still waiting to get the PCT book he's in the process of writing!)

So those are some of the things I'm looking forward to in 2012. More features and improvements to AQ--even though I don't know which features I'll actually implement as of yet. And two rare astronomical events, and a thru-hike in Europe. Yep, 2012 is looking good!

Share your plans for 2012 in the comments! =)

Monday, December 26, 2011

Reflecting Back and Looking Ahead

While 2011 may not officially be done just yet, it's safe to say that the bulk of it is. =)  And it's that time of year to reflect back on the past year and start looking ahead to next year. I'm not one to make New Year's Resolutions (unless "surviving through the end of the year" counts as a resolution), but it doesn't mean I have no ideas about what I'll be doing in the upcoming year. =)

But first, looking back on AQ, I see three major accomplishments and improvements that I'm absolutely thrilled about. The first and most difficult was figuring out a solution to how people could list custom locations for letterboxes. In the end, I spent months developing that feature, and improved numerous additional features that the changes touched. The geocoders were upgraded and improved, trip planner searches, area searches, linear searches and rectangular searches were expanded to work with events, blogs, and and even virtuals. The trip planner was updated to support much more detailed route information--a significant improvement, albeit an incomplete one. Maps showing the coordinates used now showed up, and listing custom locations that geocoders can't find was significantly improved. And even after I got the custom locations feature up and running, I then had to go in and carefully remove all of the old code that AQ used to use.

But darn it, the update worked, and life was good. =)

I did run into numerous problems, and some of the updates broke stuff that--frankly--should never have broken. And they wouldn't have broken had I run regression tests on them. Without getting too technical, regression tests are simply a way to have a computer automatically run a bunch of tests on the website to check that everything still works as expected whenever I make a change. Many times, a tweak in one part of the code can break something in a completely different (and forgotten) section of code.

And that became my second great update for 2011: regression tests. I started with nothing, but built up a test scaffolding that could check AQ for thousands of different problems with the click of a button. After a a couple of months, I had several hundred tests up and working--and surprisingly, it even caught some bugs that had been on AQ since day one!

This was largely a silent update, though. None of you will ever see this code in action--it's strictly for myself. The benefit to you is two-fold, however. First, I'm less likely to break stuff when I upload changes. Secondly, I can spend less time debugging problems and more time working on new feature or improving existing ones. =)

As of today, there are nearly 2,000 regression tests that I can run with the click of a mouse button on my development machine. For a website as large and complicated as Atlas Quest, it's really nowhere near enough. I'd prefer to have over 10,000 regression tests. Perhaps 100,000 tests could really put AQ through its paces, but for now, there are nearly 2,000.

I don't sit down and develop regression tests anymore. Well, I do still create them, but I create new ones when I'm developing a new feature or editing an existing feature. Whenever a bug is reported and found, I create a regression test that can check for that problem in the future, fix the bug, and make sure the regression test passes. So the number of regression tests continue to grow quickly, but that's in conjunction with whatever feature I'm working on at the time. When I first started creating them, I sat down and merely started creating them to have a base to start with. As I develop and improve features, though, I flesh them out more.

And the last big project I tackled was a dramatic improvement of the Trip Planner. What is available today is something I've wanted to create for years, but the time and effort involved with such a massive update never seemed worth it. A little bit ironically, what made the effort worth it this time was due to my first big project of the year: custom locations.

When I developed custom locations, it completely and utterly broke the existing trip planner. And while the trip planner certainly had its flaws, it was also a very popular option for people. I considered chugging the trip planner completely rather than spend the effort to rewrite it to work with the new changes, but I knew that would put me in the doghouse with a lot of people. It might be a lot of work, but rewriting the trip planner to work with the new geocoders and custom locations was a must.

Knowing where I've always wanted to take the trip planner, however, I made sure to design it in such a way that eventually I could extend it to fill my original idea for the feature. So during the creation of custom locations, I laid the foundation for what would later become the trip planner of today.

Fast forward a few months and now I look at what it would take to create the trip planner of my dreams, and it no longer seemed so far out of reach anymore. There was still an enormous amount of work to do, but I already already laid down a solid foundation to build from. I wouldn't have to start from scratch like I would have had to do before the custom location feature. The awesomeness of the feature was now worth the effort required to create it.

And create it I did. Along with over 500 regression tests for the trip planner that I can use to make sure whenever I make a tweak, I don't break anything. Some bugs did slip through, but considering the thousands of lines of new code I created, it was one of the most successful updates ever with very little downtime or problems. Previous updates of this magnitude, I'd dedicate two or three days for nothing but fixing bugs. This time around, only five bugs were found during that timespan. Unprecedented!

There were hundreds of smaller updates throughout the year. I started the state themes, one new state theme each month. I fixed typos, updated the layouts of many pages, replaced the weather widget, upgraded the server software, improved slow queries to help keep the website running fast, and so forth. But when I look back, it's those "big three" features I'm most proud of. They weren't easy or quick--in fact, part of the reason I enjoyed working on them so much was because they were a challenge and made me think. =) Admittedly, a lot of the smaller and less technical changes I kind of find boring and monotonous. I really do thrive on building features that are an intellectual challenge for me!

And each of the new features, I feel, took AQ to a whole new level. More reliable, more stable, and easier than ever to sort through the tens of thousands of letterboxes listed on AQ for those handful that matter most to each individual.

I didn't mean for this post to get so long..... I'll save my "looking ahead" thoughts for tomorrow! =) Feel free to share your favorite updates from the year in the comments!

Wednesday, December 21, 2011

'Twas the Week Before Christmas.....

I feel like posting. I don't really have anything to say, however, so if your time is limited, keep moving along. Don't read this post. =) Really, no joke--there's nothing important here. No new news, no exciting developments. Just some musings and stuff I've been working on lately, but it's stuff you really don't have to concern yourself about.

This morning I've spent tweaking the radius of several dozen locations on Atlas Quest. I got a report that a box listed in Sedona, Arizona, wasn't showing up as expected. Most of the time I get reports like this, I tend to roll my eyes. Nine times out of ten, it's because there's a problem with the search. The person is hiding their plants and finds, for instance. Or they had inadvertently clicked the "ignore" button on the box and didn't realize it. Or the box doesn't have a clue listed and most default searches won't display boxes without clues. Or something. There are a lot of reasons a box might not show up in a certain search, and most of the time I get reports like this, there's absolutely nothing wrong except the search that was run.

But.... one time out of ten, there's a bigger issue involved and does require my attention, so I have to investigate anyhow. And this was one of those one time out of ten. The Yahoo Geocoder, for some bizarre reason, listed the radius of Sedona as being a little over 100 miles! I've been to Sedona before, and it's certainly not that big!

The Google Geocoder returns a radius of just over 3 miles--certainly a lot more reasonable, and I changed the radius of Sedona accordingly. A box "somewhere" in a 100+ mile radius isn't going to show up in a search for boxes "within 30 miles" of Sedona, which was the problem in a nutshell. With the smaller radius, it will. Problem fixed....

Or is it? How many other towns on AQ have 100+ mile radiuses? Realistically, the answer should be ZERO. In fact, anything larger than about 30 miles is suspect. So I poked around and found several dozen of them. Most of them cities I'd never heard of before. Buffalo Grove, IL--32 miles in radius? Really? Strathpeffer, Germany was listed as 404 miles in radius!

So I spent a few hours fixing all of these locations. The vast majority of locations were within reasonable bounds, but those several dozen certainly needed some tweaks.

Now the problem is fixed.... right? Well, no, not completely. There's still the matter of making sure this issue doesn't come again in the future. There are hundreds of thousands of locations that AQ doesn't know about, that if someone runs a search or hides a letterbox, will require AQ to use the geocoders to look up the necessary information. The very same geocoders that generated the bad data in the first place. I need some sanity checks in the code. 

I happened to notice this photo in the AQ Photo Gallery.
Remember (especially you, One Particular Harbor!),
all extra cookies you have can be sent to me. =)
I dived into the code itself, specifically the part that looked up the radius of a location, and added a few lines of code that checked if the radius was larger than 30 miles for any given park, address, or town, and--if so--would verify the radius with a second geocoder. And if that second geocoder verified the unusually large size, to ignore the geocoders completely and set the radius to 25 miles.

That second part--ignoring the verified radius--I was torn about. Some locations larger than 30 miles are completely legit. One location was "Sequoia National Forest." Sequoia National Forest IS much larger than 30 miles in radius, so why would I falsely cut the radius to 25 miles? I did so so boxes listed in "Sequoia National Forest" would show up in default searches (which defaults to 30-mile searches). I figured the location was specific enough that it should show up in default searches, even if, technically speaking, such locations normally wouldn't or shouldn't. Kind of a gut feeling type of thing. Technically wrong, but it feels right. =)

And finally I was done. Well, actually, no, not quite. One more thing to do.... testing. I tweaked some code, and I should have my unit tests check that this new code actually works like it's supposed to. So I created a new unit test that checks for these specific conditions, made sure they passed muster, then finally uploaded the changes I made.

All because a letterbox in Sedona wasn't showing up in the search results as expected. =)

Nobody would likely even notice these changes--they're very subtle and affected such a tiny number of letterboxes, you'd have to have a sharp eye indeed to have noticed them. But it still makes AQ a tiny, little bit better. 

Yesterday I spent primarily working on themes. I finished up the Maine theme--which isn't scheduled to go live on AQ until next November if I counted correctly. I want a solid backlog of state themes so I can continue to release them once per month without fail, regardless of how hectic my life might be at any given time. =) Next year, I want to thru-hike El Camino de Santiago--a hike that will take two or three months. I certainly won't have time during the hike to create themes, so I need to create them well in advance. Hey, Mainers, I really like how your theme turned out! It's currently my default theme on my development machine! =) You're up next, Maryland! (My goal was to finish all of the state themes I'd use for next year by the end of this year.)

I also made a few tweaks to the Christmas theme. The Christmas theme really isn't one of my favorite themes. I like the animations, the colors are hard on my eyes. The yellow background for the submenus was bothering me, so I lightened those a bit. I also didn't like how a highlighted menubar option blended in with the red background behind it near the top, so I lightened the highlighted menubars as well. And the bell in the upper-left corner of the page was messing up the layout of the home page, so I got rid of that.

I tend to do this sort of thing quite frequently with old themes that bother me. A few tweaks here and there to make it a little more appealing.

About a month ago, I started looking up all of the 2012 holidays to update when each of the themes would show. Themes like Christmas always show at the same time year after year and don't require changes, but themes like Friday the 13th, total lunar eclipses, and Presidents Day do need adjusting each year. And what to do if a total lunar eclipse falls on a Friday the 13th on Presidents Day, no less?! (While that specific scenario has never happened, there are enough themes that every year involves at least a few conflicts of this sort.) It takes me several hours each year to update the theme schedule for the next year.

Yesterday, I also found myself with a 50% off one item coupon for Michaels, so I wandered down to the local store and purchased myself a large block of Speedy-Stamp. *rubbing hands gleefully* There's also a stamp I want to carve, but I'm not sure this particular block is large enough for my purposes.... So I'll probably carve a couple of stamps during the next few days. =) Not sure when or where I'll hide them as boxes, but at least the stamps will be done!

I might post a bit more later.... for now, though, I plan to get started on a Maryland theme. =) Hope you all are enjoying the holidays and getting to spend enough time with your families that you're ready to leave them! ;o)

Friday, December 16, 2011

The New and Improved Trip Planner!

Interstate 94
First, an update on my last post asking for volunteers to adopt a highway.... Wow! What an amazing group of people! In alphabetical order, the following people helped out with improving the existing routes: Aiphid, Amanda from Seattle, BanjoMan, BfloAnonChick, Bumble, Dizzy, Eidolon, PI Joe, speedsquare, Suduko Crazy, and Wronghat. They've been plotting and fixing and helped run through about 83,000 miles of roads, trails, and historic routes! If you've noticed that all of your trip searches seem generate more accurate results, you can thank these people for making it so. =)

For you Canadians out there, you'll find some support for the Trans-Canada Highway now, with much help from Bumble. =)

Not only that, but they've done a darned good job helping to find bugs and problems, so they've really gone above and beyond. Thanks to you all!

And now, to introduce the rest of you to the improvements. Under the 'Toolbox' menubar option, you'll see a link for Trip Planner. There, you'll find options to search what trips are available on Atlas Quest, along with a list of the newest trips that have been created. If you select a specific trip, it'll display some information about the trip, including a map of the route. Take the Pacific Crest Trail, for instance. It tells me the route is nearly 2,000 miles long, the accuracy is 2.7 segments per mile (larger is typically better, and 2.7 totally rocks!), and a list of towns that the trail passes through (or near) along the way.

If you're a premium member, though, you'll see a couple of more options--such as a button to create your own route. Now this is my favorite part. =) Let's say you're going on a road trip to visit Grandma for Christmas. (I plan to!) You can type in your starting location and destination, and AQ will map a route for you--turn by turn. Depending on how long and detailed your route is, it might take AQ a few minutes to crunch the numbers, but when it's done, you can then run a letterbox search along your route. (Or an event search, or virtual search--or any search that requires a location.) Your route will even show up as an option on the Trip Planner Search.

You can keep the route private. Right now, I'm not expecting any of you to travel with me from my mom's house to Grandma's house for Christmas. ;o) But if you create a route that you think others might find useful (perhaps California's well-known Highway 1?), you can make it available to other premium members.

And really, that's all there is to it. Creating and editing routes is strangely hypnotic--I hooked in Google Maps to help with that process and it's remarkably easy to create very detailed routes.

Happy travels! =)