Sunday, May 22, 2011

"What'd you break this time?"

Glad you asked! Pull up a chair and I'll tell you a little about the update I did tonight. It's not actually very exciting and, on the surface at least, any changes you see would probably seem rather superficial. This update deals primarily with the blog code, and anything you find that appears to be broken is most likely to deal with any page or widget that deal with blogs.

And even then, on the surface, the changes seem largely superficial. Underneath the hood, it's been almost completely rewritten. You'll notice that "objects" listed on Atlas Quest such as boxes, trackers, events, groups, virtuals, and themes have a lot of very similar functionality. They all show up on the Advanced Search page, for instance. You can save favorite searches for any of those types of objects, you add each of those objects through a "wizard" that takes you through one or more pages of information. Each object always has a name, attributes, a creation date, and a last modified date. You'll find that you can add notes to boxes, trackers, events, and virtuals. For all of their differences, they have a lot in common.

Which is why, many, many moons ago, I designed a little bit of code that all of these objects are descended from. I implement that functionality once, and it gives everything derived from it all of those powers, and this update moves the whole blogging system under this same umbrella. Blog searches can be run directly from the Advanced Search page, and you'll find there are cute little icons to represent the different types of blogs. You can sort, filter, and chop up the blogs in a hundred different variations, and because it's under this same umbrella with all sorts of useful features readily available, I can easily add the ability to allow notes for blogs, or add tags to blogs--but you currently won't see those as options only because I couldn't think of how they could possibly be useful. But... if there was ever a reason to add such functionality, it would be pretty easy to do.

I spent a lot of work updating all of the blog code to use this standard interface that all these other objects in AQ does, and frankly, none of these advantages are especially compelling for the amount of work it required. The old blog search had one horrible flaw--you were required to include a location of the blog for your search. It was impossible to search for "all blogs" by a certain person, for example. I knew it was a bad thing when I implemented it, but it was quick and easy and a search I figured few people ever used anyhow so I cut corners. I cut a lot of corners with the blog code, and it showed, and this update fixes a lot of those issues.

But still, that wasn't the reason I made this update. Nope, no.... This was actually just a test for a much more important feature I've been developing--a new geocoder. Actually, there are now nine new geocoders at this point, and I'm not sure I'm done making new ones. =)

Premium members already have a hint about some of the things I'm working on--they've had a chance to play around with the new geocoders. The last time I took down AQ for an update, it was to upload the new geocoders, which was installed into the profile locations as the first small step in testing it. Test with a feature that's simple and not particularly important first.

This is step two in the long process of upgrading the geocoder. The profile allowed people to type in their location and use the new geocoder to figure out what it meant. I now needed to actually test that information in a real, honest-to-goodness search. One that's significantly improved over the existing location-based searches. And ultimately, that's what I wanted to do with this update.

Blogs are tied to members, and members can specify their location, so it makes sense you can search for blogs by local letterboxers, and because the member profiles are using the new geocoded information, a search for blogs by people in a certain geographical region would require a search on the new geocoded information.

And if I messed something up terribly--well, better to have problems with the blog searches than with letterbox searches! =)

You can't see distances or locations when you use the location for the search--it didn't seem especially relevant for blog searches--but I've been doing a lot of testing on my development machine with this search. It's pretty cool.

First, you can leave the location blank. In this case, all blogs are returned, regardless of location. (By comparison, the Location-based search on the Advanced Search page, AQ will complain loudly and annoyingly that you must include a location.)

Second, you can type in any city, street, address, park, or zip code. (By comparison, this works exactly like the Location-based search on the Advanced Search page.) If the radius is set to zero, it'll return all boxes with the specified city, street, or whatever. (Not the zip code, though, since zip codes are simply converted into a city internally and a city search is run.)

And finally, you can type in a county, state, or country as the location--and not a city name!--it'll return a list of all blogs owned by people who've registered that county, state, or country as their location. (By comparison, the Advanced Search page can run an area search, but that's actually separate from the location-based search, and even that doesn't have any concept of counties.)

The geocoder is a bit smarter than the old one as well. It's capable of finding thousands of parks that the old geocoder couldn't identify. And it's even more forgiving if you type in latitude and longitude coordinates, allowing commas (the old one required the latitude and longitude to be separated by a space) and allowing N, S, E, and W to be used instead of + or - coordinates. (You do still have to use decimal numbers, though--degrees, minutes, and seconds still won't work.)

All-in-all, it's a huge improvement over the old geocoder. And honestly, the power of the geocoder is being wasted on a mere blog search. =) But like I said, I'm still doing a lot of testing and tweaking, and I'd rather mess around and break a blog search than a letterbox search!

So that's what this update does. In a nutshell, on the surface, it doesn't appear to be much. Eventually, though, when I roll out these updates to the rest of the website.... it's gonna be awesome. *nodding* =)

But.... back to the blogs. I added a new subtype of blog I called "external" to describe blogs that are by people not on Atlas Quest. There are blogs I like to read that aren't by fellow letterboxers, but when I originally created the blog code, I assumed everyone would register their own blog. Obviously, I don't expect the owner of Cake Wrecks (for example) to register an account on Atlas Quest, list their blog, just so I can subscribe to it there. =) It was a huge oversight on my part, and I added the "external" subtype to make up for it. And after I uploaded all of my changes, I registered the Cake Wrecks blog. Now I can see the latest cake disasters between Trekkie Gal's postcards. And really, how cool is that? =)


GreenJello said...

Cool. :)

Here's an idea for the next improvement where blogs are concerned... I post all my clues on my blog, and when people go to print the clues through AQ, it prints ALL the frames, not just the frame that contains the clue.

I've tried putting in the AQ and AQ end markers, but to no avail.

Not like you needed anything to do, right?

Ryan said...

Hmmmm.... In theory, frames shouldn't be an issue in that regard, but I've never tried hosting clues on a blog before, so I can't say I've ever tried it. I'll take a look at it, but getting HTML into a blog correctly can sometimes be a challenge. Would you send me a link to one of your blog-hosted clues that have this markup in it for me to look at?

-- Ryan

Ryan said...

I just tried using the AQ and AQ end markers with this blog and a fake clue on my development machine, and it worked just fine. I don't know why it's not working for you, though, without knowing which clue you're having trouble with.

-- Ryan

Anonymous said...

I think I'm just going to keep letterboxing the old fashioned way...

veganf said...

Kewl. I love the stuff you think up.