Route Not Found on the Edge

In which the roadtrip travel blog gets yet another round of pre-trip wrenching: new delivery infrastructure, a total rewrite of the location and mapping stack, and a handful of WordPress tweaks.

Previously on “The Internet is for Doing Roadtrips!”

In 2019, I gave a tour of how our location-tracking media-heavy roadtrip blog worked.

I stood it up on Tumblr in 2015 for the Pacific Coast Highway “cheap car challenge” roadtrip. You know, back when I mistakenly assumed that would be the only one. In 2017, for the Southwest Offroadtrip, I added all the mapping bits. After that, little changed except a migration to WordPress. Then before running a beater convertible up the ALCAN in 2019, I did some feature-stuffing but side-stepped something important: the whole mess was horrifically insecure. And the code had become rather embarrassing.

Still, I’ve become increasingly proud of this little platform as it has grown. I recently compiled an index of our escapades and it was longer than I’d realized.

Post on the frontend

Old Architecture v2 from 2017

A refresher of this clutter:

Version 2 Architecture

Also:

Reseating a clutch fluid line

And that site has always been my playground to fiddle with interesting tech and learn new things. As I ramp up as a new Product Manager at Cloudflare, just how much can I orange-cloud* Route Not Found? It’s professional development, I promise.

* CF-speak for “adding a site on our infrastructure,” the term originating from a cute piece of UI in the Dashboard.

Architecture v3

In which “Zero Trust” describes both the security products in play and the prudent measure of faith to place in a hooptie.

Version 3 Architecture

What happens on my phone is the same: Tasker pulls a location every half-hour and sends it to the service, batching it for later if we’re out from under The Cloud. I also submit photos and posts with the WordPress app.

Reseating a radiator hose

The Location Service Worker is the key new piece, running on the Workers serverless platform on the Cloudflare Edge:

Admin backend showing all trips

I split the Location Service Frontend to a separate React app on Pages, also Edge-hosted, and secured by a giant No Trespassing sign Access:

Admin backend showing a trip edit

The only remaining server is named Alfa, a Lightsail instance in AWS, protected by Cloudflare’s firewall and propped up by the CDN. Alfa runs both WordPress and the location database. For that, I picked PostgreSQL for two extensions:

Also, I restructured the database to expose location history in a VIEW which joins Waypoints to Trips BETWEEN start and end times. Thus, it only contains Waypoints during Trips.

New Year's Eve 2020, New Mexico

The rest of the stack remains:

Cassiar Highway near Dease Lake, BC

So it’s that time again?

Yup. This project only gets love when we’re fixin’ to set off on an adventure. Thanks to these continued “unprecedented times,” the used car market is facing significant inflation. Who knew that if I’d held onto that little Celica a while longer, I could have turned a profit on it?! So we’ve tabled whatever Great Roadtrip #4 will be for a while.

Nutter Twists Road, Mr Trumbull, AZ

Instead, we’re going to do a Greatest Hits from the Southwest Offroadtrip this October with our usual loadout: Xterra the Younger and his friends, George’s Jeep Renegade and Evan’s Land Rover Discovery. The latter returning to its proving grounds, as it was purchased originally for that trip and seen here with the 4Runner I still miss.

The Southwest Backtrack

Salmon Glacier near Hyder, AK

Disclaimer: I am a Cloudflare employee and built this as a way to kick some tires on our product line, some of which is made available to me for free — although the Free Plan would cover everything but my use of Stream and APO. This is not an endorsement of our wacky hobbies, nor is it product documentation or security guidance.