Thursday, December 31, 2015

2015 Recap

I posted 2 subject-matter entries yesterday because I wanted to take this last day of 2015 to do a brief look back at the year. To say it was a good one would be quite the understatement.

First and foremost, family and church life are good. Feeling the strain, for sure, but good nonetheless. Among my close spiritual friends (which, obviously, includes Kate), there's a feeling of "we're in this together" rather than "this is tearing us apart."

Grad School: Applied, Accepted, Enrolled, 4.0 first semester. Have a thesis topic and a faculty sponsor. Hard to imagine that going much better.

Work: Finally got myself out of my old group (it wasn't a bad job, it's just that we had two leads for a small group which had us stepping on each other). New group serves the same users (Corporate Actuaries), but we are much bigger on the Analytics than the calculations, which is a better fit for me. So that's all good.

Running took a hit late in the year for obvious reasons but, taken as a whole, it was one of my better seasons. Two sub-3 marathons (first time doing that twice in a calendar year), a top-3 finish in a 100, and 4 outright wins in shorter events.

And, finally, there's this blog. In general, I think introspection is becoming a lost art. People are so busy doing stuff, they forget to think about why they are doing it. Spending a few minutes each day making observations about how this trip is going has certainly helped me stay balanced. If it's informative, amusing, or simply a curiosity to others, so much the better.

Wednesday, December 30, 2015

Long IT rule 6: Refuel

Once people get past the idea that running 100 miles without sleeping is possible, the next question is usually related to what one eats. The need to eat something during a race taking nearly a day is self-evident. Unfortunately, many project managers seem to have missed the memo.

Shorter projects, even "marathon" projects like ERP upgrades are generally (and correctly) seen as career builders. Team members learn enough just by being on the project that they almost always come out of it with brighter prospects in the organization or, at the very least, better resumes. However, to put career development on hold for a year or longer while tending to an ultra project is a break-even proposition at best. IT staff either progress or regress. There's no standing still in this field.

I've actually had senior managers voice the concern that if project members were given professional development during the project, they would just just leave at the end. My response (which I typically state with only a bit more tact) is to ask if they'd rather have them leave after the mission-critical-multi-year project is done or during. Turnover is a fact of life in IT. If someone wants to leave, they will. But, there's no upside to having them do that right when the biggest deliverables are due.

I'm not advocating any particularly special treatment; just don't penalize people for sticking with a long effort. If the expectation in an organization is that all associates pick up one new skill a year, simply make sure that goes for people on the project team as well and build it into the plan.

Long IT rule 5: Take small steps

Much has been made of the Kenyon dominance of marathoning. Few doubt that it would extend to ultras if there was any money in it. As there isn't, ultras still enjoy a reasonably heterogeneous set of elite runners. One thing all of them have in common with the Kenyans, however, is a high turnover. Typical recreational runners take between 140 and 170 steps per minute. More serious middle distance runners are closer to 180. That used to be the norm for marathoners as well.

Then the Kenyans came. The first thing that struck most coaches was that their stride rate was so much faster than other runners traveling roughly the same speed. Sometimes as high as 200 steps per minute. It's not hard to see how this came to be. Growing up, many Kenyans run 10-15 miles to school each way with no shoes. That will do a number on your feet unless you develop a very fast, light stride with very little landing shock. Children who run barefoot in other countries develop similarly fast cadences.

The light strike from taking short steps really starts to pay off the longer the effort goes. In a short effort, you can afford to be a little inefficient as long as you're getting some extra power in return. In a long event, every exertion counts. By taking shorter steps, each individual step is more precise, more in line with the one before it. Adjustments due to bad footing are minimized. Most importantly, the shock of landing is significantly less because you haven't been in the air as long. Perhaps counter-intuitively, a short stride actually has you spending more total time in the air because it's easier to bounce off a light landing and get airborne again quickly.

The long IT equivalent of the short step is to keep each individual task short. There are some things, like procuring hardware, that may require long lead times, but the actual work should be broken into things that can be done in just a few days. Certainly, any task that takes longer than a week is a potential project killer.

Developers tend to rail against this sort of thing, claiming it's more efficient to make all modifications to a piece of code at once rather than repeatedly update it. Theoretically, this is true, but in exchange for that, you loose the ability to make quick adjustments if it turns out that jamming that extra bit of work in there was a bigger deal than realized (and it almost always is).

Along with the running analogy that we're currently beating to death, I like to think of project management as driving on ice. As long as you are making adjustments quickly enough that you never have to do anything drastic, you can go pretty fast. But, once you need a big adjustment, you're in big trouble. The only way to keep the adjustments small is to have reliable and tangible feedback (as in, a working piece of code; not one that is "almost done") at short intervals. That means short steps, and lots of 'em.

Tuesday, December 29, 2015

Having the end in mind

So, I'm dusting off Linear Algebra ahead of the coming semester. I expect I'll need at least some of it for my course Bayesian Statistics. I'll definitely need it for the Qualifying Exam next fall. I don't want to say I'm struck by how easy it is, because I recognize it as a meaty subject. And, while it's rusty, this is a subject that I have mastered previously. However, I am surprised at how much more sense it makes the second time through.

My experience in just about all math courses is that, while I can work the problems and pass the tests, I don't really grasp them until I'm well into the following course. It was a month into Differential Equations when I really understood how derivatives and integrals from Calculus worked together and why integration was the more difficult task. A few weeks into Measure Theory, continuity and countably infinite subsets, concepts that were taught in Real Analysis, went from mysterious to obvious. I have a vivid memory from my last semester at Cornell of looking up from a proof I was working on for Extreme Value Theory and realizing that, while I had barely a clue of what I was doing or why, I suddenly knew exactly what a Poisson Point Process was (the subject of the prerequisite course).

Some of this is just the fact that this stuff takes a while to sink in. Math beyond Calculus gets increasingly non-intuitive and by grad school it's downright weird. However, I think it also has to do with the fact that it helps to know the end at the beginning.

By this I mean that when new concepts are presented without knowing how they will be used, it's more difficult to fit them into the framework of one's existing knowledge. Math instruction generally builds on itself; starting with definitions and axioms and then working through theorems so that each piece is supported by the work before. While this is logically correct, I'm not sure it's the best way to learn.

I'm willing to take a few items on faith at the beginning of a course, knowing we'll get to the proof later on. I think it would be helpful to put the later results out there right at the start simply so the class had some sense of where this is all heading. I think I'll try to do this the next time I teach a math class, or any class, for that matter. Spend a lecture up front just taking the class on the express train all the way through the material. Then, proceed with the normal building-block approach. I wouldn't expect the students to learn anything from that opening lecture other than where we are headed (and I'd make that clear, so they didn't freak out). Having a destination is no small thing, however, and I think that many would appreciate knowing that sooner rather than later.

Sunday, December 27, 2015

2012 Psycho Wyco Run Toto Run

The third times the charm!

Run February 11, 2012

Photos courtesy See KC Run and Mile 90

I'm not really a "bucket list" kind of guy. Sure, there are things I'd like to do and, having set a goal, I often devote significant resources to achieving it. But, if it doesn't happen, I typically just move on to the next thing. Last year, I missed "Mud Stud" status at Psycho Wyco, 50K trail race just west of Kansas City, by 16 seconds (finishing in 5:00:16). The designation is no small thing. Hundreds have tried but only a dozen runners have managed to break five hours on this brutal course; three have done it twice. While such a near miss didn't really get under my skin, it also seemed reasonable to give it another try. So, off I went to KC with fellow SLUG Suzanne Kenyon as a traveling companion.

Shortly after leaving St. Louis, the mixed precipitation gives way to clear skies. By the time we get to number pickup in Kansas City, the temperature is in the low 20's and dropping quickly. Local runners present believe we'll still see some mud on lap 3, but concede that the predicted single-digit low tonight should have the trail in fast form tomorrow.

