Tuesday, May 19, 2026

50 for 50: The Route to a Better Route

Planning the 50 mile walk to mark my 50th birthday proved to be an interesting challenge. The walk would span three days in an unfamiliar city and had a laundry list of needs: scenic and interesting stretches, resupply stops along the way so we could travel light and stay fueled, and as much sidewalk as possible to keep things safe. And of course, strategic bathroom stops. We also wanted a route that made geographic sense across three days — no backtracking, or covering the same ground twice. And the total distance needed to land just under 50 miles, knowing the total would naturally creep up as we went. That's a lot to ask. Here's the tool that helped us pull it off.

AI: Enthusiastic, But Faking It

Like many travel-related tasks these days, we started our planning in ChatGPT. ChatGPT signaled that Knoxville was not just a reasonable location to complete a 50-mile birthday walk, but an ideal one. It heaped praise on Knoxville's greenways, green spaces and of course us for choosing Knoxville. With the scene set, it asked if we wanted it to generate a route we could follow. Yes, please. It provided official-looking GPS coordinates, and when asked, it created an XML-based GPX file we could import into Google My Maps to visualize the route.

This is where things went off the rails. The GPX file had no actual routing data — just a series of random-looking straight lines between points.

We pressed ChatGPT, which sheepishly admitted the file wasn't much use. But it promised it could do better. Around and around we went, failure after failure — like a GPS that confidently calls out a turn, then immediately announces it's recalculating. We should have taken the hint sooner.

The fundamental issue, I suspect, is that ChatGPT has no routing engine. It knows quite a bit about Knoxville, but it doesn't know the street-level details needed to compute an actual walking route the way Google Maps does. Its general knowledge was enough to promise us the world — but without a routing engine, it was never going to deliver.

Existing Tools: Close, But Not Quite

Next up, we explored Google's My Maps. This tool lets you create your own Google Map and, unlike ChatGPT, it actually computes walking routes. Real promise.

My Maps tripped us up in two ways. First, its drag-to-adjust routing is a great feature for casual use — but for the kind of careful, iterative planning we were doing, it became a liability. One errant mouse click or screen tap and a carefully built route would shift. Control-Z helped, but it made the whole process feel precarious.

Second, My Maps buries the route's total distance under several clicks. For most users that's fine. For us, checking distance was something we did constantly — a couple of miles either way could make or break the whole route. Having to dig for it every time wore thin quickly.

We tried sites like onthegomap.com, which shows distance prominently and makes route creation easy. But once a route was set, it was fixed — no way to go back and tune it. Perfect for mapping out a run; not quite right for planning three days of walking that needed to hit an exact distance target.

These are genuinely good tools. They just aren't built for our use case: a route that would be revised dozens of times, with distance and route shape constantly being reconsidered.

Rolling Our Own: geoassist

Ultimately, I decided to build my own tool. I give you: geoassist.

geoassist is a Unix-style script that takes in a plain-text route file and generates any number of outputs — some useful for quick planning previews (distance, a rough JPG), others for detailed navigation (GPX, KML). Under the hood it uses OpenRouteService — a real routing engine — to compute actual walking paths between your points. A route file consists of three entry types:

  • Waypoints — primary established points you plan to route through. These entries start with an X, as in X marks the spot.
  • Routing Hints — points fed to the routing engine to enforce a specific path, but invisible in the final map. These entries start with a V, which you can think of as an arrow into the Earth saying go here.
  • Points of Interest — off-route points you may or may not end up visiting, like a Dunkin' Donuts. These entries start with a @, as in where is this business 'at'?

A point can be a latitude/longitude pair or a plain address. You can give a point a label by appending # label text.

Here's the route file for day 1 of the trip:

X SpringHill Suites by Marriott Knoxville at Turkey Creek, Turkey Drive, Knoxville, TN # SpringHill Turkey Creek

# Concord Park
X 35.86069620962343, -84.13600339974661 # Concord Park
V 35.86093969069506, -84.13496272359271
V 35.86261479769068, -84.12830087899738

X 35.874780833187806, -84.09541418622682 # Dunkin
X 35.89377609396486, -84.06858403222535 # Donato's Pizza
X 35.92390020189228, -84.03230975977412 # Food City

X Courtyard by Marriott Knoxville West/Bearden, Brookview Centre Way, Knoxville, TN # Marriott Bearden

We're starting at the SpringHill Suites, making our way to Concord Park, hitting a few resupply stops, and finishing at the Courtyard by Marriott. The routing hints steer the route through specific trails inside Concord Park that the routing engine would have skipped.

