Todayโs project: run through the course with Taylor Harris and migrate ~8 years of Fitbit data into Garmin after switching devices. The problem to tackle as part of the course sounded simple enough: export the data, do a bit of finagling, then import it into Garmin, then, as usual, reality showed up.
We were helped by Simone Primarosa online version of fitbit2garmin (which is very cool), but the export still needed a fair bit of investigation (https://lnkd.in/g_US4rKS)
Each metric folder - Steps, Calories, Distance - had its own mix of JSON and CSV files. ๐ก๐ผ ๐ฐ๐ผ๐ป๐๐ถ๐๐๐ฒ๐ป๐ ๐ณ๐ผ๐ฟ๐บ๐ฎ๐ across an export thatโs supposedly from one system.
Distance came as a CSV with its own column names. Other data was JSON with totally different field names. ๐ฆ๐ฎ๐บ๐ฒ ๐ฐ๐ผ๐บ๐ฝ๐ฎ๐ป๐, ๐๐ฎ๐บ๐ฒ ๐ฒ๐ ๐ฝ๐ผ๐ฟ๐, ๐๐๐ผ ๐ฑ๐ถ๐ณ๐ณ๐ฒ๐ฟ๐ฒ๐ป๐ ๐๐ต๐ฎ๐ฝ๐ฒ๐.
๐ง๐ต๐ฒ ๐ฟ๐ฒ๐ฎ๐น ๐ณ๐ถ๐ป๐ฑ: at least in this export, Fitbitโs JSON timestamps looked like local time but behaved like UTC, with no timezone marker to tell you so. Our calculated daily totals were off - not garbage, just wrong by a believable amount. The kind of wrong thatโs easy to ship and never notice.
We confirmed it the only way that counts: pull the raw file, manually sum one specific dayโs steps two different ways, and checked both against the Fitbit app, with Claude helping repeat the check. One method landed dead on and the other was off by ~1,500 steps for that day - ๐ฟ๐ฒ๐ฐ๐ผ๐ป๐ฐ๐ถ๐น๐ถ๐ฎ๐๐ถ๐ผ๐ป๐ ๐ฎ๐ฟ๐ฒ ๐๐ต๐ฒ๐ฟ๐ฒ ๐ณ๐ผ๐ฟ ๐ฎ ๐ฟ๐ฒ๐ฎ๐๐ผ๐ป.
๐ฉ๐ถ๐ฏ๐ฒ ๐๐ผ๐ฑ๐ถ๐ป๐ด, ๐๐ผ๐ป๐ฒ ๐ฃ๐ฟ๐ผ๐ฝ๐ฒ๐ฟ๐น๐ initial course run is now under my belt, Claude Code performed amazingly and the project solved a real, and messy problem rather than an example.
๐ฆ๐๐ฎ๐๐๐: code is documented, weight data is imported into Garmin, activity data import testing begins tomorrow, and the GitHub repo is updated and public. (https://lnkd.in/g5pQCw5y)
Back to the coffee.
