Fixing Windows Update Failure - Error Code 0x643
Today, as I was patching my machine, I noticed that I still had not installed the Visual Studio 2005 Service Pack 1 on my work development machine (a Windows Server 2003 R2 box). I loaded up Windows Update, selected the VS 2005 SP1 checkbox, let the update download and chose to install. After what seemed like 10 minutes of hanging and nothingness, the update installation failed. Huh? I went to "Review Your Update History" and clicked on the question mark next to the failure icon and the resulting pop-up simply stated Error Code: 0x643 and with 3 very useless links to find out more information.
To save everyone time, the fix can be found here and this link will ask you to download a patch that fixes the insufficient contiguous virtual memory problem that prevents you from installing certain .msi or .msp files. Run the executable after it has finished downloading and then return to Windows Update to finish patching your software. Good luck!
Create a Word 2003 Document Using VB.Net
The following code will help you create a very basic Word 2003 document using VB.Net. In addition to the code below, you will need to make sure that Office is installed on the host running the application for the document to be created.
Dim doc As Microsoft.Office.Interop.Word.Document
doc = word.Documents.Add()
Dim range As Microsoft.Office.Interop.Word.Range = doc.Range(Start:=0, End:=0)
range.Text = "Put your document's text here."
doc.SaveAs("Path and File Name")
doc.Close(True)
word.Quit()
Create an Excel 2003 Workbook Using VB.Net
The following contains code on "How to Create an Excel 2003 Workbook Using VB.Net". Remember, you will need to add the "Import Microsoft.Office.Interop" reference at the top of your code. In addition, you will need sufficient rights to create files in your desired save location as well as Office installed on the machine hosting the application.
Dim MyBook As Excel.Workbook
Dim MySheet As Excel.Worksheet
MyEx.DisplayAlerts = False
MyBook = MyEx.Workbooks.Add
MySheet = MyBook.Sheets.Add
MySheet.Name = "Worksheet Name"
'Entering static values into cells as headers
MySheet.Cells(1, 1) = "Header 1"
MySheet.Cells(1, 2) = "Header 2"
MySheet.Cells(1, 3) = "Header 3"
MySheet.Cells(1, 4) = "Header 4"
MySheet.Cells(1, 5) = "Header 5"
MySheet.Cells(1, 6) = "Header 6"
'Reading through a data set to fill in the rest of the worksheet
For i = 0 To DataSet.Tables(0).Rows.Count - 1
MySheet.Cells(i + 2, 1) = DataSet.Tables(0).Rows(i).Item(0)
MySheet.Cells(i + 2, 2) = DataSet.Tables(0).Rows(i).Item(1)
MySheet.Cells(i + 2, 3) = DataSet.Tables(0).Rows(i).Item(2)
MySheet.Cells(i + 2, 4) = DataSet.Tables(0).Rows(i).Item(3)
MySheet.Cells(i + 2, 5) = DataSet.Tables(0).Rows(i).Item(4)
MySheet.Cells(i + 2, 6) = DataSet.Tables(0).Rows(i).Item(5)
Next
MyBook.SaveAs("FileName.csv", FileFormat:=Excel.XlFileFormat.xlCSV)
MyBook.Close()
MyEx.Quit()
MySheet = Nothing
MyBook = Nothing
MyEx = Nothing
System.GC.Collect()
Conditional Breakpoints in Visual Studio 2005
Sometimes when you are self-taught, you may know how to do something, but you do it the hard way. Therefore, sometimes even the smallest little feature you didn't know about can really make your day and improve your coding efficiency. Today, I stumbled over the addition of conditional breakpoints in Visual Studio 2005. Now, I'm sure any serious coder probably already stumbled over this feature, but I had not until today. A conditional breakpoint is exactly what it sounds like - it is a breakpoint that will be triggered during the debugging process only when a condition you specify is met.
Using Visual Studio 2005, you can set a conditional breakpoint by placing a breakpoint on a desired line much like you have in the past (click the gray area to the left of the desired line). A red dot will appear representing the breakpoint. When a user right clicks on the breakpoint, you will be presented with a list of options that include:
- Delete Breakpoint
- Disable Breakpoint
- Location
- Condition
- Hit Count
- Filter
- When Hit
Anyone who used Visual Studio 2003 as their primary development environment would be surprised to see all these new options in the 2005 version. If you choose the "Condition" option, you will be presented with a dialog box that asks you to input a condition and to choose whether the condition "Is True" or "Has Changed".
Conditional breakpoints are extremely important for debugging problems that exist in WHILE loops, FOR ... NEXT loops, etc. especially when dealing with extremely large loops. Say you have a single record bombing out in a huge loop and you are being emailed the CATCH exception. Instead of setting a breakpoint and continually hitting F5 to eventually get to the record that your application is bombing out on, you can now just set a conditional breakpoint, run your application and have the debugger stop the process right as you get to the problem record.
I'm excited to have "discovered" (yeah, I know, I'm late to the dance on this one) this feature as it should drastically improve my debugging and shorten troubleshooting time. Hopefully, if you weren't already aware of this feature, you are now and will help you in your .Net development.
2008 Terrapin Mountain Marathon Race Report
The title of this post is a little misleading. The title may say marathon, but the 1st annual Terrapin Mountain Marathon was more like a 27 mile adventure race with some running mixed in. In short, I knew that the elevation changes would be difficult for this Long Islander who has trouble simulating such drastic elevation changes while running around flat Long Island, but the race was highly rewarding and finishing my first true mountain race is a highlight in my early ultrarunning career.
Pre-Race
Yet again, for my second Horton run, transportation proved to be difficult. Having to work until 3:30pm on Friday afternoon, I headed immediately down to Big Island, Virginia and the drive was brutal. Nine hours later, I was pulling into the parking lot at the Sedalia Center at 12:30am only 6.5 hours until race start. I got out of the car and walked around some to familiarize myself with the Center's surroundings and to stretch my legs and then went to sleep in the reclined front seat of my tiny Corolla. No sooner did I close my eyes, I started to hear sounds of car doors being shut and checked my phone - 5:45am. I quickly got dressed, checked in and no sooner than I could wipe the crust out of my eyes, Race Director Clark Zealand was on his microphone giving us the pre-race speech. One tidbit during this meeting that I wasn't aware of (maybe I should have read more about the race before driving down) was that you would need to obtain a page from 2 separate books - the first one being at the "Summit" and another one later in the race. Silly New Yorker that I am, I assumed the Summit would be the top of the first large climb we finished (not the case). Before I came to the realization that I should get some more information on the course, 7am rolled around and we were off running. Notice, I haven't eaten breakfast - huge oversight and mistake.
First ~5 Miles
For this inexperienced mountain runner, this section of the race, especially right at the start, was brutal and demoralizing. My goal for this race was to power walk the inclines, run the downhills that were runnable as fast as I could and blast through any flat sections. However, it seemed as if I was the weakest hill climber in the entire group and almost immediately found myself at the very back of the pack. At one point, there was a runner without a race number behind me and I asked him if he was sweeping thinking I was dead last. He laughed and stated that there were "plenty of runners behind us" which was an outright lie. My Achilles heels were both burning whenever I tried to pick up the pace and ended up settling for just trying to power through this section knowing that the course gets a little easier later on. By the time I hit the 4.9 mile aid station, I had to have been near dead last - a position I had never been in before and was quite an issue to process in my head. I ate a little something still not remembering I forgot breakfast and continued out.
Miles ~5 - ~9
I get about 1000 yards and stop dead in my tracks. Was that the Summit? Did I need to get a page from a book? I let two runners catch up to me to ask them if I needed to get a book page there and they looked at me as if I was clueless (which I was) and said no. So, back to running. The course gets much easier during this section and I really used this section to mainly recover mentally and to try and readjust my entire outlook on this race. I went in wanting to run a 6 hour race and now I just wanted to finish as far away from the bottom as possible. This section of the course is very runnable although I was still recovering from the previous section. Nothing very notable in this section to be honest.
Miles ~9 - ~13 (The Turnaround)
This is where the race got very interesting for me. There were some good flats and some downhills and I was able to pass a few runners during this section. The first part of the section is a wonderful grass wide trail that felt so perfect to run on that I really enjoyed this section. However, right around the 11.5 mile mark, you enter a very narrow single track dirt trail with a very steep incline. Here, I lost all the ground I made on the back of the pack in about a mile and everything that could go wrong went very wrong. I suddenly started to get extremely hungry and realized I hadn't eaten anything. I then had to go to the bathroom - the complicated end. Then, I realized "where did the pink trail markings go?". All in all, I lost about 10-15 minutes in stops and turnarounds and finally made it into the last aid station where the volunteers there (who doubled as the sweeps) stated "these are the runners we'll be following".
That's right - they announced me dead last. (although I think I was actually third to last and the sweep was wrong).
Miles ~13 - ~17
Metaphorically, this was my "turnaround". I finally came to accept my dead last position and set my sights on catching as many people as possible. I started out the turnaround aid station trailing the runner in front of me by only a few steps. I kept pace with her until a slight water crossing where she stepped around and I plowed right through the water and mud - yet another metaphor which boosted my spirits. As quickly as I passed the last female, I took my first "ultra" fall tripping over a grass covered rock. Luckily, it wasn't too bad and no one was around to laugh (the only good thing about being almost last) and quickly set out to finish getting up the steep uphill single track and then hopefully to catch some runners on the flats and downhills. Once I got out to the wide grass covered trail, I was able to cruise the downhills and pass another 3 runners, but they were able to keep up pretty close through this entire section and up until the aid station. During the last part of this section, I started to cramp badly in my right leg when I tried to run the downhills hard so I knew I needed more salt which I got in the form of a salt covered potato. At the aid station they pointed up a huge hill we hadn't run before and let me know that up yonder was where I was headed.
Miles ~17 - ~21
I'm not even too sure about where in the course I was at this point mileage wise. Right out of the aid station, you run/walk up a very steep single track up to the "Summit". Here, I found myself completely alone and I basically would stay like this after I reached the Summit book location (where there were no more pages and I got a rip of the front cover) until the out and back to the last aid station 4 miles later. After the Summit, you arrive at "Fat Man's Misery" - a rock formation that requires you to carefully slide down about 6-8 feet through a narrow crevice and duck underneath a low hanging rock followed by climbing through another rock formation making this more of an adventure race than a "run". From here, the course becomes a downhill run with a nice gentle single track at first which is pretty runnable, but then turns into rock hell which was too technical for me to make any type of decent time down and I assume better trail runners would cruise through this section. Eventually, the single track opens up and you run your way down to the aid station which is a slight out and back where I finally saw a handful of runners walking up the trail after having just left the aid station. I figured I was a good 10-15 minutes behind them.
Miles ~21 - The End
As I was leaving the aid station, I was surprised to see all the runners I thought I had distanced myself from right behind me coming into the aid station as I was just leaving. This was slightly disheartening as I knew there was at least one more big climb left and I assumed all of these runners would catch and pass me. I did my best to power walk the inclines and no sooner did I finish the climbs, I was presented with a lot of gentle zig-zagging downhills which I made sure to take advantage of and I ended up running this section, again, completely by myself never seeing another runner (so the last 9 miles I only saw other runners for a few brief moments). I wanted to make sure there was no way any of the runners behind me could pass me so I took advantage of the downhills. As I finally made my way out the seemingly endless wilderness onto the roads where we started the race, I cruised into the finish line running a very slow 7:34. My only solace was that after the last aid station I was able to put 11-15 minutes between myself and the runners that I saw at the last aid station and I was able to basically keep pace with the runners who finished ahead of me. All in all, a successful race as I'll take the humility the mountains gave me and the lessons of running near dead last with me to my training.
How to Prepare for this Race
I always want to give readers of my race reports the details on how to prepare for a race so here's some things to do to successfully run the Terrapin Mountain Marathon.
* You must carry water with you on this race. Some courses are forgiving enough that you can run naked and just use the aid stations, but this is not one of them. I carried one 12oz. water bottle and was very nearly near empty by the time I rolled into each aid station.
* Shoe Choice - I wore North Face Anuva 50s which I love because I have lace issues almost every race (my big feet like to step on my own laces constantly or my feet swell and the laces get too tight). These shoes faired well on this course; however, I would suggest making sure you wear a padded/thicker shoe for the jagged rocky sections of this race. While my feet don't hurt too badly now, I was definitely slowed down by the bruising on the bottoms of my feet.
* Make sure you bring your own breakfast - there may have been food there in the morning, but I didn't see any so make sure you bring your own breakfast.
* No headlamp needed - it's bright enough around the Center that you don't need any lighting really.
* Clark mentions that you need to wear a left handed glove for Fat Man's Misery. I say there's no chance for the Best Blood award if you do.
2008 Holiday Lake 50K++ Race Report
The Short Version
Great race, well organized, Dr. Horton is a very personable RD and I would definitely run the race again, but I had to DNF at the halfway point due to everything but the run and the trail. Entirely frustrating experience.
The Long Version
From the minute go, this trip was destined to fail. I decided to run Holiday Lake and the entire LUS Beast series and haven't been this excited about anything else running wise ... ever. My plan was to leave early Friday morning, make the ~7 hour drive from Long Island, go to the pre-race meeting and get a good night's rest at a nearby hotel.
Well, none of that happened and these factors (and not the trail's difficulty) was my ultimate demise in deciding to drop after ~17 miles. Work kept me in NY much longer than I expected and I didn't leave until early evening. The trip was going very well until I passed into Virginia and my GPS unit told me to get off near Culpepper, VA. I got off and started driving down the back roads of Virginia when I entered the town of Louisa. All of the sudden, over the sounds of my CDs and "Jill", the Garmin voice I have come to loathe, I hear the sickening sound of a flat tire rotating over and over. Great. It's about 12:30am and I have a flat where there are no lights on some back road and I haven't seen another car in about an hour. As I get out of the car, I notice that 1) my left rear tire is shot and 2) I can't see much else. Luckily, since the race starts under the cover of night, I strap on my headlamp and go and get the spare. Almost immediately, I am rushed at by a lone deer that obviously hasn't seen the movie Bambi. After hiding in my car (yeah, I hid, you would too), the deer became disinterested and wandered away. Thinking all was safe, I ventured back outside to start jacking up the car and entered my own version of Wrong Turn as a couple of cars slowly passed by, decided to stop and realized I had a car jack in my hand and decided I wouldn't be an easy target. Maybe it was the NY plates, who knows. Finally, a volunteer firefighter stops to assist me and gets me some directions, avoiding the highways, to the state park from state troopers. I finally get moving again ... at no more than 30 MPH and about 2.5 hours away still.
Needless to say, the state trooper's directions seemed wrong and didn't match the directions on the 4-H Holiday Lake website. I improvised and good thing I did since I made the right choice. It was now 4:15am as I entered the park and was able to park - 2 hours and 15 minutes until start time. I got dressed, organized my belongings, tried to get my bearings and before you knew it 5am approached. I walked over to the main house and waited outside for someone to show up. It wasn't long before Dr. Horton was the first face I would see and he let me in. I grabbed a bagel, sipped some Smart Water and tried to grab some sleep, but was unable to as other runners started coming through the door. So, 6:30am comes along and I have the following to deal with -
* I've been awake for 25.5 hours straight.
* I have a spare tire on my car and no idea where to get it fixed and need to be home by Saturday night
* I still have to run a 50K++ with some Horton miles
Pretty daunting task if you ask me. I was actually in good spirits as the race started since I saw a lot of people shivering near me and I was quite comfy in my shorts and Under Armor long sleeve shirt. The race starts and I had been warned about getting caught up behind the pack when everyone slows down on the single track trail. I was somewhere near the first 50 runners or so and was able to maneuver through the slow single track stuff very quickly. Normally, this would have been a perfect strategy for me, but by mile 1 I was already fighting sleepiness. By being in that lead group, the fear of slowing down the runners behind you makes you run as fast as the runner in front of you allows and this probably wasn't the smartest strategy after being awake for so long already. However, before the race even started, I was resigned to the fact that I had to run this race as fast as possible to give myself enough time to get out of the park and find a still open automotive store with a replacement tire (a task that didn't seem pretty easy due to where the race was located). By Mile 3 or so I knew I had no chance of doing anything useful. I wasn't going to be able to finish in my projected 5-6 hours and if I took any longer I would run out of time trying to find a new tire.
The trail is very soft in almost all areas (sans road section and a couple hundred feet of rocks) and you could probably wear road shoes for this race and be fine. You will need a light for the beginning of the race to navigate early, root filled sections (you should label your light with your name so you can drop it off at the first aid station which I didn't). The beginning of the race was soft with some roots with few leaves, nothing too awful. After the single track trail, it opens up into a vehicle trail I believe which was soft, but not too muddy. There is a short, short stretch of road which goes back to a trail that opens up into a large field. After that huge open field is your first water crossing which wasn't too cold, but was just cold enough to sap the last bit of energy I had. I think I was just too tired from not sleeping to have my body fight for warmth that I lost the desire to stay awake. I really don't remember anything outside of another, larger water crossing which I just plowed through even though there was probably a dry way around and a lot of single track back to the camp grounds. I would say 99% of the course is runnable with very few places where you have to slow down either due to single track congestion or "steep" elevation change.
I hit the turnaround in right around 3 hours and dropped. I think I muttered something about my knee hurting, but in all actuality I was worried about running out of time to get my tire fixed and get home that night. The timekeeper almost seemed shocked that I was dropping because I'm sure I looked strong enough to finish. In hindsight, I made the right choice as it took four hours to find a tire place with a tire close enough to get me home. If I had continued on and finished between 6.5 and 7 hours (disappointing, but respectable considering the conditions I was running in), I would gotten to the tire place I eventually bought the tire at after they closed and could have been stranded. I actually ran 10 miles today at 8 minute pace without any soreness so my muscles had plenty in the tank even if the rest of my body may have been tired from not sleeping.
Overall, it was an extremely frustrating experience although I found the running, while awake enough to take my surroundings in, very enjoyable and "easy". The course is excellent for a rookie ultrarunner with enough aid stations that you could almost run the course without carrying water, etc. The only negative I encountered with the race was the electrolyte drink they served (Clifshot?) which definitely made my stomach pretty angry with me and will know to avoid in future races. I'll be back next year to redeem myself, but I can't say I would change much other than having a full spare with me the next time I drive to an ultra. Congrats to all the finishers - most of whom were very encouraging as they passed and to all the volunteers (especially the one young lady who recognized I was so tired and disoriented that I couldn't even unscrew my water bottle).
2008 Vermont 100 Mile Endurance Run - 30 Miles of Pacing Duty
Before the Pacing
With my Grindstone 100 service requirement looming over my head, I decided early on that I would volunteer at the Vermont 100 either as a volunteer and/or pacer. After emailing the pacing director, I was matched up with Andy N. from Massachusetts who was a two-time, ~20 hour finisher of this race. Initially, I was actually a little worried pacing someone of this caliber as I know I tend to be erratic with my mile times during longer races, but with a shortage of available pacers, I stayed with Andy. I arrived at the race site Friday afternoon just in time for the pre-race meeting which was highly informative. I’m not sure how I missed this fact over my last two years in the ultrarunning community, but the meeting director informed us that the Vermont 100 is the only race of its kind where humans race the same course as horses. Yes, I said horses.
The pre-race meeting ended and I went back to my car while the runners ate a wonderful pre-race feast (very worth the money if you’re wondering – pacers can get a meal ticket and eat free). I listened to the Yankees game on the radio (only station I could get) and fell asleep in my car (too lazy to break out the tent).
I was awoken by the sounds of heavy rain at 3:45am Saturday morning which was perfect timing because the race starts at 4am. Luckily, the rain did not last too long and the runners were off. I went back to bed so that I was rested for the 30 miles of running I would be doing later. I woke up at 10am and immediately I was bored and anxious. I started questioning “why didn’t I just sign up for this race?”, but tried to relax and slowly get ready. As I started walking around the camp, I could feel that the air wasn’t overly hot, but it was very thick and humid and wondered how many of the runners would hold up in the overbearing humidity. Eventually, I got dressed in my running gear, grabbed my water bottles and went to the main tents to wait for the shuttle to Camp 10 Bear. Camp 10 Bear does double aid station duty at the 47 and 70.1 mile marks. I got there around 2pm and decided to just hang around and take in the excitement of the runners coming in to 10 Bear.
Watching the runners come into 10 Bear was exciting and informative as well. Just by looking at the clothing of the runners, you could see a lot of runners were pummeled by the humidity and were moving slower than they had expected. Quite a few runners looked extremely dehydrated and I heard quite a few stomach related complaints. Seeing the conditions of the runners made me focus on hydrating while waiting even though I was in the Porta-Potty about 15 times. The heavens opened up and some gnarly lightning and thunder accompanied by rain drenched 10 Bear on and off for an hour or so.
The Pacing Begins - Mile 70.1 Camp 10 Bear Aid Station
An hour ahead of schedule, my runner came into 10 Bear at the 70.1 mile mark right at 5pm (13 hours in). He had obviously been running near the Top 20 runners, but as he shuffled into 10 Bear I could see that he was hurting, but definitely not near that red line … yet. However, he did mention in passing that he contemplated dropping thinking that he had gone out too fast, but I think I pressured him into going out. While he took care of his feet, I grabbed his drop bag and got him some M&Ms, cookies and HEED. We set out from 10 Bear at a decent walking pace in preparation of the trail uphill that was upcoming. We handled the trails at a slow, but easy pace and this pace was quick enough to have only 2 runners pass us while passing one ourselves. Andy and I strolled into Seabrook (74.7 miles) which is a small aid station along a gravel road and my runner was starting to get a little cranky; however, I still wasn’t concerned because we were moving at a decent enough pace and a 20 hour finish was still well within our grasp. However, once we left Seabrook, I realized my runner was in serious mental trouble.
When you’re pacing, I think you’re almost more conscious of the things you have learned from running and reading content from other ultrarunners than when you are actually running your own race. I could see that there was nothing medically wrong with my runner, but that he was hitting a major mental hurdle and it was only getting worse. Again, the talk of dropping at West Winds started especially as we encountered some steep, very muddy single track trail. As horse riders passed us saying how we looked good, his comments were all very negative and defeatist. For this section, my approach was to not be encouraging nor discouraging, but more mathematical and tell him that this is a common feeling and that once he was beyond West Winds he would leap the mental hurdle.
77 Miles Down - West Winds Aid Station
We arrived at West Winds and the situation didn’t improve as much as I thought it would. He was turning down water stating he couldn’t drink anymore water (not a good sign as this will lead to other medical problems later) although he was still eating. To his credit, he didn’t stay at West Winds for more than 5 minutes and was back out shuffling along. This ended up being the calm before the storm and we jogged a nice gravel road section passing a few 100K runners and we arrived at the unmanned Goodmans aid station. I was actually thinking we had a real chance of keeping a decent pace and still obtaining that 20 hour goal until we left Goodmans and night started to roll in.
It amazed me from the pacer’s perspective that you can actually watch a fellow runner deteriorate mentally right before your eyes. As dusk was setting in and it started to become darker, the incessant pleas to quit, DNF and just sleep started raining upon me. Again, I tried to be more analytical about the situation stating that “it’s a normal reaction to night rolling in and we’ve all been there”. Our conversation for the next 2.6 miles was straight out of a bad marriage with him saying what he wanted and not listening to a word I said and vice versa. It was an extremely long 2.6 miles for me because I continued to walk silently when all I wanted to do was squirt my water bottle at him. We finally arrived at Cow Shed and he immediately stated his intentions to lay down and he took two blankets and laid face down on the ground outside the tent. When he went down, I was starting to think that he wasn’t going to get over the mental hurdle. After staying down for 30 minutes, I caught a break when the Vermont bugs started biting his face causing him to be uncomfortable enough to want to keep going. I knew he was leaving not because he wanted to run, but because he wanted to leave so I was dreading the long 5 miles between Cow Shed and Bill’s, but slowly we left the great volunteers there.
It's important to note that it was so humid that the night time air was so foggy that our headlamps were rendered basically useless as you couldn't see more than a few feet in front of you. This fact added to Andy's demoralized state as progress was difficult to discern.
The 5 Mile Road to Bill's & 88.6 Miles
I did all that I could to keep him upright those next 5 miles. He was wobbly. He couldn’t walk in a straight line and the slightest elevation change brought him close to toppling over. In this section I was completely silent because there was no piece of encouragement that would drive him further so I instead opted for focusing on nothing but our forward progress. It took almost a full 2 hours to get to Bill’s and there were several times I actually caught him to prevent him from falling over. We crashed into Bill’s (88.6 miles) and he immediately headed to a medical cot and I thought for sure our race was over. At this point it’s about 11:30pm and I know that any significant amount of downtime, with our current pace, might mean missing out on a sub-24 hour buckle finish. As he laid down in the cot, the determining struggle began.
Disaster Strikes
Heading into Bill’s, my runner kept stating how Bill’s had medical personnel and that he should be checked out and maybe they would pull him. Translation – he didn’t want to quit, but he didn’t want to run anymore and he wanted someone else to make that decision for him. Knowing this I decided I wouldn’t make it easy on him or medical personnel. As they questioned him how he felt, I interjected stating that medically he was fine and had urinated 3 times in the last 3 hours, he was still eating, but that he was just tired, needed to drink more fluids and was more of a mental issue. I, of course, said this loud enough for my down runner to hear. They took his blood pressure and monitored his oxygen level and they were both in excellent condition. We wrapped him up in a foil wrap and a blanket and the waiting game began. I watched him try and rest as other runners were coming in and most in much worse physical/medical shape than my partner. The minutes tick by and it’s 12:30am and we’re still down and I’ve given up all hope and I’m starting to make plans to pace another runner, Jeff, the rest of the way. A medical volunteer comes over and gives my runner a yellow Vitamin Water which he sips slowly and then pours the rest in his water bottle. Miraculously, he decided to try and get up and says we’re going to give it a go. We tie the foil wrap around him like a cape and out of Bill’s we go just before 1am with 3 hours and 11.4 miles left for a sub-24 hour finish.
After being down a total of 90 minutes, his decision to get up at the minute he did was an amazing feat of mental strength on his part and saved his race.
Don't Call it a Comeback
Out of Bill’s we moved very gingerly at first and I told him that this was normal after an extended period of downtime because your leg muscles will stiffen. I tried to encourage him to try and run some and what do you know – he could walk quickly/jog again. He became alive with excitement screaming out all types of jibberish and I was now motivated to switch gears and become the “pushy pacer”. I knew that I would have to take advantage of the energy burst now, get him close to the finish and hope that he could stay motivated enough to fight through the inevitable pain. Luckily, not only did his energy level dramatically increase, but so did his belief in my abilities to get him in under the 24 hour mark. Our pace quickened to around 12-15 minute mile pace depending on the terrain’s slope which was going to make it a very close finish.
My goals for the next three add stations, Keating’s, Polly’s and Sargent’s, was to have Andy give me his water bottle, I would fill it up as he got food and for him to continue out of the aid station in under a minute. I would then fill up my water bottles, grab some food if needed and then sprint to catch Andy a few hundred yards beyond the aid station. When we hit Keating’s (92 miles) our pace was solid and I now had him believing in a sub-24 and I turned into the encouraging “Great work/Good job/Looking strong” pacer. Instead of running side-by-side, I decided to run in front of him to call out terrain issues as well as to set the pace to push him a little more to stay with me. To his credit, very few times did I have to turn around and slow up as he did a tremendous job of powering through those tough, last 11.4 miles. Polly’s is a great, late race aid station (95.5 miles) and we arrived at 2:40am with only an hour and 20 minutes to get in. As a comparison, Andy informed me that the year prior, when he was feeling good, Polly’s to the end took him 1 hour and 8 minutes so we were living dangerously close to not finishing in time.
4.5 Miles to Go - Can We Pull Victory from the Claws of Defeat
Then, a disaster strikes as we make it to the end of road out of Polly’s to find a T intersection and no trail markings (plates or glow sticks). I sprint back up the small hill to find that we missed a left turn off and shout back down that we had, in fact, missed a turn off. We lost about 2 minutes and now I was really starting to worry that we weren’t going to make it. To his credit again, Andy didn’t let his motivation level slide and we took advantage of the non-trail terrain. The terrain between Polly’s and Sargent’s is nothing but gravel roads and our plan was to keep as fast a pace as possible since Andy informed me that the rest of the race after Sargent’s is single track trail. Andy and I arrived at Sargent’s (97.7 miles) with ~45 minutes left until 4am.
By this time, we had built up a nice little convoy of 3 runners and 2 pacers and I really believe we all fed off each other’s energy. One runner, Christopher Martin (who we passed earlier and said he “didn’t have the heart to get sub-24), was now right on our heels looking extremely strong and motivated (in fact, he stated that the year previous he finished in 26+ hours so this was a great finishing time for him). I, again, led the way helping the runners navigate the trail and when we hit the .5 mile mark to go with 17 minutes left, we all started to celebrate while keeping our pace up. With about a quarter mile left, we could hear cheering in the distance and we all started shouting back. After emerging from the woods, I left Chris and Andy to cross the finish line, arms raised together, in 23:49 with less than 11 minutes until the 24 hour buckle cutoff.
A Little About Me After 30 Miles
Interestingly enough, I was so worried about Andy finishing and keeping a good pace for the 3 runners to follow that I didn’t notice my own deterioration in the last 2.3 miles until after we finished. I wouldn’t dare stop and re-tie my shoe, which had become undone, so I developed 2 gnarly blisters on my right foot. While I wasn’t anywhere near tired, being in a rush and completely consumed with Andy’s condition would have put me in jeopardy if my pacing duties were extended as I would have had downtime to deal with the blisters and other irritations. My body responded extremely well and I had tons in the tank and still had the ability to change speeds when needed, but I learned that even at a short and slow 30 miles that a pacer needs to make sure to account for his needs as well so that he is still helpful to his runner. Pacing was an extremely rewarding experience and an adventure where I gained a lot of valuable insight into common runner problems and how to combat them. Hopefully, next year, I’ll be receiving my silver buckle with Andy who I am sure plans on running the Vermont 100 again.
Microsoft Virtual Server 2005 R2: Fixing the "An error occurred accessing the website application data folder" Error
Recently, while trying to work on simultaneous consulting projects, I had the need to install and run multiple VPN clients on my development machine. What was the result of trying to actually do this? Blue screened. I pretty much had figured something nasty was going to happen, but curiosity killed the server. Therefore, I figured I would finally turn to virtualization to solve my dilemma. I recently received my MSDN Universal disks and decided to install Microsoft Virtual Server 2005 R2 on my Windows 2003 Server development box. The install is quick and painless and the initial post-installation documents states that a web site was created to administer your Virtual Server. I loaded up the URL and received the following error -
Just to give you an idea what type of environment I was working in, I was trying to set this up using -
- Workstation: Windows Server 2003 Standard Edition
- My workstation was part of a Windows 2003 Domain
- I was signed into my workstation with my own account which is a Domain Admin
As a Domain Admin, I would have assumed that I had the proper credentials; however that didn't seem the case. To resolve this problem, I had to create (or use an existing) local administrator account and when presented with a login box, to use the local login and not your domain login. In addition, if the issue persists, open up IIS and under the Authentication options for the Virtual Server site, make sure that anonymous logins is unchecked. Those two options should resolve any initial security issues that you may have after first installing Virtual Server 2005 R2.
SharePoint v3: Deleting Items through the Database and tp_DeleteTransactionID
While extremely unrecommended, sometimes you just want to fix a problem quickly and without jumping through a ton of hoops using the SharePoint SDK and writing a small C# program. I recently encountered this when I needed to delete a Folder from a whole bunch of Document Libraries across hundreds of sites. Making sure that I checked to see if the folder was there first, calling the right Web, calling the right List, getting the right Folder GUID, etc. all seemed like a lot of work for a simple SQL statement so I cheated.
Folders all stored in the AllUserData table with a tp_ContentType = 'Folder'. I was able to write a simple UPDATE statement like the following to delete the unwanted folder across the sites I wanted -
SET tp_DeleteTransactionID = 0x00000010
WHERE tp_ContentType = 'Folder' and ...
Quick and very dirty. Not recommended, kids don't try this at home.
Google Online Security Blog
Google recently started their Online Security blog which discusses security related issues encountered on the web and with the infrastructure that powers the Internet. While they only have 3 posts currently, I can see this blog becoming one of my favorite blogs since Google has access to so much security data that I believe that they will be able to identify Internet trends extremely fast and potentially police the Internet in a "gray hat" manner.
Their most recent post talks about web server software and malware infection rates. The Google Online Security team drew some pretty interesting conclusions about web server software and its infection rate in different sections of the world. According to the data they uncovered, malware infected machines were split right down the middle 49% to 49% when talking about infection rates on Apache web servers and IIS servers. However, when looking at the regional infection rates for each, we see that IIS is extremely more vulnerable in the Pacific than anywhere else. Now, one might conclude that people in the Pacific can't secure IIS well, but that would be a poor conclusion. Instead, the Google Online Security team identified (correctly IMO) that the issue stems from the rampant piracy in those areas and the fact that piracted copies of Windows are not privy to receiving updates from Microsoft. Google's Online Security team goes on to state that this may show evidence that Microsoft needs to change their policy and allow for pirated copies of Windows to still receive security updates since pirates will continue to run the software and that these infections hurt valid users more than pirates.
Google has the opportunity here, with their unparalleled data collection abilities to really make a difference in web security and I look forward to seeing exactly what their online security team comes up with in the future.