ConnectStats and iOS 9

ConnectStats will take advantage of a few new features of iOS 9 with version 2.2.

Spotlight Search

Activities you looked at will show up in spotlight searches. So if for example you type run london in the spotlight search, it should shows activities you ran in london. Note that it will not search your whole activities history, but only the activities you opened in the last few months. To do search on the whole history you can still do that with the search function in the activity list of ConnectStats

Dynamic Fonts

Ok, technically this was already available in iOS 8, but never got around to implement it. So now, ConnectStats will use the system font, the new San Francisco font on iOS 9 and the size will be adjusted with the Dynamic Type settings of your phone. Very personally I prefer the iOS 8 font, but I feel it’s the right thing to update ConnectStats to follow the system default font. There will still be an option in the settings to revert to the old font if you really prefer that.

Optimized Binary and Asset

ConnectStats asset have been reorganised to potentially benefit from the new app thinning for the app store that should result in smaller size binaries and download.

Website change

So today this website is hosted by a new service. The intention was that it would be transparent, but it took a bit of time to remap the domain name to the new host and it resulted in quite few temporary outage.

After many years as a loyal customer to yahoo for the hosting of this website, I switched away because the iOS 9 release is coming and Apple introduced a change to improve the security of interaction between apps and website. It will now require a site with a secure connection (https). Yahoo unfortunately didn’t support https in a way that enabled me to support some of the new features of iOS 9 I intend to leverage.

It is possible to continue to interact with an insecure website from an app by registering an exception, but two main reason led me to make the change:

  1. It’s just the right thing to do. There are a few informations sent from the app to the website when you send a bug report or use google earth, and it’s just better to secure it going forward.
  2. It will allow some interesting interaction between the web and the iOS9 version of the app, where by I could write an explanation of a screen and link it directly to opening the app on your device with the matching report or graph. Given some of the graphs and analysis are a bit involved and I didn’t figure out a nice way to integrate a help on a small screen like the phone, I am hoping this will be quite helpful for people to have more fun with the app.

Note that the secure uploads and the new features I mentioned above will not likely be included in the first version for iOS9, but hopefully shortly after.

 

Year to date or Month to date statistics

Version 2.1 of ConnectStats introduces the ability to see year to date or month to date statistics. The yearly cumulative graph was already giving a good idea of how well you were doing this year versus the last, but now you can see the full stats you reached at the same point of last year.

Below for example you can see that in 2015, so far I ran 758km, while on the full year of 2014 I ran 1356km. If you press on the button All, you get to the YTD screen, that shows that in 2014 at the same point in the year as today (August), I had run 913km.

IMG_1664 IMG_1665

In the monthly view, the graph is slightly different, the full month bar is shown, but the blue shows how much for each month was reached at the same point in the month, here around august 15, or about half way through the month.

 

IMG_1666 IMG_1667

Best Rolling Graphs over Time

ConnectStats can now maintain best rolling graph over time. I find it quite interesting to see how one month compare to the other. You access the feature by going to the statistics screen and it’s the graph at the bottom of the summary page.

You can also find information about best rolling plots for an activity here and how to interpret them here

Initial Computation

Computing these graphs can be quite expensive. Every time you do a download, ConnectStats will process a few activities. It requires the full activity details, so only the activities for which you will have looked at the detail screen will be used.

You can force to recalculate older activities by going to the settings, profiles, and select Compute Best for more old Activities. This processes quite a few existing activities. Each time to press it, it will look for activities not already processed.

Interpreting the graphs

Heart Rate

This is the graph showing the best Heart Rate I achieved for any given period of time.
iOS_Simulator_Screen_Shot_8_Aug_2015_09_34_03The arrow 1 below shows the graph for July. You can see here that it was a month for which the best of the year was achieved except for the area pointed out by the arrow 2. The arrow 3 potints to the yellow graph showing that the last year (2014) was not as good as this year, I definitely pushed myself more this year, especially in july, when I completed a half marathon…

If you tap once on the graph it will rotate through the last few months, to show you how you performed then.

 

 

Pace or speed

This is the graph with the best speed or pace I achieve for a given distance. Not the heart rate is for time, not distance as I think it makes more sense.

iOS_Simulator_Screen_Shot_8_Aug_2015_09_34_15
If you pan to the left on the graph it will switch to the best pace or speed. Arrow 1 here shows you that the best speed for the year on most distances was achieved in july. Note that for pace a graph lower is better, but for speed higher is better. Again, if you tap on the graph, it will rotate through the last few months.

 

 

 

ConnectStats version 2.0

ConnectStats 2.0 brings quite a few exciting new features. The major change is that now ConnectStats will start maintaining some measures over time, while until now it really only acted as a cache for the data collected on either Strava or Garmin.