Trail conditions are always significant in an off-road race, but perhaps nowhere more so than at Psycho Wyco. The bulk of the 10.3-mile loop is on a bridle trail that gets considerable use. Even in cold winters, it doesn't usually stay frozen past the early morning hours. The passage of five hundred runners per lap typically turns the fine Loess soil to a gooey quagmire. Times for the final lap of the 50K are often 20-30% longer than the previous two. As such, I've usually taken this race out fairly hard in an attempt to get as much mileage in as possible before the mud slows me down.

My strategy is different this year. In keeping with the general endurance sports guidance that it's better to limit the bad than maximize the good, I plan to hold back a bit so I have fresher legs to deal with the mess at the end. Since it's now reasonable to expect that the trail won't be that bad, I modify that to target an even effort with the expectation that lap three will be slightly slower.

We're staying only a mile from the park but I'm an early riser so I'm up before dawn. The temperature is 10F with clear skies and a light breeze. I down the leftover pizza from last night (really good pizza, too, from a place called Spin) and select my gear for the race. I know I'm going to want to shed layers, so I'm careful not to overdress. If my base layer gets soaked with sweat, I may be required to waste time on a full clothing change. I go with a base long sleeve shirt, my Carol's Team jersey and a wind shirt on top with just lycra tights under polypro shorts on the bottom. I put socks over my lightweight gloves and select a thin balaclava to go under my hat. Since the trails should be clear of ice, I go with my regular trail shoes with screws in the heels for a little extra grip on the steep descents.

Prior to the start, I run about a mile out and back on the trail to confirm my choices and then hop back in the car to try to stay warm. A few minutes before 8AM, I head over to the line, taking my place less than a minute before Race Director "Bad Ben" Holmes sends us on our way.
The previous two times I've run, conditions have reduced the wide equestrian trail to a single good line. Thus, I've always pushed the opening quarter mile across the field to be in the top ten at the trailhead. With the path frozen solid and clear of snow, passing will be easy so I settle into my ultra pace right off the line. About 25 runners lead me into the woods.

The going is quick, but it certainly isn't easy. The trail is completely rutted from foot and hoof prints during the last two weeks (which saw temperatures as high as 70F). Nearly every foot plant requires some sort of adjustment. I wonder if my stabilizing muscles are up to five hours of this. Fortunately, the really rough stuff only lasts for a couple miles. Shortly after that we get onto the relatively smooth trail along the top of the ridge leading to the first aid station.

Heading for the Triangle
I'm well aware of what follows: the infamous Wyco Triangle, a true singletrack trail that bounds all over the side of the steep ridge with tight turns and downed logs coming every few steps. I'm running at the tail end of a little pack of runners, one of which has a dog with him. I'd like to have a good view of where I'm stepping and certainly don't want to trip on a leash, so I up my pace a bit and scoot by just before we leave the main trail. I get through the section without incident and, as the group is still right behind me, I assume they all did, too.

Not so much on the next section which is the biggest descent on the course. It is also a narrow trail carved into the hillside with several switchbacks but this time there aren't nearly as many small trees to grab onto for balance. About halfway down, I hear the distinct sound of a body hitting the ground. This is immediately followed by enough cursing that I decide the casualty will likely survive without my stopping to render assistance

At the bottom of the descent, we leave the woods for the ascent of "Dam Hill". There's a small culvert that one has to jump across to get into the field and the runner in front of me pulls up short to gauge the distance. I nearly run him over but manage to slide by with enough speed to clear the ditch. "Hey, is that Eric?" he calls out. I turn around to see it's fellow St. Louis runner Mitch Faddis. I chuckle and say hi and then get on with the real work of ascending the Wyandotte Lake dam. The wind is blowing a bit harder and for the first time since the opening mile I feel cold again. In front of me are two runners in shorts and their legs are bright pink. Really, guys?

At the top of the dam is the second aid station which is also roughly halfway around the loop. All the water cups are frozen, but I'm able to extract a little liquid from them. I also grab some food which I eat while running the only paved section of the course: a road that ascends for another quarter mile to the trailhead for Speed Demon Ridge which gives back all the elevation. With nobody in front of me and footing excellent, I take the name literally and it feels good to be moving fast after the long grind. I do remember to get on the brakes before the final drop, aptly named Nicely Done because Chris Nicely finished his race there by breaking his leg on the slippery loose stones at the bottom of the descent.

Misery Ridge follows, but it's a hollow version of itself. The trail is so firm I don't even have to grab onto trees, much less the supplied rope to get up the steepest part. With the biggest obstacles behind, I relax back into my steady pace (or as steady a pace as one can maintain on such undulating terrain).
Shortly after the third and final aid station, I realize that I have made one potentially serious error regarding equipment. I normally lace my shoes a bit loose for ultras because my feet swell during the run. However, it's so cold that my feet aren't swelling at all. If anything, it's been the opposite since I put my shoes on in the warm car. The result is that my right foot in particular is moving around quite a bit in the shoe and the skin has been rubbed off my ankle. It's not particularly painful yet, but it threatens to become so. I stop and re-lace the shoe as best I can with hands that are quite clumsy from the cold. It doesn't' feel much tighter, but it's the best I can do.

I finish the lap in just under 92 minutes, which is my fastest lap ever on this trail even though the effort has been quite measured. I spend less than a minute picking up a new water bottle from my cooler and shedding my wind shirt, balaclava, and the socks over my gloves. As I hit the bridle trail for the second time, I observe that it hasn't suffered at all from the herd of lap 1 runners. It's clear the sub-5 is going to be a gift this year. While that's nice, it's also a little disappointing that I'll be joining the Mud Studs on a year that when that accomplishment is less meaningful. I decide I won't be happy with it unless I run the race to my potential. I resolve to not just break 5 hours; I want to break it by a lot.
Singletrack on lap 2

The way to do that, obviously, is to simply repeat what I just did two more times. I don't lift the pace, but I make a conscious effort to not let it slip, either. The result is that I pass a dozen or so runners during the next few miles. I don't find this the least bit surprising. Taking a long race out too fast is a common mistake on any day. Staying slow enough when it's this cold takes real discipline. Leaving the Triangle, I start to hit the back of the 10-mile field which started an hour after the 50K. It seems the slow end of the pack moves about the same speed in all conditions. Last year, I didn't catch them until after the second aid station. No worries; unlike last year, it's easy to get by.

The rest of the lap is noteworthy in its complete lack of noteworthiness. I cross the timing mats at 3:05, a minute slower than lap 1, but that was just the extra time running around the shelter at the start/finish. I grab another bottle and some snacks and get going on lap 3.

The sun is high and bright and temperatures have risen into the low 20's. The trail is showing little patches of mud, but nothing to significantly impede progress. The effort is real now, with each of the steep ascents inviting me to slow down. It's time to literally roll up my sleeves and get down to the serious business of putting a strong finish on this run.

The only stream crossing on the loop was frozen solid on lap 1 and just a trickle on lap 2. It's now happily gurgling. Seems silly to have to deal with cold, wet feet when I've kept them dry this far, so I take a few seconds to pick out which stones to hop on and make it across with barely a drop inside my shoe. Both the Triangle and the descent to the base of the dam are sketchy in spots, but my shoes are still providing enough grip to run confidently.

At the middle aid station (reached in 47 minutes, still holding the pace) I finally break down and ask the question that's been gnawing at me ever since I realized that the time goal was a gimmie this year: "Any idea how many are ahead?" One of the volunteers replies that he thinks I'm in fourth. That's great news if it's true, but I'm starting to lap the slower end of the 50K field now, so it's likely they missed some of the leaders. Even an elite runner could be excused walking the last few steep steps of the steep climb to collect themselves as they came into this aid station and could be easily confused with those on still on lap 2.

