Pages

Monday, January 23, 2012

Bradbury Squall race report

100m shy of the finish line and failing to chase down Andy and Chuck. Once a gap opens, it's damn hard to close it. Thanks to Maine Running Photos for this and other great photos. It was an awefully cold day to shoot pics!

The Bradbury Squall, the first race of the Bradbury series, was a 3.5 miler on the Mountain side of Bradbury. After a snowless December and 1st half of January, we were fortunate to get two decent storms in the week before the race to give us enough snow to race it in snowshoes instead of trail shoes. Actually, the snow was quite perfect - that is if you wanted energy sucking packed powder to drive your heart rate up from the start.

Which is what happened. At the start, I positioned myself about where I thought I'd finish but 100m in I thought, "hmm, this is too quick of a start, I cannot sustain this effort, and we haven't even gotten to the climb"! I eased up and JRock passed me, apparently because snowman told him to go out fast because it's easier to sustain in snowshoe racing. More on that later.

The race quickly split into the lead group of Judson Cake, Matt Lunt rocking the old school long johns, and Jeremy WTF-are-you-doing-with-those-guys Bonnet, the 1st chase group of gIant, Andy K, and Chuck I'm-not-50-yet Hazzard, and the 2nd chase pack which included JRock, me, Zak, David Roberts and maybe Darren. The first climb is up twisty-turny Krista's singletrack so you not only have to accelerate up you have to keep accelerating side to side. This is where I blew the engine last year (my first snowshoe race) and its not even 1 mile in so I was very happy to sit behind JRock on the ride up and wasn't too worried about a gap opening between him and chase group 1. Pretty far into the climb jrock stepped aside to let me by so now I had the pressure of trying to move across the gap to catch chase pack 1. I picked up the pace slightly and pretty quickly closed the gap by 1/2 maybe (20-40m?) but it was really hard to know where I was because of the twistiness of the trail and the constant up (slow) and down (fast) which would shrink and swell the gap.  I was in no man's land between chase packs, or, said differently, I was the entirety of chase pack 2. Finally we were done with Krista's and chase pack 1 began to fall apart. Not entirely but they weren't running in a tight bunch. With about 1 mile left, it looked like gIant dropped Andy and Chuck and I was catching Chuck. On the last little steep climb I pushed hard to catch Chuck which was probably a dumb move because after that I had redlined. Chuck kept calling back to me but I couldn't really understand him because no oxygen was going to the language part of my brain as it was all being used in the part that keeps my lungs ventillating and my muscles firing. I tried hard to pick up the pace but Chuck wouldn't let me catch him. I finished a few meters behind Chuck who finished a few meters behind Andy. gIant really did drop us because he was about 30s ahead of Andy.

The most humbling part of the race by far was seeing Jeremy cheering not at the finish line, which is where he'd be if he had just finished, but several hundred meters before the finish line, which is where he'd be if he had finished, rested, high fived the volunteers, showered, changed clothes, and lightly jogged back to cheer. Yeh Jeremy, let's go kick some acid-robotic ass!

So back to my strategy. Clearly last year highlighted that redlining by the top of Krista's (about a mile into a 3.5 mile race) was a poor strategy because I could hardly breathe for the rest of the race. On the other hand, once you let a gap open between you and whomever you're chasing, it's damn hard to close that gap unless they run out of gas and come back to you. Snowshoe racing is hard - it's not pacing yourself like an automaton running a flat road marathon. It's a fine balance between not redlining too early and not falling off the pace.

Big shout out to Jeremy Litchfield and Atayne performance wear who donated two cutting edge shirts to the raffle, one of which I scored. SWEEEET! Chuck says they are the bomb so I'm thrilled to win it and pumped to perform in it!

Sunday, December 11, 2011

Till we meet in hell race report

The 4th annual TMR end-of-the-season race was held at Thorncrag bird sanctuary and directed by Val, who marked out a sweet 1.4 mi loop with four segments:

1) steep climb on easily runnable singletrack
2) a technicalish singletrack descent
3) a longer climb with a couple very small walls that were run only because they were short
4) a fun, extremely fast run-out on wide doubletrack

I enjoyed the conversation on the first lap with David Roberts but he tired of my conversation or pace and passed me, which ignited my mojo and reminded me that we were racing. Other than lap one, my pacing was surprisingly even. I misread my watch on the final descent and turned up the gear knob to 11 so as to finish the lap before the 1:30:00 time limit, but then was told by all the runners pooled at the bottom/start that I still had 0:03:30 left. Ouch. I struggled through .3 miles of steep climbing.

