post dc blog post

This commit is contained in:
Joshua Goins 2025-02-17 09:23:02 -05:00
parent 8e98be2808
commit 57fd728c0b
5 changed files with 18 additions and 11 deletions

Binary file not shown.

View file

@ -1,10 +1,12 @@
---
title: "Navigating Washington D.C. with FOSS"
date: 2025-02-16
draft: true
date: 2025-02-17
draft: false
---
I visited [Washington, D.C.](https://en.wikipedia.org/wiki/Washington,_D.C.) recently and wanted to discuss the open-source software I used to navigate the city. I think my experiment was successful, although I had no control over what my partner used (e.g. Google and Apple Maps) so it wasn't 100% on me.
I visited [Washington, D.C.](https://en.wikipedia.org/wiki/Washington,_D.C.) recently and want to discuss the open-source software I used to navigate the city. I think my experiment was successful, although I had no control over what my partner used (e.g. Google and Apple Maps) so it wasn't 100% on me.
![Outside DCA on the Metro platform. We are high off the ground, and there is snow covering the rooftops.](platform.webp)
# Operating System
@ -12,7 +14,7 @@ I use [GrapheneOS](https://grapheneos.org/) on my phone, which normally isn't no
![One of the proxy option pages.](proxy.webp)
My only _guess_ as to what happened is some kind of weird issue with GrapheneOS's proxy servers for the SUPL[^1] and PSDS[^2]. Once I got home and switched to the "Standard server" options I was able to get a lock on my location. I didn't have a problem with the proxy servers in my hometown before, so hopefully this is some kind of one-off error?
My only _guess_ as to what happened is some kind of weird issue with GrapheneOS's proxy servers for helping with geolocation. Once I got home and switched to the "Standard server" options I was able to get a lock on my location. I didn't have a problem with the proxy servers in my hometown before, so hopefully this is some kind of one-off error?
# Itinerary
@ -30,22 +32,27 @@ If you wanted to travel the Metro it was obtuse. It will correctly navigate, but
![It shows you a route on the map, but you have to zoom in and visually follow it. It only shows you in vague steps (walking, transfers, and so on) at the bottom.](transit.webp)
The bigger problem for me was _searching_ for places. The UX more to be desired, it's a fullscreen view unlike other apps that show this in list and map form at the same time.
The bigger problem for me was _searching_ for places and the UX leaves more to be desired. It's a fullscreen page, unlike other apps that can show this in list and map form at the same time.
![For example, finding the closest coffee shop. You can switch between map and list form (nice!) but I really need both to figure out which is which. I'm also not at D.C. anymore, so these distances become meaningless to me.](searching.webp)
I like how it shows you how far away things are from you - but it's based on your _current_ location. My location was wrong or inaccessible for most of the trip so this wasn't too useful. I would've preferred it to be based on where I was looking at on the map, or if I'm routing - the "From" point.
I really appreciate Organic Map's offline-first approach during the trip! Since I downloaded the Maryland map ahead of time, it was really fast and easy to access. If my partner was struggling to access something on Google, I could hastily find it using Organic Maps[^3]. One downside I noticed is that if I updated or added something to OSM in another app ([Vespucci](http://vespucci.io/), [StreetComplete](https://streetcomplete.app/)) it wouldn't show up in Organic Maps, obviously. I don't consider that to be a real problem though, it's only because I was contributing data at the time.
I really appreciate Organic Map's offline-first approach during the trip! Since I downloaded the Maryland map ahead of time, it was really fast and easy to access. If my partner was struggling to access something on Google, I could hastily find it using Organic Maps[^1]. One downside I noticed is that if I updated or added something to OSM in another app ([Vespucci](http://vespucci.io/), [StreetComplete](https://streetcomplete.app/)) it wouldn't show up in Organic Maps, obviously[^2].
I hope this doesn't sound like I'm super disappointed in Organic Maps, it was 90% of the way there to replacing proprietary maps for me which is really impressive. The ecosystem can only improve from here!
# Translating Google Maps Navigation to Organic Maps
There was an instance where I wanted to open a ["google.navigation" URI](https://developers.google.com/maps/documentation/urls/android-intents) but couldn't since I didn't have any applications that handle it. These links are like "google.navigation:q=a+street+address", and there's a couple of places where this is used in Itinerary. [Organic Maps can't open these](https://github.com/organicmaps/organicmaps/issues/475) at the moment. I also found encountered some cases where geographic coordinates provided by Itinerary didn't line up with a feature in Organic Maps. The street address search is lacking in Organic Maps too, so I can't pass some queries directly to Organic Maps.
There was an instance where I wanted to open a ["google.navigation" URI](https://developers.google.com/maps/documentation/urls/android-intents) but couldn't since I didn't have any applications that handle it. These links are written like "google.navigation:q=a+street+address", and there's a couple of places where this is used in Itinerary. [Organic Maps can't open these](https://github.com/organicmaps/organicmaps/issues/475) at the moment. I also found encountered some cases where geographic coordinates provided by Itinerary didn't line up with a feature in Organic Maps. The street address search is lacking in Organic Maps too, so I can't pass some queries directly to Organic Maps.
I quickly whipped together an Android app before I left that handles this URI scheme and a little bit more. It's only available in source-form [on my Codeberg](https://codeberg.org/redstrate/Navigator) with a _terrible_ placeholder name. I'm also new to Kotlin, so the code is functional but looks terrible. The app is so simple it doesn't even need a screenshot. It [uses Nominatim to resolve queries](https://nominatim.openstreetmap.org/ui/about.html) and get latitude/longitude coordinates Organic Maps has no trouble displaying.
I quickly whipped together an Android app - before I left - that handles this URI scheme and a little bit more. It's only available in source-form [on my Codeberg](https://codeberg.org/redstrate/Navigator) with a _terrible_ placeholder name. I'm also new to Kotlin, so the code is functional but looks terrible. It [uses Nominatim to resolve queries](https://nominatim.openstreetmap.org/ui/about.html) and get latitude/longitude coordinates Organic Maps has no trouble displaying.
[^1]: Secure User Plane Location.
[^2]: Predicted Satellite Data Service.
[^3]: Even things like the Wikipedia blurbs were saved, which were neat to read.
# Bonus Politics
I didn't attend any protests there unfortunately, there was one on the 14th but I didn't see the poster until the next day. There was a surprising amount of pro-LGBTQIA+ material we saw throughout the city too. Definitely way more than I see in my conservative hometown, but I guess that's not really a surprise.
![A poster of Elon Musk, consisting of a stylized portrait of his face with the text: "I AM STEALING FROM YOU.". This poster near the Department of Education, and the Department of Health and Human Services.](stupidface.webp)
[^1]: Even things like the Wikipedia blurbs were saved, which were neat to read.
[^2]: I don't consider that to be a real problem though, it's only because I was contributing data at the time.

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1,002 KiB