I blast down Speed Demon Ridge a final time. At Nicely Done, a woman is picking her way through the rocks and calls out, "This is crazy!" She should have seen it 2 years ago when all those rocks were covered in several inches of mud. She gasps audibly as I vault off the ledge and scamper down through the stones. But, if she was impressed by that, she's truly dazzled just moments later and lets out another yelp of excitement. I look back to see a runner right behind me coming hard. Dang! I had no idea I was getting caught from behind.
Time to get serious

I pump hard up the first part of Misery Ridge. Once through the switchback where the grade lessens, I look back to see if the effort has had any impact. It appears it has; the gap has widened considerably. Perhaps he's just really good at descents. There are still four miles to go so a single surge isn't going to do it and I press on. I'm actually happy to have the push. Battling with other runners in the early stages of an ultra is suicide but, at this point, it's useful to have some external motivation.

About this time I also notice that my left hand is covered in peanut butter. I had grabbed a peanut butter rollup at the last aid station and completely forgotten that I was still holding it. It was frozen when I picked it up, but now it's a big goopy mess. It's the sort of mindless oversight that I am frequently correcting in Yaya. Well, if she does it after running a marathon, I'll be more understanding.

In the next mile, I catch another runner. Unlike the predator behind me, he makes no attempt to lift as I go by. "The wheels are coming off," he concedes. "Hang in there; you've got sub-5 in the bag," I reply. No harm in offering some encouragement to a competitor who is just trying to haul it in. Soon, I spot yet another runner who appears to be moving too quickly to be lapped. He's going fine on the ups, but seems to be struggling on the downhills; probably a victim of blown quads. Just as I am about to pass him, we hit the little rise to the final aid station and he shoots ahead.

He stops to get supplies and I decide to blow through. I'm pretty sure I can hammer in the final twenty minutes without sustenance. If not, I can always lick the peanut butter off my left glove. I hope to sneak by unnoticed as one should never underestimate the power of pissed. Getting caught can break a runner's spirit, but it just as often snaps them out of a funk. After all, it was a threat from behind that really got me rolling these last few miles.

No such luck. As I hit the next climb, I see him coming up behind. He's less than 30 seconds behind and he's moving mighty fast. I decide that if I can just stay ahead over the climb, I'll take some chances going down the other side to try to get out of sight. At the top of the climb, I open it up. It's the fastest I've run on technical trail in quite some time and it is very much pushing the limits of what my increasingly wobbly legs can handle, but it works. With one mile to go I hit the climb that was my undoing last year. Rather than sprint it this time, I settle into a firm pace so I'll have some motor control for the descent. At the top, I appear to be safely clear, so I just keep the pace firm without taking anymore undue risks.

One more small climb and descent and then it's in to the finish with a time of 4:37:20. Ben is there and he is happy to inform me that, in addition to joining the Mud Studs, I've pulled off the 3-peat master's win (finishing fourth overall). I'm also surprised to learn that the third-place runner finished only 16 seconds ahead of me; I never saw him until I reached the finish chute. He's a young kid (just out of college, where he ran cross country), so he probably would have blown me away in a sprint anyway. As expected, there are quite a few others who also break five hours (twelve in all) including Kaci Lickteig in 4:46:19, the first woman ever to do it. While it would have been nice to join the Hall of Fame group while it was still very small, I console myself that I was only the sixteenth inductee, even if another eight followed almost immediately. And, good trail or not, it was the 8th fastest time in the 8-year history of the race so I make no apologies for a little bragging over what is clearly one of the best races I've ever run.