Following the race all the TMs partook in some hearty drinking, eating, and awarding. I won some barefoot champagne for my racing efforts (Thanks Val!) and was voted biggest geek by my peers. Next post I will put something up worthy of that award!

Splits (each lap ~ 1.4 mi)
1      11:42
2      10:40
3      10:41
4      10:36
5  10:40
6      10:38
7      10:49
8      10:46
0.3mi   03:13.3


Sunday, October 23, 2011

Bond Brook 10 mi trail race

Bond Brook is the new set of xc ski trails and singletrack mt. bike trails in Augusta. Overlay the east side of Bradbury on top of Pineland and multiply the elevation by 1.5 and voila! Bond Brook. This race was not on my radar until yesterday when I opted out of Mayor's Cup 5K for something closer. I'm not sure why as my weekly mileage is now half of what it was this summer and I haven't run more than 9 miles in one run in over 6 weeks. Moving from a flat 5K to 10 miles of extremely undulating terrain was probably an unwise decision.

The course is two loops of repeated alternating between wide ski trails and narrow single track. The ski trails were a roller coaster - there was rarely any length of something flattish. It was bone-jarring descents or lung-bursting climbs. Like Pineland, most of these were short-lived but some of each were quite extended. By contrast the singletrack seemed flattish, like the east side of Bradbury, but I think that was an illusion as the map shows these too had large (usually) ascents, it just took lots of tight twisty turns to complete the climb.  The singletrack was in sweet shape. I had both my nike spikes and my Inov8 195s and unwisely chose the 195s. The last mile of singletrack had lots of slimey turns on a cambered trail bed and it took some tip toeing to not slide down.

Some stats:
Bond Brook 10 mile: Garmin 305 reads: 9.46 mi, 1739' elevation = 183 feet/mi
Pineland 25K: Garmin 305 reads: 15.3 mi, 1772' elevation = 116 feet/mi
Bradbury Breaker: Garmin 305 reads 8.78 mi, 1537' elevation = 175 feet/mi

None of the climbs are as steep as the Breaker but there is very little flat.

My race:
I actually felt pretty good given that I lost my running mojo sometime in August. The first 2 miles of my 2nd loop was noticeably slower but I was slowly reeling in a young guy in front. On a long descent during the 3rd mile of loop 2 I nearly caught him and there was a short flat section before turning off the ski trail and onto the slimey mile of singletrack. I decided this was my move and I accelerated and just beat him to the trail. He hung onto me for maybe 0.5-0.75 miles which pushed me some but then he fell back when the singletrack started to climb. Had I not made my earlier move I probably would have been complacent to just sit behind him on the singletrack and run his pace. As a result of passing him, the 4th mile of loop 2 was only slightly slower than in loop 1 and my last mile of loop 2 was nearly 30s faster. So all in all I had about a 34s positive split, which doesn't seem too bad given no prior knowledge of the course

Mile Loop1 Loop2 Diff
1      7:24     7:52    +28
2      7:23     7:43    +20
3      7:46     8:00    +14
4      8:24     8:30    +6
5      5:57     5:23    -34
___________________
     36:54     37:28    +34

I think I came in 5th place, 2-4 minutes behind 1-4, and 1st master. Unfortunately I googled places 1-4 and noticed that I beat them all in summer road races so not sure what this says about my current fitness. I Want to do the NE XC in two weeks. The positive is, Franklin Park is a fast course and only 5 miles. The negative is my fitness is plummeting precipitously.

Monday, October 10, 2011

Tapers and Cognitive Biases

Back in the spring, I asked Kevin Tilton about tapers and specifically mentioned Jim Johnson who races every weekend and I wondered what he could do if he, you know, tapered. Kevin thought tapers were overrated and mentioned that his best races were with little to no taper. I had heard this before from posters on the famous LRC message board but had discounted it as anecdotal evidence (which it is). I haven't really researched the ex phys literature but I do recall that Rob Sleamaker briefly reviewed evidence from the literature that claims a proper taper increases performance by 1-3% or something like that. I was thinking about this recently because of two races this year compared to last year. Compared to this year, I ran a faster pace at the Bradbury Breaker and the Craig Cup last year despite having run the Beach to Beacon the day before the Breaker and the Maine Marathon 6 days before the Craig Cup. This year I was fresh for both (The B2B was 8 days earlier and I ran no marathon this year). I am now questioning the value of tapers. It's these sort of experiences that are very powerful in forming/re-inforcing (probably erroneous) beliefs that contradict conclusions based on more reliable evidence (i.e. science).

Monday, September 26, 2011

Tuesday, September 13, 2011

Deep Waste of Time