Here's what that looks like in practice:

  # Preview
  $ geoassist -a distance -f day1.pois
  17.049
  $ geoassist -a export -t image -f day1.pois > day1.jpg
  # Detailed Route Generation
  $ geoassist -a export -t kml -f day1.pois > day1.kml
  $ geoassist -a export -t gpx -f day1.pois > day1.gpx

Slow Is a Feature

The workflow for creating the route wasn't glamorous: I sat next to Shira with the file open in emacs while she pored over Google Maps. She'd pass me coordinates through chat; I'd update the file, run geoassist, and either generate a rough JPG preview or pass her a KML file to load into Google My Maps for a closer look.

Compared to dragging lines on a slick web interface, this felt slow. And it was. But that slowness turned out to be a feature. Because the route lived in a plain text file, we could experiment freely: comment out a segment with a #, try an alternate version in a new file, revert instantly. There were no accidental edits, no mystery undo states. The file was always exactly what we intended it to be. Every decision was deliberate.

Once our route was finalized, geoassist generated a GPX and KML file that we imported into our navigation tools of choice. I loaded the route into Backcountry Navigator on my phone; Shira used the Google My Maps version. Here's what both looked like loaded up:

Know Your Route Before You Walk It

One question that nagged at us as we planned was just how pedestrian-friendly the route would be. Sure, the routing engine computed a walking path — but could it be trusted? A "walking route" to a routing engine just means no highways. It says nothing about shoulders, sidewalks, or traffic.

I considered leaning on sidewalk datasets, but sidewalk data is notoriously incomplete and unreliable. I feared using this data would only give us a false sense of security.

After dropping into Google Street View manually on a number of occasions to check individual roads, it hit me: why can't geoassist do this for me?

The result is geoassist -a export -t streetview: an HTML preview of the route powered by embedded Google Street View images, one every half mile. Scroll through it and you're essentially walking the route from your laptop before you ever lace up your shoes.

We could see at a glance which stretches had real sidewalks, which were quiet neighborhood streets where that didn't matter, and which were the kind of busy arterial roads that would send us hunting for an alternate path. We rerouted at least one segment specifically because the Street View preview made it obvious the road had no shoulder and heavy traffic. That single catch was worth the whole exercise.

There's No Shortcut to a Quality Route

The through-line of all this: the time we spent deliberately poring over the route was time well spent. It's tempting to want to hand this off — to AI, to a slick web tool, to anything that feels faster. But the route was the walk. A bad route wouldn't have just been inconvenient; it could have derailed the entire project.

Part of why delegation is hard is that our route had to satisfy several competing constraints at once. It had to hit close to 50 miles — not 45, not 55. It had to pass bathrooms and resupply stops at the right intervals. It had to be safe to walk. And ideally, it would take us through interesting and beautiful places. A routing engine can optimize for one or two of those. Threading all of them takes experimentation and human judgment.

geoassist didn't speed up our planning. It gave us a process we could actually trust — stable, inspectable, and with a Street View sanity check built in. The walk went beautifully, and I think the route had a lot to do with that.

One more note for the technically inclined: because geoassist is command-line driven, it's trivial for an AI tool like Claude Code to run it. Unlike ChatGPT — which talks about routes but can't compute them — Claude Code could in principle call geoassist, evaluate the output, tweak the file, and iterate. This opens the door to having AI plan and optimize a route. I have yet to experiment with this, but the hard part of the process is now taken care of.

Friday, May 08, 2026

50 for 50: An Adventure Half a Century in the Making

To mark my 50th birthday, we walked 50+ miles around Knoxville, Tennessee. It was awesome! Here's 5 reasons why.

Terrain

The goal for 50-for-50 had always been simple: cover 50 miles, ending on my birthday. As we tried to figure out the logistics of how we might do this, I braced myself for a slog through uninspiring surroundings. Ultimately, we landed on Knoxville, TN to pull off this stunt. To my delight, Knoxville over-delivered.

We walked through quaint suburban neighborhoods, down historic boulevards and into a storied historic district. We hiked along remote-feeling trails and Knoxville's impressive greenway system. We experienced a bit of UT college life, enjoying the campus's impressive gardens and student-run creamery. We traveled on rural-vibes backroads, passing at least one horse farm. We passed two shuls, both with deep historic roots, multiple historic signposts and one very bubbly water treatment plant.

We passed by creeks, swamps, a pristine quarry and a sprawling lake. We crossed the mighty Tennessee river (twice!) and marveled at her bluffs. We passed palatial estates, densely packed subdivisions and a mobile home community. We passed what may be the longest driveway I've ever seen on a house, and an impressively camouflaged campground.