This opens the door to a lot of new features. So I upgraded the version and I celebrated by redesigning the icon…

BestHRThe first data I was really interested in looking at over time, was how the best rolling heart rate graph compared from month to month and year to year. Similar to the best pace. These graphs are not necessarily very common to see,  but I find they are a fascinating way to see how I am performing on a run or over the month. I will dedicate a post soon to these. Some snapshots here

BestPace

CalendarAllThe other feature is an improved calendar view. It now has more control to only show some activities, and a new visual circle to indicate how much each day fared compared to the maximum for the month. The best day is highlighted with by a darker color in the circle.

 

CalendarRun

App Video Preview for ConnectStats

I have build an app preview to showcase the screens in ConnectStats. Hopefully it gives a good overview of the variety of screens and stats available. This was captured with version 2.0 of ConnectStats so older versions won’t have necessary all the screens. I had to compress as many views as possible in the maximum 30 seconds allowed…

 

Next version of ConnectStats

I have pushed ConnectStats 1.23 to the App Store.

Connectivity upgrades

ConnectStats 1.23 uses withings latest authorisation service. Hopefully it will be more robust going forward. The login relies on a webpage login and a page where you need to explicitly grant access to ConnectStats.

The workflow around Strava log in has also been improved. There is now a button in the Services page to force and test a login to Strava. Also a silly bug that was sometimes complaining about Garmin when trying to access Strava has been fixed.

ConnectStats 1.23 also fixes an issue with connectivity to SportStracks that had stopped working in the previous versions.

Multi-Sport Activities

Garmin introduced multi-sport activities in the FR920 and Fenix 3 at least. Starting from version 1.23, ConnectStats will detect these activities and download the individual sub-activities. It will display as a stub the main multi-sport activity, but note that only the sub activities will be included in the statistics.

Better weather information

ConnectStats 1.23 has an upgraded weather information displayed. It displays the location where the weather was observed and the distance from the location of the run. On the map it also displays a little wind compass indicated the direction the wind was blowing and the rough strength. The length of the arrow is proportional to the wind strength.

Note that the weather information is only available when using Garmin as a service source.

The Apps and Services I use

ConnectStats was really built out of a need I had and over the years, while the landscape of services and apps has changed quite a bit, I continue to use it and develop it. So here is my view on the services and apps I use beside ConnectStats and why I feel ConnectStats is still useful.

Of course a big disclaimer is that my views are biased given I wrote ConnectStats. But at the same time, my goal is not to replace or take out any competing app or service, but more to complement with what I feel is missing, so hopefully, it remains an interesting perspective.

There are mainly 3 apps or services I use: Garmin Connect Mobile on the phone, Strava on the phone and on the web and ConnectStats. I focus here on the iOS app, not the web sites.

All my activity data collection is done with Garmin Devices. I use a Garmin Edge 510 for my cycling, and currently a Fenix 3 for running, and other occasional activities like hiking, skiing, etc. I had a Garmin Forerunner 620 previously and before that a Garmin Forerunner 610.

I will go through the following:

  • Syncing Activities
  • Casual Review of Activities
  • In-depth analysis of an activity
  • Statistics over time
  • Social Features
  • A few other apps and services to note
  • Pricing

Syncing Activities

From the device

Once an activity is recorded, I transfer it to the cloud either using the Garmin iOS app, the device wifi ability (fenix or forerunner 620) or the computer and Garmin Express.

I really wish the Garmin iOS App and bluetooth connection was more robust, it would be my preferred transfer method, but unfortunately it’s quite flaky. Great when it work, but regularly it just can’t connect, turning on/off bluetooth is usually not helping. On the day it works it’s great, on the day it doesn’t quite frustrating, and if I am at home I have to switch to garmin express on the mac and connect the device via cable.

There are no alternative to the Garmin tool for syncing, as they don’t publish any public API for that, so we have to stick to their tools.

Between Services

The situation has much improved now. If you set up connection between Garmin, Strava, TrainingPeak, SportTracks, all the activity get sync seamlessly. I built in the past a feature to upload from ConnectStats to Strava, but this is now really not necessary and I stop using the feature or developing it further, I recommend just using the direct link. I had a few users argue that ConnectStats feature was still useful because it allowed you to upload the activity after you did some edit like activity type or activity name, but I feel it’s a niche benefit.

ConnectStats caches locally all the data so once downloaded you can review at will all the activities and statistics without an internet connection. From my point of view it also makes the app quicker to use and navigate as everything is calculated locally. Of course a side effect is that it’s harder to do large data analysis like Strava does with segments or comparing runs automatically.

Casual Review of your activities

Garmin Connect Mobile