Suzanne finishes
After some quite excellent finish line chili, I clean up (significantly easier than the past two years) and then head out (by car, I'm done running for a few days) to keep the aid station workers company and cheer in Suzanne. I find the volunteers in remarkably good spirits given how long they've been standing around in the cold. Likewise, the runners still on course appear to be deriving at least as much satisfaction from their runs as I did from mine. The ultra community never ceases to amaze me. On the surface, the activity is just crazy in the extreme, but the people involved are some of the most content individuals on the planet. Surely there's a lesson in there somewhere.

As for me, I'm stuck with a quite different dilemma. It's almost unfathomable that I would improve on this performance. The conditions were as good as they could be, my pacing was nearly perfect (the final circuit was another 93-minute lap), and I surely can't expect my fitness to be improve much at this age. My inclination is to walk away on a high note and find some other winter ultra. Still, I only missed the podium by the same 16 seconds that kept me out of the Mud Studs last year. Part of the Mud Stud prize is a free entry into next year's race. To not return would leave things unfini

Saturday, December 26, 2015

2011 Psycho Wyco 50K

As with all great 3-act plays, the second is tragic.

February 12, 2011

I've never repeated a running race of marathon distance or greater. There are just too many good races out there to be filling up the schedule with repeats. However, there aren't nearly as many competing events in the winter and Run Toto Run (as it is officially named, though most still refer to it as Psycho Wyco) was a pretty good time last year.

Wait a minute, maybe we should fact check that last statement. On evening after the event, I wrote that it was possibly the most brutal race I'd ever done. My race report the following day contained the statement, "while running through mud is certainly part of the sport, I don't care to do it for 3 hours straight." Well, I'm old enough now that I can remember things however I want. I say it was a good time and I signed up to do it again.

Part of the draw is the chance of joining the select group of "Mud Studs"; those who have run the 50K distance in under 5 hours. That sounds absurdly easy (my PR for a trail 50K is 4:09), but this course requires some pretty big adjustments to one's normal pace. In the previous six editions of the race, only 10 people have managed to do it. I missed by a hefty 15 minutes last year, but there was general agreement that the conditions were as bad as ever; the mud being extremely deep on the final lap. That, coupled with some pretty decent fitness carrying over from last year's marathon training has me thinking it's worth shooting for.

Like most of the Midwest, Kansas City has had more than the usual amount of snow this year. That will be great if it stays frozen, but with a thaw predicted on race weekend, the chance for another mudfest looms. I hedge my bets by bringing both my trail shoes and my orienteering shoes. On the way, I stop at Knob Noster park for a short run to check out conditions. It's fun and good orienteering practice, but it doesn't really tell me anything about what to expect Saturday. There simply haven't been any people out on the trails at this relatively remote park, so I'm running through 8-12 inches of snow. The trail for the race will be packed and probably pretty icy.

After spending the night with local orienteer and trail runner Peter Gogol, I head out early to Wyandott County Lake Park, getting there just before 7AM. As I'm already checked in, I don't need to be there an hour before the start, but my early arrival scores me a parking spot in the main lot by the start/finish which is far preferable than parking in the remote lot like last year. A short jog in my trail shoes is enough to convince me that the orienteering shoes will be the better choice. The open tread will pick up less snow and consequently won't ice up as badly if everything turns to slush. I am a little concerned about how well they will grip on the ice as the metal studs are significantly smaller than the machine screws I've driven into the soles of the trail shoes. As it's a three-lap race, I can always change shoes if conditions warrant.

The race starts with half a kilometer of running across open fields. This helps spread the field a bit before hitting the trail. While the trail is quite wide (it's a bridle trail), only a narrow path is packed in, so it's definitely an advantage to be up front. As with last year, I'm the seventh person to the trailhead, which gives me clean running. I settle into a comfortable pace, taking care not to put out too much effort on the many short, but steep climbs.

At 23 minutes, I arrive at the first aid station which is also the entrance to the "Wyandotte Triangle." The next 10 minutes are spent on a dizzying section of true singletrack that winds all over the hillside. Grip is good and by grabbing trees at the apex of many of the switchbacks, I'm through it quickly and without incident. The descent to the base of the dam is a bit more sketchy, but I make it to the bottom unscathed. Unlike the trail in the woods, the field along the bottom of the dam is not packed in. It's a slow slog to the base of "Dam Hill" as I have only the footsteps of a half dozen runners in front of me clearing the way. At the top of the dam is the second aid station and I take a few seconds to down some water.

The climb continues for another half mile before the plunge down "Speed Demon Ridge" to the dreaded "Nicely Done" turn (Chris Nicely fell and busted his leg there a few years back). The ridge is icy, so I run off the main line to get more grip. At the turn, I take it very easy as all the rocks are covered in ice. That's immediately followed by the toughest ascent on the course, dubbed "Misery Ridge". From there, it's back to the smaller, but still plenty steep, ups and downs. I don't bother taking anything at the 8-mile aid station and finish the 10.3-mile loop in 94 minutes.

I'm feeling pretty good about the race so far. My pace feels about right and the clock agrees. I down some more water and grab a Gu and a handful of M&M's before heading out on lap 2. The first half kilometer is now all churned up from the 500 runners on lap 1, but once on the trail, the decision to go with the Orocs starts looking very good. The trail is completely packed in and the surface is starting to melt. I have good grip and, despite the brief stop and slow passage through the field, I get to the first aid station in under 25 minutes. The triangle is in great shape with better grip than lap 1. The field along the base of the dam is now packed in. All this has me at the second aid station just a minute slower than on lap 1. But things are about to change...

Up until now, I've pretty much had the trail to myself. I've passed a couple runners and had a few pass me, but for all but about 30 seconds of the last two and a half hours, I've been able to step exactly where I want. I now hit the back end of the 10-mile field, which started an hour after the combined 50K/20mi start. Because only the preferred line is packed in, the runners are moving single file, often bunching up in groups of 5-10. Some are considerate and stand aside, but as these groups tend to be chatting amongst themselves, they often can't hear me approach. And, as the tail end of the shortest race is comprised primarily of newbies, many are simply oblivious to standard etiquette of yielding to a faster runner. Getting by them means running for 10-20 meters through the deep stuff. I do this without losing too much time, but I can tell I'm hurting myself in the process. Each effort is small, but the cumulative effect is not. I finish the lap in 97 minutes (3:11 total), which still puts me in with a great chance at five hours, but the spring in the legs is gone.

The final trip across the big field to start lap 3 is quite easy as the second lap runners did manage to pack in the trail. Back in the woods, the trail is melting quickly, but most of it is still OK. Unfortunately, the part that's not OK is the descents. Enough people have been slipping down them that they are now scraped clean of snow, revealing just the ice underneath. The Orocs have metal studs in the heel, but it's not enough to provide positive grip. This is made all the worse by the fact that fatigue has reduced my motor control considerably. Perhaps if I hadn't spent so much time in hospitals this past year, I'd just take my chances, but I really don't want this race to end in an ambulance. At least with the 10-milers gone, I can choose my own line again. I pick my way through the really bad sections, trying to keep a good pace going everywhere else.

I'm passed by two runners, but I'm really not that concerned about the places (they both look like they're under 40, anyway). I reach the top of the big climb past the aid station with 4.5 miles and 48 minutes remaining. It's going to be tight, but it still seems doable. I tell myself that if I can just get over Misery Ridge without blowing up or hurting myself in a fall, I can hammer it in from there. That's easier said than done, as the descent to Nicely Done is really slick now. Grip is still fine on Misery Ridge (it's a north-facing slope, so it's not melting much). At the top I steel myself for the push to the finish. I'm OK with not being good enough, but I'm not OK with missing because I didn't try.

Three miles to go comes at 4:28. The next mile to the last aid station is relatively tame. I use it to recover just a bit from the big climbs. I grab a final cup of water at the aid station and the volunteers ask if I need anything. I look at my watch and say, "Two miles in 21 minutes." That earns me a cheer as I head off back into the woods.

4:44 sees the sign for 1.5 miles to go. The ice layer is melting and some of the famed Wyandott mud is showing now. This actually improves the grip on the descents considerably. With just under a mile to go comes one of the steepest climbs on the course. I know I have to run it with everything I have left. Halfway up my hands are tingling from the effort. With 50 meters to go my vision is wavy and tunneled. I hit the top and try to relax on the descent.

Half a mile to go and it's just past 4:55. Surely I can run half a mile in four and a half minutes. I gather up my stride for the big finish and WHAT IS THAT?!? Another climb! How did I forget that? I was sure the one I just went over was the last one. Obviously I ran this one on laps 1 & 2, but for some reason it didn't make much of an impression. It does this time. My legs are completely shot from the last effort. The tunnel vision immediately returns. I try to pump my arms to keep my legs moving but there's simply no life left. I get to the top and check my watch: 4:58:25. There's still 400m to go. I'm not going to make it.


Well, if you're not going to succeed, look good failing. I summon up what little my legs can still give and haul it in. As I cross the line, Bad Ben, the race director, looks up and calls out: "Time?" Upon hearing 5:00:16, he looks truly sympathetic. He is happy to inform me that at least I did repeat as Master's (40+) champ, coming in fifth overall.

One can drive oneself mad thinking of all the ways a few seconds could be saved when one misses a goal by so little. I resolve not to go there. I wasn't fast enough and that's the end of it. Try again? I don't know. Conditions were really pretty good this year; if I couldn't break 5 this time, it's probably not going to happen. Then again, there aren't that many competing events and it was a good time...

Friday, December 25, 2015

2010 Psycho Wyco Run Toto Run

Well, it IS Christmas. Three off-day race reports this week, all from the same race! Here's the first year I ran PW50. Check back tomorrow and Sunday for the sequels.

Run February 13, 2010

"You need to run this race." I'm not sure how many times I've been told that about Run Toto Run (AKA, Psycho-Wyco). The people telling me this are invariably folks who have just watched me run through a particularly nasty section of trail. I've always been a "mudder". Bad conditions slow me down, but apparently not as much as everybody else. I love running on a well-groomed trail or even (gasp!) a road, but if I want to win, I need things ugly. So, seeing that my schedule had an opening for a winter ultra, I decided this would be the year I'd give the infamous Wyandott course a try. I enter the 50K, which is the longest distance offered. It will involve 3 laps around the lake.

I get to Wyandott the prior evening just before sunset and get in a couple miles on the trail. I've done enough orienteering events around Kansas City (including training at Wyandott Lake) to have a pretty good idea of what to expect. Peppered with short, steep climbs, the topography is similar to many of our trails in St. Louis. As it is a bridle trail, it is slightly wider than normal singletrack and the surface is rather uneven. There are a few rocks, but mostly it's dirt (or mud). At this point, the trail is thawed on the surface, but in reasonable shape. Five hundred runners and race day temps predicted in the 40's will change that. I decide I'll start the race wearing my trail running shoes, but have my orienteering spikes on hand.

I wake the next morning somewhat disappointed to find that it is barely below freezing. Certainly, it has not been cold enough to freeze the trail. While this probably further improves my chances relative to other runners, it will make it less likely that I'll break 5 hours. Times aren't taken too seriously in the ultra community since a good time on one trail may be a slow time on another of the same distance. However, in this race there is a special prize for anybody finishing the 50K in under 5 hours, and I've been using it to provide some motivation. At any rate, there's nothing I can do about the conditions. I'll stick to my strategy of taking it out hard and trying to get as much distance in before that trail turns to mush.

I arrive at the park at 7:20. The main parking lot is already full and I get the very last parking spot in the next nearest lot. It only takes a few minutes to get my things ready since I already picked up my number the night before. I don't usually warm up for ultras, but given the size of the field, I figure I might be running pretty hard right from the start to be near the front when we get onto the trail. Therefore, I jog easily for about 15 minutes before they call us up for the start.

Running across the field to the trail, I settle into the group of leaders. The pace is a touch fast, but I figure hanging with it for a few minutes will be worth it if I don't have to deal with congestion on the trail. After about 400 meters, we get to the trailhead and I'm the fifth runner onto the trail. The trail is firm for the most part and the leaders continue on at a pace that I have no desire to match. In the next mile I'm passed by a dozen or so runners while I try to sort out what pace I can realistically hold for the first lap and still have something left for the remaining two. The heart rate monitor is invaluable in these situations. It's so easy to get carried away in the early going and forget that a pace that feels very easy in the first 20 minutes will feel very different in another four hours. My target is 155 and that probably is the average, but the constant barrage of steep climbs and descents has my pulse fluctuating wildly.

After a couple miles we get a longer climb to the top of the ridge. If we stayed on the bridle path, we would then have a nice, fast run along the ridgeline to the north end of the course, but that would be entirely incongruous with the spirit of the event. Thus, the organizers have inserted the "Wyandott Triangle", an insanely twisty section of singletrack that winds down the side of the hill and then climbs back to the ridge. Then comes the big descent to the bottom of the dam, followed by the "Dam Hill", which, as you might guess, climbs back up the Wyandott Lake Dam.

After the aid station by the dam comes the only road section of the course. It's about half a mile of pavement, but it doesn't do much for my average speed because it's all uphill. Then comes the only truly fast section of the whole course. "Speed Demon Ridge" runs straight down a gentle spur. Of course, one does well to heed the warning signs posted at the bottom of the descent. The turn is known as "Nicely Done", a reference to the fact that Chris Nicely ended his race there a couple years back by taking the turn too fast and breaking his leg.

The following ascent, dubbed "Misery Ridge", is steep enough in one spot that a rope is provided. I find that grabbing a tree works just as well. From there in, it's back to the short steep undulations and there are quite a few of them encountered before the 10.3-mile lap is done. I come through the line in 94 minutes, 6 minutes ahead of 5-hour pace and feeling reasonably good about my pacing. I'll need to back off a bit, but it doesn't feel like I've overcooked it.

As expected, the trail has changed dramatically with the passage of 500 runners. However, not all the changes are for the worse. Several slick sections from the first lap have now been packed into a mix of firm ice and dirt; just the sort of thing the 12 screws on the bottom of each of my shoes like to bite into. Other sections are turning to soup, but the first part of the lap is generally fast. The Wyandott Triangle is much more difficult this go round as the many switchbacks are now coated with a slick layer of melted mud on top of the frozen hillside beneath. The big descent down to the dam is also a mess and Nicely Done is now very much a section of trail you could hurt yourself on.

While the conditions do have me moving a bit slower, they are also making it easier to stay focused. The middle part of a distance race is often a time when your brain checks out for a while and you end up giving away a good performance simply because you forgot to keep your foot on the gas.

Grip isn't too much of an issue for the rest of the lap, but the mud is getting really deep in spots. On one of the climbs I catch a woman in the 10-mile event completing her first (and only) lap. As she turns to look at me, she pulls her foot up but the shoe stays wedged in the mud. She collapses in laughter. I assume this is the first time she's ever had a shoe pulled off by mud. If she makes a habit of doing this race, it probably won't be her last.

I finish the lap in 1:42 (total time is 3:16), which means I'll have to run the last lap in almost the same time to break 5 hours. I forgo the shoe change, not because I have enough grip with the trail shoes, but because the mud is getting so deep that the O-shoes will be just as bad. Nothing short of railroad spikes will get to the bottom of this muck.

Despite the bad prospects, I'm reluctant to let go of the time goal just yet. I get to the Triangle roughly on pace, passing several runners in the process. The toll on the legs is severe and once on the singletrack, there is no fighting the inevitable. Every switchback brings me to a complete stop and it's only by grabbing onto to trees that I keep from sliding all the way down the hill. By the time I get back to the aid station at the end of the Triangle, I am hopelessly off pace and my legs are gone.

The mud on the rest of the loop is now comically deep. I'd normally deal with conditions like this by simply running through the woods next to the trail. However, those of us who do a lot of running off-trail know that KC has some nasty vegetation to go along with the steep hills. In most of the deepest spots leaving the trail is simply not feasible (which is part of why they are so deep - nobody can go around, so it just keeps getting worse).

With the time goal lost, I'm left with trying to preserve my position and hopefully not hurt myself in a fall. I do go down a couple times and I have to pick up the pace a bit in the last mile to hold the spot, but both goals are accomplished. I finish in 5:16:30, seventh overall, and winning the Masters (40+) division.

My car seems really far away. As I waddle over, I'm very glad I got that last spot. The next lot would have been twice as far and suddenly I don't feel much like moving anywhere under my own power.

It's a pretty good result for me. Sure, it's a full hour slower than my last trail 50K, but that was on a firmly packed trail through gently rolling terrain on a cool fall day. You really can't compare that to what went on here. In terms of field quality and general prestige, this ranks among my top running finishes. As for the event itself, it seemed to go without a hitch. Getting that many runners out on a trail is no small thing and the KC Trail Nerds did a fine job of it. Will I come back? I'm not sure. The first lap was fabulous; it's a great trail when it isn't gooped up. Unfortunately, bridle trails tend to be gooped most of the time and while running through mud is certainly part of the sport, I don't really care to do it for 3 hours straight. But that's another day's dilemma. For now, I'm certainly glad to have done it this once.

Thursday, December 24, 2015

Long IT rule 4: Run fast

Aside from keeping you going, the other reason to take walk breaks is that it allows you to run fast when you are actually running. This is much more important than it might initially appear.

For most seasoned ultrarunners, the average pace for a race drops below their normal easy training pace at around 40 miles. In other words, if the race is longer than 40 miles, you'll be going slower than you do in training. One of the tenets of all sports is to try to avoid doing things in competition that you haven't practiced in training. You could, of course, practice running really slow in training, but the walk breaks make that unnecessary.

By taking regular walk breaks, you can run your normal training speed when not walking. Going for a few recreational hikes is enough to train walking on trails. Thus, while your average pace is in untrained territory, at any given point, you are doing what you have practiced. The reason this is so important is that technique matters. Not only are you much more efficient when moving at a trained pace; you are much less likely to make a misstep that results in injury. This is particularly true at night (obviously, running and walking trails at night is another thing that needs to be practiced).

Similarly, in a long IT project, it's tempting to try to pace oneself for the long grind ahead. That turns out to be a really good way to turn it into a long grind. By working at a normal speed and then taking some time to slow down and assess, project members are more efficient and make fewer mistakes.

Agile is very good for this as the requirement to produce something tangible every iteration keeps people focused on attainable short-term goals. However, the principle can be applied to any methodology. It's a mindset more than a method. Catch your breath, size up the next chunk, and knock it out.

Wednesday, December 23, 2015

Long IT rule 3: Keep moving

David White, an accomplished ultrarunner who has also directed dozens of races, uses the more catchy phrase: "Beware, the chair."

Every ultra aid station has a chair. Usually several. They come in handy if you have to change batteries in a headlamp or re-tie your shoes. I've also used them while tending to more serious problems like heat stroke and hypoglycemic shock. However, the chair can be the beginning of the end. Stopping and quitting are not that far apart. Every minute spent in the chair is not only time lost, but motivation lost. The siren call of simply stopping and waiting for help to come (the aid station workers will always drive you back if you wait long enough) is difficult to resist once the discomfort of the effort is abated.

The Long IT version of the chair is the re-baseline. This insidious ploy is the destroyer of many otherwise salvageable projects. Once it's clear that the original plan can't be met (see rule #1), it's tempting to slip things just a bit with the hope of making up the time somewhere else. This, of course, is pure fantasy. If the original plan was too tough, why would you believe that you can beat it when you're already tired and behind? Small slips become big slips and soon the project is adrift waiting for the mercy of the Steering Committee to stop the bleeding and shut it down.

It doesn't have to be like that. While I'm the last one to encourage optimistic status reports, the message to the folks on the ground has to be consistent: find a way to make forward progress, even if it is painfully slow.

Steering committee meetings are the aid stations of Long IT. Come in knowing what you need. Ask for it directly and without apology. The steering committee is there for your project, not the other way around. If you wanted salted peanuts and all they have is pretzels, so be it. Grab some and go. Don't sit around wishing the world was different. Get back on the trail. Walk if you can't run. Keep moving.

Tuesday, December 22, 2015

Long IT rule 2: Take walk breaks.

As I've said before, for most people, the marathon is the longest "short" race. Short races are races where seconds count. Where you pace yourself as best you can the whole way, with maybe a little kick at the end. Most people do fade just a bit after 2 and a half hours so, unless you're a pretty fast marathoner, you probably start to move into ultra mode at the end. But, even for the 4-hour crowd, a marathon is still best "run", meaning you push through the whole thing taking only the briefest respite at aid stations.

Ultras are a whole 'nuther thing.

Even the elites find it faster to take walk breaks. Not long breaks, mind you, but definite, conscious beaks. This is also true for IT projects that last longer than six months. A breather is in order. Take some time to recover, gather your thoughts, and then push on.

Unplanned walk breaks can be the beginning of the end: an admission that you've bitten off too much and simply can't stay on plan. This is often followed by long stops at aid stations and ultimately, the dreaded DNF (Did Not Finish). That's obviously not a good thing. In contrast, planned walk breaks are the little pickups that keep a a runner focused on the task and ready to push forward.

Taking walk breaks early in the race allow you to consciously accept that this task is too much to be taken all at once while still believing that it is doable.  Planned walk breaks allow one to assess the pace and make adjustments before going too deep in the hole.

Pulling off a successful walk break in an IT project is no small feat. As with top runners, good developers rarely admit to their own limitations. It's essential for the project manager to slide them in with finesse. Rather than an admission of weakness, they have to be presented as opportunities to reassess progress and make adjustments.I've found that every 2 months is a good time to take a small breather and shore things up.

My current team uses 3-week iterations for delivery. If we are working on a bunch of user stories that lead to a single release more than 3 months in advance, I try to plan every fourth iteration as "light". I'll add some "fluff" stories to the iteration like "Reconcile test results with users" or something similarly vague, which give the developers a chance to think about what they have done rather than what they still have to do.

As we'll see next, it's extremely important that these be walk breaks and not vacations. Forward progress is everything. Even light iterations should have tangible results.

Monday, December 21, 2015

First semester at UMSL

Now that I've had a bit of time to catch my breath, here's a somewhat more substantive overview of the first semester.

First a quick look at how it affected me. Totaling just the hours spent directly on the two classes (my "training log" on AttackPoint makes that pretty easy to do), I get 119 hours for Algorithms and 80 for Languages. That's only 13 hours a week. I was expecting closer to 20. As I got A's in both, it was obviously enough, but I did feel a bit harried near the end. The load was spread fairly evenly, so it wasn't an issue of getting behind; I think I just need a little more time working problems to get really confident.

The whole brain intervals idea is a keeper. I think they helped a lot on the Algorithms final. I still used the whole time, but I wasn't panicking at the pace. I knew that there would be a few errors (turns out fewer than I thought - my raw score was 112/115), but I was less stressed about that. I'm (re)learning that turning in a test with a mistake is not the same thing as sending a memo with a typo to a VP. Professors expect you to make mistakes on an exam; it's not a big deal.

I need to do a better job of staying ahead on my reading. I was doing great until around week seven, then I went a bit off the rails. Not sure exactly how that happened. I think I just lost sight of it when work heated up.

Outside of class, I'm wandering a bit. I've made some headway in refining my topic, but I'm really not sure how to push ahead with it. Next semester, I'll be taking a directed study class with my advisor (Yufang Wu) and hopefully I'll get some reasearch guidance from that. I'm also thinking about approaching my Algorithms prof (Jianli Pan) about avenues to publication. I was looking over his CV the other day and noticed that he's pumped out a lot of stuff. Presumably, he thinks reasonably highly of me since I just aced his main class, so he might be willing to toss me a bone on some research ideas. He's mostly published on network optimization and Internet of Things. As the topology of IoT is very large and volatile, some of my sampling and confidence interval techniques may be relevant.

Family life suffered, but not terribly. I still spent time with Yaya on my off days (Saturdays) and, while I did have to quit the choir, we went to church as a family every Sunday. Kate helped by picking up cooking duties 2-3 times a week. I even made it to wine club a couple times. I expect to have another year at this pace while I finish up coursework. After that, I really don't know what to expect, but I'm increasingly confident that I can work it out without trashing everything and everyone around me.

Running, as expected, took it hard. While my fall results may not look that different from what I did a year ago, I know better. I'm going to try to train hard over break because I was invited back to the elite field at The Woodlands Marathon, but this really is the beginning of the end for competitive running. It's hard to let it go, but I can and I will.

Finally, while it was really just a suggestion from Kate and not an attempt to look more academic, the beard does have that effect. People seem to genuinely like it, so I guess I'll keep it around until at least the summer and then decide if it's too hot.

I'll get to the summary of the actual course material in future posts.

Sunday, December 20, 2015

Long IT: Rule 1

My first ultra "rule" for long IT projects is to have a realistic plan. One might think that a tautology, since any project should have a realistic plan. The difference is the consequence. Even at marathon distance, it's possible to have a nutty plan and still succeed. That almost never happens in 100s.

My first marathon was Chicago in 1993. I was in great shape, but hadn't done many long runs. I figured 3:30 was a good goal. It probably was if I was running some tiny marathon. But, at Chicago (this was before chip timing or corrals were used), I took 8 minutes just to get to the start line and another 12 to get to mile 1 due to the congestion of 35,000 runners all starting together.

To "fix" this, I started knocking out 7:30 miles. That worked fine up until mile 18, when suddenly I found myself in more than a bit of trouble. Any marathoner knows where this story goes: each mile got slower and slower, until I was barely moving at all. But, I finished. Granted, an hour later than expected (4:35), but I finished.

Make a mistake like that in a 100 and you don't finish at all.

Furthermore, a 30% overrun, while not a good thing, is not really that big of a deal in a small project. Small projects have lots of volatility and carefully trying to cover every contingency so you don't go over may cover your ass, but it also raises cost on average. Sure, some stuff will go wrong, but not EVERYTHING. So, you just go with it. Take the best guess, put it on the iteration backlog, and when it's time to go, you go the best you can.

Long projects aren't like that. Even a 10% overrun could be enough to kill the bonus of some VP who was very much counting on their bonus not being killed. Steering committees will revolt if early results don't look good; which motivates project managers to push even harder at the beginning (as I did in Chicago), often incurring technical debt that nails the project in the late stages.

It's supremely important to not go out too fast in an ultra. Taking a few seconds to deal with little things like a shoelace that's just a bit too tight, or a wet sock that's giving you a blister, have to be built into the plan. If you become a slave to the stopwatch rather than responding to the situation, you set yourself up for failure. Only by having a plan that accounts for such things can you practice the discipline of tending to all the little things properly without having senior management flip out over the cost of doing so.

Saturday, December 19, 2015

2014 Double Chubb 50K

Apropos of nothing, this week's off-day race report comes from 2014:

Run April 19, 2014.

As far as I know, I only possess one course record and it's not even officially recognized: my 60:15 run in the Clydesdale division at Pere Marquette (yes, I did weigh over 200 pounds in 2001). Last year, Joel Lammers set the 50+ record at Double Chubb on the "Quad Bypass" course (which is used when the flat Lone Elk side of the trail is underwater; it's 4 times of just the hilly Tyson section). As he's returning this year and the full length of the trail is high and dry, it seems a pretty safe assumption that the mark will be lowered this year. In fact, after a reconnaissance run three days before the event, I decide that conditions are sufficiently good to warrant taking a crack at a sub-4 hour, which would likely be a record that would stand for a while.

Of course, I still need to beat Joel, which is no sure thing (he was third to my second overall last year). He seems to feel the same way and at packet pickup, Race Director Greg Murdick tells me that Joel actually emailed him with a request to update the race site to show his record from last year for fear that it won't be there for long. We joke about that prior to the start the next morning, but neither of us kids ourselves. It will be a tough fight between two tenacious old guys who know this trail very well. While he hails from Wisconsin, Joel has attended all 16 runnings of this race and I train on this trail all the time.

Since I'm running all six events in the Eastern Missouri Ultra Series (EMUS) this year, my volunteer opportunities are limited. So, I spend some time race morning handing out t-shirts and numbers to entrants that didn't stop by the previous evening. Things quiet down around 7AM and the others working the table assure me they've got things under control and give me the last half hour to get in a warmup. My pacing strategy for this event is to run it just off marathon effort with no stops or walk breaks, so 15 minutes of light jogging is beneficial. That leaves me just enough time to setup my drop area and get back to the start line for the gun.

The 200m of park road to the trailhead is steep enough to sort the field. There's a little further shuffling in the first mile and then I settle into fifth place. By the picnic table at the course high point two miles in I'm pretty much on my own; I'm surprised by how quickly the field has separated. I hit the first crossing of the railroad tracks in 25:27, slightly off 4-hour pace, but not by much. The effort feels right so I make no adjustment.

The trail on the other side of the tracks could hardly be more different. The opening three miles through Tyson is all steep terrain strewn with loose rock. You really don't have much choice but to work it hard. Now, on the smooth dirt trail through the flood plain, two pacing options present themselves. The first is to keep pressing and knock out some really fast miles. The other is to back off and use this gentle hour to recover for the next passage through Tyson. I choose the latter, getting to the far turn at Lone Elk still just off 4-hour pace.

As it's an out-and-back course, I now get to see the gaps in the field. Brian Bauer is out front alone. Rob Raguet-Schofield is a couple minutes back along with Josh Wright (who is in the 25K). Then there's another two minute gap back to David Pokorny who's just ahead of me. After making the turn, I note that Travis Redden, David Stores, and Joel are around a minute behind me. Nobody appears to be in any trouble at this point, so it's far too soon to guess how this will all shake out.
I keep the effort steady and controlled back to the tracks. David P spends a bit of time getting refreshments at the aid station while I simply grab the water bottle I'd dropped on the way out, so I head up into Tyson ahead of him.

In my visualization of how the race would unfold, this next hour struck me as the crucial section. The strategy of knocking the pace back a bit on the flats only makes sense if it enables crushing the Tyson side. I push up the ridge to the picnic table. David is hanging tough behind me, emitting spontaneous yelps in the process which I guess is his way of keeping his head in it. It's not annoying, just a bit odd. Of course, by toeing the line of an ultra, we all qualify for that assessment.

I feel like I'm pressing but the watch doesn't agree; I'm still just a bit off 4-hour pace. I cross the line at 2:00:25 with David right behind me. As the second lap has an additional quarter mile on the park road and the rapidly rising temperature is starting to be a factor, breaking 4 hours is looking unlikely.
I stick to my no-stop strategy, grabbing just a gel packet from the aid station and a couple fresh bottles from my drop. Shortly into the second passage, Travis, David P, and Joel all catch up (David Stores has apparently fallen off the pace). We run together to the tracks, but I've gone from setting the tempo to hanging on. It's not really the position I want to be in with 90 minutes of racing still to go.

If there was any doubt that I was getting close to the breaking point, Joel answers it by laying down a blistering pace on the flood plain. Unlike the first lap, I'm not willing to drop off the pace at this point in the race. However, there is simply nothing I can do to match it. David comes closest, losing only a minute to the Lone Elk turn. Travis and I lose a couple minutes more.

Travis and I are both coming unglued, but I manage to push for another couple miles to solidify my position in fifth. I'm disappointed, but also cognizant of the fact that the EMUS series is just that: a series. And, a rather closely spaced one at that. Recovery is every bit as important as performance. With only 4 weeks until the Berryman 50-mile, I run the final bit through Tyson just hard enough to stay in front of Travis to claim fourth.

Wait! Fourth? How did that happen? Brian was so far ahead at the Lone Elk turn on lap 2 that when I saw him stretching out at the Tyson trailhead a mile from the finish I assumed he had already won and then jogged back up there to see how others were doing. Turns out he got bit by cramps just a couple miles from the finish and, when a few walk breaks didn't fix matters, had to completely stop to work them out. He manages to hobble in for sixth behind Travis. Rob gets the win in 4:02 but Joel's big surge makes it close, lowering the 50+ record to 4:05. David takes third (first in 40+).

At the post-race barbecue, I offer my genuine congrats to Joel, who really ran a very fine race. He was certainly the better runner today and he'll have at least another year with his name next to the record. Probably a lot longer than that. His race was almost an exact copy of what I ran last year: solid, but unspectacular start with a steadily improving pace moving him all the way up to second (including the fastest second half). I'm not quite sure why that strategy eluded me when I had already proved its effectiveness. Truth is, I really thought I was in better shape. The first half didn't feel like overcooking it, but it obviously was. While I would have preferred to finish strong, I'm not completely down about the result. Despite my flagging pace, only the top three ran the second half faster and the age-group placing puts me solidly in the lead in the EMUS series. As of this writing (10 days after the event), I feel like I'll be sufficiently recovered for Berryman, where it just so happens the current 50+ record holder is entered...

Friday, December 18, 2015

4.0

Grades were released today. Well, sort of. The raw grades. The official translation into a final letter grade is still to come but, happily, that's something of a formality in my case. An A in Languages was a done deal quite some time ago, but Algorithms was anything but sure. I was bringing a low A into the final, so I had to nail it. I did. Yay for that.

Those familiar with graduate school know that grades don't really mean a whole lot past masters level. Distinction from that point on comes from the quality and quantity of peer reviewed publications; not what one individual professor thinks of your work. However, the grades this semester did carry some gravitas for a number of reasons.

First and foremost, it was the first chance for the UMSL faculty to get a good look at me. First impressions matter. From this point on (unless I screw it up), I'll be given the benefit of the doubt. There may come a situation when that proves vital.

Second, I'm about to petition to get the maximum number of credits to transfer from my masters work. This is normally automatic when it's a related field, but such credits are not normally 30 years old. By demonstrating that I am, in fact, the real deal that my transcript is advertising, it's a much easier sell. With 27 credits transfering and 6 completed this semester, I only need 27 more. I can easily do that in another two years. Still leaves the little matter of writing a dissertation, but at least the coursework won't be slowing me down.

Finally, there is the dissertation. This is the one thing I really can't do on my own. I can't have an advisor who thinks they are doing me a favor. I need one who regards me as their best shot for getting significant work published and wants me cranking out as much stuff as possible so they can get tenure. I need someone who is willing to throw their best ideas my way because they believe I'm the one that can run with them.

So, these grades mattered. And, I'm particularly glad they came with exclamation points by killing the final in both classes rather than squeaking in with just enough.

Thursday, December 17, 2015

Ultrarunners Guide to Long IT Projects

I've been invited to present my survival guide to death march projects to Think IT, a regional professional group. I've got quite a bit to do to put the whole thing together, but here's the general outline:

Using running races as a metaphor for IT Projects, we have:

5K: Trivial updates to existing products: single developer; maybe QA
10K: Incremental functionality: small team; short timeline
Half Marathon: Major releases: requires project management
Marathon: ERP Upgrades, platform rehosting, redesigns: requires steering committee
Ultras: Major new systems, Operational overhauls

This last group is fundamentally different. The marathon is the "longest short race", meaning it's the longest race where you worry about seconds. Beyond that, success requires a different mindset. In particular, an ultra can't be "forced". If it is, it turns into a death march and will fail. Adjustments have to be made in a way that allows forward progress to continue while keeping the goal in reach. Here are 10 strategies from the limits of human endurance that translate well to long IT projects.

1) Have a realistic Plan
2) Take walk breaks
3) Keep moving
4) Run fast (when not walking)
5) Take small steps
6) Refuel
7) Expect setbacks
8) Have a support crew
9) Use pacers
10) Hire women

