I lately have not been very active in ConnectStats development. I have been quite busy, which didn’t help, but also I do not have a lot of new ideas, beside a few little features requests people sent me.
So I have decided to open source the code for ConnectStats (and my other apps). Maybe some people will want to help, or the code could help others who’d want to build similar apps. Hopefully more people will help think of new ideas or make the app better.
I definitely plan to continue maintaining the app. I released a new version (4.0) which will not have many new features but will be in sync with the refactoring and little cleanup I made before pushing the code to GitHub.
You can find the code here https://github.com/roznet/connectstats
The repository also contains the code for HealthStats, which I need to fix to work with the latest version of iOS, FitFileExplorer, an utility for macOS to open files, as well as TennisStats, an experiment to record and analyse tennis matches.
I also open sourced a few more of my apps:
My other iOS app MacroDial can also be found here https://github.com/roznet/macrodial.
And finally Simulator Data Finder, an utility to access iOS simulator files conveniently on macOS, is also available here https://github.com/roznet/iossimfinder.
The bad news: it seems the old Garmin API connect stats was using is no longer working for some people which results errors during download.
The good news is that I put in ConnectStats a way to access an alternative newer API that continues to work.
So if you get errors you should be able to fix it by going to the config screen, select services, garmin and turn alternative API on.
Everything seems to be working again. ConnectStats survives another challenge and will continue its path for now. I want to thank everyone for the messages of support and positive comment on the app. It’s nice to see quite a few people still appreciate the app.
Quite a few comments talked about paying some extra fee to keep the maintenance of ConnectStats, it is appreciated but I do not do this for the money. This is a hobby, I have a day job that pays the bills. The revenue from such an app is very limited anyway. The small fee I charge for the app, is mostly to cover apple and other services fees and so I can buy guilt-free development tools or gadgets that I don’t really need, and justify it as needed to test or work on the app…
What is much more motivating for me is the support messages and continued positive feedback and reviews. So do not hesitate if you like the app to continue to review it positively on the store. If anything I am contemplating making ConnectStats an open source project, but I didn’t find the time to do the necessary refactoring and cleanup it would require to let others contribute.
A lot of the main apps provided by the big players are improving fast. We are a long way from the beginning of ConnectStats where I felt the urge to build an app as nothing provided the type of analysis I wanted. Garmin Connect is improving fast, and I really like the Strava app. I feel some of the feature I see added elsewhere are similar to some of the one built for ConnectStats offer some time back. I like to think, sometimes, that ConnectStats was a positive influence. Probably it’s presumptuous and they would have improved the apps anyway.
Where ConnectStats lacks quite behind is the aesthetics. I wish I had the time and the skills to make it look better, similar to Strava or the Withings app that I like quite a lot.
I thank everyone for the messages of support, and I’ll continue to do what I can to keep ConnectStats alive as long as possible.
So I managed to find some time and fix the parsing error problem this weekend. I have submitted the fix to apple, it usually takes a few days to make it to the store from here.
The API changed quite a bit, so was trickier than in the past, but the good news is that it got simplified quite a bit, so now my code to connect is much cleaner…
I know it can be a bit frustrating for connectstats users to have to live with regular issues related to log in into garmin, but let’s not forget that we need to be grateful that garmin continues to tolerate access to their API via connectstats. Their preference is for people to build a full back-end service and use their push API. This unfortunately would not be viable for a small app like connectstats, but too expensive to maintain and would take too much time for me to build. So thank you garmin for letting connectstats continue its
I also want to apologise to ConnectStats users, as I have lately been extremely busy and didn’t do much new development or wasn’t very responsive to user requests. As some of you may know already, I do the app as side hobby, but have a quite busy day job. We are actually lucky, as if the outage had happened a few months ago, it would have been quite difficult for me to get the app back up and running. Beside keeping track with Garmin’s changes, a few month ago, apple made changes to its system that also broke connectstats and I was unable to push any fixes for a while. Luckily I had just resolved it a few weeks ago before the outage…
Hope connectstats despite these headwinds will continue to be available for a while.
As of this morning the API from garmin seem to have changed again, and connectstats can’t download activities from garmin any more. As usual when this happens, I have removed the app from sale and disabled the bug reporting while I investigate.
I will revert as soon as I figure out how to fix it.
It’s time again to look at the past year summary. How did I do?
2016 was a fine year, I ran 1387 km, it is 100km behind 2015. But one aspect bothered me, looking at the distance, there is a clear increase on the graph in December 2015, which put me behind in 2016. It worried me a bit. I couldn’t remember an especially good December last year. Did I have another bug in ConnectStats?
I went to check on Garmin connect and it reported the same distance as connectstats: 1478km for 2015…
Hum. Next step was to go and look at the activities in December last year. The search feature in ConnectStats made it easy, just enter
december 2015 in the search box of the activity list. Sure enough, I found some duplicate activities. This started to be very worrying. ConnectStats imported the same activity twice? New bug? After some more investigation, it turned out the problem was in Garmin itself… Quite a few activities in 2015 appear twice on the website as well…
They have a different activity identification number, but they are clearly the same activity except for the altitude gain as you can see on the snapshot above.
Next steps was to add a new feature to ConnectStats to double check for such duplicate activities and ignore them… Well, my stats are now lower only 1310km but correct. And 2016 is ahead of 2015 by 50km! Yeah!
I finally decided to check what Strava reported. My account is linked to import activities automatically. I was curious: would strava have the total including the duplicate as well? It actually didn’t… The total is 5km off from my new corrected total, but I suspect it is simply due to the slightly different way Strava computes the total distance from the gps file.
The fix to search and eliminate duplicate will be included in a new release early next year.
There is currently quite a few issues with ConnectStats following some changes in the Garmin API. I am working on it but it is quite more involved than I initially thought.
As of last release, the laps are not downloaded anymore, swimming activities do not download properly, nor do the multi sport activities. This is all due to an API access that disappeared from Garmin last week. I released an emergency fix that let people going for the main types of activities (running and biking) but I am aware there are still lot more issues. To fix the rest, I need to upgrade to a newer access point that is significantly different from the old one. I am also trying to future proof the app by removing use of all older API similar to the one that disappeared that ConnectStats is still using. I want in addition to improve the ability to seamlessly switch to Strava should Garmin decide to shut down everything for ConnectStats.
Also because the changes required currently are quite fundamental (completely new APIs), it requires quite a bit of testing and even then the testing is limited by the fact I only have limited set of activities to test (mine plus a few people sent me over the years). So it is possible that after the next release some issues will appear when others try it, but I will do my best to fix as soon as possible.
As I have explained in the past, I work on ConnectStats on the side of a demanding day job and a family, so development can be quite slow, given I can only work on it a few hours a week at best.
I am sorry about this. The most frustrating aspect for me is that I spent the precious few hours I have for development of ConnectStats on pure maintenance and not on new features. It has limited benefit for the users beside keeping the app running…
Currently I estimate it will take another week or two to complete the upgrade.
I guess garmin is making a lot of changes to their API recently. The API I used for the laps is changed. I need to work on a new fix… I have pushed a temporary fix on the store.
While in previous week, some of the changes were subtle modification of the API. Here, ConnectStats is using some older Garmin API to get the laps, which now returns a message saying that this access point is disabled. For now I removed the laps download, because that’s easy and quick, but I need to also work on using a newer API for laps. I am also going to review all the old access point ConnectStats would be using and replace them with a newer one. This will be a subsequent release, and then the laps will come back. I am worried some of these older API point may also get disabled soon.
UPDATE: good news, it seems to be an slight API change, but not an attempts to stop 3rd party. So I could get it working again. Will push an update to the store as soon as possible.
It appears Garmin disabled access from ConnectStats again. As before I’ll remove the app from sales and turn off bug reporting until I can figure out the reason. I am sorry but at the moment I have very little time I can put into the app, so it may take a bit of time to get to the bottom of the issue. Also it is quite worrying that Garmin disabled it so soon, while it could be a coincidence and still a side effect of an API change, it’s also possible they just want to stop 3rd party app.
I will update when I can, sorry for the inconvenience.
So I have a way to get the app to work again. It required a few tweaks, but I can only get it working if I do two login in a row. This is utterly bizarre and sub optimal, but I am giving up at this point trying to do better. I’ll push this version to the store so that people can get a working version as soon as possible. Maybe I’ll figure out a better way later.
I have a lot of other pending fixes and features that I was planning to release along with iOS 10. Because these other changes include iOS 10 specific code, I can’t include them in this release, so this is really a very small patch that only addresses the login issue. I will release the rest shortly after when iOS 10 is available.
Cross finger the API is not going to change again soon…