This post is about solitaire, but it's related to my work so a little background on what I do. I'm essentially a computational biologist, that is, I study biological problems using computational methods. Computational methods are used when either 1) the scientist doesn't know math well enough to solve a problem analytically, or 2) the problem is too difficult or too long to solve analytically. Both apply to me. The major computational method that I use is simulation and I typically use a simulation to solve optimization problems. So for example, I might be interested in the optimal motion of a fruit fly wing to balance weight and maximize thrust (forward flight force). There's lots of parameters that can go into a computer model such as the wing beat frequency, and the wing beat amplitude, and how much the wing rotates during the down or upstroke, and how rapidly it rotates, etc. etc. A simulation is used to explore combinations of the different values that a parameter may take. An exhaustive search (I don't know the technical term) would just try all combinations throughout the range of values for each parameter. This can be computationally intensive and most of the solutions will be pretty dumb but if the model itself is simple (computationally quick) then a large parameter space can be searched in a short time. If the model is computationally slow then it's better to use some kind of smart strategy to search only part of the parameter space (the range of parameter values).

Still with me? One smart way to search a subset of the parameter space is to use evolutionary or genetic algorithms. I don't do these and really know little about them but essentially a population/evolution approach is used where random variation is added to the parameters in a population of "strategies" and the strategy that has the highest performance (thrust in the case of my fly wing) is selected and then mutated (that is copied and the random values are added to the parameters) and etc. etc until the strategy stops evolving, which means an optimum has been found (not necessarily the optimum because the "performance surface" could have multiple peaks and an evolutionary algorithm will climb only the nearest peak from where the strategy starts. Like I said, I've always been interested in these but I haven't really done them but smart engineers are using these to design all sorts of cool toys.

Still with me? Here is where any of this has to do with solitaire. When I first got my smart phone last year, I started playing (for the first time in my life on a computer) klondike solitaire (three cards dealt and three rounds through the deck) and noticed that my winning percentage increased. That is, I was getting better or more skillful. Prior to this I had only played solitaire with a brick and morter deck of cards and I would have argued that there is no strategy, a win is all in the luck of the shuffle. Anyway, I developed a serious addiction and took the game off my smart phone.

Then I got my ipad, which I had for about a month before I downloaded a klondike solitaire game. I'm absolutely fascinated with the strategy. Enough that I thought, I could spend a day programming a solitaire solver and then explore a strategy space and try to determine the optimal strategy. And then I thought, I could learn something about evolutionary algorithms by implementing one. I did a little google and google scholar search and found that a few mathematicians have addressed solitaire but not many. Some of these address a very basic question, how many shuffles are winnable? This problem is way too hard for an analytical solution (first it is dependent on a specific strategy but its too hard even given that).  That's an interesting question but I'm more interested in strategies. For example, if I just dealt a 4 clubs and I have a six of spades as the top card in my building stacks and a five of hearts up top in my suit stacks, do I move the five of hearts down to the build stacks so I can play the 4 of clubs? I have one card less in my suit stack (so I'm further away from winning) but I have one more card in my build stack (so I'm closer to winning) but certainly there is more of a cost to pulling a card from a suit stack than gaining a card in the build stack so...what's a computational biologist to do?

Write some code. I don't mean writing code for ME to play solitaire I mean write code for the COMPUTER to play solitaire. Sort of like Deep Blue. What I thought would take a day has taken about a week and lots of intense hours. I'll say this, even the simplest "strategy" requires a lot of decisions that we don't even think of as decisions. But you are forced to recognize them when you're coding the game. My initial strategy is pretty dumb as it cannot see ahead more than 1 step and evaluate the consequences (so if I see an ace as card 2 in the three cards that I've just dealt it may be worth moving a card down from the suit stack to the build stack to be able to play the top card - and therefore the ace):

definitions
1.The build stacks are the 7 columns of face-up cards that you build in descending order with alternating color
2. The suit stacks are the 4 columns of single suit cards that are built in ascending order (if completed the game is one)
3. The talon is the single pile of face up cards that can be played to the build or to the suits
4. The pile the the single pile of face down cards that are turned over, three at a time, and added to the talon.
5. The down stacks are the face down cards beneath the build stacks

The strategy, in order of priority:
1. play the build cards to the suit stack
2. play the talon to the suit stack
3. play build kings to empty build columns with priority (the first king moved) given to the king on the build stack on top of the shortest down stack
4. play talon kings to empty build columns
5. play one build column to another with priority (the one being moved) given to the build stack on top of the shortest down stack
6. play the talon to the build stack

So there is 1) no moving parts of a build stack to another build stack (to free up a card that can move to the suit stack, say) and 2) no moving suit stack cards back to the build and 3) no choosing not to do one of the above (such as not playing a talon card). I would consider these three more advanced strategies but each has lots of flavors. At this point I may be satisfied with simply having coded the computer to win a game because implementing more advanced strategies would be even more of a time waster.