That last one may come as a surprise to those who know how much I disdain preferential hiring. I'll explain as the topic gets elaborated over the next few weeks.

Wednesday, December 16, 2015

Quick thoughts on Algorithms

As with Languages, I'll give some quick thoughts today and follow up with a summary of the class in the next few weeks.

  • I would have liked the emphasis to be a bit more theoretical. This is grad school, after all. We can handle formal proofs. The text had those, but the lectures, assignments, and exams, really downplayed that. Instead, the focus was more on understanding specific algorithms. That's useful, but you're supposed to get that in undergrad.
  • The book (Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms) is quite good. I won't be selling it back.
  • The midterm was rushed. Nobody did particularly well on it and I think that was largely due to running out of time. The final and assignments were appropriately paced.
  • The selection of topics was good. I'll probably at least review the topics skipped (hitting everything in the text would be a full-year course, minimum).
  • The instructor was animated and enthusiastic. I enjoyed the lectures quite a bit.
Overall, a really fine course.

Tuesday, December 15, 2015

Not much rest

A day off seems in order.

Last night's exam seemed to go fine, though I won't know that for sure until grades are published. While it's tempting to kick back for a bit, that would not be wise.

First of all, I'm behind at work. That needs to be remedied right now. We use 3-week iterations and the current one ends in a week. I've got some things that really need to be delivered this cycle and it's going to take some OT to make that happen.