Wildlife sightings were limited, so the turtles, millipede and even statues of Smokey immortalizing past UT mascots were appreciated. Of course there was roadkill. We saw soaring ospreys, plenty of neighborhood robins, a few Canadian geese and one very confused juvenile woodpecker trying to peck a concrete wall.

We delighted in Dunkin's donuts, Bruster's ice cream, Whimsy's cookies and one perfectly prepared smoked salmon benedict. We even enjoyed a cup of homemade lemonade a father and two daughters were selling on their front lawn. We learned about the magic of Weigles, with their clean bathrooms and delicious hot chocolate.

We passed an impressive sculpture garden, the remarkable Strong Alley where majestic murals live side by side with sharp-edged graffiti and the beacon-like Sunsphere. We stood at the foot of the otherworldly Pier 865 sculpture and pondered why it was present in a park named 'the Cradle of Country Music.'

Sure, not all the walking was interesting. But I'd say easily 80% of it was. Go Knoxville!

History

Knoxville also delivered on the history front. We unexpectedly passed by and explored Pleasant Forest Cemetery, a historic cemetery founded in 1796. We got to pay our respects to Archibald Roane, a Continental Army soldier who was present at Cornwallis's surrender in 1781, and ultimately became Tennessee's 2nd governor. We also paid our respects to Lt. Thomas Boyd, who served at Valley Forge under George Washington.

We walked down the same street that General Longstreet's men did when they besieged the Union Army in Knoxville. We stood at the gun emplacements at Fort Dickerson, where Union soldiers defended Knoxville from this same assault.

We walked by Temple Beth El, a shul whose origin story stretches back to 1864 and the death of a single Confederate soldier. It was this death that helped form the area's Hebrew Benevolent Society, which ultimately morphed into the congregation we passed.

We passed the site of the historic Staub Theatre where a young Adolph Ochs served as its first chief usher. Ochs, a local paperboy and printer's apprentice, would go on to purchase and transform the New York Times into a national institution. Ochs' dad, Julius, was a founding member of Temple Beth El, where he officiated Jewish ceremonies.

We passed a marker noting Lizzie Crozier French's role as being instrumental in Tennessee's women's suffrage movement. Tennessee was the 36th state to ratify the 19th Amendment — the last state needed to reach the magic number. The vote was 49-47, with the deciding vote cast by 24-year-old legislator Harry Burn, who changed his vote after receiving a note from his mother urging him to "be a good boy and help Mrs. Catt." Lizzie was known as Knoxville's "silver-tongued suffragist" for her remarkable oratory. She was on the speaking circuit across the South, performing recitations to packed audiences who demanded encores — audiences who described her delivery as "a continuous, vivid picture before the hearers."

Discovery

Our walk served up a number of delightful mysteries for us to noodle over as we knocked out the miles. Some we teased out ourselves, some took the help of our on-demand tour guide, Gemini, and others took deeper research after the fact. All made the walk anything but a slog. Here are a few of our favorites. How many do you know?

What are these pink lines for?

When I asked Gemini about the random pink street markings we were seeing in a Knoxville neighborhood, I expected a hedge. Instead, it nailed it: we'd stumbled onto a Dogwood Arts Trail. Cool, but it gets even better. In 1947, author John Gunther called Knoxville "the ugliest city in America." Knoxville's response: pink paint. Starting in 1955, the city began marking Dogwood Trails — routes through featured gardens, ~90 miles across 13 neighborhoods, repainted each April with ~100 gallons of custom-blended pink.

Was President Herbert Hoover really the first civilian to break the sound barrier?

Uh, no. The marker is about Herbert Hoover the test pilot, not the president. A different Herb — and one with nerves of steel. Take the time the canopy came loose mid-flight and bashed him in the face, stunning him and blinding him with his own blood. He recovered and landed the plane safely. He may not have been a president, but he was a boss.

Why does this statue look familiar?

A nearly identical one stands at the entrance to Arlington Cemetery — four minutes from home. The statue is called "The Hiker," created in 1906 by sculptor Theo Alice Ruggles Kitson, honoring Spanish-American War veterans. In 1921, Gorham Manufacturing bought the casting rights and produced 50+ copies, now spread across 23 states — who knew statues came in editions? The name pairs well with the 50-for-50 theme. But wait, there's more: 37 of them serve as air-pollution monitors — identical statues placed in different climates, letting scientists measure environmental wear on the same source material. A twins study in bronze.

What type of bird is this, and why did we see so many of them?