Which raises the question, can I make money out of this? Probably not. My dumb computer has a winning percentage of about 1%, which seems awefully low, even for this simple algorithm. By comparison, I've won 17% of the 1100 games that I've played on my ipad. Maybe I'll try to create an evolutionary algorithm and let it evolve a more optimal strategy.

postscript. At Twin Brook tonight Ian said he got through most of this post before he realized not only was I taking my time relating this to running but I probably wasn't going to ever get there. So here is the connection: This is the sort of crap I think about when I run solo!

Here is my computer's first win! (what is shown is the top card of the build stacks from start to finish)


  playmap(htops[, 1])  X1  X2  X3  X4  X5  X6  X7
1                start  H3 D11 C13  C7 C10  C2  D2
2       build to build  H3 C10 C13  C7  D6  C2  D2
3       build to build  H3 C10 C13  D6 H13  C2  D2
4       build to build  C2 C10 C13  D6 H13  S5  D2
5       build to build  C2 C10 C13  S5 H13  S2  D2
6       talon to build  C2 C10 H12  S5 H13  S2  D2
7        talon to suit  C2 C10 H12  S5 H13  S2  D2
8        build to suit  H3 C10 H12  S5 H13  S2  D2
9       build to build  S2 C10 H12  S5 H13 H10  D2
10      talon to build  S2 C10 H12  S5 C12 H10  D2
11      build to build  S2  S3 H12  S5 C10 H10  D2
12      build to build  S2  D2 H12  S5 C10 H10  C6
13       talon to suit  S2  D2 H12  S5 C10 H10  C6
14      talon to build  S2  D2 H12  H4 C10 H10  C6
15      build to build  S2   . H12  D2 C10 H10  C6
16           play king  S2 H12  D1  D2 C10 H10  C6
17       build to suit  S2 H12  D3  D2 C10 H10  C6
18       build to suit  S2 H12  D3  S3 C10 H10  C6
19       build to suit  S2 H12   .  S3 C10 H10  C6
20           play king  S2 H12 C10  S3  H6 H10  C6
21      talon to build  S2 H12 C10  S3  H6  S9  C6
22       talon to suit  S2 H12 C10  S3  H6  S9  C6
23       build to suit  H3 H12 C10  S3  H6  S9  C6
24       build to suit  H3 H12 C10  H4  H6  S9  C6
25      talon to build  H3 H12 C10  H4  H6  H8  C6
26      build to build  H3 H12 C10  S8  H6  H4  C6
27      talon to build  H3 H12  H9  S8  H6  H4  C6
28       talon to suit  H3 H12  H9  S8  H6  H4  C6
29       build to suit   . H12  H9  S8  H6  H4  C6
30       build to suit   . H12  H9  S8  H6  S5  C6
31      build to build   . H12  S8 C11  H6  S5  C6
32      build to build   . C11  S8  D5  H6  S5  C6
33      build to build   . C11  S8   .  H6  S5  D5
34      build to build   .  S5  S8   .  H6 D13  D5
35           play king D13  S5  S8   .  H6  C9  D5
36      talon to build D13  S5  D7   .  H6  C9  D5
37      build to build D13  S5  D5   .  H6  C9 S12
38      build to build S12  S5  D5   .  H6  C9  S4
39       build to suit S12  S5  D5   .  H6  C9  D9
40       build to suit S12  D6  D5   .  H6  C9  D9
41      talon to build S12  D6  C4   .  H6  C9  D9
42       talon to suit S12  D6  C4   .  H6  C9  D9
43       talon to suit S12  D6  C4   .  H6  C9  D9
44      talon to build S12  C5  C4   .  H6  C9  D9
45      talon to build H11  C5  C4   .  H6  C9  D9
46       talon to suit H11  C5  C4   .  H6  C9  D9
47       build to suit H11  C5  D5   .  H6  C9  D9
48       build to suit H11  D6  D5   .  H6  C9  D9
49      talon to build H11  D6  D5   .  H6  C9  C8
50      talon to build S10  D6  D5   .  H6  C9  C8
51       talon to suit S10  D6  D5   .  H6  C9  C8
52       build to suit S10  D6  C6   .  H6  C9  C8
53       build to suit S10  C7  C6   .  H6  C9  C8
54       build to suit S10  C7  D7   .  H6  C9  C8
55       build to suit S10  H8  D7   .  H6  C9  C8
56       build to suit S10  H8  S8   .  H6  C9  C8
57       build to suit S10  H8  H9   .  H6  C9  C8
58       build to suit S10  H8  H9   .  H6  C9  D9
59       build to suit S10  H8  H9   .  H6   .  D9
60      build to build  D9  H8  H9   .  H6   .  H5
61       build to suit  D9  H8  H9   .  H6   . S13
62       build to suit  D9  H8  H9   .  D8   . S13
63       build to suit  D9  H8  H9   .   .   . S13
64       build to suit S10  H8  H9   .   .   . S13
65       talon to suit S10  H8  H9   .   .   . S13
66      talon to build S10  H8  H9   .   .   . D12
67       talon to suit S10  H8  H9   .   .   . D12
68       build to suit S10  S9  H9   .   .   . D12
69       build to suit S10 H10  H9   .   .   . D12
70       build to suit H11 H10  H9   .   .   . D12
71       build to suit H11 H10 C10   .   .   . D12
72       build to suit H11 C11 C10   .   .   . D12
73       build to suit S12 C11 C10   .   .   . D12
74       build to suit S12 C11 D11   .   .   . D12
75       build to suit S12 H12 D11   .   .   . D12
76       build to suit S12 C13 D11   .   .   . D12
77       build to suit S12 C13 C12   .   .   . D12
78       build to suit S12 C13 H13   .   .   . D12
79       build to suit S12   . H13   .   .   . D12
80       build to suit S12   .   .   .   .   . D12
81       build to suit S12   .   .   .   .   . S13
82       talon to suit S12   .   .   .   .   . S13
83       build to suit D13   .   .   .   .   . S13
84       build to suit   .   .   .   .   .   . S13
85       build to suit   .   .   .   .   .   .   .