Second, I've got a presentation to give the first week of January for a local professional group.

Finally, one of my classes next spring is Bayesian Analysis. Really looking forward to that. However, I haven't done anything with Linear Algebra in quite some time. Need to dust that book off before classes resume.

So, I'll go to wine club tonight and enjoy it. But that's about the extent of the break for me.

Monday, December 14, 2015

Last call

I'm writing this before the final because I have a few minutes to kill and I'm pretty sure I'm not going to want to do anything but sleep after the final is over.

I've done the homework, and done it well. I've read the sections in the book (several times). I've done all the exercises and at least thought about most of the problems. You'd think I'd be pretty confident going into this one.

I'm not. I don't know why. I guess it's just lack of familiarity with test taking in general, but I keep thinking I'm just going to go completely blank on some super easy problem and fall apart. I really need to keep doing my test-taking drills (which have been productive but, like any form of exercise, it takes a fair bit of it to make a big difference). I also let myself get a little behind in the reading and that's probably not a good thing.

All that said, there is some reality intruding here. This is about as well prepared as I'm going to be able to be going into any exam. We'll know soon if it's enough.

Sunday, December 13, 2015

Cheat sheet for final

I might add a few more things if I think of them tomorrow, but this is basically the note sheet I'm bringing to the Algorithms final tomorrow. Some of it doesn't translate well to HTML, but that's not something I need to be fixing now:


Breadth-First-Search
Q.Add(s)                                //s=start node
while not Q.Empty
                u = Q.Dequeue
                foreach v in G.adj[u]
                if ( v.color == WHITE)
                                v.color = GRAY      //in progress
                                v.d = u.d + 1
                                v.pi = u
                                Q.Add(v)
                u.color = Black                                         //done

Depth-First-Search
time = 0
foreach u in G.V
                if (u.color == WHITE)
                                DfsVisit(G, u)

DfsVisit(G, v)
time = time + 1
u.d = time
u.color = GRAY                                                                     //in progress
foreach v in G.adj[u]
                if (v.color == WHITE)
                                v.pi = u
                                DfsVisit(G, v)
u.color = BLACK                                                                   //done
time = time + 1
u.f = time

Kruskal MST
A = null
foreach v in G.V
                MakeSet(v)
sort(G.E by weight)
foreach e in G.E                                    //e = (u,v)
                if FindSet(e.u) <> FindSet(e.v)
                                A.Add(e)
                                Union(e.u, e.v)      //merge trees

Prim MST
Q = G.V
while not Q.Empty
                u = Q.ExtractMin
                foreach v in G.Adj[u]
                if (v in Q) and w(u,v) < v.key
                //v hasn’t been pulled in yet and this edge is
                // a better bridge to v than any we’ve seen
                                v,pi = u
                                v.key = w(u,v)
