More fun with Stravastix

I am really grateful for a post over on RowingMusings that introduced me to an add on to Strava called StravistiX.

It is an online tool that essentially does a version of TRIMP (Training Impulse), a method to measure total training load that uses both the duration and the intensity of a session.  Intensity is measured as a % of HRR.  (HRR is the delta between your maxHR and your RestingHR).

StravistiX has implemented a flavor of this as a pretty seamless add-on to Strava.  So, now I routinely upload each session to Strava, either directly, or as an export from rowsandall, and every week or so, I sync it to StravistiX.

This is the output I get.

Screen Shot 2017-03-08 at 10.01.27 PM.png

So, you can see in one chart the story of my training since January 15th.

On Januray 16th, I was cleared to get back to training after my knee surgery.  I’ve had a greater number of rest days than I normally plan (14 vs 8), mainly due to an insane business travel schedule.

Despite this, I have tried to keep on track with the Marathon training plan, and it seems to be paying off.  By the measures here, I am in overload right now.  I’m not sure if that is a bad thing or not.  And it seems to think that my fitness is improving.

I’m planning on reviewing this weekly and probably posting something about monthly.  Right now I’m doing it to learn.  Eventually, I might use it to guide the intensity of the training sessions I have planned.


Painsled review

When I compared Ergstick and Ergdata last week, I wanted to also include Painsled (simple website here), but I is still in it’s beta test phase and was still working through a bug with the developer (Rick Terrell).

By the way, participating in the beta test process has been really positive.  Rick has been very engaged and a steady stream of fixes have been included at a very rapid pace.  The product is nearly done and totally useful in it’s current state.

Painsled is an interesting product concept.  It is multiplatform (iOS, Chrome, Andriod), it works with PM5, PM4 and PM3. The PM3 and PM4 are supported using a usb cable connection, the PM5 via bluetooth).  It provides TCX and CSV output options.  Workout files can be exported from your phone via email, itunes, dropbox, or other iphone options.  In the future, they are looking at export to fitness apps like strava, training peaks, concept2.

When you launch the app you get a simple dashboard, very much like ergdata, which mirrors the data on the PM5, but provides a few additional fields.  I am hoping that some of the other parameters that get logged will become options for the dashboard in the future.  But for my primary use mode, where I start up an app to log my data and then stuff my phone into a holster on my belt, I don’t much care what is going on with the screen.

The data output is TCX format, which I have successfully uploaded to Strava Or CSV.  There are 2 different CSV file format options.  One is a CSV event format which includes a record for every data update that comes from the PM5, so there are lots of records per stroke, maybe 10 or so.  To be clear, this is not like the ergstick force curve data, but rather, and event for each stroke “state”.  I played around with the file, but it is a ton of data and getting plots out of it outstripped my excel coding skills.  In a recent release, they add the CSV stroke format.  This concatenates all the data for each stroke into a single record and ships it out.  This is very cool because that is exactly like the output from rowpro, and one of the ways that data comes out of a speedcoach.  Adapting existing tools to use this data was a simple task.

One of the nice things about painsled is that it provides a richer set of data fields than ergdata.  Here they are:

TimeStamp (sec) : Incomprehensible format, but increments in seconds through the whole workout across all reps and rests.  A nice thing to have for graphs

activityIdx: Unknown

lapIdx : Increments for each interval

pointIdx : As far as I can tell the same data as stroke count

ElapsedTime (sec) : elapsed time for the current interval, resets to 0 at the start of each

Horizontal (meters) : distance within each interval, resets to zero.

Stroke500mPace (sec/500m) : standard pace seconds per 500 (ie 2:00.0 = 120s)

Cadence (stokes/min) : SPM

HRCur (bpm) : Heart rate

Power (watts) : stroke power, watts as displayed by the PM

Calories (kCal) : calories as displayed by the PM

Speed (m/sec) : self explanatory

StrokeCount : strokes with an interval

