Saturday, April 01, 2023

AQ Completes Friendly Takeover of LbNA!

As most of you guessed, April 1st meant gags and jokes, and that hostile takeover of LbNA and blatant discrimination against LbNA members is... not true. In fact, it wasn't even the first time there was an alleged merger of AQ and LbNA

Unlike last time, however, this time around--the "merger" part is actually true. Kind of. The sites aren't merging--they'll continue to operate as two distinctly separate websites--but since Choi decided to retire from his day-to-day running of LbNA and nobody else had necessary skills and interest to take over, I've officially taken over that task.

It was last November or December or so when Choi first informed me that nobody had stepped up to take over, and it was then when he gave me the passwords for the server to download all the code and start going through it. There was a lot I needed to do before moving the site to the AQ server, and a few concerns I needed to deal with before I would move LbNA to share a server with AQ.

  • The old server ran remarkably old versions of the database and scripting language. So old, in fact, that not even security updates were being provided anymore. So I needed to update LbNA to make sure it could run on the most modern versions of the software. In the case of the database in particular, I couldn't run two separate databases on the same server, and I definitely wasn't going to downgrade AQ's database just to be compatible to LbNA. Nope, LbNA's code had to be upgraded to work properly with the same software that AQ was running on.
  • LbNA had a bad habit of generating those "too many connections" errors on the database. I needed to get to the bottom of that and make sure it got fixed. Not just because I wanted the site to run reliably, but also to insure it wouldn't take down AQ! (As well as other databases that run on the same server such as for Walking 4 Fun.) 
  • I wanted a way to monitor for issues or problems. Over the years, I've developed a multitude of tools to help do this. The code will record errors, warnings and even particularly slow queries that might need my attention. I can easily check how long database queries take to run or the page takes to generate. And I wanted to include those same tools on LbNA.
  • I wanted the site to be relatively quick and easy for me to update as needed. Maintainability is important. Every programmer has their own preferred styles and patterns that they use, and I wanted the code for LbNA to better fit my own mental model of how things should work. The more similar--internally, at least--the code worked like AQ, the easier and faster it would be for me to update later.
  • And.... I just needed to understand how LbNA worked. I hadn't really used the site in years and there were numerous features and options that I didn't even realize existed much less how they all worked together. Doing a deep dive through the code would enlighten me.

Anyhow.... I spent a couple of months working on the site. The site turned out to be quite a bit bigger and more complicated than I had first imagined! A couple of problems I discovered I felt were so serious, I changed it on the live website immediately. Mainly a couple of exceptionally slow queries that could easily crash the database. (Or rather, cause a "too many connections" error because they took so long to process.) The website seemed to run a lot more reliably after that, but I know it still went down at least once after my tweaks. There were other slow queries that I didn't bother to fix because they seemed less critical and I didn't really want to spend a great deal of time fixing up a site that I was almost immediately going to replace with my own code anyhow.

