Blog
Notes from building walker: why GPS gets things wrong and how to keep your walks, and the maths behind it.
For walkers
GPS, maps, batteries and your data, for anyone who records a walk.
- For walkersHiking with offline maps on AndroidWhy your hiking map should work without signal, how to download and test it before you go, and what an offline map can and can't do.
- For walkersOwn your walks: GPX files and backupsWhat a GPX file is, how to get your walks out of Strava or Garmin Connect, and how to keep a backup that outlives any app or phone.
- For walkersWhat your walking app knows about youA walk track shows where you live and when you are out. Real cases of fitness data exposing people, and steps you can take in any app today.
- For walkersWhen Android stops your trackerWhy Android sometimes stops a walk or hike recording in the background, which phone settings prevent it, and how to tell when it happened.
- For walkersWhy every app shows a different elevation gainSame hike, three different climbs. Why GPS height, the barometer, terrain maps and sea level all disagree, and which figure to trust.
- For walkersWhy your GPS track is longer than the walk you tookGPS noise makes almost every recorded walk too long. Why that happens, why two apps disagree, and how cleaning a track takes the extra out.
Under the hood
The maths and the code that clean a track and draw a map on the phone.
- Under the hoodAn app with no serverwalker has no server, no account and no sync. How it keeps everything on the phone, how its encrypted backups work, and what that costs.
- Under the hoodCleaning GPS tracks with a factor graph on a phoneHow walker cleans GPS tracks on the phone: a hand-rolled factor graph with steps, the barometer and raw satellites, and what it measured.
- Under the hoodMaking contour lines and hillshading on the phoneHow walker turns open lidar terrain into hillshading and contour lines on an Android phone: Horn's method, marching squares, Douglas–Peucker and MVT.
- Under the hoodUsing every satellite your phone measuresHow walker uses Android's raw GNSS measurements from five satellite systems and two bands on the phone, and what it gained on a real ride.
- Under the hoodWriting a whole Android app in Rustwalker is an Android app written in Rust: egui on wgpu, offline vector maps, an embedded SurrealDB and a little Java. What worked and what hurt.