StrokeDistance (meters) : Yes, indeed directly logged DPS!

DriveLength (meters) : Another good bit of data that ergdata displays but does not log.  painsled ships out for your pleasure.

DriveTime (ms) : How fast you pull!

StrokeRecoveryTime (ms) : How consistently you recover!

WorkPerStroke (joules) : Kinda like watts, but integrated into energy.

AverageDriveForce (lbs):

PeakDriveForce (lbs): I think this is cool, because it gives an idea of how consistent drive force across different rates

DragFactor: This is great because I never remember to look, and it’s good to have it logged.

My specific setup is as follows:

  • Model C or D erg with PM5
  • Wahoo Tikr HR belt connected to the PM5 via ANT+
  • HR sensor also connected via BT-LE to my iphone and logging HR data in the wahoo fitness app (I know I’m obsessive, but it embarrasses me to admit that I do this in writing!)
  • Also running on the iphone, either spotify, or stitcher, or another audio app.

Today, I tried out painsled using this month’s cross team challenge.  I also updated my excel workbook to process the CSV stroke output file.  Here are the outputs for my warmup session today.

A couple of note son the graphs.  I was happy to see that my drive time and drive force was pretty consistent from 18 to 22 SPM, and showed a proportional bump up for the higher rate, higher pressure parts of the warmup.  I was also to happy to see that my drive length was staying consistent through all the rates and did not get shorter as my rate went up.  So, yay for me!

The CSV file has the data to generate splits and tabular summaries, but I haven’t done that work yet.  If anyone wants what I have now, drop me a line.

By the way, I am very happy with Painsled and recommend it to any data junkies out there.  The only down side is the lack of direct integration with the Concept2 logbook.  If that is added, then I think it matches all my needs!


Comparison of ErgStick and ErgData

This is not meant to be a comprehensive product review.  Instead it is an evaluation of two products to figure out which one is the best for my specific needs.

Those needs are:

  • Record stroke by stroke data from the erg
  • Support PM5 (required), PM4 and PM3 (bonus)
  • Works with iphone
  • No physical connection required to phone (because I use headphones and wear the phone on my bet when I row * )
  • Works with other apps running including wahoo fitness, stitcher, spotify, etc
  • Works with wahoo tikr HR strap
  • provides CSV output for post processing (required)

* Note:  Before you ask, I have tried wireless ear buds and none of them stay in my ears, and all of them are incredibly fiddly.  Maybe someday cheap, reliable BT earbuds will be available that I can screw securely into my ears.  Until then, the phone stays on the hip.

I was going to originally include PainSled in the evaluation, but I am still working through some Beta issues with the developer.  As soon as I have something useful to say, I’ll write that one up too.

First up.  Ergstick.  Check out their website.  It is a USB dongle that is sold for $120.  This is what it looks like.

2016-03-05 21.46.22.jpg

You jam the green thingy into the back of your PM5, or the bottom of your PM3.  I haven’t  tried it with the PM3, but I plan to tomorrow.

Then you fire up the app and I made a horrifying discovery.  To get the single most important feature that I wanted from the software (CSV exports), I needed to pony up for “ErgStick Pro” to the tune of $39.99.  And this did not buy the pro version, it gives a one year subscription to the pro version.  So the cost of ergstick is $120+$40 initially, plus $40 per year.  Wow! Ouch!  On top of that, I can find nothing about this on their website.  The only place where it is defined is in the description of the app in the apple app store.

Screen Shot 2016-03-05 at 9.55.12 PM.png

OK, well I’ve come this far.  Next step is to try it out.  I paid my money (in for a penny, in for a pound) and upgraded.  The app synched right away with the dongle and provided a live screen with nifty data that I don’t look at.

I programmed the PM5 for a time interval session (10′ with 0:00 rest), and off I went.  When I finished, I pushed menu to terminate the workout and checked out my phone.  Here are the cool screen you get.

