Mar 30 2016
Data obsession
Sometimes I get sucked into a coding obsession. I am not even a programmer. But when creating data processing routines I can get into a flow. Improve. Debug. Improve. Debug. The end result is
- Lack of sleep
- Spent more time coding than I will ever save using the code
- Spending a lot of time daydreaming about code improvements
The remedies are to either completely abandon the project or to tolerate it for a while. The enthusiasm ebbs once a certain level of usability is achieved but other people fail to agree what a great thing I have produced … 🙂
So last week I spent a few hours getting Greg’s great python routines to work with TCX files. Did that, and tweaked the plots a bit to my taste. I could have stopped there. In the mean time, I have
- Added parsers for the CSV files produced by RowPro and the desktop version of painsled
- Added a routine to make “pretty” summary strings, one-line-per-interval pretty strings for painsled CSV files and CrewNerd summary CSV files
- Packed everything into a python package and uploaded it to pypi.python.org when people can download and install it
- Pedantry alert: Rewrote one of Greg’s for-loops using Python pandas selection tools
The final big thing I want to do is add a concept2 logbook uploader. Then I may even start uploading my OTW rows to the logbook.Painsled is great, but you have to use the Concept2 utility to upload your rows to the logbook. The C2 utility is fine, but only works if you have your PM3/4/5 with logcard connected to the computer. With my utility, you should at least get the basic data (total time, total distance, date, weight category into the logbook.
Anyway, for the adventurous: https://pypi.python.org/pypi/rowingdata
There will probably not be more than three people in the world who may find this useful. I wonder who number three is.
Anyway, here is today’s row in all it’s glory:
Workout Summary - D:tijdelijkcrewnerd-2016-03-30.csv
--|Total|-Total-|--Avg--|Avg-|-Avg-|-Max-|-Avg
--|Dist-|-Time--|-Pace--|SPM-|-HR--|-HR--|-DPS
--|09908|53:13.0|02:41.1|19.5|142.8|174.0|09.5
No intervals summary, because I did this row as one big “Just Row” in CrewNerd.
I was a little time pressed, doing this row between work meetings, so it was shorter than I wanted. I did the 10 strokes on/10 strokes off again, experimenting a lot with stroke length and rate.
Coming Saturday I will row a test 6km trial against the 15/16 year olds in pairs. Not sure who should theoretically be faster. I hope I will win.
Here are two other highlights:
The session of March 25th as intervals (jimported from CrewNerd):
Workout Summary - 2016-03-25-0758.CSV
--|Total|-Total-|--Avg--|Avg-|-Avg-|-Max-|-Avg
--|Dist-|-Time--|-Pace--|SPM-|-HR--|-HR--|-DPS
--|03394|13:30.0|01:59.3|30.5|164.0|173.4|08.2
Workout Details
#-|SDist|-Split-|-SPace-|SPM-|AvgHR|MaxHR|DPS-
01|00179| 00:45 |02:05.9|30.6|138.0|162.0|07.8
02|00189| 00:45 |01:59.2|30.6|162.0|171.0|08.2
03|00189| 00:45 |01:58.8|30.7|163.0|173.0|08.2
04|00189| 00:45 |01:59.2|30.7|164.0|173.0|08.2
05|00190| 00:45 |01:58.0|30.7|167.0|174.0|08.3
06|00188| 00:45 |01:59.3|30.7|165.0|172.0|08.2
07|00187| 00:45 |02:00.3|32.0|158.0|171.0|07.8
08|00193| 00:45 |01:56.4|30.6|166.0|175.0|08.4
09|00191| 00:45 |01:57.8|29.3|167.0|174.0|08.7
10|00192| 00:45 |01:57.2|29.4|168.0|175.0|08.7
11|00193| 00:45 |01:56.7|30.7|169.0|176.0|08.4
12|00181| 00:45 |02:04.0|28.0|165.0|174.0|08.6
13|00187| 00:45 |02:00.4|32.0|156.0|172.0|07.8
14|00187| 00:45 |02:00.1|30.7|168.0|175.0|08.1
15|00187| 00:45 |02:00.5|29.3|166.0|173.0|08.5
16|00191| 00:45 |01:57.7|32.0|168.0|175.0|08.0
17|00194| 00:45 |01:56.2|32.0|172.0|179.0|08.1
18|00187| 00:45 |02:00.5|29.4|170.0|178.0|08.5
Aug 30 2017
SUP (or SUB?) PEAK
The last week of the summer school vacations and beautiful weather.
I knew rowing in the afternoon was going to be asking for trouble. More windy conditions, and, mainly, lots of recreational boats. So I drove to the lake in the morning, forgetting that I had given the boat house keys to Lenka and she hadn’t returned them. I did open the gate with the phone, but then I had no way to enter the boat house. So I lost 25 minutes of driving through Brno, took my loss and drove to work, arriving there at 7am. I left a little earlier. What a luxury. On Tuesday I had a 6 hour call and then another call, ending after 8pm and no time for rowing.
On the way to the lake I picked up a more permanent way to mount the phone to the boat:
It’s a mount made from three RAM elements and it allows to clamp the mount to the tube behind the footstretcher, putting the phone behind the wing rigger in a place where I can comfortably see it during the entire stroke.
The workout for today was
“1-3x(10×30″/15″ full out). Pace may fade.”
A fade it did. Of course, that was the purpose of the workout. Get deeper and deeper into the pain cave, muscles full of lactate, and get “used” to this, and row hard despite the pain, as you have to do in the final 300m of a 1k race.
I programmed this as irregular intervals in the SpeedCoach, but that limited the number of repeats to 10, so I altered this to two or three sets of 10. (In hindsight, I could have taken a slightly different approach to programming the intervals and arrived at 2 or 3 sets of 12. But optimizing my SpeedCoach workout programming skills is not really my goal.)
As there was a lot of chop and pretty strong wind, I rowed these in the gorge. The first set (top chart) with tailwind, and the second set with headwind. This is a tough workout, and it was complicated by the fact that I had to constantly check the position of hordes of Stand Up Paddle (SUP) boarders. I did manage that in the first session. In the second session, a SUP caused a late start of the second interval. The dip in power in the third interval is rowing through a turn. In the seventh interval there was a lady in an electric rental, on the wrong side of the river, steaming straight towards me. I counted on her seeing me, but when I did check behind me, six strokes later, she had managed to turn around her little boat and was rowing in the same direction as I, completely unaware of the fact that I was going much faster. I managed to stop just before my bow ball hit the back of her boat. You can see how the power fades.
Work Details
#-|SDist|-Split-|-SPace-|-SPM-|-Pwr-|AvgHR|MaxHR|DPS-
01|00141| 00:30 |01:46.3| 36.0| 283 | 154 | 173 | 7.8
03|00140| 00:30 |01:47.1| 34.0| 308 | 177 | 181 | 8.2
05|00137| 00:30 |01:49.4| 34.0| 371 | 180 | 183 | 8.1
07|00133| 00:30 |01:52.7| 34.0| 341 | 180 | 183 | 7.8
09|00130| 00:30 |01:55.3| 34.0| 252 | 181 | 183 | 7.6
11|00134| 00:30 |01:51.9| 34.0| 363 | 181 | 183 | 7.9
13|00132| 00:30 |01:53.6| 34.0| 223 | 181 | 183 | 7.8
15|00125| 00:30 |01:59.9| 34.0| 216 | 180 | 182 | 7.4
17|00119| 00:30 |02:06.0| 32.0| 220 | 180 | 181 | 7.4
19|00119| 00:30 |02:06.0| 32.0| 282 | 179 | 182 | 7.4
Workout Summary
--|01773| 07:30 | 2:6.9| 26.9| 254 | 178 | 184 | 8.8
And Series II:
Work Details
#-|SDist|-Split-|-SPace-|-SPM-|-Pwr-|AvgHR|MaxHR|DPS-
01|00132| 00:30 |01:53.6| 34.0| 222 | 159 | 172 | 7.8
03|00114| 00:30 |02:11.5| 28.0| 222 | 168 | 172 | 8.1
05|00119| 00:30 |02:06.0| 34.0| 217 | 177 | 181 | 7.0
07|00114| 00:30 |02:11.5| 34.0| 316 | 179 | 182 | 6.7
09|00117| 00:30 |02:08.2| 34.0| 318 | 181 | 184 | 6.9
11|00108| 00:30 |02:18.8| 30.0| 188 | 181 | 182 | 7.2
13|00085| 00:30 |02:56.4| 26.0| 168 | 179 | 181 | 6.5
15|00110| 00:30 |02:16.3| 32.0| 084 | 176 | 180 | 6.9
17|00116| 00:30 |02:09.3| 34.0| 284 | 179 | 182 | 6.8
19|00121| 00:30 |02:03.9| 32.0| 314 | 181 | 183 | 7.6
Workout Summary
--|01536| 07:30 | 2:26.4| 26.5| 205 | 177 | 184 | 7.7
As the intervals are just a few strokes short, the average power and pace are influenced a lot when you miss the start of the interval by one stroke. Here are two charts taking only the strokes above 30spm.
I was worried a bit about drive length. It averaged out to 102 degrees for the “on” strokes. Not too bad, but about 4 degrees shorter than normal. For the headwind series. For the tailwind series, I reached my usual 106 degrees.
With the Android phone in the new holder, I took the opportunity to record Quiske boat and seat acceleration. In the warming up, I had to wait for the phone to allow me to unlock it. With iPhones, I had no issues with fingerprint recognition, but the Samsung is terrible. And the problem is, after a couple of attempts, it locks up for five minutes. I have to remember to switch off the fingerprints and use a pass code only.
What I was curious to see is how seat velocity coincided with a few characteristic (for my rowing) acceleration wiggles in the middle of the drive/recovery cycle.
So this is boat acceleration for 6 selected intervals (first, fifth and last of each set).
And here is the average seat velocity:
You can see that the wiggles start when the seat comes to rest, so that means it is the back swing, arm pull, arms away, back swing part of the stroke that is causing it. If you look careful, you can also see that the acceleration wiggles are stronger when the seat speed is high for a longer duration. That happens when I have a more pronounced “legs first, then back” stroke. I wish there was a way to extract a metric describing this. Then I would use rowsandall.com’s Trend Flex and other tools to find correlations with rowing efficiency. Now, I can look at pretty charts and wonder which of the two styles is the more effective.
To get an impression of reproducability, I also took charts with all individual strokes.
During the cooling down, I rowed straight through about 30 SUPs, and I almost collided when I tried to row around a wind surfer who suddenly changed course. Let’s hope that this season is the peak of the SUP hype.
Although I have to say that I haven’t met a person on a SUP who isn’t enjoying himself, is happy and friendly, and doesn’t mind the splash when I do an emergency stop.
By sanderroosendaal • Uncategorized • 0 • Tags: Anaerobe power, anaerobic power, ANP, lactate, OTW, rowing, single