Most of the apps will let you see the basic data of an activity. For my taste, the Garmin iOS app probably fares the worst both in terms of look and data. You really only have basic data here as well as simple laps statistics. Also the look is extremely basic and not like a modern iOS app. The graphs are quite slow to come up as it seems to do a internet call. This is the case for all data, so if you are without internet connection, you won’t be able to review any activities, even one that you looked at in the past in the app.

IMG 1451
IMG 1452

Strava

Strava is the app that has the best look by far. I prefer it to how ConnectStats looks, Strava is much slicker. I only wish I had the time and the artistic skills to make ConnectStats look as good. It has most of the basic information handy and I particularly like the comparison to previous similar run. I like the Heart Rate Zone Analysis and pace analysis, though you need to subscribe to their premium service.

IMG 1453
IMG 1454

ConnectStats

ConnectStats also has a fairly basic look, I have little time and skills to make it look pretty, but I focused on having the most possible useful information accessible on one screen. One of the benefit of the Garmin Connect data versus Strava is that it contains a lot more information, like all the running dynamics, weather, maximum, calories, etc, etc. I wanted to have all that information displayed and an overall map and graph visible at once in one screen that you can scroll. One side effect is that to focus on any information makes it harder to design the screen to look good. The strava screens look much better but their are more specialised for pace, heart rate etc, therefore less generic information.

IMG 1457

IMG 1458

Activity Plots

This is something that always bothered me with most apps and services. The plots of pace especially, but sometimes heart rate as well seem to be scaled and smoothed so poorly that they didn’t allow you to see really what happened. This was one of the key initial motivation for writing ConnectStats (along with more information on the map). I spend a lot of time working on the scaling, filtering and smoothing of the graphs in connectstats so that it gives you a good picture of what happened at a glance. Recently I also added overlay of the laps average which I feel is quite helpful.

Here are the pace plots for the same activity in Strava, Garmin Connect and ConnectStats. I doubt anyone would be able to draw the conclusion I sped up a bit in the middle of this run, only to clearly slowdown toward the end, from either Strava or Garmin Connect’s graph… Note that the lap histogram on strava shows you that story as well, so one point for strava, but the plot is quite useless.

IMG 1461
IMG 1460
IMG 1459

In-depth analysis of an activity

This was really one of the driver behind building ConnectStats so this remains the app I favour by far for this. Of course, likely biased by the fact I put there all the analysis I wanted, that others didn’t provide.

Plots

Garmin Connect Mobile will simply show you the basics plots and they are not very pretty and slow as they get pulled from the internet. Strava, if you are a premium customer, will show you in addition time in zone and pace zone analysis in pretty looking fashion.

ConnectStats shows a lot of extra plots. Time in zone is not as nice looking as the equivalent in strava. But there all the relevant fields can be seen on a plot, including run dynamics. And two types of plots just don’t exist in the two other apps and quite useful to me.

Scatter plot to see how two variables relate together, how steep is the regression between heart rate and pace, or cadence and power. You can also compare the graph of two activities.

Best rolling plots are also unique to ConnectStats and somehow addictive for me to look at.

Maps

The maps in Garmin Connect Mobile are quite basic. I do not like the very thick lines to show the route personally. Strava’s map look better, but also simple in feature.

ConnectStats shows a lot more flexibility in what it shows on the map. It use a color coding to show values of different variables like heart rate, pace, etc at each point on the map.

ConnectStats can also display laps as recorded or calculated ones like fastest kilometre (or mile), breakdown in kilometres, etc.

Finally ConnectStats lets you use either apple maps or google maps included terrain’s view, which can be handy when off road.

Auto Laps and Segments

Auto laps is a feature that also make me use ConnectStats over the other two. This features lets you calculate arbitrary laps after the fact. You can calculate the split time this way or the split distance. But also the lap corresponding to each heart rate zone, laps breaking the activity in fixed distances or best rolling laps (where did you run your faster 50m, 100m, 200m, etc, etc). For each of these calculated laps, you can then see it on the maps or see the relevant statistics as numbers or plots (like a recorded lap)

For segments Strava is the best app. ConnectStats doesn’t support them at all and Garmin Connect Mobile has them, but they are nowhere as functional as Strava’s.

Garmin Connect has a separate page showing you were you rank and very basic stats like time and speed for your run.

Strava’s segment view has both ability to compare yourself to other, but also analyse your performance in details, overtime and for a given effort. It shows a plot overtime of the speed you reached on a given segment along with the list of days you ran it. You can also analyse the effort on that segment and compare it to your PR using nice looking plots.

   
 

Statistics over time

Garmin Connect Mobile here has no such feature. Or if it has, they are well hidden and I could not find as much as a current week or month accumulated distance.

Strava and ConnectStats both go much further but in a different direction. ConnectStats focuses on statistics and more advanced analysis of the data, while Strava focuses on more basic data but presenting it better, and matching equivalent data over time.

