[1] Local-first software:
[2] Murphy's law:
[1] Local-first software:
[2] Murphy's law:
You can setup a watch without a phone and without ever activating the online services.
They are here only for backup and additional features like social sharing. You can also backup locally with open source software if you want.
That's why I chose one and it's one of the best products I ever had.
... Sorry, what type of file is it? Just a CSV?
Obtaining the file is as easy as connecting the cable to the device and plugging in to a USB port and accessing the mounted drive
FIT format details: https://docs.fileformat.com/gis/fit/
Converter: https://github.com/dodo-saba/fit2gpx
I'm building a running analytics app, which is really just for myself but if it turns out to be any good then I'll might turn it into a SaaS. Target market would be for fairly decent amateur runners (e.g. 2:20-2:30 marathon) but not good enough to be pro. The pros have awesome tools but sadly most are not available for us mere mortals but I can build some of them! Example features:
1. The strava GAP model doesn't fit very well for me. So I've made my own. I update the model each month too.
2. I've also built a wind resistance model which works quite well. I'm trying to do the same for surface types, heat and humidity as well.
3.Using adjused pace data I built a pace/duration model to estimate critical speed and this model forms the basis of tracking progress over time. Clearly most training wont be all out efforts, so I also estimate race performances based upon current fitness as well. E.g. if you ran X speed for Y time at a sub maximal effort then you can estimate what a maximal effort would be based upon the remaining aerobic and anaerobic power. From reading sports science literure, this is the most advanced way to track performance at the moment. The actual model I use is called an omniduration model [1].
4. I also have build some other models, e.g. Daniels running formula, which can be used but I don't find them to be as useful as the omniduration model.
5. I'm also trying to model how a workout will effect your fitness. Where it's base/aerobic, threshold, VO2max or an anaerobic effect. Then, the idea would be to look at future training performance to assess whether the model was correct. This was you might be able to determine which types of sessions result in the best outcomes for you.
- Attach watch to laptop via USB-C -> opens like a USB drive, showing all the config and activity data files. You aren't locked into Garmin Connect or Strava or any other platform.
- You can also use the Garmin Connect API and go via the web service. I tried that first. But since discovering the raw data is available directly on the watch, I don't anymore.
- Activity data files are in the FIT format. Garmin has an SDK on GitHub in languages including Python, C# and a few others. I've tried the Python one.
- There are a couple of projects on GitHub for decoding FIT files. I've just started writing my own as I want to output modern Pydantic models. (And the Python code in the Garmin SDK is not the most efficient or idiomatic).
I've had my Garmin watch for 10 months now, and rate it as my best ever purchase for improving my fitness and performance, and for overall motivation to be more active. Having easy access to the raw data files is a huge bonus that I didn't originally consider.
Here's a quick writeup of my experience:
I'm a very happy Garmin customer. I'm on my 2nd watch, a Venu 3. My favorite feature: the battery lasts multiple days, usually a week, w/o a charge (depending on how I use it).
The watch provides access to its flash storage using MTP (Media Transfer Protocol). This allows me to access the contents and update the music on it using my Linux computer.
I manage the other watch features (tap-to-pay, custom watchfaces, apps) using the Garmin Connect and Garmin IQ app on an Android phone. These are not open source, and I don't know of clones.
The watch UI itself is a pretty clunky, menu-driven design. It took quite a bit of tweaking to configure it to my tastes, but the combination of "glances" and "shortcuts" let me access the features I want within a few swipes, taps, or button presses.
Configuring apps and custom watchfaces requires internet access, as these use javascript-based applets running on your phone inside the Garmin app to do the configuration. This is annoying. Everything else works offline, or with a bluetooth connection to an offline phone (for example, I have a habit of changing the time to my destination timezone when I'm on a flight, this works once I update the timezone on my phone with no internet).
There is a desktop Garmin program for updating firmware, but it is terrible. It is designed to work with every Garmin product (not just watches) and has a definite "design by committee" feel. Luckily, I don't need it. I think I would need to use it if I had one of the larger watches that supports offline maps.
The features I use the most:
- the clock
- sports tracking, step & stair tracking
- tap-to-pay (this is so nice)
- pulse
- the compass (sometimes I just want a cardinal direction when I'm disoriented)
The sleep tracking is interesting, though I don't need it (mostly it says I don't sleep enough).
They let you develop apps with an API and a proprietary programming language called Monkey C that looks a bit more like JavaScript / ActionScript. It runs in a bespoke VM that has been reverse engineered but I don’t think anyone ported another programming language or LLVM to it.
There is a small open source community.
Overall it’s not that different than developing open source apps for Apple, but with much fewer people.
APIs are locked behind "contact us" button and is only reserved for enterprise users with seemingly arbitrary criteria on what/who they want to work with
How's the outgoing connection established to send the position established then?
I think the only major impact is that "coached" activities won't be available, but everything else in the watches works without a network connection. Data history isn't hugely available on the watch either, but that's just an inconvenience.
It might be annoying, but it still works. Without a note in the app, i would not have noticed.
Garmin support[2] is not really good. Some commenters here mentioned that Garmin watches can work without servers, maybe that's why.
It's not local-first by definition, because you still need a phone with an app, but it's the best I got for now (apart from finally assembling my PineTime watch).