Skip to content

routes

GPX routes worth keeping, with a spreadsheet index, so they can be loaded onto the Garmin (Forerunner 970) or the Magene C606 V2 later or rebuilt. Repo: ~/routes → github.com/angelEmbeddedEra/routes (private)

Status

  • 2026-09-09: created with the two Sandling Beach Triathlon Festival bike courses (Sprint 20.0 mi, International 25.3 mi), both also uploaded as Garmin courses.

Decisions

  • routes.csv is the source of truth; tools/build-index.py validates every GPX and regenerates the README table. Never hand-edit the table.
  • GPX files carry no <ele> — devices compute elevation from their own DEM; mixing sources gives a lumpy profile.
  • Garmin course ids and Magene load status live in the CSV row, so "is it on the device" is answerable without opening an app.

Gotchas

  • The Garmin MCP runs in a container and only sees ~/garmin-data as /data — copy a GPX there before upload_course.
  • RideWithGPS refuses .gpx export without login but serves the route as .json (/routes/<id>.json) with track_points and course_points (turn cues). OSRM's public router works from this box for the odd missing leg.
  • Garmin upload_workout sport ids: 10 = multi_sport, 9 = hiit, 4 = swimming, 2 = cycling, 1 = running.
  • Magene has no API; OnelapFit's GPX import is the way in. magpx on GitHub exists but is fragile.

Log

  • 2026-09-09: repo created and pushed; Sprint course built from RideWithGPS 37620725 + OSRM leg + official map; International straight from the RWGPS route.
  • 2026-09-08..13: race-week Garmin workouts for the Sun 2026-09-13 practice sprint tri: Tue tempo 1692355492 (done), Sat shakeout 1692392517 + 1692392581, Sun multisport RACE PRACTICE 1693043006 (6 bike sections with speed+cadence each; replaced 1693020801). The coach's 3h12 brick was deliberately skipped that week. Process side: map/processes/training-sync.md.
  • Course build: Sprint = RideWithGPS 37620725 (Olympic) + OSRM for the Bruce Garner/New Light leg; International = the same RWGPS route (25.3 mi, 1,102 ft per the build log; the CSV says 1,032 ft, trust the CSV). They differ only at mile 9 (Sprint RIGHT onto Bruce Garner; International LEFT to Lawrence, Mangum Dairy, New Light). Course ids 512961452 (Sprint) and 512962555 (International) are in routes.csv.