Eastern Bluebirds — common on the East Coast, but a rare sight in DC. Why? From 1920 to 1970, the local population collapsed, going from as common as a robin to near-local-extinction. The culprit: House Sparrows and European Starlings, introduced in the 1800s, which outcompeted them for nesting cavities and ultimately displaced them. DC readers: a Silver Spring resident wrote to the Evening Star in 1956 about exactly this problem in his own backyard.

What's up with this woke sign, 'Unity in Diversity'?

Before women could vote, women organized. The General Federation of Women's Clubs — founded 1890 — was the national infrastructure for that organizing: at its peak, ~2 million members building libraries, fighting child labor, pushing for public health. "Unity in Diversity" was their motto, coined at the 1889 founding meeting — 130 years before it became a woke battle cry. The sign sits next to Lizzie French's marker because French founded the Ossoli Circle — Knoxville's women's civic club, est. 1885 — and personally attended the GFWC's 1889 organizing meeting as Ossoli's representative, making it the first federated women's club in the South.

Why does this street sign sound familiar?

Shira went to college in Philly, and I visited her more times than I can count. When we spotted Walnut Street in downtown Knoxville, then Locust a block over, both of us thought of her college days. I pulled out Gemini and asked what felt like a long-shot question: is there any actual connection between these Knoxville street names and Philadelphia's? I fully expected "fun coincidence, but no." Instead: "You've got a sharp eye! There actually is a connection." Charles McClung, who surveyed Knoxville's original 64 lots in 1791, had previously lived in Philadelphia — and brought the names with him. Walnut, Locust, and Church are all deliberate Philadelphia echoes. Gemini's verdict: "18th-century hometown nostalgia that became the permanent map of downtown Knoxville." Bonus: Gay Street in Knoxville is thought to be named after Gay Street in Baltimore — our neighbor to the north.

Gear MVPs

No blog post about a foot-powered adventure would be complete without a nod to the gear that made it work.

Shira's MVP: KT Tape. Over the years, Shira has been plagued with knee and ankle pain. We followed this tutorial for ankle support, and this one for knee support. And just like that, Shira had no pain at either location.

On day 2, Shira awoke with pretty severe pain at the top of her left foot. It hurt enough that she imagined it might be a stress fracture. We followed this top-of-foot pain taping guide, and the pain subsided.

How a couple of strips of well-placed tape can make such a difference is beyond me. But it worked. KT Tape takes some practice to apply, so if you're interested, try it before the big day. That said, it's awfully forgiving: my results never look as nice as the video versions, and yet they're still effective.

Ben's MVP: Shira's Mom's (z"l) 20,100 mAh battery pack. I relied on three devices for this walk: my Garmin Venu 2 Plus for real-time stats, my now-retired Galaxy S22 Ultra running Backcountry Navigator to reliably record our GPS track, and my new Galaxy S26 Ultra for photos, mile-marker voice notes, and Gemini field research. The Garmin and S22 held up fine on battery. The S26, thanks to all the photos, did not.

We inherited from Shira's Mom's estate a massive Ankur 20,100 mAh battery. Day one, I reluctantly schlepped it as a just-in-case item — heavy enough that I almost left it at the hotel on day two. I brought it anyway. When my phone hit 33% around 10am, I knew I was in trouble. That's when I grabbed Mom's powerbank. As luck would have it, the shorts I was wearing had a cell-phone pocket that fit the battery perfectly. I dropped it in, ran a cable to my phone in the front pocket, and charged on the go.

For the remainder of the walk, I kept my phone charged and smiled as I got to bring Shira's Mom along on our walk in an unexpected way.

The Why

As we ticked off the miles, I mulled over why we were even doing this. No doubt, the idea had its roots in my ego. I wanted my 50th birthday marked by a physical accomplishment. However, as we neared completion of the route it occurred to me that our undertaking had morphed into far more than a show of strength. We'd spent significant time planning our route, tuning gear and food lists. We breezed through some parts of the walk, while other parts were a challenge. We had the joy of discovery and moments of perfect timing, interspersed with pain and the hint of failure. Ultimately, we crushed our goal (52 miles!), even finishing on speaking terms.

In short, I'd given myself the gift of adventure. More than that, it was a right-sized adventure. This was a real challenge, with real payout, all without turning into a burden.

Hovering in the back of my mind since we committed to the 50-for-50 were two simple questions: was it going to be worth it? And was this the desperate act of an aging man? Was it worth it? Absolutely. A desperate act? Not even close. Thanks to all Knoxville had to offer, this was the real deal, an adventure to be proud of.

Time to start planning 60-for-60!

I captured a selfie and some voice notes at each mile marker. Find these field notes here.