Pretty nice displays.  On the Heart Rate, Pace and Stroke Rate screen, the cursor should have been showing the values.  For some reason it didn’t in the interval session.  It did for this simple 100m test session that I did without a HR sensor.

2016-03-05 17.37.23

Getting CSV was not as convenient as some other apps, which allow you to ship to dropbox or sync multiple files automatically.  In this app you need to email each file individually.  A pain, but workable.  From there it was simple to modify my ergdata spreadsheet to deal with the ergstick format data.

Screen Shot 2016-03-05 at 5.47.57 PMScreen Shot 2016-03-05 at 6.05.03 PM

ergstick provides 4 to 6 records per stroke, and a huge number of data fields in the CSV.

Total elapsed time (s)

Total distance (m)

Stroke rate (/min)

Speed (m/s)

Current heart rate (bpm)

Stroke count

Stroke power (W)

Stroke calories (cal/hr)

Projected work time (s)

Projected work distance (m)

Split/interval time (s)

Split/interval distance (m)

Split/interval rest time (s)

Split/interval rest distance (s)

Split/interval type

Split/interval number

Split/interval ave. stroke rate (/min)

Split/interval ave. pace (/500m)

Split/interval total calories (cals)

Split/interval average calories (cal/hr)

Split/interval speed (m/s)

Split/interval power (W)

Split/interval ave. drag factor

OK, so on to ergdata.  With the PM5, it’s just the same except it doesn’t cost anything. I started ergdata on my phone, and it immediately synched up with the PM5.  I programmed the same 10’/0 rest interval session on the PM5 and did another L4 steady state session.

After I finished, I pressed menu on the PM5 to terminate the session and checked my phone.  Here are the key screens.

On the logBook screen you can push the sync button and like magic, the session appears in your concept2 online logbook.

Screen Shot 2016-03-05 at 10.11.38 PM.png

Then you can push the little magnifying glass to dive into the workout.  And then this is what you see.  I’ve heard through the grapevine that HR data will be added to the graphs and summaries soon.  The graphs show the selected interval.  There is no choice of units or ability to show the whole workout.  There are apparently some glitches in the way that it calculates pace for interval workouts with rest meters in them.  I assume for ranking distances that they have tested the crap out of it, but if you should check the numbers if you care a lot.

Screen Shot 2016-03-05 at 10.12.28 PM.png

You can see over on the right side, at the bottom there is an option to export stroke data.  This is a much less sophisticated data set than ergstick, but it has all the basics with a single record per stroke.

Stroke Number

Time (seconds)

Distance (meters)

Pace (seconds per 500m)

Stroke Rate

Heart Rate

This was easy to massage into excel.  So easy in fact, that I decided to add a watts graph to the collection.

Screen Shot 2016-03-05 at 6.05.03 PMScreen Shot 2016-03-05 at 6.05.22 PM

So, from my perspective, there is a clear winner.  Ergdata is much, much cheaper, and it provides automatic synching with the concept2 log book.  If you have a PM3 or PM4 and you are thinking of buying an ergstick, I suggest a PM5 upgrade instead because the cost will less after the second year.

There is a specific group of people that I think will prefer the ergstick.  If you are on a team or have a common practice facility with a large number of ergs that have PM4 or PM3 and you want to get workout data in a consistent format, then ergstick will be a very good solution.   It will let you use any erg and get the data you need.  But it is pretty darn expensive.




Using Painsled with Excel

The story goes back to rowpro.  A rowpro user (danburpee) on what was then the concept2 UK user forums invented a spreadsheet to process the csv files that rowpro can export for a workout.  This template was improved and modified over time and is a very useful tool to analyze workouts.  I started with the spreadsheet and adapted it to be used with crewnerd,  RIM, speedcoach and the yahoo fitness app.  When I found out that someone was creating an app for the iphone (and android i guess) that allowed one to log data from the PM3 and PM4 (via USB) or PM5 (via BT), I thought I needed to give it a try.  The app is called Painsled and it is still in beta, but is quite functional as far as I can see.

