Notifications in ConnectStats

ConnectStats got its first release in a while this week. It now supports notifications. This is currently not enabled by default, you’ll need to enable it explicitly in the services configuration page for Garmin.

The notification only works if your source of activity include Garmin and ConnectStats as a source. It is not possible to get notification into connectstats if you use Strava as a service.

Continue reading

Detailed Comparison of Running and Cycling Statistics over time

Comparison to previous period in percentage change

ConnectStats 6.8 comes with significant rework of the statistics and calendar page. The main new feature is the ability to compare the numbers between weeks, months or years. Let’s dive in.

First, this new feature needs to be activated by switching to the new theme 2021 in config if you haven’t already. Because it’s still has some quirks, this is not yet the default, but it’s likely within one or more release, I’ll make it the main default theme.

Continue reading

Garmin Service Error

As of last night, February 23rd, the Garmin service changed and now ConnectStats receives Service Logic Error as Garmin is rejecting the current approach ConnectStats uses to access the Garmin web page information.

I am pushing a new version that fixes the issue, hopefully will be approved soon by apple,

As explained here, you can still access your activities by making sure you use the ConnectStats service, which is still working. For that follow instruction in the link and make sure you select for Garmin Source “All” or “ConnectStats”. This should let you access new activities properly.

Please note that if you enable the connectstats service for the first time or if you are a new user of the app, you will not get any activities prior to you registering for the service, as Garmin only sends new activities after you registered. I’ll see how to improve that or write about how to work around it later.

I’ll update further when I have time to properly investigate and see if there can be a workaround.

Sorry for any inconvenience, please check here again later for updates

AppStore Submission Rejection Syndrome

Users reported an occasional Access Denied error with the Strava service and last week ConnectStats release. Thanks to the bug report, it was fairly easy to get to the specific workflow in the strava service that was confusing ConnectStats. The fix was the easy part. Then I went on to the dreaded “submit and get apple approval” part of the release process.

The review process is a bit of a black box random process. You submit the same application over and over and sometimes it’s approved in a day, sometime faster, sometime slower, and sometime you get “Rejected”…

Continue reading

A New ConnectStats for 2021

Living in London, the year end period ended up in new strict lockdown with very few options but to spend a lot of time at home, and skip the traditional visit to my family in France and Switzerland. Luckily me and my family stayed safe so far.

Biking in empty London around year end

I took the opportunity of being at home to make quite a few changes to ConnectStats both internally and externally…

Continue reading

How to easily move iOS Simulator data files after Xcode upgrade

If you maintain an app like ConnectStats that has a lot of local files on the device and does not rely on the cloud constantly for input, each time Xcode upgrade all the iOS Simulator starts empty again and loose all the files from the previous version.

The iOS simulator keep it’s file in some complicated folder structure and the folder change each time you start it, so it can be quite tricky to locate the files. And so quite painful to locate all the folder for the previous and new version and move all the files over.

I’ll go over the solution I use in this post, using a small cli tool I wrote

Continue reading

Swift Package for Fit File Parsing

Garmin sends ConnectStats all the data as Fit Files, so I had built a library to parse it for the app. I used the code from the official Fit SDK. Originally I used the c++ implementation provided in the SDK as it was providing a way to get all the data pretty generically. The SDK while quite generic was actually quite slow in parsing.

About 2 years ago, as I wanted to get ConnectStats to get the extra information from the fit file and parse them systematically for each activity, the speed started to become an issue. So I wrote a new library in swift based on the c implementation of the SDK.

That ended up much faster than the previous version, and ConnectStats has been using it for a while, as well as FitFileExplorer which is a tool I wrote to see the raw fit files.

While I had provided that library on GitHub and it was open source, it wasn’t really easy to integrated into another app. Following a request last week, I investigated how to make it a Swift Package which I wasn’t really aware of. Always a good challenge to learn something new!

Continue reading

Home Networking Adventure

One of the requirement for me in finding a new house was to make sure it had ethernet cabling everywhere so I could ensure I have a stable network and enough access point to get good wifi connectivity in every room.

When I moved into a new place in August 2016, it met the requirement, but to my and my family dismay, the network and wifi stability was dreadful. It consistently would stall time and time over again. Streaming movies or music want halt for minutes at a time, and reading news on the web would also randomly hang.

I embarked on a long journey to try to resolve the issue, which would lead me to learn way more about networking that I ever imagined possible…

Continue reading

Yet another step up the provider ladder

New Cloud Provider

I have already documented my adventures in getting the service behind ConnectStats to keep up with the users increase.

I have now yet again upgraded my provider. I was using GoDaddy Enhance plan and have just migrated my server to Digital Ocean.

The previous service was having regular glitches, was slow to process data from Garmin and limited option and flexibility for upgrades. It was time to change.

Continue reading

Moving weather data from DarkSky to Visual Crossing

ConnectStats history with the weather had a few chapter. First, I started to get the data from the Garmin Website so I could display the condition, the temperature and mostly the wind direction and speed in the map, which is always a good visual clue of how the wind helped or hurt in an activity.

When Garmin stopped publishing its weather data in the API, ConnectStats ended up without the weather for a while. Until Garmin opened its new API which required me to implement my own server, and indirectly made it easier to query the weather to display in an activity.

In March, Apple announced it was purchasing DarkSky and as a consequence it was going to shut down the API access to third party developer by next summer. So it was time to look for a new API. I will move the app to use Visual Crossing.

Continue reading