Monday, September 5, 2011

managing calf pain

The evidence for what works in managing sports injuries is one of the more frustrating areas of health-related research that I've come across. During my MP run 16 days ago, I got a sudden calf pain that felt something like a cramp. At the time I didn't think it was a cramp because my gastrocnemius muscle (at least) wasn't obviously balled up. But maybe it was the deeper soleus. I assumed it was some sort of muscle strain (tearing). My management included no stretching, no strength training, no massaging, no nsaids, no icing, and no heating but only initial rest then running with short walk recoveries (note on my pain scale: 3 is noticeably sore, 5 is painful to run, and 7 is painful enough to not run, and 9 is painful enough to want to amputate). The initial pain was a 7.
S - off, sore
M - off, sore
T - 2.2 miles alternating walk/jog every 1/3 to 1/2 mile, pain = 2-3
W - attempted to run back cove 5k at 8 min/mi but at mile 1.1 pain went from 2-3 to 4-5. Continued walking/jogging rest of 5K with pain at 4, no soreness in evening
Th - 3.7 miles at back cove. Ran (7:35-8 m/m) 3.1 miles at pain=1-2 then sudden jump to 4-5. Walked remaining 1/2 mile, no soreness in evening
F - 4.8 miles on Brook rd (mostly flat). Ran (8 m/m) 3 miles at pain = 1-2 then sudden jump to 4. Walked most of rest with some light jogging. Sore (pain=1) that evening.
S - 4.8 on Brook Rd. 4 x 1 mile with 1/4 mile walk recoveries. Pain = 2. worked well.
S - off
M - 3 x 2 miles (7:12-7:59 m/m) @ back cove with 1/4 mile walk recoveries. Pain = 1. noticed pain on stairs before though (much more than running). Speed didn't seem to aggravate soreness.
T - off
W - 7.7 at RIT perimeter rd. 3 x 2.5 miles with 1/8 mile walk recoveries. Progression: 7:40 7:13 7:10 6:42 6:32 6:21. Last 1/3 at 6:08. Pain = 0.
Th - 4 + 2.5 + 1.5 mile with 1/8 mile walk recoveries. Brook Rd. Pain=0 first 6 mi then =1 last two.
F - 3 x 2 miles with 1/8 mile walk recoveries. 1st 3 miles community park trail last 3 on road. Progression: 6:42 6:48 (long hill) 6:22. Pain = 0
S - 10.5 very easy miles at Bradbury with several very short walk breaks. Pain = 0
S - 13.1 road (Woodville/Woods/Winn) at 7:30 min/mi with 4 1/8 walk recoveries every 3 miles. Pain = 0


So while I cannot say that the run-walk strategy was necessary for effective management (since I didn't try continuous running, at least after day 4), the run-walk strategy at least allowed me to run decent mileage and even some fast miles. To be continued...