Devlog update: since launching Gogomi!

It's really cool seeing more people use Gogomi. And this time I mean strangers who found it on the App Store, not just friends or people who follow my socials.

At dinner, a friend showing walks on his Gogomi
At dinner, a friend showing walks on his Gogomi. 'So close to completing downtown', he says.

In the spirit of a recent reminder to celebrate what's been done so far, instead of just looking at the direction I want to go, here's what's been happening since January:

I gathered screenshots scattered in my notes into a muse board that documents the journey
I gathered screenshots scattered in my notes into a Muse board that documents the journey, to remind me of the process: from clunky siri shortcuts to app that's on the store

More Gogomites in the wormery!

I like to take a look at the wormery from time to time, especially now that Gogomi's out in the wild. I see some new traces and I'm very curious. Who are these people? What are they exploring?

Checking the wormery on a recent evening
Checking the wormery on a recent evening. Also a rare pic of me behind the computer.

The wormery as of today
The wormery as of today. That green mesh in Mount Pleasant is definitely Desmond going at it, but who's weaving through East and South Vancouver? I'm so curious!

Why Gogomi?

I got a nice little reminder why Gogomi exists. Someone sent me this article about a runner who completed every street in Seattle. David was on a similar goal to mine (I'm taking the slower approach, hehe). It's a great blog post and it was really fun seeing their process. Then I got to this part:

"My usual routine was to draw a route using the CityStrides website, print out the map, mark it up with a pen, drive to the start, do the run, and then drive back home.

— David Helder

David had to print maps and use that to navigate, which sounds very admirable (it's dedicated work) but clearly wasn't something I wanted to do. Turns out I'd already spent too many hours automating this exact problem, because like any engineer, I couldn't help myself. That's exactly what Gogomi is for.

While Gogomi doesn't have route planning features (yet), whenever I'm out on a walk and looking for something new, I can tap the button and follow the reds. Convenient.

David's impressive stack of marked-up maps
Me holding phone with Gogomi on a walk around Willingdon Heights
(left) David's impressive stack of marked-up maps - (right) Me holding phone with Gogomi on a walk around Willingdon Heights

Multi-city support?

One of the coolest things since launch has been seeing people around the world fill out the waitlist. So far, we have about 30 responses from 12 cities across North America, Europe and Africa! But also a bit unnerving 'cause I did not build Gogomi with multi-city support in mind 😅

Some responses to the waitlist form just from January this year
Some responses to the waitlist form just from January this year

Full disclosure: Gogomi started as a bunch of scripts for myself, then my friends, and now strangers in Metro Vancouver. When I laid early foundations for the data system, I focused on the minimum needed: Vancouver only.

One decision I've regretted is making Gogomi's geospatial data pipeline work only in a projected coordinate reference system (CRS) suited for Vancouver's UTM zone (10N), but not others like New York's (18N). This CRS was literally hardcoded throughout the pipeline and database schemas.

To prepare Gogomi for other cities, I had to rework the pipeline: store everything in the more standard WGS 84 CRS, then handle conversions to appropriate CRSs for each region's distance calculations (depending on where the walk was recorded). Most of the tedium was in testing and migrating the existing data stores.

After migrating to WGS 84, processed test walks showed up as straight lines instead of actual traces
After migrating to WGS 84, processed test walks showed up as straight lines instead of actual traces. I forgot WGS 84 uses degrees, not metres, so all distance calculations were wrong!

I was so happy once the pipeline started working! To test properly, I snuck in support for some Toronto neighbourhoods (experimental!) for a friend who'd been waiting and their walks rendered perfectly, no more straight lines, yes!

More stable syncing

Up until recently, the app used a bunch of hacked together functions and background tasks to send walks to the data pipeline, but I've got clarity now on what reduces bugs. Some Gogomites wanted more immediate feedback from their walks, so I built two complementary sync routines: a 'fast' system 1 and a 'slow' system 2 (thanks, Kahneman!):

System 1 (using observer queries) kicks in right after you finish a walk on your Apple Watch, grabbing the workout data within a minute or two. But there are many edge cases where it misses things, like if your phone is locked before the GPS route for the walk fully syncs from watch to phone, or if iOS kills the background process before it's able to process longer walks (retries don't help)

Recording my first walk on my watch since returning to Vancouver from a Ghana trip
Recording my first walk on my watch since returning to Vancouver from a Ghana trip

System 2 is what I've used historically since I didn't mind receiving a notification about a walk hours to even a day later. It uses regular checkpointing to sweep up anything System 1 missed (really glad I made the backend pipeline idempotent so that sending repeat walks didn't crash or bloat the system). System 2 is slower (notifications might come hours later) but surer (it catches everything eventually).

I think together these two complement each other nicely, though the code is currently a tangled mess as I hack things together in the little time I have. Testing this has been really something else, especially since the only way is to do it IRL over time.

Gogomi sync status view showing the two syncs and empty logs
Gogomi sync status view showing the two syncs and empty logs

Hmm

You know, it's as I'm writing this that I realise there really is a lot to be grateful about and hopeful for, but I'd admit I feel myself having less and less capacity to work on this side project.

At work, I've taken up new responsibilities as my employer doubles down on the new AI wave, which means a bit more crunch. Being the stubborn person that I am, I still find some time in the evenings or weekend mornings when I wake up earlier than I should.

Still, I'm a bit wary, Gogomi is growing and seems to be requiring more effort to get it where I'd like. As exciting as that is, logistically, I feel like I'm burning from both ends of the stick. Not sure that's sustainable, we'll see…


Message from a Gogomite noticing new walking habits
Message from a Gogomite noticing new walking habits. This is what Gogomi is about. I remember when this started happening to me too

RSS Subscribe to RSS