Article / 25th Jul 2023

I am, approximately, here

There are many questionable things about American car culture, but the road trip is not one of them. In a country as large and geographically varied as the USA, road travel is not just a necessity, but it can also be the attraction itself.

When I first moved to the USA, I had vague plans of doing some driving around and enjoying the sheer alien-ness of tiny towns in the middle of nowhere, or motels where you are somehow the only guest. Nine years in, I've done a decent amount of that, but these days my attention is more focused around the camper van that I spent half a year building.

I like to try and share a bit of the experience with those who want to see it, and as well as posting pictures and videos, I've always liked the idea of having a live map of where I am - even if it's just for friends and relatives who are interested in my progress.

Getting a live map that shows exactly where you are at all times is pretty easy; there's plenty of services that will just do that. Garmin's InReach devices have a functional UI in their MapShare tool, for example, and I've used this with my partner several times.

If I'm going to publish my location to the Internet at large, however, I don't really want to share my exact location like that; while it's relatively easy to find out where I live or might be going, I just don't want to make that information easy to get at the drop of a hat.

Making Locations Approximate

Now, if your first reaction is "well, just add a random offset from your actual position and publish that" - congratulations, you've fallen into the randomness trap. Randomness is predictable in its distribution of values, which means that with enough samples of your random locations, someone can relatively easily guess your true location.

Instead, to actually hide your position, you need to at least quantise it - round it into a grid system and always report the midpoint of your current grid square. This also has possible attacks - it fails when someone moves between two grid squares a lot, and lets you predict rough distance into the grid square based on timing - but it's better than random offsets, at least.

So, I wanted a site that could do this - show an approximate position on a map in a way that was relatively hard to reverse - as well as have it pull that position from a device I have, ideally my InReach device, since it works everywhere.

Could I find something to do that? Well, I looked for at least 15 minutes, and then concluded that I wanted to write one myself anyway.

What Does It Do?

The project, codenamed "Here Be Dragons" after my favourite fake map history fact, does just this, plus a little more:

A route with map

It's not particularly complicated, but I built it in two nights before the trip I'm currently on - from Denver to the San Francisco Bay Area (for North Bay Python) - and it seems to be working well so far, and it's a useful little tool to show people where I am on this journey.

You can see my current journey live on there if you're reading this in the first few days after posting; otherwise, maybe there's another trip listed on the top page?

If you're interested, I have opened up the code on GitHub, but I'm not taking any contributions or anything - it's just there if you want to read through it and see how messy a two-night project can be.

APRS

The one missing thing from the project so far is APRS ingestion. Right now, I'm using a Garmin InReach device to track my location - and generally, these devices are great. They're reliable, have long battery life, and work anywhere on Earth with a view of the sky.

They are also, however, expensive - not just in initial purchase price, but also in terms of the monthly plan you need if you want tracking to work ($35 USD per month, as I write this).

The Amateur Radio community - of which I am a part, though maybe not as active a part as I would like - have their own solution to this, which is a system called APRS. I'm not going to explain the depths of it here, but it sends GPS coordinates out over a common radio frequency that thousands of digipeaters with giant antennas listen to and send it up to the internet.

Basically, if you're within 20 or 30 miles of one of these sites, your position will get heard and be uploaded, and there's a lot of them, especially close to home in the Rocky Mountains (they work really well on a convenient mountaintop).

Thus, I'd like to add that in as a source as well - I've built the system so that it can accept two position sources and fuse them together as long as their timestamps are accurate, I just didn't bother with the APRS ingestion yet as I'm paying for the InReach plan this month. I'll get there.

The Lost Art Of Location Sharing

All this, though, has brought me to an interesting realisation that I want to end on. In the 2000s we had a plethora of services that hinged around location sharing as a pseudo-social-network; both travel-oriented apps like Dopplr as well as platforms that would do all this anonymisation and collection for you, like the long-dead Fire Eagle, that then themselves plugged into other places. Even Twitter had geolocation on Tweets as a pretty core feature for a long time, though it slowly got hidden and ignored.

Of course, exact-location sharing still exists inside messaging apps and Google Maps, but it's all very personal, and targeted at sharing with close friends and family; nothing really seems to have survived that does this approximate location sharing, where I can see when some acquaintances of mine are in the same city as me, for example.

It probably died off because it doesn't make sense as a product; quite rightly, most people don't want to share where they are at all times, even approximately, and also because, like all social networks, it wouldn't actually make money - which, alas, is a prerequisite for things existing now, it would seem.

It doesn't mean I miss the idea any less, though. If only I had the spare time and a few million dollars in donations to bring it back, eh? Hah.