New version fixing old legacy code

ConnectStats has been around for a while now. It started in 2011, while the Garmin API was in a very different place as today. I have maintained it over the years, but there is still quite a bit of complexity in the code due to the history of the API evolution.

I am pushing a new version that simplifies some of the legacy internals of the code.

As any internal upgrade, it will help in the future and fixes some side effect or bugs coming from the legacy complexity. But it also comes with high risk as it is hard to test all the side effect. I’ll try to fix what comes out.

Swimming Activities

When one of the first Garmin Swim Watch came out back around 2013, I decided to buy one and get into swimming to try it out. I registered to my first triathlon then and started training and updating ConnectStats to support swimming activities. Back then, the files I was getting for swimming were very different from the running or biking activities. So I had some specialised code for swimming.

But because I didn’t enjoy the swimming part of my first triathlon, and probably just the fact I am quite poor at swimming, I decided swimming wasn’t for me. And so I focused only on running and biking. This resulted in swimming being a bit the poor child in ConnectStats. Quite a few users have written to me over the years with suggestion and activities sample, which provided swimming in ConnectStats a lifeline…

Recently, I got a few bug reports on swimming, so I took another look. It’s quite clear with the new API and files, and the enhancement I made to running and biking in ConnectStats over the year, that there was no more need for the bifurcated code path.

So in this version, I have now merged the code handling swimming, running, biking and any activities. This has the benefit of fixing some of the bugs related to swimming (hopefully)

Because I don’t swim myself, it is likely there will be bugs I didn’t identify. Please let me know if that’s the case.

Fields Display Names and Units

The way the field are display names and unit are determined used to be provided by the old Garmin API. ConnectStats was using that and maintaining a dynamic map of fields to display names and units. Over time, the API evolved and doesn’t always provide it so ConnectStats was maintaining it’s own version of units and display names and was switching and merging the two approaches.

I have now simplified it to only rely on ConnectStats own units and display name database. It is much simpler and will make it easier going forward. But being the text and units displayed to the user, it is also quite visible and could have undesired side effect. Let me know in a bug report what I missed…

Next focus

Just to get people hooked, the next aspect I am looking at is the best rolling graphs, power curves, etc.

These have been misbehaving quite badly recently, both on my activities and on bug report I received.

I am aware, but it’s a bit puzzling and not simple to get right as it seems to come with quite more noisy (raw) data files being sent by the Garmin Api, creating quirks.

Anyway, I am asking for a bit of patience, once I figure it out, I’ll push a fix and a post to explain the issues…

Thanks and be safe, stay home until the virus slows down. Luckily the guideline are still that going out running is fine!

11 thoughts on “New version fixing old legacy code

  1. Thank you Brice! Love the App. I bike & swim (but Lap pool closed now due to covid-19)
    Garmin Fenix 5 with TRI HR strap.
    Hope we are back in the pool by July!!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.