// at end, Q is empty, so everybody is in

Bellman-Ford Single Source Shortest Path
for i = 1 to |G.V| - 1
                foreach e in G.E //check EVERY edge – no particular order
                                Relax(e.u, e.v, e.w)
foreach e in G.E                                    //check for negative cycles
                if (e.v.d > e.u.d + e.w)         //dist to u + (u,v)
                                return false

Relax(u, v, w)
if (v.d > u.d + w)
                // if it’s faster to go through u, do it
                v.d = u.d + w
                v.pi = u

Dijkstra Single Source Shortest Path
//Requires non-negative cycles
S = null
Q = G.V
while not Q.Empty
                u = Q.ExtractMin
                S.Add(u)
                foreach e in G.adj[u]           //check adjacent edges
                                Relax(u, e.v, e.w)

Standard LP Form – n variables, m constraints
maximize sum(cjxj)
subject to
sum(aijxj) <= bi              i = 1, …, m
xj >= 0                                            j = 1, …, n
OR
maximize cTx
subject to Ax <= b, x >= 0

Conversion to standard form
min rather than max: negate objective function
greater than constraint: negate and flip inequality
equality constraint: replace with Ax <= b and –Ax <= -b
missing non-negative variable constraint
                replace x with (x’ – x’’) where x’, x’’ >=  0

Slack LP Form – n variables, m constraints
s = b – Ax, s >= 0, x>= 0
s is Basic var: indices in B; |B| = m
x is Non-Basic: indices in N; |N| = n
v is value of objective function
YEILDS (N, B, A, b, c, v)
z              = v           + sumN(cjxj)
xi             = bi          - sumN(aijxj) i in B //NOTE SUBTRACTION



Standard NPC-Reduction
1)       Show problem A is NP.
2)       Show reduction from known NPC B in P
3)       Show A iff B

NPC Taxonomy
Constraints – CIRCUIT-SAT, SAT, 3-SAT
Sequencing – HAM-CYCLE, TSP
Numeric – SUBSET-SUM, KNAPSACK(0,1)
Covering – SET-COVER, VERTEX-COVER
Packing – SET-PACKING, IND-SET(aka VERTEX-PACKING)
Partitioning – PARTITION, 3D-MATCHING, 3-COLOR

Approximation Ratio
max(C/C*, C*/C) <= p(n):: p(n) approximation algorithm
                (may be expected or actual cost)
(1+e)-approximation scheme::
for any e>0 (1+e)-approx algorithm
polynomial-time approx schem::
                for any e>0, polynomial in size n
fully polynomial-time approx schem::
                polynomial in n AND 1/e

General Identities
nb = o(an)                //exponential crushes polynomial
lgb n = o(na)           //polynomial crushes polylogarithmic
logb an = n logb a
logb a = (logc a) / (logc b)
logb (1/a) = -logb a
logb a = 1/(loga b)
alogbc = clogba