Strava will present you the week and daily distance in great looking graphs and elegantly shows your progress toward a weekly goal. You can also see a few basics statistics over the year, like Avg Runs/Week, total year to date distance, etc. For a given activity, I really like the matched run feature which at a glance lets you see the progress when you run an activity over and over.

ConnectStats will show you many more graph, but the data is presented to you as is. It’s not put into context like strava and compared to a goal or against matched run or segments. That said the graphs and data you can extra from connectstats is quite wide. Because it’s less about context, ConnectStats lets you explore any data in the same fashion. All recorded data can be analysed. How did your Max HR evolve over time? your Avg Cadence? Any of the run dynamics? How does speed get affected by avg temperature? Or your weight?

ConnectStats also let you plot many type of graphs. You can see scatter plots of any measure vs another, weekly, monthly summary of basics stats but also quartiles, medians, etc.

There are a few unique plots which I constantly refer to as well. I feel the yearly comparison of the total distance ran or biked quite motivating to go beyond the previous year. The long term vs short term analysis is also a good indicator of your current form vs effort.

ConnectStats also has a calendar view that lets you have a good overview with color coding or basic statistics of how you did in a given month.

Social Features

ConnectStats has no social features, and this was the key reason I initially used Strava that has in my opinion the best social features.

The feed is neatly shows your and your friend’s activities. It’s extremely easy to add a quick thumb up or comment. And it also let you look in detail at your friends activity and of course compare yourself to them on given segment. Also automatically detects when you ran with a friend.

Garmin Connect Mobile has a news feed also, but it does not look as nice and unlike Strava where things are intuitive and simple (one feed and a filter), Garmin Connect Mobile has a news feed, and an activities within a fitness menu, a social menu. All very convoluted for a less simple and pleasant experience as Strava, not to mention the overall look of the app.

Conclusion

Strava and ConnectStats are my two favourite apps to analyse my data. Strava is much better looking and has great social and segment matching features, but ConnectStats continues to enable me to look with much more depths into the numbers. So for now I’ll continue to use and develop ConnectStats…

Upcoming Features for connectstats

Development on ConnectStats has been very slow recently. Mostly because I have started a new app related to Tennis Stats, which I’ll likely release soon. I have a few upcoming features for ConnectStats I still need to wrap up and a few bugs reports to investigate but didn’t get much time to focus unfortunately.

The main feature I have in the back burner for a while is the ability to compute best rolling heart rate or speed profile for current month or year and show that in a summary page. It isn’t working well at the moment, but the summary page is quite useful, so I may just release that alone. The stats tab now by default shows a summary page with key graphs, and of course the old pages can still be accessed.

The other small feature is I finally figured out how to optimise the screen for iPhone 6 and iPhone 6+, so that will be included too. Meanwhile, here is a preview of what the summary page looks like on an iPhone 6 resolution:

SummaryPage

Performance Analysis

In the version 1.20, ConnectStats supports a first version of long term (fitness) versus short term (fatigue) performance analysis. This is a bit rudimentary for now, and hopefully will improve over time.

The performance Index

The analysis is based on two fields, a summable field like distance, time or elevation gain and a second field to rescale it like heart rate, power, etc.

The analysis is based on an index built using this scalable field and summable field.

To access the analysis you need to select from the statistics field view, a field. If the field you select is summable (Distance, Time, Elevation Gain) it will use it as the summable field and choose Heart Rate as the scalable field. If you select a non summable field, it will use that as the scalable field and distance to sum.

Once the two fields are selected it will then apply a formula to get a performance index. The formula in this first version is simply to multiply the two fields, similar to a very simple TRIMP index, but in the future we could change that, for example along the line of normalised power and apply a function scaling more realistically to how the scalable field impact the distance field. This page gives some interesting comparison of the different way to do that.

Fitness (Long Term) versus fatigue (Short Term)

Given the two fields above and the performance index, then we will try to compare the long term accumulated fitness versus the short term training. We pick two periods, the short term period and the long term period, and plot the average performance index of the long term period versus the short term period.

Currently the short term period is the last seven days and the long term period is the month prior to that.

So the idea is to show how much training accumulated over a month (long term fitness) versus how much you are currently training. If your short term training is significantly above the long term fitness, you maybe over doing it. And you maybe taking it too easy or resting if the short term fitness is quite below the long term fitness.

In a future version I could parametrise both the performance index function and the periods used, depending how much people feel the idea is useful or not. So don’t hesitate to give feedback either with a review, tweet, comment or bug report.

Example

Once you selected a field in the statistics view, tap the bottom plot to iterate between the different choices: Monthly value, performance index graph and histogram/distribution of values.

Here is my current running performance. You can see in this graph that recently I have been training a bit more which raised my long term fitness, while the toward the end november I did less running which lowered the long term fitness .

Screen Shot 2016-02-24 at 05.20.48