Although I almost completely replaced the code on the backend of things, I tried to leave the front-facing user interface and functionality as unchanged as possible. There was some tweaking that happened. I re-created all the forms to fit the same patterns that I used on AQ--which also happens to be more "accessible" than the old layout used. (I use the term "accessible" in a technical sense--I'm referring to making websites accessible to those with disabilities.) Although I'm not aware of any blind people, for instance, using screen readers on LbNA, there's little reason not to support better access for them. (Accessibility doesn't just refer to blind people, though--it's a catchall term for all sorts of possible disabilities.) The site would still fail any serious accessibility testing that was done to it, but it's vastly improved over previous iterations.

Once everything seemed in order, I copied a test version of the site to the AQ server for a couple of months of testing.

Given the tens of thousands of lines of code I added, changed and deleted--I knew there would be a bunch of bugs and there were. I really hadn't had a chance to thoroughly test the code as much as I had wanted to, but Choi wanted to turn the lights off on the old server before it was due to renew for another year so I had somewhat of a deadline to get this done by. Technically, it wouldn't have been the end of the world if I hadn't finished before the deadline. At worst, LbNA would just be "offline" until it was ready to run again. But ideally, it would be better to keep the site running with no downtime, so that's what I was shooting for.

Testers were essential!

Special thanks to MichKathy and TrailMark for their testing. I gave them early access to the test site so they could update Clue Tracker to work with the updated site seemlessly, and they found a lot of the bugs that I really should have caught sooner!

By mid-February, I was largely ready to officially take the reigns of LbNA. Except.... I had plans to fly off to Africa to climb Kilimanjaro. It seemed like a bad idea to do a major move of the website then immediately fly off where I likely wouldn't be able to get online for two solid weeks. I should wait until after I got back.

And that's what I did. The day after returning to the United States, I immediately launched the Big Update--for Atlas Quest. That was also ready and waiting until I'd be around for an extended period of time to fix any bugs that certainly would pop up. Two days later, when the Big AQ Update seemed to be doing fairly well and seemed under control, I flipped the proverbial switch (specifically, the nameservers) for LbNA to point to the new server--the AQ server. (If you check, you'll find that LbNA and AQ now share the same IP address.) 

This was a massive update--even bigger than the "Big" AQ Update from two days earlier. But this one.... I had to do in secret because I wanted the "big announcement" to intersect with April Fools Day. So two days after a big update, I was doing another Big Update.

And the next several days was fixing bugs and issues and stuff, occasionally swinging back to the big AQ update to deal with something there. I'd often spend the morning fixing and tweaking the AQ update, then spend the afternoon and evening fixing and tweaking the LbNA update. It was a remarkably busy and exhausting week for me!

I also found myself extremely frustrated when I tried to use some administrative functions on my smartphone to check for bugs and delete spammer accounts on LbNA--which was never designed to work well with smartphones. I found myself so annoyed with that, I wound up spending most of a day updating LbNA to make it more mobile-friendly. Like with the accessibility thing, the update doesn't fix all the issues to make the website fully mobile-friendly, but it's a vast improvement over what was available before. Even Google thinks it's a huge improvement. I added as a website to monitor for issues in their Google Search Console and on March 19th, Google reported just one page that was "mobile friendly"--zero percent of the pages after rounding off to the nearest two decimals. As of March 31st (the last day I currently have statistics for), Google reports almost 6000 mobile-friendly pages and just 92 still listed as "not usable." That not-usable number is going down, however, as Google re-checks previously-checked pages. I expect the number of "not usable" pages will continue to go down--although probably not down to zero. There are still usability issues to deal with--I only attacked the easier, low-hanging fruit in that regard. 

Then, once both websites were more-or-less running well and fixing problems wasn't occupying all my time, I started working on the April Fools announcement. Which meant a few gags and jokes for both websites. And... well, y'all saw how that went. I was working on that right up until I launched it less than an hour before midnight (Pacific time). 

Obviously, most of those announcements were jokes. The new crown and dagger icons will be retired, there will be no loyalty oaths to be taken, and pay-per-clue isn't on the table. The LbNA staff hasn't been fired--but there really wasn't any staff to begin with. I even left Choi as an official webmaster on LbNA so he can update passwords, delete spammers, etc. So he's still watching you. ;o)

So now that you're caught up to the present day, you might be asking yourself exactly what I plan to do with LbNA.

Crystal ball,
tell me the future of LbNA

And... for the most part, not much. Any big (perhaps controversial) ideas I come up with--I'd put on AQ. I don't really see any reason for me to recreate the wheel on LbNA every time I add a feature to AQ.

And, in fact, I think one of the core strengths of LbNA--where AQ can't even begin to compete against LbNA--is it's sheer simplicity. LbNA is perfect for people who just don't want a lot of bells and whistles. There aren't rabbit holes to confuse people like postals and LTCs, there aren't "trackers" or message boards to navigate. No marketplaces or online logbooks, no exchanges to track or dozens of icons to understand.

For many of you, you might consider the lack of those features as blasphemy, but I truly believe that letterboxing should be available to everyone--including those who prefer a more "old-tyme" letterboxing experience. After they develop their proverbial sea legs and dig into the hobby more, Atlas Quest might become more their style. Or perhaps they'll be perfectly happy to stick to the basics and stay away from the complexities of AQ--or maybe find a middle-ground between the two. A website like AQ can scare away the sorts of people who just want a simple, fun little hobby to participate in, and I'm grateful that there's a "safe space" for letterboxers who prefer the simple life.

So I have no ill-well toward LbNA or its members. Heck, that's where I "grew up" in my own letterboxing journey. Personally, I feel like I outgrew it, but bless all of you who haven't. =)

No blue diamonds for LbNA!
As a result, I have no plans to add features or functionality to LbNA. If anything, I'm more inclined to lean harder into its simplicity and remove features that I feel aren't essential or don't get used much. For instance, I removed the rating system already. It was interesting for me to look through the code and see how it worked, but it felt to me like it was added to "keep up with" Atlas Quest. And considering that LbNA doesn't get nearly as many visitors as AQ, I don't think it generated particularly good results anyhow. Ratings work best when a box can get a lot of ratings, but LbNA didn't really have the critical mass for that.