Right now the app is a bit primitive.  It essentially just logs data from the PM and stores it.  Then that data can be exported as tcx, json, or csv files.  Getting the data off the iphone requires you to plug into itunes and move files to your computer, but I imagine that this will be improved in the future.

I did some workouts with the app and exported the CSV and took a look at what you get.  It’s very different from the exports from the other  tools in a number of ways.

  1.  There is essentially a record for each “event” that comes from the PM.  So, every update of HR, or change of stroke state generates a record in the file
  2. Not all the parameters are logged in each record
  3. There are 31 (31!) fields of data

The result of this is that even short workouts generate really long csv files.  All of my tools assume that the CSV data is formatted in a more concise format.  Essentially one record per stroke, or per set distance or per set time.  Also that every field has valid data for each record.

I experimented with a couple of ideas.  I tried to read it all into excel and concatentate the data there, but because of the sheer number of rows, the performance was miserable.  It was also a pain to do what was essentially a sequential task in a programming environment that was sheet and formula based.  Ultimately I decided that I needed to preprocess the data.

I decided to make the data look as much like the export from my speedcoach as possible.  That is the excel workbook that I have done the most work on, and the file format is very straightforward.  I decided that I would tailor the workbook for painsled, but try to keep it as close as possible to the speedcoach starting point as possible.

I built a script in python called  You might guess that the name means that it was my second attempt.  Actually, it is more like my fourth, but that’s not important.  I’ve posted the script here : pspack2 (apologies about posting it as PDF, apparently wordpress doesn’t like me posting text files.)

The script is straightforward.  You pass it the filename you want processed, and it does the following.

  1. Scan the file for records that indicate that the stroke state is recovery and save the indices
  2. Read each record of the file and maintain the last valid numerical value for each field.  Basically carrying the last valid value down through all the following records
  3. When you hit a record  that is a “recovery record”, write the current values for the fields to the output file.  I massaged the data field order and formatting to match the speedcoach template.

Then in the excel file, I just adjusted the axis scaling on the graphs to line up with erg splits instead of boat splits, and it worked great.  Here is the current file: Painsled Template Rev – (note:  you need to change the file extension from .xlsx to .xlsm for the file to function properly.  Also note, this works only on excel 2010 and later on windows)

This is not completely done.  There are three enhancements that I want to work on.

  1. Painsled logs distances on a per interval basis, versus accumulating like rowpro.  I will put some math in the script to change that, but it hurt my head to think it through right now.
  2. I like to look at watts, so I will add graphs  to the spreadsheet for that
  3. I want to build a time based interval text summary tab.

But, it works well enough for now and I had some fun playing with python again.

Screen Shot 2016-01-29 at 9.00.43 AMScreen Shot 2016-01-29 at 9.01.00 AM



An Excel Worksheet for analyzing RowPro stroke files

RowPro Template 2014-08-03

Important Note:  Before opening this file on your computer, you need t o change the extension from .xlsx to .xlsm.  This file contains macros to do the data processing that will not work if the file name extension is not changed.  I was unable to upload the file with the .xlsm extension.

Based on a spreadsheet created by the user “danburpee” on the UK based indoor sports website.  You can get the original here.

Instructions for use:

Plug your resting and max HR into the HR Ranges tab
On rowpro, make sure you have elected to “save stroke data”
Export a row from rowpro in CSV format
On either the Tim or the distance tab, click the “Import RP Stroke Data”
In the table below, plug in either the distances or the times for different intervals in  your workout.  When you program an interval workout in rowpro, it is saved as one big file.  This table lets you get splits for each chunk.  It’s takes a little experimentation to get it right.
Then the other tabs are graphs and tables for export.  The Larry Output tab is useful for pasting results into blog posts or forum posts.  I use a screen capture for the graphs and then upload them to photobucket.