So... I decided to remove it. And now recording a find is one checkbox shorter and faster. There's one less "thumbs up" icon that people don't have to figure out or understand what its purpose is. Not mention there's the added benefit (for me) that there's less code to maintain and upgrade in the future.

At some point, I feel like I should really go through the entire website and figure out which features should be discontinued. Does the added complexity for the user make it worth the effort or distract from the more important details? I think back in my early days of letterboxing and what I wished LbNA could do: Run a simple search for boxes near my home that automatically removed all the boxes that I had planted or already found or attempted (and was certain were likely missing). That was all I really wanted the website to do. All the other search options--hike lengths, icons, etc. were fine, but I almost never used them and I certainly didn't need them. I kind of dream of taking LbNA back to its glory days where it might have been simple, but it was easier to understand and figure out how everything worked. I'd like for LbNA to distinguish itself from AQ--not try to copy it.

An obvious question many of you might have will be if I plan to merge the two websites--or at least merge the two databases that run it so one account can be used on both websites. Recording a find on one account will also record it on the other account automatically. It's tempting, but for now.... no. That would take a horrific amount of time and effort that I'm not ready to commit to, so they'll continue to stay as two completely independent websites. Maybe someday I might add some options to "link" accounts so recording a find or attempt on one site will automatically post it to the other, or recording a plant on one site will automatically post it to the other, etc. But even then, I still imagine it running as two completely separate, independent websites. Just two websites that happen to talk to each other occasionally and share information. I have no plans to rush out to get this sort of thing done immediately, however.

One feature I might implement sooner rather than later, however, is the ability to hide plants that are hosted on the other website. I actually wanted to create this on AQ since the day I started AQ--a way to not display LbNA boxes in the search results. Not as an "anti-LbNA" option, however, but as a way to make it easier for people to run searches that don't show the same plants on both websites. But I felt certain if I ever tried to implement such a search option, I'd be accused of being "anti-LbNA." Logically, I felt LbNA should have a similar "hide AQ boxes" options for the same reason. And then those who use both websites regularly to search for boxes can get all of the LbNA and AQ boxes with no overlap between the two sites. And it would be trivially easy to implement such a feature since the two websites don't even have to talk to each other to make it work. AQ already knows which clues are hosted on LbNA and LbNA already knows which clues are hosted on AQ.

Now that I'm running both websites, it seems ridiculous to make such an accusation. And since I'm running LbNA, I can easily make sure a "hide AQ-hosted clues" option is available on LbNA to balance things out. So this feature is one of the most-likely ones to come out of my running LbNA since it seems very useful and helpful--at least for those who use both websites. (Although if absolutely nobody likes the idea or wants it, I certainly wouldn't put any effort into it!)

The Tanzanian flag--just because
I have the license to use it and
I spent two weeks there recently. =)

You'll likely see me continuing to update some of the icons to use the same ones as AQ. There are three reasons for this: 

  1. I already paid and purchased a license to legally use those icons, and the license allows me to use them on any and all websites I run so there's no problem with me using them on both sites. 
  2. I'm not entirely sure of where the already-existing icons on LbNA came from or whether they're actually legal (or not) to use. It would really suck if someone came after me because one of their icons was being used without the proper rights. 
  3. And finally, using the same icons on both sites can make it easier and faster for people to figure out how the "other" website works when they are already familiar with some of the icons.

Anyhow, that's how I imagine the future of LbNA, but I'd be curious to hear what all of you think or how you would re-imagine LbNA. But regardless of how much our opinions intersect (or not), I will do my best to run LbNA like it was my own creation--to care for it, keep it running, and do what I feel is best for LbNA--even if we might not always agree about precisely what that is.

But in broad, general strokes, I don't really plan to change much of anything. So far, my focus was mostly on the security, reliability and maintainability of LbNA.

Now that the two websites run on the same server, there will be rare times when both websites go down or become inaccessible if there's an issue with the server, so in that sense, reliability overall will go down. However, when I take down a website for a Big Update--those will be planned ahead of time and will never be happening at the same on both sites. I'd like to make sure at least one of the websites is always running at all times. If that's not the case, there's likely something out of my control going on. For the record, this doesn't necessarily mean there's something bad happening. Sometimes my hosting provider is doing updates on their own equipment and things may be temporarily unavailable--but the server is just fine. Sometimes I'll update software and it requires the entire server to be restarted--and that will make both websites temporarily inaccessible. I'll try to limit those times as much as possible but they are, overall, fairly rare.

So that's my own vision for LbNA. Feel free to contact me through AQ or LbNA if you wish to express your own thoughts on the topic. 

Magic 8-Ball, inquiring minds want to know:
Will LbNA continue to thrive for years to come?

"Without a doubt"