<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Mark Michaelis' Weblog</title>
    <link>http://mark.michaelis.net/Blog/</link>
    <description>A cacophony of ramblings from my potpourri of notes</description>
    <copyright>Mark Michaelis</copyright>
    <lastBuildDate>Fri, 23 Jan 2009 15:23:22 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>mark@michaelis.net</managingEditor>
    <webMaster>mark@michaelis.net</webMaster>
    <item>
      <trackback:ping>http://mark.michaelis.net/Blog/Trackback.aspx?guid=a059950c-7840-4479-bf9f-daee8303f74b</trackback:ping>
      <pingback:server>http://mark.michaelis.net/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://mark.michaelis.net/Blog/PermaLink.aspx?guid=a059950c-7840-4479-bf9f-daee8303f74b</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://mark.michaelis.net/Blog/CommentView.aspx?guid=a059950c-7840-4479-bf9f-daee8303f74b</wfw:comment>
      <wfw:commentRss>http://mark.michaelis.net/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=a059950c-7840-4479-bf9f-daee8303f74b</wfw:commentRss>
      <slash:comments>6</slash:comments>
      <title>Visual Studio Keyboard Shortcuts Wrap-up (MSDN Flash - Feb. 2, 2009)</title>
      <guid isPermaLink="false">http://mark.michaelis.net/Blog/PermaLink.aspx?guid=a059950c-7840-4479-bf9f-daee8303f74b</guid>
      <link>http://mark.michaelis.net/Blog/VisualStudioKeyboardShortcutsWrapupMSDNFlashFeb22009.aspx</link>
      <pubDate>Fri, 23 Jan 2009 15:23:22 GMT</pubDate>
      <description>&lt;p&gt;
In this edition, I am going to wrap up a few loose ends with a selection of miscellaneous
keyboard shortcuts and links to a summary keyboard shortcut poster.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Debugging:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
I realize that none of you would write bugs, but in case you meet someone that does
or perhaps on occasion you need to debug some code in order to explain a complex algorithm,
here are some invaluable debugging keyboard shortcuts.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
F9 and CTRL+F9&lt;br&gt;
F9 creates or removes a breakpoint based on the cursor's current location. CTRL+F9
toggles whether a breakpoint is enabled or not.&lt;/li&gt;
&lt;li&gt;
F5, CTRL+F5 and SHIFT+F5&lt;br&gt;
CTRL+F5 launches the application or begins running the tests.&amp;nbsp; If there are multiple
projects in the solution, which project is launched depends on the solution's configured
startup project.&amp;nbsp; Using F5 will launch the application in debug mode.&amp;nbsp; After
encountering a breakpoint, F5 will continue execution until the next break point.&amp;nbsp;
SHIFT+F5 will stop the application from debugging all together.&lt;/li&gt;
&lt;li&gt;
F10, F11 and SHIFT+F11&lt;br&gt;
Executes the next statement one method at a time.&amp;nbsp; If not currently at a breakpoint,
debugging will start at the first statement.&amp;nbsp; F10 will execute the method without
following execution into the method.&amp;nbsp; In contrast, F11 will step into the method,
allowing you to debug it line by line (assuming you have the source code).&amp;nbsp; SHIFT+F11
executes all remaining statements within the currently executing method, allowing
you to jump out of a particular call rather than stepping over each line.&lt;/li&gt;
&lt;li&gt;
CTRL+ALT+I&lt;br&gt;
Displays the Immediate Window.&amp;nbsp; Used when debugging a method, this window allows
you to write code (frequently with intellisense) and evaluate/evaluate the code line
by line as though it was inline within the method you are debugging.&amp;nbsp; I find
it extremely helpful when learning about a new .NET API.&amp;nbsp; After instantiating
a particular type, I can examine various members on the type and learn more about
their behavior.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Adding files to Project&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
SHIFT+ALT+C&lt;br&gt;
Displays the Add New Item dialog with the Class template selected.&amp;nbsp; Initially
I wanted this to work without the dialog but I need to supply the class/file name
and there are no additional keystrokes to placing it in the dialog.&lt;/li&gt;
&lt;li&gt;
SHIFT+ALT+A&lt;br&gt;
Displays the dialog for adding an existing item to the project.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Summary&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
As I wrote this series, I was amazed at how frequently I still found myself forgetting
some of the new keyboard shortcuts I learned while writing (CTRL+Break to stop a build).&amp;nbsp;
Fortunately, there are posters available with many of the top shortcuts listed.&amp;nbsp;
I recommend using one as a mouse pad for a few months so that you can get them down.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=a059950c-7840-4479-bf9f-daee8303f74b&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2fdownloads%2fdetails.aspx%3fFamilyID%3de5f902a8-5bb5-4cc6-907e-472809749973%26displaylang%3den"" target="_blank"&gt;Visual
C# 2008 Keybinding Reference Poster&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=a059950c-7840-4479-bf9f-daee8303f74b&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2fdownloads%2fdetails.aspx%3ffamilyid%3d255b8cf1-f6bd-4b55-bb42-dd1a69315833%26displaylang%3den"" target="_blank"&gt;Visual
Basic 2008 Keybinding Reference Poster&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
This ends the series on Visual Studio Keyboard Shortcuts.&amp;nbsp; Next I plan to start
a series on the Entity Framework.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://mark.michaelis.net/Blog/aggbug.ashx?id=a059950c-7840-4479-bf9f-daee8303f74b" /&gt;
&lt;br /&gt;
&lt;hr /&gt;© Copyright 2005-2008 Mark Michaelis</description>
      <comments>http://mark.michaelis.net/Blog/CommentView.aspx?guid=a059950c-7840-4479-bf9f-daee8303f74b</comments>
      <category>Computer Related</category>
      <category>Computer Related/.Net</category>
      <category>Headlines</category>
    </item>
    <item>
      <trackback:ping>http://mark.michaelis.net/Blog/Trackback.aspx?guid=ad3c2858-0ea4-4c79-b26f-2df6cb55457c</trackback:ping>
      <pingback:server>http://mark.michaelis.net/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://mark.michaelis.net/Blog/PermaLink.aspx?guid=ad3c2858-0ea4-4c79-b26f-2df6cb55457c</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://mark.michaelis.net/Blog/CommentView.aspx?guid=ad3c2858-0ea4-4c79-b26f-2df6cb55457c</wfw:comment>
      <wfw:commentRss>http://mark.michaelis.net/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=ad3c2858-0ea4-4c79-b26f-2df6cb55457c</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <title>Guilty as Charged</title>
      <guid isPermaLink="false">http://mark.michaelis.net/Blog/PermaLink.aspx?guid=ad3c2858-0ea4-4c79-b26f-2df6cb55457c</guid>
      <link>http://mark.michaelis.net/Blog/GuiltyAsCharged.aspx</link>
      <pubDate>Sat, 17 Jan 2009 06:05:35 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=ad3c2858-0ea4-4c79-b26f-2df6cb55457c&amp;amp;url=http%3a%2f%2fimgs.xkcd.com%2fcomics%2fim_an_idiot.png"" target="_blank"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="391" alt="image" src="http://mark.michaelis.net/Blog/content/binary/GuiltyasCharged_136A0/image.png" width="658" border="0"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://mark.michaelis.net/Blog/aggbug.ashx?id=ad3c2858-0ea4-4c79-b26f-2df6cb55457c" /&gt;
&lt;br /&gt;
&lt;hr /&gt;© Copyright 2005-2008 Mark Michaelis</description>
      <comments>http://mark.michaelis.net/Blog/CommentView.aspx?guid=ad3c2858-0ea4-4c79-b26f-2df6cb55457c</comments>
      <category>Computer Related</category>
    </item>
    <item>
      <trackback:ping>http://mark.michaelis.net/Blog/Trackback.aspx?guid=af699bb6-c8db-467b-a51c-7fede85aed6c</trackback:ping>
      <pingback:server>http://mark.michaelis.net/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://mark.michaelis.net/Blog/PermaLink.aspx?guid=af699bb6-c8db-467b-a51c-7fede85aed6c</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://mark.michaelis.net/Blog/CommentView.aspx?guid=af699bb6-c8db-467b-a51c-7fede85aed6c</wfw:comment>
      <wfw:commentRss>http://mark.michaelis.net/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=af699bb6-c8db-467b-a51c-7fede85aed6c</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <title>Starting out the Year with a Run and a (Polar Bear) Swim</title>
      <guid isPermaLink="false">http://mark.michaelis.net/Blog/PermaLink.aspx?guid=af699bb6-c8db-467b-a51c-7fede85aed6c</guid>
      <link>http://mark.michaelis.net/Blog/StartingOutTheYearWithARunAndAPolarBearSwim.aspx</link>
      <pubDate>Fri, 02 Jan 2009 13:30:16 GMT</pubDate>
      <description>&lt;p&gt;
This new year is the second one for me that I start out with a run and a swim in the
morning.&amp;nbsp; There is nothing particularly special about either of these events
except it has a kinda symbolism for starting out the year right.
&lt;/p&gt;
&lt;p&gt;
New Year's Day was a little more challenging this year.&amp;nbsp; It started out with
a weather advisory from the National Weather Service for Spokane, WA area:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
HEAVY RAINFALL COUPLED WITH MELTING SNOW WILL RESULT IN FLOODING OF SOME CITY STREETS
AS WELL AS SMALL STREAMS AND LOW LYING RURAL AREAS. SNOWFALL THIS MORNING WILL CHANGE
TO RAIN THIS AFTERNOON AND CONTINUE OVERNIGHT. RAINFALL IS EXPECTED TO BE HEAVY WITH
AROUND 1 INCH OF RAIN EXPECTED BY FRIDAY MORNING. CITY STORM DRAINS COVERED WITH SNOW
AND ICE COULD QUICKLY RESULT IN STREET FLOODING.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Well... at least everywhere that I went, it wasn't rain but snow!&amp;nbsp; As has been
the case for most days over the past two+ weeks, I start out by shoveling the drive
way (I secretly still enjoy starting the day this way).&amp;nbsp; However, the result
was that I was a little late picking up John Martinek.&amp;nbsp; Fortunately, he had paged
me earlier suggesting that we cancel so he wasn't quite ready anyway.&amp;nbsp; Glad I
didn't get that page or the day wouldn't nearly have been as fun since I probably
wouldn't have left the house.&amp;nbsp; Along with John's wife, Kelly, we drove down to
Coeur d'Alene for the Hangover Handicap.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Hangover Handicap&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The Hangover Handicap run is put on by &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=af699bb6-c8db-467b-a51c-7fede85aed6c&amp;amp;url=http%3a%2f%2fteshinc.com%2f"" target="_blank"&gt;TESH,
Inc&lt;/a&gt;, a non-profit rehabilitation organization helping those who are disabled and/or
disadvantaged to reach their highest level of independence.&amp;nbsp; The course runs
along lake Coeur d'Alene, ID, an exact match for a portion of the Coeur d'Alene Ironman
run section.&amp;nbsp; 
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=af699bb6-c8db-467b-a51c-7fede85aed6c&amp;amp;url=http%3a%2f%2fwww.mapmyrun.com%2frun%2funited-states%2fid%2fcouer-d'alene%2f704935799"&gt;&lt;img height="240" alt="image" src="http://mark.michaelis.net/Blog/content/binary/StartingouttheYearwithaRunandaPolarBearS_E48F/image.png" width="213"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
There was certainly nothing special about my time.&amp;nbsp; In fact, we arrived a few
minutes late so we didn't even start until only the walkers could be seen in the distance.&amp;nbsp;
I knew a a few folks from Itron in the race (Doug Dominey and Fran Johnson) so once
I was able to catch them, I doubled back a few times to say, "Hi" and run with John
some.&amp;nbsp; In total, I stats were as follows:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Distance (including doubling back): &lt;strong&gt;5.24&lt;/strong&gt; miles&lt;br&gt;
Time: &lt;strong&gt;42:32&lt;/strong&gt;
&lt;br&gt;
Pace: &lt;strong&gt;8:07&lt;/strong&gt; min/mile 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Nothing to write home about but we ran on snow the whole way, it was snowing heavily,
and I can say I even enjoyed myself (not the usual poking yourself in the eye type
of experience. :)&amp;nbsp; After grabbing an apple cider from a local restaurant, we
headed down to the lake for a swim.
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=af699bb6-c8db-467b-a51c-7fede85aed6c&amp;amp;url=http%3a%2f%2fphotos.michaelis.net%2fgallery%2f7000605_p2Xin%23448117956_UYMQB"&gt;&lt;img title="" alt="" src="http://photos.michaelis.net/photos/448116221_GFR2X-Th.jpg"&gt;&lt;/a&gt;&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=af699bb6-c8db-467b-a51c-7fede85aed6c&amp;amp;url=http%3a%2f%2fphotos.michaelis.net%2fgallery%2f7000605_p2Xin%23448103457_SA6fo"&gt;&lt;img title="" alt="John and Mark" src="http://photos.michaelis.net/photos/448116824_zQf7J-Th.jpg"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;2009 Coeur d'Alene Polar Bear Swim&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=af699bb6-c8db-467b-a51c-7fede85aed6c&amp;amp;url=http%3a%2f%2fphotos.michaelis.net%2fgallery%2f7000605_p2Xin%23448103457_SA6fo"&gt;&lt;img height="240" src="http://photos.michaelis.net/photos/448117818_F2aB4-S.jpg" width="160" align="right"&gt;&lt;/a&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
It seemed we were going to be just in time for the plunge but on the way there a truck
(4X4) go stuck in front of us - I was driving a Honda Odyssey.&amp;nbsp; We of course
stopped and once they got going we were stuck too.&amp;nbsp; Traffic started to line up
quickly behind us.&amp;nbsp; Eventually, we got the line to reverse and we rolled back
for a running start.&amp;nbsp; We got to the top of the hill and started sliding down
the other site, narrowly missing a parked car on the way down.&amp;nbsp; I slowly rushed
to the plunge area to join the other 1,000 or so "crazies."&amp;nbsp; Unfortunately, the
bell went off just as we were entering the area.&amp;nbsp; Bummer.... I pushed through
the watchers, raced down the beach, stripped, and dived in after everyone was already
out.&amp;nbsp; (Heck, I had come all that way, I wasn't going to miss it now.)
&lt;/p&gt;
&lt;p&gt;
Once I got out, John and Kelly came over to see if I was still alive.&amp;nbsp; John's
doing the Ironman this year so he had no choice but to pressure him to go for a swim.
He reluctantly agreed, and to ensure I wasn't asking him to do something I wouldn't
do - I joined him for a my second swim of the day.&amp;nbsp; (I think that credits me
for having done the polar bear swim 3 times in two years.)
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=af699bb6-c8db-467b-a51c-7fede85aed6c&amp;amp;url=http%3a%2f%2fwww.cdapress.com%2farticles%2f2009%2f01%2f02%2fnews%2fnews01.prt"&gt;CDAPress
had a great description of the event in the newspaper the next day&lt;/a&gt;.&amp;nbsp; I say
great because it does a good job of having absolutely no explanation of why people
do this type of thing but that they do it anyway. :)
&lt;/p&gt;
&lt;p&gt;
I highly recommend this experience.&amp;nbsp; Really, it sounds stupid (in fact, it is
stupid) - however, having done it now, I can say it is actually pleasurable - really!&amp;nbsp;
The coming up for a breath isn't great - you feel almost short of breath.&amp;nbsp; However,
once you stand in the snow and soak up the experience - there is just something inside
you that makes you want to yell... YEAHHH!!!&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
(P.S.&amp;nbsp; Don't do it twice on the same day like I did, that isn't so great.)&amp;nbsp;&amp;nbsp; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://mark.michaelis.net/Blog/aggbug.ashx?id=af699bb6-c8db-467b-a51c-7fede85aed6c" /&gt;
&lt;br /&gt;
&lt;hr /&gt;© Copyright 2005-2008 Mark Michaelis</description>
      <comments>http://mark.michaelis.net/Blog/CommentView.aspx?guid=af699bb6-c8db-467b-a51c-7fede85aed6c</comments>
      <category>Personal</category>
      <category>Personal/My Sports</category>
    </item>
    <item>
      <trackback:ping>http://mark.michaelis.net/Blog/Trackback.aspx?guid=996ef615-c627-4ffc-a60c-05d569112428</trackback:ping>
      <pingback:server>http://mark.michaelis.net/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://mark.michaelis.net/Blog/PermaLink.aspx?guid=996ef615-c627-4ffc-a60c-05d569112428</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://mark.michaelis.net/Blog/CommentView.aspx?guid=996ef615-c627-4ffc-a60c-05d569112428</wfw:comment>
      <wfw:commentRss>http://mark.michaelis.net/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=996ef615-c627-4ffc-a60c-05d569112428</wfw:commentRss>
      <title>Visual Studio Keyboard Shortcuts for Compiling (MSDN Flash - Dec. 29, 2008)</title>
      <guid isPermaLink="false">http://mark.michaelis.net/Blog/PermaLink.aspx?guid=996ef615-c627-4ffc-a60c-05d569112428</guid>
      <link>http://mark.michaelis.net/Blog/VisualStudioKeyboardShortcutsForCompilingMSDNFlashDec292008.aspx</link>
      <pubDate>Sat, 20 Dec 2008 15:16:19 GMT</pubDate>
      <description>&lt;p&gt;
There is not much point in writing code if you can't compile it so, in this edition's
keyboard shortcut tips and tricks, we are going to discuss compiling your code.&amp;nbsp;
For both Visual C# and Visual Basic &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=996ef615-c627-4ffc-a60c-05d569112428&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fMSDNFlashKeyboardVisualStudioTipsAmpTricksForDec152008.aspx"" target="_blank"&gt;schemes&lt;/a&gt;,
you can compile the entire solution using Ctrl+Shift+B.&amp;nbsp; However, three keys
(requiring two hands and an elbow) is a little unfriendly for what should be a relatively
frequent operation.&amp;nbsp; Fortunately, the Visual C# scheme also allows F6 for the
same activity and you could map the same key for Visual Basic (unless splitting the
window is a frequent occurrence for you :).&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
This works well when you only working with one or two projects in a solution, but
what about when you solutions has 20+ projects in (a common occurrence if you have
test projects for each production assembly).&amp;nbsp; Fortunately, you can use Shift+F6
(in the Visual C# scheme) if you only want to compile just the current project.&amp;nbsp;
A great way to check for compilation issues on recent changes - perhaps removing squiggles
that are not cleared up by the just-in-time compiler (an issue considerably reduced
in Visual Studio 2010). 
&lt;p&gt;
Another useful build related keyboard shortcut in the Visual C# scheme is Ctrl+Break.&amp;nbsp;
This shortcut cancels the currently executing build - a useful command, especially
when a single syntax error is generating a plethora of errors and you want to go back
and fix it quickly. 
&lt;p&gt;
For those of you with one of the Visual Studio Team System SKUs that included code
analysis, there are are commands for running it.&amp;nbsp; &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=996ef615-c627-4ffc-a60c-05d569112428&amp;amp;url=http%3a%2f%2fmsdn.microsoft.com%2fen-us%2flibrary%2f3z0aeatx.aspx"" target="_blank"&gt;Visual
Studio Team System's code analysis&lt;/a&gt; analyzes the compiled assemblies for suspicious
code (a bad code smell) and then flags the issue using a warning.&amp;nbsp; (I have found
this to be invaluable for my team in automatically catching issues even before the
point of code review - frequently issues that are hard to spot with the naked eye.)&amp;nbsp;
You can turn on code analysis within the project properties: 
&lt;p align="center"&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=996ef615-c627-4ffc-a60c-05d569112428&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fVisualStudioKeyboardShortcutsforCompilin_662F%2fimage.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="441" alt="image" src="http://mark.michaelis.net/Blog/content/binary/VisualStudioKeyboardShortcutsforCompilin_662F/image_thumb.png" width="644" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
However, there are two potential issues.&amp;nbsp; Firstly, turning on code analysis adds
noticeable time to you build - this is worth it before checkin, but sometimes a distraction
from the task at hand.&amp;nbsp; Secondly, warnings in dependent projects will no longer
appear in an incremental build, causing them to be lost until you perform a rebuild
all.&amp;nbsp; One work around for both of these is to assign a keystroke to code analysis
(perhaps Ctrl+Alt+F6): 
&lt;p align="center"&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=996ef615-c627-4ffc-a60c-05d569112428&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fVisualStudioKeyboardShortcutsforCompilin_662F%2fimage_3.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="379" alt="image" src="http://mark.michaelis.net/Blog/content/binary/VisualStudioKeyboardShortcutsforCompilin_662F/image_thumb_3.png" width="648" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
One more minor note:&amp;nbsp; If you install VMWare 6.5, it will re-map F6 to "Start
debugging in a virtual machine," causing an "Unable to detect the current startup
project" error dialog to appear.&amp;nbsp; To correct this, re-map F6 back to Build.BuildSolution. 
&lt;p&gt;
Posted for MSDN Flash: Keyboard Visual Studio Tips &amp;amp; Tricks for Dec 29, 2008
&lt;/p&gt;
&lt;img width="0" height="0" src="http://mark.michaelis.net/Blog/aggbug.ashx?id=996ef615-c627-4ffc-a60c-05d569112428" /&gt;
&lt;br /&gt;
&lt;hr /&gt;© Copyright 2005-2008 Mark Michaelis</description>
      <comments>http://mark.michaelis.net/Blog/CommentView.aspx?guid=996ef615-c627-4ffc-a60c-05d569112428</comments>
    </item>
    <item>
      <trackback:ping>http://mark.michaelis.net/Blog/Trackback.aspx?guid=580f8ccd-3235-45ee-92cc-05d2606c551f</trackback:ping>
      <pingback:server>http://mark.michaelis.net/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://mark.michaelis.net/Blog/PermaLink.aspx?guid=580f8ccd-3235-45ee-92cc-05d2606c551f</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://mark.michaelis.net/Blog/CommentView.aspx?guid=580f8ccd-3235-45ee-92cc-05d2606c551f</wfw:comment>
      <wfw:commentRss>http://mark.michaelis.net/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=580f8ccd-3235-45ee-92cc-05d2606c551f</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <title>Unattended Installation of Team Foundation Server 2008 on Windows 2008 with SQL Server 2008</title>
      <guid isPermaLink="false">http://mark.michaelis.net/Blog/PermaLink.aspx?guid=580f8ccd-3235-45ee-92cc-05d2606c551f</guid>
      <link>http://mark.michaelis.net/Blog/UnattendedInstallationOfTeamFoundationServer2008OnWindows2008WithSQLServer2008.aspx</link>
      <pubDate>Mon, 15 Dec 2008 12:31:04 GMT</pubDate>
      <description>&lt;p&gt;
The following are my instructions for installing a new &lt;strong&gt;Team Foundation Server
2008 with SP1&lt;/strong&gt; onto &lt;strong&gt;Windows 2008&lt;/strong&gt; with &lt;strong&gt;SQL Server
2008&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;
Throughout, I followed the &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=580f8ccd-3235-45ee-92cc-05d2606c551f&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2fdownloads%2fdetails.aspx%3fFamilyID%3dff12844f-398c-4fe9-8b0d-9e84181d9923%26displaylang%3den"&gt;TFS
install guide&lt;/a&gt; and tried to automate where it didn't distract me too much from
the task at hand.&amp;nbsp; I followed the Single-Server Team Foundation Server Installation.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Folder Layout&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
For the scripts to work successfully, you need the following placed into a local directory
(probably without spaces in the name):
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
.\&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=580f8ccd-3235-45ee-92cc-05d2606c551f&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2fdownloads%2fdetails.aspx%3fFamilyId%3dAB99342F-5D1A-413D-8319-81DA479AB0D7%26displaylang%3den"" target="_blank"&gt;dotnetfx35.exe&lt;/a&gt;
&lt;br&gt;
.\SQLServer2008\&amp;nbsp;&amp;nbsp; (SQL Server 2008 install)&lt;br&gt;
.\TFS2008\&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
(TFS 2008 install)&lt;br&gt;
.\&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=580f8ccd-3235-45ee-92cc-05d2606c551f&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2fdownloads%2fdetails.aspx%3ffamilyid%3d9E40A5B6-DA41-43A2-A06D-3CEE196BFE3D%26displaylang%3den"" target="_blank"&gt;TFS90sp1-KB949786-ENU.exe&lt;/a&gt;
&lt;br&gt;
.\&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=580f8ccd-3235-45ee-92cc-05d2606c551f&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fInstallingTeamFoundationServer2008onWind_7484%2fTFSSetup.zip"" target="_blank"&gt;TFSSetup.exe&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
(A custom TFS 2008 Setup utility I created for unattended installation)&lt;br&gt;
.\&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=580f8ccd-3235-45ee-92cc-05d2606c551f&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2fdownloads%2fdetails.aspx%3fFamilyID%3defdc7227-549c-4de1-a063-783f71a8bb2b%26DisplayLang%3den"" target="_blank"&gt;WSS3wSP1.x86.exe&lt;/a&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;Prerequisites&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Start with a mostly virgin Windows 2008 server.&amp;nbsp; I say mostly because I joined
the machine to the domain and installed all Windows Updates.&amp;nbsp; In addition,&amp;nbsp;
I created a single TFSSERVICE domain account.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Installation&lt;/strong&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Turn on remote administration. [Optional] 
&lt;ol&gt;
&lt;pre class="csharpcode"&gt;REG ADD &lt;span class="str"&gt;"hklm\system\currentcontrolset\control\terminal
server"&lt;/span&gt; /f /v fDenyTSConnections /t REG_DWORD /d 0&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;/ol&gt;
&lt;li&gt;
Install IIS 7.0 
&lt;ol&gt;
&lt;pre class="csharpcode"&gt;ServerManagerCmd -install Web-Server
ServerManagerCmd -install Web-Http-Redirect
ServerManagerCmd -install Web-Asp-Net
ServerManagerCmd -install Web-Windows-Auth
ServerManagerCmd -install Web-Mgmt-Compat&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&gt;
&lt;li&gt;
Installed the &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=580f8ccd-3235-45ee-92cc-05d2606c551f&amp;amp;url=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f2%2f0%2fe%2f20e90413-712f-438c-988e-fdaa79a8ac3d%2fdotnetfx35.exe"&gt;.NET
Framework 3.5 Service Pack 1 (Full Package)&lt;/a&gt;&amp;nbsp; 
&lt;ol&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;// use /norestart to prevent autorestart&lt;/span&gt; .\dotnetfx35.exe
/qb&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;li&gt;
Installed SQL Server 2008. 
&lt;ol&gt;
&lt;pre class="csharpcode"&gt;.\SQLServer2008\Setup.exe /ACTION=Install /FEATURES=SQLENGINE,FULLTEXT,AS,RS,SSMS,ADV_SSMS /INDICATEPROGRESS 
&lt;br&gt;
/QUIETSIMPLE /ERRORREPORTING=1 /INSTANCEDIR=&lt;span class="str"&gt;"%ProgramData%\Microsoft
SQL Server"&lt;/span&gt; /SQMREPORTING=True 
&lt;br&gt;
/INSTANCENAME=&lt;span class="str"&gt;"MSSQLSERVER"&lt;/span&gt; /AGTSVCACCOUNT=&lt;span class="str"&gt;"NT
AUTHORITY\NETWORK SERVICE"&lt;/span&gt; /AGTSVCSTARTUPTYPE=&lt;span class="str"&gt;"Automatic"&lt;/span&gt; 
&lt;br&gt;
/ISSVCSTARTUPTYPE=&lt;span class="str"&gt;"Automatic"&lt;/span&gt; /ISSVCACCOUNT=&lt;span class="str"&gt;"NT
AUTHORITY\NetworkService"&lt;/span&gt; /ASSVCACCOUNT=&lt;span class="str"&gt;"NT AUTHORITY\NETWORK
SERVICE"&lt;/span&gt; 
&lt;br&gt;
/ASSVCSTARTUPTYPE=&lt;span class="str"&gt;"Automatic"&lt;/span&gt; /ASDATADIR=&lt;span class="str"&gt;"C:\ProgramData\Microsoft
SQL Server\MSAS10.MSSQLSERVER\OLAP\Data"&lt;/span&gt; 
&lt;br&gt;
/ASLOGDIR=&lt;span class="str"&gt;"%ProgramData%\Microsoft SQL Server\MSAS10.MSSQLSERVER\OLAP\Log"&lt;/span&gt; 
&lt;br&gt;
/ASBACKUPDIR=&lt;span class="str"&gt;"%ProgramData%\Microsoft SQL Server\MSAS10.MSSQLSERVER\OLAP\Backup"&lt;/span&gt; 
&lt;br&gt;
/ASTEMPDIR=&lt;span class="str"&gt;"%ProgramData%\Microsoft SQL Server\MSAS10.MSSQLSERVER\OLAP\Temp"&lt;/span&gt; 
&lt;br&gt;
/ASCONFIGDIR=&lt;span class="str"&gt;"%ProgramData%\Microsoft SQL Server\MSAS10.MSSQLSERVER\OLAP\Config"&lt;/span&gt; 
&lt;br&gt;
/ASPROVIDERMSOLAP=&lt;span class="str"&gt;"1"&lt;/span&gt; /ASSYSADMINACCOUNTS=&lt;span class="str"&gt;"BUILTIN\Administrators"&lt;/span&gt; /SQLSVCSTARTUPTYPE=&lt;span class="str"&gt;"Automatic"&lt;/span&gt; 
&lt;br&gt;
/SQLSVCACCOUNT=&lt;span class="str"&gt;"NT AUTHORITY\NETWORK SERVICE"&lt;/span&gt; /SQLSYSADMINACCOUNTS=&lt;span class="str"&gt;"BUILTIN\Administrators"&lt;/span&gt; 
&lt;br&gt;
/BROWSERSVCSTARTUPTYPE=&lt;span class="str"&gt;"Automatic"&lt;/span&gt; /RSSVCACCOUNT=&lt;span class="str"&gt;"NT
AUTHORITY\NETWORK SERVICE"&lt;/span&gt; 
&lt;br&gt;
/RSSVCSTARTUPTYPE=&lt;span class="str"&gt;"Automatic"&lt;/span&gt; /RSINSTALLMODE=&lt;span class="str"&gt;"FilesOnlyMode"&lt;/span&gt; /FTSVCACCOUNT=&lt;span class="str"&gt;"NT
AUTHORITY\LOCAL SERVICE"&lt;/span&gt;&lt;/pre&gt;
&gt;
&lt;div&gt;The only customization I made was to move the data storage to &lt;font face="consolas"&gt;C:\ProgramData\...&lt;/font&gt; rather
than the default &lt;font face="consolas"&gt;C:\Program Files\...&lt;/font&gt;.&amp;nbsp; I prefer
this because I like to keep all data separate from the program executables themselves.&amp;nbsp;
One other thing to note is that my log files are on the same disk as the databases
- consider improving for your scenario.&lt;br&gt;
NOTE: The first phase of the SQL Server 2008 install is to install Windows Installer
4.5 if it isn't already installed.&amp;nbsp; Unfortunately, this requires a reboot after
which you need to re-run the SQL Server 2008 setup.&amp;nbsp; Consider running an &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=580f8ccd-3235-45ee-92cc-05d2606c551f&amp;amp;url=http%3a%2f%2fshellrevealed.com%2ffiles%2ffolders%2fcode%2fentry4411.aspx"" target="_blank"&gt;autologon.exe&lt;/a&gt; utility
at the beginning of your installation (so that the password prompt occurs before you
leave the computer to do the install) in order to set the computer to automatically
logon after rebooting.&amp;nbsp; You will also want to use the &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=580f8ccd-3235-45ee-92cc-05d2606c551f&amp;amp;url=http%3a%2f%2fsupport.microsoft.com%2fdefault.aspx%2fkb%2f137367"" target="_blank"&gt;Runonce
registry setting&lt;/a&gt; to re-run the SQL Server 2008 install.&lt;br&gt;
&lt;/div&gt;
&lt;li&gt;
Installed &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=580f8ccd-3235-45ee-92cc-05d2606c551f&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2fdownloads%2fdetails.aspx%3fFamilyID%3defdc7227-549c-4de1-a063-783f71a8bb2b%26DisplayLang%3den"" target="_blank"&gt;Windows
SharePoint Services 3.0 with SP1&lt;/a&gt; 
&lt;ol&gt;
&lt;pre class="csharpcode"&gt;IF NOT DEFINED TFSSERVICEPASSWORD ( SET /P TFSSERVICEPASSWORD=Enter the TFS Service password: ) 

WSS3wSP1.x86.exe /Extract:"%TEMP%\WSS3wSP1" /passive /quiet
"%TEMP%\WSS3wSP1\setup.exe" /config "%~dp0Wss4TfsSingleServerConfig.xml" 
CHOICE /T 1 /D Y /M Waiting...
RD /Q /S "%TEMP%\WSS3wSP1

SET PSCONFIG="%COMMONPROGRAMFILES%\Microsoft Shared\web server extensions\12\bin\psconfig.exe"
%PSCONFIG% -cmd configdb -create -server localhost -database SharePoint_Config -user %USERDOMAIN%\TFSSERVICE -password %TFSSERVICEPASSWORD% -admincontentdatabase SharePoint_Admin_Content 
%PSCONFIG% -cmd adminvs -provision -port 2500 -windowsauthprovider onlyusentlm 

SET STSADM="%COMMONPROGRAMFILES%\Microsoft Shared\web server extensions\12\bin\stsadm.exe" 
%STSADM% -o extendvs -exclusivelyusentlm -url http://%COMPUTERNAME%.%USERDNSDOMAIN% -ownerlogin %USERDOMAIN%\tfsservice -owneremail "tfs@%USERDNSDOMAIN%" -sitetemplate sts -description "Team Foundation Server" 
%STSADM% -o siteowner -url "http://%COMPUTERNAME%.%USERDNSDOMAIN%" -secondarylogin %USERDOMAIN%\%USERNAME% 

%PSCONFIG% -cmd adminvs -provision -port 2500 -windowsauthprovider onlyusentlm&lt;font face="Consolas"&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/pre&gt;
&gt;
&lt;div&gt;This script extracts WSSwSP1 to a temp directory and then executes the setup
unattended using the &lt;font face="Consolas" size="2"&gt;Wss4TfsSingleServerConfig.xml&lt;/font&gt; file
with ServerRole Web Frond End (WFE).&amp;nbsp; The WSS setup doesn't perform any configuration.&amp;nbsp;
Instead, the &lt;font face="Consolas"&gt;psconfig.exe&lt;/font&gt; and &lt;font face="Consolas"&gt;stsadm.exe&lt;/font&gt; configure
the server following the install.&amp;nbsp; Note that I use port 2500 as my SharePoint
central administration port (something I have standardized on).&amp;nbsp; In addition,
I use a fully qualified name for the WSS url.&lt;br&gt;
The &lt;font face="Consolas" size="2"&gt;Wss4TfsSingleServerConfig.xml&lt;/font&gt; contains the
following: 
&lt;/div&gt;
&lt;blockquote&gt;&lt;pre class="csharpcode"&gt;&amp;lt;Configuration&amp;gt;
    &amp;lt;Package Id=&lt;span class="str"&gt;"sts"&lt;/span&gt;&amp;gt;
&amp;lt;Setting Id=&lt;span class="str"&gt;"REBOOT"&lt;/span&gt; Value=&lt;span class="str"&gt;"ReallySuppress"&lt;/span&gt;/&amp;gt;
&amp;lt;Setting Id=&lt;span class="str"&gt;"SETUPTYPE"&lt;/span&gt; Value=&lt;span class="str"&gt;"CLEAN_INSTALL"&lt;/span&gt;/&amp;gt;
&amp;lt;/Package&amp;gt; &amp;lt;DATADIR Value=&lt;span class="str"&gt;"%ProgramData%\Microsoft SQL
Server\MSSQL$SHAREPOINT\Data"&lt;/span&gt; /&amp;gt; &amp;lt;Logging Type=&lt;span class="str"&gt;"verbose"&lt;/span&gt; Path=&lt;span class="str"&gt;"%temp%"&lt;/span&gt; Template=&lt;span class="str"&gt;"Microsoft
Windows SharePoint Services 3.0 Setup(*).log"&lt;/span&gt;/&amp;gt; &amp;lt;Setting Id=&lt;span class="str"&gt;"SERVERROLE"&lt;/span&gt; Value=&lt;span class="str"&gt;"WFE"&lt;/span&gt;/&amp;gt;
&amp;lt;Setting Id=&lt;span class="str"&gt;"UsingUIInstallMode"&lt;/span&gt; Value=&lt;span class="str"&gt;"0"&lt;/span&gt;/&amp;gt;
&amp;lt;Display Level=&lt;span class="str"&gt;"none"&lt;/span&gt; CompletionNotice=&lt;span class="str"&gt;"no"&lt;/span&gt; AcceptEULA=&lt;span class="str"&gt;"Yes"&lt;/span&gt; /&amp;gt;
&amp;lt;/Configuration&amp;gt; &lt;/pre&gt;
&lt;/blockquote&gt; &lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;li&gt;
&lt;div&gt;Slipstreamed Team Foundation Server SP 1 into the &lt;font face="Consolas" size="2"&gt;.\TFS2008wSP1&lt;/font&gt; directory.
&lt;/div&gt;
&lt;blockquote&gt;&lt;pre class="csharpcode"&gt;.\TFS90sp1-KB949786-ENU.exe /extract:"%TEMP%\TFS2008SP1"&lt;br&gt;
msiexec /a .\TFS2008\at\vs_setup.msi /p "%TEMP%\TFS2008SP1\TFS90sp1-KB949786.msp"
TARGETDIR="%CD%\TFS2008wSP1\AT" /L*vx c:\temp\install.log&lt;br&gt;
CHOICE /T 1 /D Y /M Waiting... 
&lt;br&gt;
RD /Q /S "%TEMP%\TFS2008SP1"&lt;br&gt;
&lt;/pre&gt;
&lt;/blockquote&gt; &lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;li&gt;
&lt;div&gt;Since there are no unattended command line switches for the Team Foundation Server
install, I created a custom executable called &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=580f8ccd-3235-45ee-92cc-05d2606c551f&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fInstallingTeamFoundationServer2008onWind_7484%2fTFSSetup.zip"" target="_blank"&gt;TFSSetup.exe&lt;/a&gt; that
I created to automate an unattended install of Team Foundation Server SP1.&amp;nbsp; A
few things to note about the custom executable:
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;It accepts the license terms and assumes the product key is defaulted.
&lt;/div&gt;
&lt;li&gt;
&lt;div&gt;The deployment directory is the default directory for the TFS setup.
&lt;/div&gt;
&lt;li&gt;
&lt;div&gt;It assumes a Single Server TFS deployment and uses the default database server
name (%COMPUTERNAME%)
&lt;/div&gt;
&lt;li&gt;
&lt;div&gt;It assumes the TFS Service name is %USERDOMAIN%\TFSSERVICE and that the password
is stored in the environment variable TFSSERVICEPASSWORD (if it is not, the program
will prompt for the password).
&lt;/div&gt;
&lt;li&gt;
&lt;div&gt;The SharePoint settings are http:\\%COMPUTERNAME%:2500 for the admin site and
http:\\%COMPUTERNAME%.%USERDNSDOMAIN%/Sites for the Sites URL.
&lt;/div&gt;
&lt;li&gt;
&lt;div&gt;Alerts are not enabled.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;&gt;
&lt;p&gt;
&lt;strong&gt;Possible Errors:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Error&lt;/strong&gt;: This installation package could not be opened.&amp;nbsp; Contact
the application vendor to verify that this is a valid Windows Installer package.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Verify that the source directory (with the RTM version of TFS) is pointing to the
AT directory.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;Error&lt;/strong&gt;: The installer has encountered an unexpected error installing
this package. This may indicate a problem with this package. The error code is 2203. 
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
This is caused because some of the files are read-only.&amp;nbsp; Run &lt;font face="Consolas"&gt;Attrib
-R .\* /S /D&lt;/font&gt; on both the &lt;font face="Consolas"&gt;SP1&lt;/font&gt; and &lt;font face="consolas"&gt;TFSRTM&lt;/font&gt; directories.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;Error&lt;/strong&gt;: The upgrade patch cannot be installed by the Windows Installer
service because the program to be upgraded may be missing, or the upgrade patch may
update a different version of the program. Verify that the program to be upgraded
exists on your computer and that you have the correct upgrade patch.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Error&lt;/strong&gt;: The server parameter specified with the configdb command is
invalid. Failed to connect to the database server or the database name does not exist.&amp;nbsp;
Ensure the database server exists, is a Sql server, and that you have the appropriate
permissions to access the database server.&amp;nbsp; To diagnose the problem, review the
extended error information located at &lt;font face="Consolas" size="2"&gt;C:\Program Files\Common
Files\Microsoft Shared\Web Server Extensions\12LOGS\PSCDiagnostics_12_14_2008_18_24_58_443_440016503.log&lt;/font&gt;.&amp;nbsp;
Please consult the SharePoint Products and Technologies Configuration Wizard help
for additional information regarding database server security configuration and network
access.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
This error occurred because I included both the dbuser and dppassword when executing
psconfig.exe configdb.&amp;nbsp; Upon removing both those parameters, the error was avoided. 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;Error&lt;/strong&gt;: The SQL Server Browser service is stopped.&lt;br&gt;
&lt;strong&gt;Error&lt;/strong&gt;: The SQL Server Browser service is not set to start automatically.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Error&lt;/strong&gt;: TF220041: The specified Windows SharePoint Services site URL
(&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=580f8ccd-3235-45ee-92cc-05d2606c551f&amp;amp;url=http%3a%2f%2f%3cDefaultSiteURL%3e%2fSites)"&gt;http://&amp;lt;DefaultSiteURL&amp;gt;/Sites)&lt;/a&gt; is
not the default site collection site: (Sites).&lt;br&gt;
The default site collection site might have been renamed or removed. Make sure that
the site exists and verify the correct URL,&lt;br&gt;
and then attempt installation. If the problem persists, you can choose to install
and configure Windows SharePoint Services as&lt;br&gt;
part of the Team Foundation Server installation process.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
This error occurs when you specify the Windows SharePoint Server URL without the "/Sites"
suffix.&amp;nbsp; Team Foundation Server 2008 does not work correctly against the root.&amp;nbsp;
You must specify includes the "/Sites" suffix to avoid this error.
&lt;/p&gt;
&lt;/blockquote&gt;&lt;img width="0" height="0" src="http://mark.michaelis.net/Blog/aggbug.ashx?id=580f8ccd-3235-45ee-92cc-05d2606c551f" /&gt;
&lt;br /&gt;
&lt;hr /&gt;© Copyright 2005-2008 Mark Michaelis</description>
      <comments>http://mark.michaelis.net/Blog/CommentView.aspx?guid=580f8ccd-3235-45ee-92cc-05d2606c551f</comments>
      <category>Computer Related</category>
      <category>Computer Related/.Net</category>
    </item>
    <item>
      <trackback:ping>http://mark.michaelis.net/Blog/Trackback.aspx?guid=e0b70f97-72df-4bc6-8775-8523483c38a2</trackback:ping>
      <pingback:server>http://mark.michaelis.net/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://mark.michaelis.net/Blog/PermaLink.aspx?guid=e0b70f97-72df-4bc6-8775-8523483c38a2</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://mark.michaelis.net/Blog/CommentView.aspx?guid=e0b70f97-72df-4bc6-8775-8523483c38a2</wfw:comment>
      <wfw:commentRss>http://mark.michaelis.net/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e0b70f97-72df-4bc6-8775-8523483c38a2</wfw:commentRss>
      <slash:comments>17</slash:comments>
      <title>SQL Server 2008 Install Nightmare</title>
      <guid isPermaLink="false">http://mark.michaelis.net/Blog/PermaLink.aspx?guid=e0b70f97-72df-4bc6-8775-8523483c38a2</guid>
      <link>http://mark.michaelis.net/Blog/SQLServer2008InstallNightmare.aspx</link>
      <pubDate>Tue, 09 Dec 2008 04:56:10 GMT</pubDate>
      <description>&lt;p&gt;
It all started with an installation of Visual Studio 2008 SP1, which included SQL
Server Express 2005.&amp;nbsp; From there I wished to install SQL Server 2008 Standard
on the default port and upgrade SQL Server 2005 Express to SQL Server 2008 express.&amp;nbsp;
Unfortunately, this proved to be a troublesome desire.&amp;nbsp; I have no idea what the
cause is exactly, except that I was not the only one on my team to have issues.
&lt;/p&gt;
&lt;p&gt;
At this point, I am not sure the order that things occurred exactly, but I have a
host of error messages and ways to handle them.&amp;nbsp; I can't say it will work for
you - I sure hope you didn't have to go through all these to install SQL Server 2008
- but I did so I decided to share the experience.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;a name="Uninstall"&gt;Uninstall procedure:&lt;/a&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The most important step with any failed SQL Server 2008 installation is uninstalling
the failed attempt - yes, SQL Server 2008 needs to be uninstalled if an installation
fails as it doesn't automatically roll back.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
At the moment there is no complete knowledge base article on how to manually uninstall
SQL Server 2008.&amp;nbsp; However, there are instructions for &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=e0b70f97-72df-4bc6-8775-8523483c38a2&amp;amp;url=http%3a%2f%2fsupport.microsoft.com%2fkb%2f909967"" target="_blank"&gt;how
to uninstall an instance of SQL Server 2005 manually&lt;/a&gt; and there is a lot of similarity
with SQL Server 2008, so review and follow those instructions were it makes sense.&amp;nbsp;
Below is a list of the steps I followed:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Uninstall the the installation from &lt;strong&gt;Programs and Features&lt;/strong&gt;/&lt;strong&gt;Add
Remove Programs&lt;/strong&gt;, selecting &lt;strong&gt;Microsoft SQL Server 2008&lt;/strong&gt; and
double clicking to run the uninstaller. (You always need to begin with this step or
the command line equivalent.)&amp;nbsp; Do not use the Windows Installer Cleanup Tool
to remove SQL Server 2008 without first trying to do so from &lt;strong&gt;Programs and
Features&lt;/strong&gt;/&lt;strong&gt;Add Remove Programs&lt;/strong&gt;. During the uninstall, you
can choose (via series of check boxes), which components of SQL Server 2008 to uninstall
- including any shared components for when you have multiple instances.&amp;nbsp; In the
case of multiple instances, each instance needs to be uninstalled independently. 
&lt;li&gt;
Run&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font face="Consolas"&gt;SC.EXE query | find /i "SERVICE_NAME:
MSSQL"&lt;/font&gt;&amp;nbsp;&lt;br&gt;
to verify that there are no services instances for SQL Server that should have been
deleted but weren't.&amp;nbsp; Any items that appear unexpectedly, should be removed with
the command 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font face="Consolas"&gt;&lt;font face="Consolas"&gt;SC.EXE&lt;/font&gt; delete
&amp;lt;service name&amp;gt;&lt;/font&gt;&amp;nbsp;&lt;br&gt;
Where service name is the name of the service returned by &lt;font face="Consolas"&gt;sc.exe
query.&lt;/font&gt; 
&lt;br&gt;
If &lt;font face="consolas"&gt;SC.EXE&lt;/font&gt; fails to uninstall the services and there are
no other instances of SQL Server installed, delete registry keys &lt;font face="consolas"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer&lt;/font&gt;, &lt;font face="consolas"&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLSERVER&lt;/font&gt; and &lt;font face="consolas"&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLAgent&lt;/font&gt; 
&lt;li&gt;
Search for &lt;font face="consolas"&gt;&amp;lt;Instance Name&amp;gt;&lt;/font&gt; in &lt;font face="consolas"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall&lt;/font&gt;.&amp;nbsp;
If you find any, usually on a value called &lt;font face="consolas"&gt;InstanceId&lt;/font&gt;,
run 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font face="consolas"&gt;MSIEXEC /X &amp;lt;GUID&amp;gt;&lt;/font&gt; 
&lt;br&gt;
where the &lt;font face="consolas"&gt;&amp;lt;GUID&amp;gt;&lt;/font&gt; is the key name containing the &lt;font face="consolas"&gt;InstanceId&lt;/font&gt; value. 
&lt;li&gt;
Delete the following registry keys/values if they exist 
&lt;ul&gt;
&lt;li&gt;
&lt;font face="consolas"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\&amp;lt;Feature&amp;gt;.&amp;lt;Instance
Name&amp;gt; &lt;/font&gt; 
&lt;li&gt;
&lt;font face="consolas"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\&amp;lt;Instance
Name&amp;gt;&lt;/font&gt; 
&lt;li&gt;
&lt;font face="consolas"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance
Names\SQL\&amp;lt;Instance Name&amp;gt;&lt;/font&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Delete &lt;font face="consolas"&gt;%ProgramFiles%\Microsoft SQL Server\&amp;lt;Feature&amp;gt;.&amp;lt;Instance
Name&amp;gt;&lt;/font&gt; if it exists. 
&lt;li&gt;
Finally, search for the &lt;font face="consolas"&gt;&amp;lt;Feature&amp;gt;.&amp;lt;Instance Name&amp;gt;&lt;/font&gt; in
the registry and consider deleting any remaining items. In some cases this involves
deleting the value because the other values within the same key are for a different
instance.&amp;nbsp; In other cases, the entire key will need to be deleted because there
is no other instance data within the key.&amp;nbsp; Hopefully, you won't encounter anything
significant, but this is a good final step.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;font face="consolas"&gt;&amp;lt;Feature&amp;gt;&lt;/font&gt; has a value like &lt;font face="consolas"&gt;MSSQL10&lt;/font&gt; or &lt;font face="consolas"&gt;MSAS10&lt;br&gt;
&amp;lt;Instance Name&amp;gt;&lt;/font&gt; is the name of the SQL Server instance you are trying
to uninstall.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Pheww, now that we have completely uninstalled, lets review potential errors you might
encounter:
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Error&lt;/strong&gt;: A later version of Microsoft SQL Server Compact is already
installed.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Strange, since all I wanted was to install the SQL Server 2008 Tools.&amp;nbsp; Here are
the steps to correct:
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;ol&gt;
&lt;ol&gt;
&lt;li&gt;
Uninstall all parts of the SQL Server Compact Framework 3.5 SP1.&amp;nbsp; 
&lt;li&gt;
Rerun SQL Server 2008 install.&amp;nbsp; 
&lt;li&gt;
After installing SQL Server 2008 Tools, downloaded and reinstalled the SQL Server
Compact Framework SP1.&amp;nbsp; The tools are located here:&lt;/li&gt;
&lt;/ol&gt;
&gt;
&lt;ul&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=e0b70f97-72df-4bc6-8775-8523483c38a2&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2fdownloads%2fdetails.aspx%3fFamilyID%3ddc614aee-7e1c-4881-9c32-3a6ce53384d9"&gt;SQL
Server Compact 3.5 SP1 for desktop&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=e0b70f97-72df-4bc6-8775-8523483c38a2&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2fdownloads%2fdetails.aspx%3fFamilyID%3dfce9abbf-f807-45d6-a457-ab5615001c8f%26DisplayLang%3den"&gt;SQL
Server Compact 3.5 SP1 for Devices&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=e0b70f97-72df-4bc6-8775-8523483c38a2&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2fdownloads%2fdetails.aspx%3fFamilyID%3dfa751db3-7685-471b-ac31-f1b150422462%26DisplayLang%3den"&gt;SQL
Server Compact 3.5 SP1 Server Tools (Merge Replication Serve2r Side Config)&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=e0b70f97-72df-4bc6-8775-8523483c38a2&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2fdownloads%2fdetails.aspx%3fFamilyId%3d07829770-73A7-41E4-880D-E74B1A353623%26displaylang%3den"&gt;SQL
Server Compact 3.5 SP1 Books Online and Samples&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;p align="left"&gt;
&lt;strong&gt;Error:&lt;/strong&gt; The following error has occurred: Could not open key: &lt;font face="Courier New"&gt;UNKNOWN\Components\CBFF54E0ED12B0946A1C52E5E82ABC38\E7BEEF5F746F8AB9076051A5574&lt;/font&gt;.&amp;nbsp;
Verify that you have sufficient access to that key, or contact your support personnel.
(Errors could be for other GUIDs as well)
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;strong&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="177" alt="The following error has occurred: Could not open key: UNKNOWN\Components\CBFF54E0ED12B0946A1C52E5E82ABC38\E7BEEF5F746F8AB9076051A5574.  Verify that you have sufficient access to that key, or contact your support personnel." src="http://mark.michaelis.net/Blog/content/binary/SQLServer2008InstallNightmare_F264/image23.png" width="616" border="0"&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Errors could be for other GUIDs as well including &lt;font face="Courier New"&gt;UNKNOWN\Components\493032C95B52CBD448DD2B5A52C50E9A\3EC761FD7E06AE4499CE52705CF173EA&lt;/font&gt;.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
This error is a permissions error in the registry.&amp;nbsp; If you search the registry
for the first GUID you will find the key is likely mapped to &lt;font face="Courier New"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\&amp;lt;user
SID&amp;gt;\Components\&amp;lt;GUID&amp;gt;&lt;/font&gt;.&amp;nbsp; Beneath this key is a sub key for the
second GUID.&amp;nbsp; However, selecting the subkey will result in an access denied message.
&lt;/p&gt;
&lt;p&gt;
To correct the problem:
&lt;/p&gt;
&lt;p&gt;
1. Verify that you are running RegEdit as administrator (to avoid UAC issues with
Windows Vista and Windows 3008+).
&lt;/p&gt;
&lt;p&gt;
2. Edit the permission of the parent key(&lt;font face="Courier New"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\&amp;lt;user
SID&amp;gt;\Components&lt;/font&gt;) and click the &lt;strong&gt;Advanced&lt;/strong&gt; button. (Optionally,
you could edit the permissions on the parent GUID (&lt;font face="Courier New"&gt;CBFF54E0ED12B0946A1C52E5E82ABC38&lt;/font&gt; in
my example) but the same problem is likely to exist with other keys so you may as
well deal with this in mass.)
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=e0b70f97-72df-4bc6-8775-8523483c38a2&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fSQLServer2008InstallNightmare_F264%2fimage.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="252" alt="image" src="http://mark.michaelis.net/Blog/content/binary/SQLServer2008InstallNightmare_F264/image_thumb.png" width="473" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p align="left"&gt;
3.&amp;nbsp; From the Advanced dialog, select the &lt;strong&gt;Owner&lt;/strong&gt; tab and check
the &lt;strong&gt;Replace owner on subcontainers and objects&lt;/strong&gt; check box.&amp;nbsp; Also,
verify that System is the owner (else add System and be sure to select it so it will
become the owner).&amp;nbsp; 
&lt;/p&gt;
&lt;p align="left"&gt;
4. Next click &lt;strong&gt;Apply&lt;/strong&gt;.
&lt;/p&gt;
&lt;p align="left"&gt;
4.&amp;nbsp; You may be presented with an error dialog, "Registry Editor could not set
owner on the key currently selected, or some of its subkeys."&amp;nbsp; You can safely
ignore this warning as long as you are then able to view the subkey.&amp;nbsp; If not
:(, you may have to follow the same process but in safe mode or download &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=e0b70f97-72df-4bc6-8775-8523483c38a2&amp;amp;url=http%3a%2f%2ftechnet.microsoft.com%2fen-us%2fsysinternals%2fbb896653.aspx"" target="_blank"&gt;Process
Explorer&lt;/a&gt; and search for any process that is holding onto the key so that you can
shut it down.&amp;nbsp; (The idea that a process is preventing you from viewing the key
is a stretch in my mind but I have had heard the Platform team of Microsoft's product
support group suggest this.)
&lt;/p&gt;
&lt;p align="left"&gt;
5.&amp;nbsp; Lastly, select the "Effective Permissions" tab and verify that both your
own User Id and the System user have &lt;strong&gt;Full Control&lt;/strong&gt;.&amp;nbsp; If not,
add both users via the &lt;strong&gt;Permissions&lt;/strong&gt; tab.
&lt;/p&gt;
&lt;p align="left"&gt;
If this still fails, consider resetting registry permissions back to the default settings
using the following command:
&lt;/p&gt;
&lt;pre class="csharpcode"&gt;    Registry security: secedit /configure /cfg %windir%\inf\defltbase.inf /db defltbase.sdb /verbose /areas REGKEYS&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;Error:&lt;/strong&gt; SQL Server setup has encountered the following error. sku &lt;blockquote&gt; 
&lt;p&gt;
&lt;a href="#uninstall"&gt;Manually uninstall&lt;/a&gt; SQL Server 2008 installation and try installing
again.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;Error:&lt;/strong&gt; Error 1316.A network error occurred while attempting to read
file &lt;font face="Courier New"&gt;ssceruntime-enu.msi&lt;/font&gt;.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=e0b70f97-72df-4bc6-8775-8523483c38a2&amp;amp;url=http%3a%2f%2fconnect.microsoft.com%2fSQLServer%2ffeedback%2fViewFeedback.aspx%3fFeedbackID%3d363055"" target="_blank"&gt;Connect
mentions this error&lt;/a&gt;.&amp;nbsp; I followed a similar procedure.
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Extract the &lt;font face="Courier New"&gt;ISO&lt;/font&gt; file or copy the SQL Server CD onto
the local drive.&amp;nbsp; 
&lt;li&gt;
Copy the .\&lt;font face="Courier New"&gt;&amp;lt;platform&amp;gt;\Setup\SSCERuntime.msi&lt;/font&gt; file
to &lt;font face="Courier New"&gt;SSCERuntime-enu.msi&lt;/font&gt; within the same directory.&amp;nbsp;
This seemed appears to work around the error.&amp;nbsp; I haven't tested this exhaustively,
but I suspect this is a 64-bit problem only so the &amp;lt;platform&amp;gt; directory is most
likely &lt;font face="Courier New"&gt;x64&lt;/font&gt;. (Please comment and let me know if you
see this on other platforms.)&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;Error&lt;/strong&gt;: Error result: -2068578301
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;a href="#uninstall"&gt;Manually uninstall&lt;/a&gt; SQL Server 2008 installation and try installing
again
&lt;/p&gt;
&lt;/blockquote&gt; &lt;blockquote&gt;&lt;/blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;Error&lt;/strong&gt;: SQL Server installation failed. To continue, investigate the
reason for the failure, correct the problem, uninstall SQL Server, and then rerun
SQL Server Setup.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Sometimes, the error log points to a &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=e0b70f97-72df-4bc6-8775-8523483c38a2&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2fproducts%2fee%2ftransform.aspx%3fProdName%3dMicrosoft%2bSQL%2bServer%26EvtSrc%3dsetup.rll%26EvtID%3d50000%26ProdVer%3d10.0.1600.2"" target="_blank"&gt;message
indicating there was a network error&lt;/a&gt;.&amp;nbsp; During the occasions that I encountered
this error message within the log, my installation failed with two red X icons in
the concluding dialog, only one of which had a corresponding message (I wish I had
taken a screen shot.)&amp;nbsp; The solution for me was to &lt;a href="#uninstall"&gt;manually
uninstall&lt;/a&gt;. 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;Error&lt;/strong&gt;: Could not find the Database Engine startup handle.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
This error appears after an installation completes unsuccessfully and a different
error dialog appeared earlier in the installation.&amp;nbsp; &lt;a href="#uninstall"&gt;Manually
uninstall&lt;/a&gt; all the instance related installations items, address the previous dialog,
and re-attempt the install.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;Error (during repair):&lt;/strong&gt; The SQL Server feature 'SQL_Engine_Core_Inst'
is not in a supported state for repair, as it was never successfully configured. Only
features from successful installations can be repaired. To continue, remove the specified
SQL Server feature.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
This error appears if you attempt a repair of a failed installation.&amp;nbsp; The work
around it to &lt;a href="#uninstall"&gt;manually uninstall&lt;/a&gt; the all items related to
the instance, and re-attempt the install by addressing the original error.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;Error:&lt;/strong&gt; A MOF syntax error occurred. 
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;a href="#uninstall"&gt;Manually uninstall&lt;/a&gt; and then re-attempt the install.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;Error&lt;/strong&gt;: SQL Express 2008 ERROR: Failed to generate a user instance
of SQL Server and&lt;br&gt;
&lt;strong&gt;Error:&lt;/strong&gt; Failed to generate a user instance of SQL Server due to a
failure in starting the process for the user instance. The connection will be closed."
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Okay, admittedly this error doesn't appear during install, but it is an install related
error none the less.
&lt;/p&gt;
&lt;p&gt;
Recently I upgraded my SQL Express 2005 instance (installed by Visual Studio 2008)
to SQL Server Express 2008.&amp;nbsp; (Visual Studio 2008 Express editions will automatically
be upgraded when installing Service Pack 1, but not so with all other instances.)&amp;nbsp;
After upgrading, none of my data driven unit tests were successfully passing.&amp;nbsp;
Instead, they were failing with the message:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
The unit test adapter failed to connect to the data source or to read the data. For
more information on troubleshooting this error, see "&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=e0b70f97-72df-4bc6-8775-8523483c38a2&amp;amp;url=http%3a%2f%2fgo.microsoft.com%2ffwlink%2f%3fLinkId%3d62412"" target="_blank"&gt;Troubleshooting
Data-Driven Unit Tests&lt;/a&gt;" in the MSDN Library.&lt;br&gt;
Error details: Failed to generate a user instance of SQL Server due to a failure in
starting the process for the user instance. The connection will be closed."
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
It took some sleuthing to determine the solution.&amp;nbsp; Firstly, I checked the error
files located in my &lt;font face="Courier New"&gt;%USERPROFILE%\Local Settings\Application
Data\Microsoft\Microsoft SQL Server Data\SQLEXPRESS&lt;/font&gt; (the connecting user's
SQL Express data directory) directory.&amp;nbsp; That indicated errors were in loading
the &lt;font face="consolas"&gt;modal.mdf&lt;/font&gt; and corresponding log file within afore
mentioned directory.&amp;nbsp; However, when connecting to the SQL Express instance from
SQL Server Management Studio, there were no such issues.&amp;nbsp; This was because the
instances connected to by SQL Server Management Studio were in the &lt;font face="Courier New"&gt;%PROGRAMFILES%\Microsoft
SQL Server&lt;/font&gt; directory.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
Generally, when a new MDF file is connected to by SQL Express, it copies the master,
model, MSDB, and tempdb databases (mdf and log files) into the connecting user's SQL
Express data directory.&amp;nbsp; (This is frequently why the first time connecting for
each user takes longer.)&amp;nbsp; Such a copy was unnecessary in my case because the
databases already existed.&amp;nbsp; Unfortunately, the databases were from the SQL Server
Express 2005 instance, and not the upgraded database from SQL Server 2008 Express.
&lt;/p&gt;
&lt;p&gt;
To correct the problem, I
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Shut down SQL Server Express 
&lt;li&gt;
Deleted the users SQL Express directory "%USERPROFILE%\Local Settings\Application
Data\Microsoft\Microsoft SQL Server Data\SQLEXPRESS" 
&lt;li&gt;
Restarted SQL Server Express:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Here's a cmd script for what is needed:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
SC.EXE stop "MSSQL$SQLEXPRESS"&lt;br&gt;
CHOICE /C:N /D:N /N /T:5&lt;br&gt;
&lt;font face="Courier New"&gt;RD /S /Q "%USERPROFILE%\Local Settings\Application Data\Microsoft\Microsoft
SQL Server Data\SQLEXPRESS"&lt;br&gt;
&lt;/font&gt;SC.EXE start "MSSQL$SQLEXPRESS"
&lt;/p&gt;
&lt;/blockquote&gt;&lt;/blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;More Errors&lt;/strong&gt;:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Unfortunately, this is not anything even close to an exhaustive list of errors.&amp;nbsp;
If you have other messages I have not covered, the key place to check is &lt;font face="Consolas"&gt;%Programfiles%\Microsoft
sql server\100\Setup bootstrap\Log\&amp;lt;&lt;/font&gt;&lt;var&gt;&lt;font face="Consolas"&gt;DateTime&amp;gt;&lt;/font&gt;.&lt;/var&gt;&amp;nbsp;
To begin, open the &lt;font face="Consolas"&gt;Summary_&amp;lt;computername&amp;gt;_&amp;lt;DateTime&amp;gt;.txt&lt;/font&gt; file
to see an overview of the results.&amp;nbsp; If that doesn't help, consider reviewing
one of the &lt;font face="consolas"&gt;Detail*.txt&lt;/font&gt; files.&amp;nbsp; These errors are
all addressed in &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=e0b70f97-72df-4bc6-8775-8523483c38a2&amp;amp;url=http%3a%2f%2fsupport.microsoft.com%2fkb%2f909967"" target="_blank"&gt;KB909967
- How to troubleshoot SQL Server 2008 Setup issues&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Another item that seemed to cause instability in my SQL Server 2008 installation was
mounting the SQL Server 2008 iso file (especially mounting it over the network).&amp;nbsp;
I recommend that you extract the ISO into a local directory and then installing from
the local directory.
&lt;/p&gt;
&lt;p&gt;
Overwhelmingly, the correction is to &lt;a href="#uninstall"&gt;manually uninstall&lt;/a&gt; the
attempted install instance.
&lt;/p&gt;
&lt;/blockquote&gt;&lt;img width="0" height="0" src="http://mark.michaelis.net/Blog/aggbug.ashx?id=e0b70f97-72df-4bc6-8775-8523483c38a2" /&gt;
&lt;br /&gt;
&lt;hr /&gt;© Copyright 2005-2008 Mark Michaelis</description>
      <comments>http://mark.michaelis.net/Blog/CommentView.aspx?guid=e0b70f97-72df-4bc6-8775-8523483c38a2</comments>
      <category>Computer Related</category>
      <category>.Net</category>
    </item>
    <item>
      <trackback:ping>http://mark.michaelis.net/Blog/Trackback.aspx?guid=ddac7f13-ed68-4a32-9ba9-6f0b2906f408</trackback:ping>
      <pingback:server>http://mark.michaelis.net/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://mark.michaelis.net/Blog/PermaLink.aspx?guid=ddac7f13-ed68-4a32-9ba9-6f0b2906f408</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://mark.michaelis.net/Blog/CommentView.aspx?guid=ddac7f13-ed68-4a32-9ba9-6f0b2906f408</wfw:comment>
      <wfw:commentRss>http://mark.michaelis.net/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=ddac7f13-ed68-4a32-9ba9-6f0b2906f408</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Originally, I was going to focus on shortcuts for the various build/compilation options
within Visual Studio 2008.  However, things become a little more complicated
in terms of which keyboard shortcut to use because it depends on your keyboard mapping
scheme.  In this edition, therefore, I am going to discuss the Keyboard Options
dialog - where different keyboard schemes are available for selection.  
</p>
        <p>
During the first launch of Visual Studio 2008, you are prompted with which keyboard
scheme to use.  The typical options are (Default), Visual C# 2005, and Visual
Basic 6. Fortunately, you can change your selection via the <strong>Tools-&gt;Customize...</strong> menu
and the <strong>Keyboard...</strong> button on the ensuing dialog (Alt+T, Alt+C, Alt+K).
The same dialog is available from <strong>Tools-&gt;Options...</strong> and the <strong>Keyboard</strong> node
of the environment. 
</p>
        <p align="center">
          <a href="http://mark.michaelis.net/Blog/ct.ashx?id=ddac7f13-ed68-4a32-9ba9-6f0b2906f408&amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fWindowsLiveWriter%2fMSDNFlashKeyboardVisualStudioTipsTr.2008_BEEB%2fimage_2.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="442" alt="image" src="http://mark.michaelis.net/Blog/content/binary/WindowsLiveWriter/MSDNFlashKeyboardVisualStudioTipsTr.2008_BEEB/image_thumb.png" width="761" border="0" />
          </a>
        </p>
        <p>
The first dropdown on the right hand side of the dialog is where you can change your
keyboard mapping scheme.  (In this write-up, we will ignore the left hand tree
of the dialog except to say the same dialog is used for the rest of Visual Studio's
options as well.)  After selecting which scheme you want, push <strong>Reset</strong> (Alt+E)
to have all the keyboard settings for the selected scheme mapped.  
</p>
        <p>
Once you have the scheme you want, type within the <strong>Show commands containing</strong> text
box.  Notice that the commands list automatically filters down to those which
contain the value entered anywhere within the name.  In the screen shot above,
"build" is used to filter the commands to those that have "build" in them.  There
are numerous functions within Visual Studio that do not map to menu options and, therefore,
there is no intuitive way to know of their existence except from the <strong>Keyboard
Options</strong> or the <strong>Customize... options</strong> dialog.  The <strong>Show
commands containing</strong> text box makes finding commands relatively easy, however.
Consider, for example, determining the keyboard shortcut for deleting the current
line.  In the <strong>Show commands containing</strong> text box, type "delete"
or "line" and then browse through the available commands to discover that such a command
exists (<strong>Edit.LineDelete</strong>) and that by default Ctrl+Shift+L will invoke
it. 
</p>
        <p>
Within the list of commands, you can select one of the commands and view the shortcut
it is mapped to, if any.  <strong>Build.BuildSelection</strong> is shown here
to map to <strong>Shift+F6 (Global)</strong>, where "Global" here means that this
keystroke will work regardless of the context within Visual Studio (such as whether
the Text Editor or Class Designer windows are active).  It is helpful to browse
through the various commands and see what they are mapped to.  Furthermore, if
you wish to map a new or different keystroke, you can type it in the <strong>Press
shortcut keys</strong> text box.  What is helpful, is that if the key typed already
has a mapping, the existing mapping will show up in the <strong>Shortcut currently
used by</strong> text box, allowing visibility as to whether you want to change the
mapping or perhaps select a different keyboard shortcut. 
</p>
        <p>
In summary, the <strong>Keyboard Options</strong> dialog is a great technique within
Visual Studio for determining what commands are available, what commands are mapped
to which keyboard shortcuts, and for mapping new keyboard shortcuts to the commands.
</p>
        <img width="0" height="0" src="http://mark.michaelis.net/Blog/aggbug.ashx?id=ddac7f13-ed68-4a32-9ba9-6f0b2906f408" />
        <br />
        <hr />
© Copyright 2005-2008 Mark Michaelis</body>
      <title>MSDN Flash: Keyboard Visual Studio Tips &amp;amp; Tricks for Dec 15. 2008</title>
      <guid isPermaLink="false">http://mark.michaelis.net/Blog/PermaLink.aspx?guid=ddac7f13-ed68-4a32-9ba9-6f0b2906f408</guid>
      <link>http://mark.michaelis.net/Blog/MSDNFlashKeyboardVisualStudioTipsAmpTricksForDec152008.aspx</link>
      <pubDate>Fri, 05 Dec 2008 21:44:03 GMT</pubDate>
      <description>&lt;p&gt;
Originally, I was going to focus on shortcuts for the various build/compilation options
within Visual Studio 2008.&amp;nbsp; However, things become a little more complicated
in terms of which keyboard shortcut to use because it depends on your keyboard mapping
scheme.&amp;nbsp; In this edition, therefore, I am going to discuss the Keyboard Options
dialog - where different keyboard schemes are available for selection.&amp;nbsp; 
&lt;p&gt;
During the first launch of Visual Studio 2008, you are prompted with which keyboard
scheme to use.&amp;nbsp; The typical options are (Default), Visual C# 2005, and Visual
Basic 6. Fortunately, you can change your selection via the &lt;strong&gt;Tools-&amp;gt;Customize...&lt;/strong&gt; menu
and the &lt;strong&gt;Keyboard...&lt;/strong&gt; button on the ensuing dialog (Alt+T, Alt+C, Alt+K).
The same dialog is available from &lt;strong&gt;Tools-&amp;gt;Options...&lt;/strong&gt; and the &lt;strong&gt;Keyboard&lt;/strong&gt; node
of the environment. 
&lt;p align="center"&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=ddac7f13-ed68-4a32-9ba9-6f0b2906f408&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fWindowsLiveWriter%2fMSDNFlashKeyboardVisualStudioTipsTr.2008_BEEB%2fimage_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="442" alt="image" src="http://mark.michaelis.net/Blog/content/binary/WindowsLiveWriter/MSDNFlashKeyboardVisualStudioTipsTr.2008_BEEB/image_thumb.png" width="761" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
The first dropdown on the right hand side of the dialog is where you can change your
keyboard mapping scheme.&amp;nbsp; (In this write-up, we will ignore the left hand tree
of the dialog except to say the same dialog is used for the rest of Visual Studio's
options as well.)&amp;nbsp; After selecting which scheme you want, push &lt;strong&gt;Reset&lt;/strong&gt; (Alt+E)
to have all the keyboard settings for the selected scheme mapped.&amp;nbsp; 
&lt;p&gt;
Once you have the scheme you want, type within the &lt;strong&gt;Show commands containing&lt;/strong&gt; text
box.&amp;nbsp; Notice that the commands list automatically filters down to those which
contain the value entered anywhere within the name.&amp;nbsp; In the screen shot above,
"build" is used to filter the commands to those that have "build" in them.&amp;nbsp; There
are numerous functions within Visual Studio that do not map to menu options and, therefore,
there is no intuitive way to know of their existence except from the &lt;strong&gt;Keyboard
Options&lt;/strong&gt; or the &lt;strong&gt;Customize... options&lt;/strong&gt; dialog.&amp;nbsp; The &lt;strong&gt;Show
commands containing&lt;/strong&gt; text box makes finding commands relatively easy, however.
Consider, for example, determining the keyboard shortcut for deleting the current
line.&amp;nbsp; In the &lt;strong&gt;Show commands containing&lt;/strong&gt; text box, type "delete"
or "line" and then browse through the available commands to discover that such a command
exists (&lt;strong&gt;Edit.LineDelete&lt;/strong&gt;) and that by default Ctrl+Shift+L will invoke
it. 
&lt;p&gt;
Within the list of commands, you can select one of the commands and view the shortcut
it is mapped to, if any.&amp;nbsp; &lt;strong&gt;Build.BuildSelection&lt;/strong&gt; is shown here
to map to &lt;strong&gt;Shift+F6 (Global)&lt;/strong&gt;, where "Global" here means that this
keystroke will work regardless of the context within Visual Studio (such as whether
the Text Editor or Class Designer windows are active).&amp;nbsp; It is helpful to browse
through the various commands and see what they are mapped to.&amp;nbsp; Furthermore, if
you wish to map a new or different keystroke, you can type it in the &lt;strong&gt;Press
shortcut keys&lt;/strong&gt; text box.&amp;nbsp; What is helpful, is that if the key typed already
has a mapping, the existing mapping will show up in the &lt;strong&gt;Shortcut currently
used by&lt;/strong&gt; text box, allowing visibility as to whether you want to change the
mapping or perhaps select a different keyboard shortcut. 
&lt;p&gt;
In summary, the &lt;strong&gt;Keyboard Options&lt;/strong&gt; dialog is a great technique within
Visual Studio for determining what commands are available, what commands are mapped
to which keyboard shortcuts, and for mapping new keyboard shortcuts to the commands.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://mark.michaelis.net/Blog/aggbug.ashx?id=ddac7f13-ed68-4a32-9ba9-6f0b2906f408" /&gt;
&lt;br /&gt;
&lt;hr /&gt;© Copyright 2005-2008 Mark Michaelis</description>
      <comments>http://mark.michaelis.net/Blog/CommentView.aspx?guid=ddac7f13-ed68-4a32-9ba9-6f0b2906f408</comments>
      <category>Computer Related</category>
      <category>Computer Related/.Net</category>
    </item>
    <item>
      <trackback:ping>http://mark.michaelis.net/Blog/Trackback.aspx?guid=b59b2ba2-7f90-4755-81c3-007987cbc54c</trackback:ping>
      <pingback:server>http://mark.michaelis.net/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://mark.michaelis.net/Blog/PermaLink.aspx?guid=b59b2ba2-7f90-4755-81c3-007987cbc54c</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://mark.michaelis.net/Blog/CommentView.aspx?guid=b59b2ba2-7f90-4755-81c3-007987cbc54c</wfw:comment>
      <wfw:commentRss>http://mark.michaelis.net/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=b59b2ba2-7f90-4755-81c3-007987cbc54c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Frequently, while browsing code, we want to drill down into a method to see the implementation
and then jump back out again to continue browsing code at the caller. One invaluable
keystroke for doing this is F12. Placing your cursor on any identifier, you can use
F12 to drill into its declaration. This works both for types as well as their members.
In fact, you can use the same keystroke to jump to the definition of types in the
.NET Framework. This is a great way to browse through the type's members to see header
information, including the documentation of the parameters. To jump back, you can
use Ctrl+-. In this way you can navigate back and forth through your code.
</p>
        <p align="center">
          <a href="http://mark.michaelis.net/Blog/ct.ashx?id=b59b2ba2-7f90-4755-81c3-007987cbc54c&amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fMSDNFlashVisualStudioTipsTricks_13DB7%2fimage.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="272" alt="image" src="http://mark.michaelis.net/Blog/content/binary/MSDNFlashVisualStudioTipsTricks_13DB7/image_thumb.png" width="571" border="0" />
          </a>  
</p>
        <p align="center">
 <a href="http://mark.michaelis.net/Blog/ct.ashx?id=b59b2ba2-7f90-4755-81c3-007987cbc54c&amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fMSDNFlashVisualStudioTipsTricks_13DB7%2fimage_3.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="110" alt="image" src="http://mark.michaelis.net/Blog/content/binary/MSDNFlashVisualStudioTipsTricks_13DB7/image_thumb_3.png" width="95" border="0" /></a></p>
        <p align="center">
          <a href="http://mark.michaelis.net/Blog/ct.ashx?id=b59b2ba2-7f90-4755-81c3-007987cbc54c&amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fMSDNFlashVisualStudioTipsTricks_13DB7%2fimage_4.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="272" alt="image" src="http://mark.michaelis.net/Blog/content/binary/MSDNFlashVisualStudioTipsTricks_13DB7/image_thumb_4.png" width="571" border="0" />
          </a>
        </p>
        <p align="center">
 <a href="http://mark.michaelis.net/Blog/ct.ashx?id=b59b2ba2-7f90-4755-81c3-007987cbc54c&amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fMSDNFlashVisualStudioTipsTricks_13DB7%2fimage_5.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="107" alt="image" src="http://mark.michaelis.net/Blog/content/binary/MSDNFlashVisualStudioTipsTricks_13DB7/image_thumb_5.png" width="101" border="0" /></a></p>
        <p align="center">
          <a href="http://mark.michaelis.net/Blog/ct.ashx?id=b59b2ba2-7f90-4755-81c3-007987cbc54c&amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fMSDNFlashVisualStudioTipsTricks_13DB7%2fimage.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="272" alt="image" src="http://mark.michaelis.net/Blog/content/binary/MSDNFlashVisualStudioTipsTricks_13DB7/image_thumb.png" width="571" border="0" />
          </a>  
</p>
        <p>
As quoted from a post by me on MSDN Flash, Nov 17, 2007.
</p>
        <img width="0" height="0" src="http://mark.michaelis.net/Blog/aggbug.ashx?id=b59b2ba2-7f90-4755-81c3-007987cbc54c" />
        <br />
        <hr />
© Copyright 2005-2008 Mark Michaelis</body>
      <title>MSDN Flash: Keyboard Visual Studio Tips &amp;amp; Tricks for Nov 17. 2007</title>
      <guid isPermaLink="false">http://mark.michaelis.net/Blog/PermaLink.aspx?guid=b59b2ba2-7f90-4755-81c3-007987cbc54c</guid>
      <link>http://mark.michaelis.net/Blog/MSDNFlashKeyboardVisualStudioTipsAmpTricksForNov172007.aspx</link>
      <pubDate>Tue, 18 Nov 2008 02:49:32 GMT</pubDate>
      <description>&lt;p&gt;
Frequently, while browsing code, we want to drill down into a method to see the implementation
and then jump back out again to continue browsing code at the caller. One invaluable
keystroke for doing this is F12. Placing your cursor on any identifier, you can use
F12 to drill into its declaration. This works both for types as well as their members.
In fact, you can use the same keystroke to jump to the definition of types in the
.NET Framework. This is a great way to browse through the type's members to see header
information, including the documentation of the parameters. To jump back, you can
use Ctrl+-. In this way you can navigate back and forth through your code.
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=b59b2ba2-7f90-4755-81c3-007987cbc54c&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fMSDNFlashVisualStudioTipsTricks_13DB7%2fimage.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="272" alt="image" src="http://mark.michaelis.net/Blog/content/binary/MSDNFlashVisualStudioTipsTricks_13DB7/image_thumb.png" width="571" border="0"&gt;&lt;/a&gt;&amp;nbsp; 
&lt;/p&gt;
&lt;p align="center"&gt;
&amp;nbsp;&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=b59b2ba2-7f90-4755-81c3-007987cbc54c&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fMSDNFlashVisualStudioTipsTricks_13DB7%2fimage_3.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="110" alt="image" src="http://mark.michaelis.net/Blog/content/binary/MSDNFlashVisualStudioTipsTricks_13DB7/image_thumb_3.png" width="95" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=b59b2ba2-7f90-4755-81c3-007987cbc54c&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fMSDNFlashVisualStudioTipsTricks_13DB7%2fimage_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="272" alt="image" src="http://mark.michaelis.net/Blog/content/binary/MSDNFlashVisualStudioTipsTricks_13DB7/image_thumb_4.png" width="571" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p align="center"&gt;
&amp;nbsp;&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=b59b2ba2-7f90-4755-81c3-007987cbc54c&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fMSDNFlashVisualStudioTipsTricks_13DB7%2fimage_5.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="107" alt="image" src="http://mark.michaelis.net/Blog/content/binary/MSDNFlashVisualStudioTipsTricks_13DB7/image_thumb_5.png" width="101" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=b59b2ba2-7f90-4755-81c3-007987cbc54c&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fMSDNFlashVisualStudioTipsTricks_13DB7%2fimage.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="272" alt="image" src="http://mark.michaelis.net/Blog/content/binary/MSDNFlashVisualStudioTipsTricks_13DB7/image_thumb.png" width="571" border="0"&gt;&lt;/a&gt;&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
As quoted from a post by me on MSDN Flash, Nov 17, 2007.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://mark.michaelis.net/Blog/aggbug.ashx?id=b59b2ba2-7f90-4755-81c3-007987cbc54c" /&gt;
&lt;br /&gt;
&lt;hr /&gt;© Copyright 2005-2008 Mark Michaelis</description>
      <comments>http://mark.michaelis.net/Blog/CommentView.aspx?guid=b59b2ba2-7f90-4755-81c3-007987cbc54c</comments>
      <category>Computer Related</category>
      <category>Computer Related/.Net</category>
    </item>
    <item>
      <trackback:ping>http://mark.michaelis.net/Blog/Trackback.aspx?guid=d3e7ee22-8581-4884-a117-785aa80e4e01</trackback:ping>
      <pingback:server>http://mark.michaelis.net/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://mark.michaelis.net/Blog/PermaLink.aspx?guid=d3e7ee22-8581-4884-a117-785aa80e4e01</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://mark.michaelis.net/Blog/CommentView.aspx?guid=d3e7ee22-8581-4884-a117-785aa80e4e01</wfw:comment>
      <wfw:commentRss>http://mark.michaelis.net/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=d3e7ee22-8581-4884-a117-785aa80e4e01</wfw:commentRss>
      <slash:comments>8</slash:comments>
      <title>Dynamically Typed Objects with C# 4.0</title>
      <guid isPermaLink="false">http://mark.michaelis.net/Blog/PermaLink.aspx?guid=d3e7ee22-8581-4884-a117-785aa80e4e01</guid>
      <link>http://mark.michaelis.net/Blog/DynamicallyTypedObjectsWithC40.aspx</link>
      <pubDate>Tue, 04 Nov 2008 07:14:16 GMT</pubDate>
      <description>&lt;p&gt;
One of the announcements that emerged from the PDC is C# 4.0's support for dynamically
typed objects.&amp;nbsp; These are objects whose type is not determined until runtime.&amp;nbsp;
Variables that point to such types are declared with a new contextual keyword, &lt;font face="Courier New"&gt;dynamic&lt;/font&gt;.&amp;nbsp;
Support was added so that API calls into dynamically type languages (such as scripting
languages) could be supported.&amp;nbsp; Another example where dynamically typed object
support is useful is calling into &lt;font face="Courier New"&gt;IDispatch&lt;/font&gt; objects
(something supported by VB but not C# until now).
&lt;/p&gt;
&lt;p&gt;
In order to investigate how dynamic objects worked I decided to create a working sample
that dynamically went against an XML element. Working with &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=d3e7ee22-8581-4884-a117-785aa80e4e01&amp;amp;url=http%3a%2f%2fwww.breaman.net"" target="_blank"&gt;Michael
Stokesbary&lt;/a&gt;, I was able to put together the following sample:
&lt;/p&gt;
&lt;p&gt;
Consider the following XElement:
&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="csharpcode"&gt;XElement element = XElement.Parse(
    &lt;span class="str"&gt;@"&amp;lt;Person&amp;gt;
&amp;lt;FirstName&amp;gt;Inigo&amp;lt;/FirstName&amp;gt; &amp;lt;LastName&amp;gt;Montoya&amp;lt;/LastName&amp;gt;
&amp;lt;/Person&amp;gt;"&lt;/span&gt;);&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
From here we can assign it to a dynamic variable and read out the data as follows:
&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;dynamic&lt;/span&gt; personXml = &lt;span class="kwrd"&gt;new&lt;/span&gt; DynamicXml(element);
Console.WriteLine(&lt;span class="str"&gt;"Hello, my name is {0} {1}"&lt;/span&gt;, personXml.FirstName,
personXml.LastName);&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
and
&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="csharpcode"&gt;personXml.FirstName = &lt;span class="str"&gt;"Bob"&lt;/span&gt;;&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
As this code shows, with a dynamic type over XML, you can use XML element names as
the property names to retrieve data from the XML element.
&lt;/p&gt;
&lt;p&gt;
To implement the DynamicXML type, all you need to do is define an type that implements &lt;font face="Courier New"&gt;System.Scripting.Actions.IDynamicObject&lt;/font&gt; with
its one &lt;font face="Courier New"&gt;MetaObject GetMetaObject(Expression parameter)&lt;/font&gt; method.&amp;nbsp;
The easier way to do this is to derive from &lt;font face="Courier New"&gt;Dynamic&lt;/font&gt;,
a class that is currently available in the Iron Python implementation.&amp;nbsp; (In the
future, we should expect that Microsoft will provide such a class in the framework
but no specific plans on this have been announced.)&amp;nbsp; Once deriving from &lt;font face="Courier New"&gt;Dynamic&lt;/font&gt;,
the only remaining task is to override the &lt;font face="Courier New"&gt;object GetMember(GetMemberAction
action)&lt;/font&gt; and &lt;font face="Courier New"&gt;void SetMember(SetMemberAction action,
object value)&lt;/font&gt; members.&amp;nbsp; Rudimentary implementations are shown below:
&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System; &lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic; &lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq; &lt;span class="kwrd"&gt;using&lt;/span&gt; System.Scripting.Actions; &lt;span class="kwrd"&gt;using&lt;/span&gt; System.Xml.Linq; &lt;span class="kwrd"&gt;using&lt;/span&gt; System.Xml.XPath;&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; DynamicXml
: Dynamic { &lt;span class="kwrd"&gt;private&lt;/span&gt; XElement Element { get; set; } &lt;span class="kwrd"&gt;public&lt;/span&gt; DynamicXml(System.Xml.Linq.XElement
element) { Element = element; } &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; GetMember(GetMemberAction
action) { &lt;span class="kwrd"&gt;object&lt;/span&gt; result = &lt;span class="kwrd"&gt;null&lt;/span&gt;;
XElement firstDescendant = Element.Descendants(action.Name).FirstOrDefault(); &lt;span class="kwrd"&gt;if&lt;/span&gt; (firstDescendant
!= &lt;span class="kwrd"&gt;null&lt;/span&gt;) { &lt;span class="kwrd"&gt;if&lt;/span&gt; (firstDescendant.Descendants().Count()
&amp;gt; 0) { result = &lt;span class="kwrd"&gt;new&lt;/span&gt; DynamicXml(firstDescendant); } &lt;span class="kwrd"&gt;else&lt;/span&gt; {
result = firstDescendant.Value; } } &lt;span class="kwrd"&gt;return&lt;/span&gt; result; } &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; SetMember(SetMemberAction
action, &lt;span class="kwrd"&gt;object&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;) { XElement
firstDescendant = Element.Descendants(action.Name).FirstOrDefault(); &lt;span class="kwrd"&gt;if&lt;/span&gt; (firstDescendant
!= &lt;span class="kwrd"&gt;null&lt;/span&gt;) { &lt;span class="kwrd"&gt;if&lt;/span&gt;(&lt;span class="kwrd"&gt;value&lt;/span&gt;.GetType()
== &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(XElement)) { firstDescendant.ReplaceWith(&lt;span class="kwrd"&gt;value&lt;/span&gt;);
} &lt;span class="kwrd"&gt;else&lt;/span&gt; { firstDescendant.Value = &lt;span class="kwrd"&gt;value&lt;/span&gt;.ToString();
} } &lt;span class="kwrd"&gt;else&lt;/span&gt; { &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ArgumentException(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"Element
name, '{0}', does not exist."&lt;/span&gt;, action.Name)); } } }&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
That's it... that's all that is needed to understand how to implement a dynamic object.
&lt;/p&gt;
&lt;p&gt;
Caveats:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Multiple elements with the same name are not supported in this implementation.&amp;nbsp;
To do so we wanted to use the index operator with the dynamic type but this is not
supported in the PDC 2008 CTP bits - it will be. 
&lt;li&gt;
This example does not work with attributes.&amp;nbsp; What would the syntax be if it did?&amp;nbsp;
One cool idea of Mike's was to use the verbatim identifier as in &lt;font face="Courier New"&gt;personXml.@FirstName&lt;/font&gt;.
- the XPath like way to retrieve attributes. Unfortunately, this wouldn't work work
since the @ sign is removed at compile time so the IDynamicObject.GetMember() call
receives &lt;font face="Courier New"&gt;FirstName&lt;/font&gt; for the action &lt;font face="Courier New"&gt;Name&lt;/font&gt;. 
&lt;li&gt;
There is no support for reading the root element name.&amp;nbsp; The example assumes you
only navigate into the children (to avoid infinite recursion) when navigating.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
In the process of writing this dynamic XML implementation, I found a few idiosyncrasies
in the current dynamic type support found in the PDC 2008 CTP:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
There is no type checking for dynamic arguments.&amp;nbsp; Consider the sample code below:&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt; string&lt;/span&gt; text1
= &lt;span class="str"&gt;"Text"&lt;/span&gt;; &lt;span class="kwrd"&gt;dynamic&lt;/span&gt; text2 = text1;
Assert.AreEqual&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;(text1, text2);&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Not only does the code sample compile (by design), but it throws an exception of type &lt;font face="Courier New"&gt;ArgumentNullException&lt;/font&gt; (not
by design - &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=d3e7ee22-8581-4884-a117-785aa80e4e01&amp;amp;url=http%3a%2f%2fblogs.msdn.com%2fmadst%2f"" target="_blank"&gt;Mads&lt;/a&gt; agree's
this probably isn't correct).
&lt;/p&gt;
&lt;/blockquote&gt;&lt;img width="0" height="0" src="http://mark.michaelis.net/Blog/aggbug.ashx?id=d3e7ee22-8581-4884-a117-785aa80e4e01" /&gt;
&lt;br /&gt;
&lt;hr /&gt;© Copyright 2005-2008 Mark Michaelis</description>
      <comments>http://mark.michaelis.net/Blog/CommentView.aspx?guid=d3e7ee22-8581-4884-a117-785aa80e4e01</comments>
      <category>Computer Related</category>
      <category>Computer Related/.Net</category>
      <category>Headlines</category>
    </item>
    <item>
      <trackback:ping>http://mark.michaelis.net/Blog/Trackback.aspx?guid=e6db280b-c8a2-451c-99f2-b698fa70ca63</trackback:ping>
      <pingback:server>http://mark.michaelis.net/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://mark.michaelis.net/Blog/PermaLink.aspx?guid=e6db280b-c8a2-451c-99f2-b698fa70ca63</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://mark.michaelis.net/Blog/CommentView.aspx?guid=e6db280b-c8a2-451c-99f2-b698fa70ca63</wfw:comment>
      <wfw:commentRss>http://mark.michaelis.net/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e6db280b-c8a2-451c-99f2-b698fa70ca63</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I am a pretty tough critique when it comes to Microsoft Software announcements (perhaps
because in many cases I hear about what is happening before it goes public). 
However, there are some cool Windows 7 features that I am very excited about:
</p>
        <ul>
          <li>
Multi-monitor Support including screen orientation, accelerator keys for projection
to multiple monitors (mirror/dual), multi-monitor projection support, and multi-monitor
support for remote desktop (Wahoo!)</li>
          <li>
Mounting VHDs as a drive or (more amazing) booting from a VHD - Impressive!</li>
        </ul>
        <p>
1 Disappointment:  Support for mounting ISOs?
</p>
        <img width="0" height="0" src="http://mark.michaelis.net/Blog/aggbug.ashx?id=e6db280b-c8a2-451c-99f2-b698fa70ca63" />
        <br />
        <hr />
© Copyright 2005-2008 Mark Michaelis</body>
      <title>My Favorite Windows 7 Features</title>
      <guid isPermaLink="false">http://mark.michaelis.net/Blog/PermaLink.aspx?guid=e6db280b-c8a2-451c-99f2-b698fa70ca63</guid>
      <link>http://mark.michaelis.net/Blog/MyFavoriteWindows7Features.aspx</link>
      <pubDate>Tue, 28 Oct 2008 16:48:34 GMT</pubDate>
      <description>&lt;p&gt;
I am a pretty tough critique when it comes to Microsoft Software announcements (perhaps
because in many cases I hear about what is happening before it goes public).&amp;nbsp;
However, there are some cool Windows 7 features that I am very excited about:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Multi-monitor Support including screen orientation, accelerator keys for projection
to multiple monitors (mirror/dual), multi-monitor projection support, and multi-monitor
support for remote desktop (Wahoo!)&lt;/li&gt;
&lt;li&gt;
Mounting VHDs as a drive or (more amazing) booting from a VHD - Impressive!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
1 Disappointment:&amp;nbsp; Support for mounting ISOs?
&lt;/p&gt;
&lt;img width="0" height="0" src="http://mark.michaelis.net/Blog/aggbug.ashx?id=e6db280b-c8a2-451c-99f2-b698fa70ca63" /&gt;
&lt;br /&gt;
&lt;hr /&gt;© Copyright 2005-2008 Mark Michaelis</description>
      <comments>http://mark.michaelis.net/Blog/CommentView.aspx?guid=e6db280b-c8a2-451c-99f2-b698fa70ca63</comments>
    </item>
    <item>
      <trackback:ping>http://mark.michaelis.net/Blog/Trackback.aspx?guid=cd7c70f1-2b4f-49bb-b3f8-737d115d8d40</trackback:ping>
      <pingback:server>http://mark.michaelis.net/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://mark.michaelis.net/Blog/PermaLink.aspx?guid=cd7c70f1-2b4f-49bb-b3f8-737d115d8d40</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://mark.michaelis.net/Blog/CommentView.aspx?guid=cd7c70f1-2b4f-49bb-b3f8-737d115d8d40</wfw:comment>
      <wfw:commentRss>http://mark.michaelis.net/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=cd7c70f1-2b4f-49bb-b3f8-737d115d8d40</wfw:commentRss>
      <title>Running Spokane Half Marathon</title>
      <guid isPermaLink="false">http://mark.michaelis.net/Blog/PermaLink.aspx?guid=cd7c70f1-2b4f-49bb-b3f8-737d115d8d40</guid>
      <link>http://mark.michaelis.net/Blog/RunningSpokaneHalfMarathon.aspx</link>
      <pubDate>Mon, 13 Oct 2008 05:39:10 GMT</pubDate>
      <description>&lt;p&gt;
This morning I did the &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=cd7c70f1-2b4f-49bb-b3f8-737d115d8d40&amp;amp;url=http%3a%2f%2fwww.spokanemarathon.us%2f"" target="_blank"&gt;Spokane
Half Marathon&lt;/a&gt; - &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=cd7c70f1-2b4f-49bb-b3f8-737d115d8d40&amp;amp;url=http%3a%2f%2fwww.usatf.org%2froutes%2fview.asp%3frID%3d77251"" target="_blank"&gt;a
fairly hilly course&lt;/a&gt; especially with Bloomsday (doomsday) hill at mile 9.&amp;nbsp;
This is my second time doing it but I was a long ways from my 7 min/mile goal with
a time of &lt;strong&gt;1:34:44&lt;/strong&gt;.&amp;nbsp; I thought last year I did it faster but
it turns out I was mistaken (last year my time was 1:35:28).
&lt;/p&gt;
&lt;p&gt;
Summary:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Total Time: &lt;strong&gt;1:34:44&lt;/strong&gt;
&lt;br&gt;
Average Mile: &lt;strong&gt;7:11&lt;/strong&gt;
&lt;br&gt;
Placed overall: &lt;strong&gt;43&lt;/strong&gt; 
&lt;br&gt;
35-39 Age Group: &lt;strong&gt;7&lt;/strong&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
The temperature started cold (I recall 24 on a bill board as we drove into town) but
it warmed up by race time.&amp;nbsp; Immediately before the race I decided to abandon
all my layers and strip down to just shorts and a non-cotton T-Shirt.&amp;nbsp; Good Choice!&amp;nbsp;
For me, this was perfect attire for the race - I was never hot or cold.
&lt;/p&gt;
&lt;p&gt;
Over all, I had a really tough race.&amp;nbsp; By the time I reached the bottom of Bloomsday
Hill I had enough and was ready to start walking.&amp;nbsp; By the top, I was wondering
why I participated in such a crazy painful sport in the first place.&amp;nbsp; Then I
remembered what I learned in high-school, "It is like poking yourself in the eye.&amp;nbsp;
It feels good to stop."&amp;nbsp; The rest of the race was slow going.&amp;nbsp; However,
my Garmin 405 was showed me significantly slower than I was.&amp;nbsp; Next time I need
to have it set for lap time, total time, and total distance.&amp;nbsp; Not having the
total time made it difficult to know where I was overall in regards to my goal.
&lt;/p&gt;
&lt;p&gt;
Lap times varied by as much as 1.5 minutes.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;table style="width: 96pt; border-collapse: collapse" cellspacing="0" cellpadding="0" width="128" border="0"&gt;
&lt;colgroup&gt;
&lt;strong&gt; 
&lt;col span="2" width="64"&gt;
&lt;/strong&gt;
&lt;/colgroup&gt;
&lt;tbody&gt;
&lt;tr height="20"&gt;
&lt;td class="style4" id="lapColumnHeaderLap" width="64" height="20"&gt;
&lt;strong&gt;Lap&lt;/strong&gt;&lt;/td&gt;
&lt;td class="style3" id="lapColumnHeaderTime" width="64"&gt;
&lt;strong&gt;Time&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr height="20"&gt;
&lt;td class="style1" width="64" height="20"&gt;
1&lt;/td&gt;
&lt;td class="style2" width="64"&gt;
0:06:52&lt;/td&gt;
&lt;/tr&gt;
&lt;tr height="20"&gt;
&lt;td class="style1" width="64" height="20"&gt;
2&lt;/td&gt;
&lt;td class="style2" width="64"&gt;
0:06:45&lt;/td&gt;
&lt;/tr&gt;
&lt;tr height="20"&gt;
&lt;td class="style1" width="64" height="20"&gt;
3&lt;/td&gt;
&lt;td class="style2" width="64"&gt;
0:06:38&lt;/td&gt;
&lt;/tr&gt;
&lt;tr height="20"&gt;
&lt;td class="style1" width="64" height="20"&gt;
4&lt;/td&gt;
&lt;td class="style2" width="64"&gt;
0:07:04&lt;/td&gt;
&lt;/tr&gt;
&lt;tr height="20"&gt;
&lt;td class="style1" width="64" height="20"&gt;
5&lt;/td&gt;
&lt;td class="style2" width="64"&gt;
0:06:38&lt;/td&gt;
&lt;/tr&gt;
&lt;tr height="20"&gt;
&lt;td class="style1" width="64" height="20"&gt;
6&lt;/td&gt;
&lt;td class="style2" width="64"&gt;
0:07:16&lt;/td&gt;
&lt;/tr&gt;
&lt;tr height="20"&gt;
&lt;td class="style1" id="lapColumnHeaderCalories" width="64" height="20"&gt;
7&lt;/td&gt;
&lt;td class="style2" width="64"&gt;
0:07:37&lt;/td&gt;
&lt;/tr&gt;
&lt;tr height="20"&gt;
&lt;td class="style1" width="64" height="20"&gt;
8&lt;/td&gt;
&lt;td class="style2" width="64"&gt;
0:07:05&lt;/td&gt;
&lt;/tr&gt;
&lt;tr height="20"&gt;
&lt;td class="style1" width="64" height="20"&gt;
9&lt;/td&gt;
&lt;td class="style2" width="64"&gt;
0:08:06&lt;/td&gt;
&lt;/tr&gt;
&lt;tr height="20"&gt;
&lt;td class="style1" width="64" height="20"&gt;
10&lt;/td&gt;
&lt;td class="style2" width="64"&gt;
0:07:54&lt;/td&gt;
&lt;/tr&gt;
&lt;tr height="20"&gt;
&lt;td class="style1" width="64" height="20"&gt;
11&lt;/td&gt;
&lt;td class="style2" width="64"&gt;
0:07:43&lt;/td&gt;
&lt;/tr&gt;
&lt;tr height="20"&gt;
&lt;td class="style1" width="64" height="20"&gt;
12&lt;/td&gt;
&lt;td class="style2" width="64"&gt;
0:08:14&lt;/td&gt;
&lt;/tr&gt;
&lt;tr height="20"&gt;
&lt;td class="style1" width="64" height="20"&gt;
13&lt;/td&gt;
&lt;td class="style2" width="64"&gt;
0:06:53&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
I haven't run since my &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=cd7c70f1-2b4f-49bb-b3f8-737d115d8d40&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fquotAreWeThereYetsquot2008AdventureRaceHasPlentyOfRoomForImprovement.aspx"" target="_blank"&gt;last
race&lt;/a&gt; and I suspect this really made a difference.&amp;nbsp; My last hard training
week was the week of Sept. 15.
&lt;/p&gt;
&lt;p&gt;
Well... I think that is it for races until Jan 1 and the Coeur d'Alene Hangover Handicap.&amp;nbsp;
I will take much of next week off (from running) and then pick up with a 3 day a week
run schedule (one of which is over 10 miles).
&lt;/p&gt;
&lt;img width="0" height="0" src="http://mark.michaelis.net/Blog/aggbug.ashx?id=cd7c70f1-2b4f-49bb-b3f8-737d115d8d40" /&gt;
&lt;br /&gt;
&lt;hr /&gt;© Copyright 2005-2008 Mark Michaelis</description>
      <comments>http://mark.michaelis.net/Blog/CommentView.aspx?guid=cd7c70f1-2b4f-49bb-b3f8-737d115d8d40</comments>
      <category>Personal</category>
      <category>Personal/My Sports</category>
    </item>
    <item>
      <trackback:ping>http://mark.michaelis.net/Blog/Trackback.aspx?guid=dcff7980-aaa0-4334-9aba-d9518b91b6a3</trackback:ping>
      <pingback:server>http://mark.michaelis.net/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://mark.michaelis.net/Blog/PermaLink.aspx?guid=dcff7980-aaa0-4334-9aba-d9518b91b6a3</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://mark.michaelis.net/Blog/CommentView.aspx?guid=dcff7980-aaa0-4334-9aba-d9518b91b6a3</wfw:comment>
      <wfw:commentRss>http://mark.michaelis.net/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=dcff7980-aaa0-4334-9aba-d9518b91b6a3</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <title>&amp;quot;Are We There Yet?s&amp;quot; 2008 Adventure Race Has Plenty of Room For Improvement</title>
      <guid isPermaLink="false">http://mark.michaelis.net/Blog/PermaLink.aspx?guid=dcff7980-aaa0-4334-9aba-d9518b91b6a3</guid>
      <link>http://mark.michaelis.net/Blog/quotAreWeThereYetsquot2008AdventureRaceHasPlentyOfRoomForImprovement.aspx</link>
      <pubDate>Tue, 30 Sep 2008 20:36:57 GMT</pubDate>
      <description>&lt;p&gt;
&lt;strong&gt;Summary:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Most years, team "Are We There Yet?" attempts a 36 hour adventure race.&amp;nbsp; This
year we did &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2ftheberrymanadventure.com"&gt;the
Berryman Adventure&lt;/a&gt; in Van Buren, MO.&amp;nbsp; Team members were:&amp;nbsp; 
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p align="center"&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fWindowsLiveWriter%2fAreWeThereYets2008AdventureRaceHasPlenty_F221%2fimage_8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="220" alt="image" src="http://mark.michaelis.net/Blog/content/binary/WindowsLiveWriter/AreWeThereYets2008AdventureRaceHasPlenty_F221/image_thumb_2.png" width="409" border="0"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
Andrew Michaelis - Austin, TX; George Koburov - Woodridge, IL; Karen Seacor - Cleveland;
OH, Mark Michaelis - Spokane Valley, WA
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p align="left"&gt;
Final status for team Are We There Yet: Withdrawn&amp;nbsp; (we only did a single checkpoint
on the bike course.)
&lt;/p&gt;
&lt;p&gt;
Disciplines:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Trail Running: 20 miles&lt;br&gt;
River Canoeing: 31 miles&lt;br&gt;
Mountain Biking: 61 miles (which we didn't do)
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2fphotos.michaelis.net%2fgallery%2f6116291_FGJCX"" target="_blank"&gt;More
Photos&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The Good, The Bad, And the Ugly&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Given the distances from the race, we all had significant travel times.&amp;nbsp; Karen
had 12 hours (8 on Friday) and I started out on a red eye at 12:40 AM on Friday morning.&amp;nbsp;
The result is that all of us to some extent started the race with sleep deprivation
(Lame Excuse #1).&amp;nbsp; One way George and I coped was to use Benadryl so as to increase
the chance of sleeping on the way to the race.&amp;nbsp; Having never done this, I can
say I was glad I did as I think it helped me get some good rest in.&amp;nbsp; George picked
Andy and I up from the St. Louis airport, we picked up a bike for Mark at the Alpine
Shop, and headed down for the race, George and Andy taking turns driving and sleeping.
&lt;/p&gt;
&lt;p&gt;
During the drive down, I searched for GPS tracking software so that we could record
where we went (in contrast to the actual check point location).&amp;nbsp; GPSes are not
legal but I have one built into my phone (required gear in this case), so I figured
I had one anyway, I just couldn't (and didn't) use it.&amp;nbsp; The program that seemed
to be all I needed and at the right cost was Luis Espinosa's &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2fwww.luisespinosa.com%2ftrackme_eng.html"" target="_blank"&gt;TrackMe&lt;/a&gt;.&amp;nbsp;
Unfortunately, batteries and other technical details caused this not to work for us
in this race, but conceptually, this seems like it would be a great way to track where
we actually went.
&lt;/p&gt;
&lt;p&gt;
We all arrived at the race site, Big Springs - MO, at around 3 PM.&amp;nbsp; This gave
us plenty of time to unpack and setup before the pre-race spaghetti dinner at 5:15
PM.&amp;nbsp; We unpacked, set up a screened-in canopy, completed gear checks and verified
bikes were in working order.&amp;nbsp; After dinner we had so little to do we napped for
a few min before heading out to the race meeting, a short drive to the landing.
&lt;/p&gt;
&lt;p&gt;
Besides the raffling off of several very nice prizes, Garmin GPSes, Kayak, Soloman
trail shoes, etc., the race meeting was short and sweet.&amp;nbsp; We learned that we
would be traveling North by bus to race start.&amp;nbsp; The race would begin with 9-15
hours of trail running followed by 6-8 hours of canoeing.&amp;nbsp; We were sure to get
wet and there would be a gear check along the way.&amp;nbsp; That was pretty much it.
&lt;/p&gt;
&lt;p&gt;
We headed back to the race headquarters/transition area to take care of any last minute
details and then we even attempted a brief (30 min) nap before race start pictures
and boarding the bus.&amp;nbsp; We were the first ones on the bus, but five minutes before
driving off, we realized bike gloves would be handy for the paddling so Andy and George
dashed off to grab some (during the paddle I was glad he did).&amp;nbsp; We left at about
10 PM and arrived at race start, Two Rivers (along the Current River), at about 11:15
PM.&amp;nbsp; We made our best attempt to nap on the way up but none of us really did.
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fWindowsLiveWriter%2fAreWeThereYets2008AdventureRaceHasPlenty_F221%2f800IS_2471.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="319" alt="800IS_2471" src="http://mark.michaelis.net/Blog/content/binary/WindowsLiveWriter/AreWeThereYets2008AdventureRaceHasPlenty_F221/800IS_2471_thumb.jpg" width="423" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
The race began with one team member from each team (Andy in our case) running a quick
quarter mile up the road to grab a clue sheet with coordinates.&amp;nbsp; It was around
this time that we learned the race would begin with a four to five foot river crossing
in what was brisk and chilly water.&amp;nbsp; Nice!&amp;nbsp; The rest of us picked up our
maps and tried to orient ourselves to the area as best we could.&amp;nbsp; Andy returned
quickly and we began plotting the coordinates.&amp;nbsp; George led the effort.&amp;nbsp;
The maps were slightly confusing because one side had longitude lines that were slightly
off (from the rest of the map) but this only mattered for the Check Points #1&amp;amp;#2,
so we were able to stumble through.&amp;nbsp; 
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;a title="The Berryman Course Map" href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2fwww.checkpointtracker.com%2findex.cfm%3ffuseaction%3dapp.gpsTracking%26eventID%3d148"" target="_blank"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="744" alt="image" src="http://mark.michaelis.net/Blog/content/binary/WindowsLiveWriter/AreWeThereYets2008AdventureRaceHasPlenty_F221/image_5.png" width="582" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
After plotting we ran down to the boat launch and undressed down to our race underwear
for the river crossing.&amp;nbsp; I wasn't particularly excited to begin the race this
way but the worst of the crossing was sore feet as we walked on the rocks.&amp;nbsp; We
linked arms so that we didn't lose anyone and carried our bags above our heads.&amp;nbsp;
Overall, it was a fun start and quickly got us into the right attitude for an adventure
race.&amp;nbsp; Dressing on the other side we checked our time and began a slow trail
jog.&amp;nbsp; A couple times we looked at the possibility of a turn off but it was too
soon.&amp;nbsp; While plotting, we had decided to take the first trail and then cut up
to Check Point #2, but once on the course, we missed the first turn off so we went
up the second - purposely over shooting it so that we could cut back via the more
gradual nose of the hill.&amp;nbsp; On the way up we came across an old Jeep trail that
led us straight to the check point.&amp;nbsp; We followed the same trail down but, once
we hit the dirt road, stayed on that to Check Point #3, rather than taking a short
cut and bush whacking across.&amp;nbsp; As we learned at the end of the race, this was
not the most efficient, &lt;u&gt;taking the shortest route even with bush whacking is generally
the most efficient in this area&lt;/u&gt;.&amp;nbsp; (Not our experience in races elsewhere).
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fWindowsLiveWriter%2fAreWeThereYets2008AdventureRaceHasPlenty_F221%2fimage_22.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="180" alt="image" src="http://mark.michaelis.net/Blog/content/binary/WindowsLiveWriter/AreWeThereYets2008AdventureRaceHasPlenty_F221/image_thumb_9.png" width="161" align="right" border="0"&gt;&lt;/a&gt; &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fWindowsLiveWriter%2fAreWeThereYets2008AdventureRaceHasPlenty_F221%2fimage_24.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="208" alt="image" src="http://mark.michaelis.net/Blog/content/binary/WindowsLiveWriter/AreWeThereYets2008AdventureRaceHasPlenty_F221/image_thumb_10.png" width="306" align="left" border="0"&gt;&lt;/a&gt; Check
Point #4 was baffling.&amp;nbsp; There was a trail most of the way there until we had
to cut across into the brush along a flat ridge but we missed the cut across entirely.&amp;nbsp;
In fact, we thought&amp;nbsp; we were on it but determined later, that we had overshot
it entirely and instead we were on a trail further on.&amp;nbsp; This baffled us several
times but after several false attempts to relocate, we eventually found a trail which
led us all the way around.&amp;nbsp; In the end we had made a full circle along the trails
bordering Check Point #4.&amp;nbsp; Once we relocated ourselves, we made an attempt to
cut across, up a creek to find Check Point #4.&amp;nbsp; We took a bearing and headed
up but ended up wandering around aimlessly for 2 hours before drifting back down to
a known point.&amp;nbsp; At this point we gave up and decided to proceed on to the next
check point.&amp;nbsp; In hindsight, &lt;u&gt;don't (rarely) skip a checkpoint you are near
in favor of one you don't know anything about&lt;/u&gt;.&amp;nbsp; The one you are at and know
something about, is likely to be easier than any later on ones you haven't spent any
time on and know nothing about.
&lt;/p&gt;
&lt;p&gt;
Check Point #5 was our first significant error.&amp;nbsp; We headed out to it along a
trail.&amp;nbsp; After removing our shoes and crossing a river and a brisk hike, things
didn't quite seem right.&amp;nbsp; We re-plotted the check point and discovered we had
misplaced it by more than 10 km.&amp;nbsp; Yikes!&amp;nbsp; We headed back and began searching
the hillside for our newly located Check Point #5.&amp;nbsp; On the map it was clearly
along a reentrant, geographically a small valley frequently with water funneling into
it, possibly starting in a marshy area at the top.&amp;nbsp; (By definition, reentrant
is a series of angles pointing inwards.)&amp;nbsp; We split up along the hillside, frequently
unable to hear a brisk yell from one person to another.&amp;nbsp; This made it difficult
to regroup and strategically attack again.&amp;nbsp; &lt;u&gt;We should always remain within
clear ear shot, if not closer.&lt;/u&gt;&amp;nbsp; Finally we congregated back at the river
and replenished our water supplies (purifying with iodine).&amp;nbsp; We again attacked
the check point, this time following a compass bearing or trying to follow the reentrant
more closely.&amp;nbsp; Again, we came up empty.&amp;nbsp; Arghhh!!!&amp;nbsp; Another two hours
were lost and again, we didn't find the endpoint.&amp;nbsp; We quit our search for a second
time and headed up and over in search of Check Point #6.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fWindowsLiveWriter%2fAreWeThereYets2008AdventureRaceHasPlenty_F221%2fimage_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="49" alt="image" src="http://mark.michaelis.net/Blog/content/binary/WindowsLiveWriter/AreWeThereYets2008AdventureRaceHasPlenty_F221/image_thumb_1.png" width="36" align="left" border="0"&gt;&lt;/a&gt;Check
Point #6 was interesting because it required us to switch from our 1 to 24,000 topographical
map to a print out of a Ozark Trail topographical map.&amp;nbsp; Unfortunately, we never
reconciled the two maps and lazily tried to just come across the trail.&amp;nbsp; The
result was that we ended up on a dirt trail at the bottom of a hill with little to
no idea where we were.&amp;nbsp; We wandered along the road meeting 4 other two person
teams - one of which had been searching for Check Point #6 for three hours without
any luck.&amp;nbsp; We commiserated and even attempted a phone call but there was no coverage.&amp;nbsp;
We also considered the idea using a iPone GPS but we didn't know how to translate
the coordinates to UTM coordinates.&amp;nbsp; As a group, we decided to march back along
the road and, if failure continued, to skip the Ozark Trail and instead follow the
river.&amp;nbsp; As a team we stayed behind a little longer, reexamining the map.&amp;nbsp;
However, we still had no idea where we were so we eventually decided on a similar
tactic.&amp;nbsp; Fortunately, one of the two person teams did see the trail logo (on
left), obviously an O.T. once you pay attention.&amp;nbsp; Anyway, several yards in was
the orienteering flag and we were back on the map.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
Check Point #7 was easy to find.&amp;nbsp; We just followed the Ozark Trail which was
clearly marked all the way.&amp;nbsp; We briskly walked up the initial part, following
behind the other two point teams.&amp;nbsp; At the summit, they took a break&amp;nbsp; &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fWindowsLiveWriter%2fAreWeThereYets2008AdventureRaceHasPlenty_F221%2f800IS_2477.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="106" alt="800IS_2477" src="http://mark.michaelis.net/Blog/content/binary/WindowsLiveWriter/AreWeThereYets2008AdventureRaceHasPlenty_F221/800IS_2477_thumb.jpg" width="80" align="right" border="0"&gt;&lt;/a&gt;and
we continued, now in a slow jog for most of the remainder of the trail.&amp;nbsp; It was
beautiful, the altitude changes relatively minor, and overall, we were in good spirits.&amp;nbsp;
Glad to again know our location and motivated to move faster by the teams behind us.&amp;nbsp;
After stamping at Check Point #7 we walked past on along the trail, planning to check
our next steps away from the check point.&amp;nbsp; This was silly as it turned out we
headed in the wrong direction.&amp;nbsp; Check Point #7 wasn't along the trail but rather,
across the stream and up to the top of the hill. By this time, George, who didn't
have long pants, was pretty cut up from all the bush whacking.
&lt;/p&gt;
&lt;p&gt;
Mark led the navigation along a bearing.&amp;nbsp; Rather than leap-frogging each other
to keep the bearing, he used the trees to find the next point.&amp;nbsp; This proved to
be fairly accurate but when we reached the top portion of the hill, the brush became
extremely dense and we had to begin leap-frogging again.&amp;nbsp; However, the bearing
took us away from the ridge and we eventually abandoned it in favor of following the
contour lines.&amp;nbsp; Andy found the first summit and then we moved from one high point
to the next, following along where the check point led us.&amp;nbsp; Soon after the first
high point, we encountered a clearing and a trail and we were able to follow this.&amp;nbsp;
We briefly miscounted how many high points we had encountered but after a short while
we were back on track and came across the orienteering flag right on the trail.
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fWindowsLiveWriter%2fAreWeThereYets2008AdventureRaceHasPlenty_F221%2f800IS_2476.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="397" alt="800IS_2476" src="http://mark.michaelis.net/Blog/content/binary/WindowsLiveWriter/AreWeThereYets2008AdventureRaceHasPlenty_F221/800IS_2476_thumb.jpg" width="528" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Next we followed the trail to Check Point #8.&amp;nbsp; We used time to estimate distance
and this proved to be accurate for Check Point #9 as well.&amp;nbsp; It was somewhat surprising
how far #9 was off the trail and we all wondered how hard it would have been to find
the check point in the dark.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
Check Point #10 was reasonably straightforward.&amp;nbsp; However, we did run briefly
off track by assuming it was along a road that it wasn't.&amp;nbsp; Mark identified there
was an issue and we headed up the nose of the next hill to find the next checkpoint.&amp;nbsp;
Check Point #10 was accessible via road but this meant a considerable detour so the
direct route was selected.&amp;nbsp; This proved to be fairly easy.&amp;nbsp; In fact, George
located an old logging trail which he was able to traverse fairly quickly.
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fWindowsLiveWriter%2fAreWeThereYets2008AdventureRaceHasPlenty_F221%2fimage_20.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="316" alt="image" src="http://mark.michaelis.net/Blog/content/binary/WindowsLiveWriter/AreWeThereYets2008AdventureRaceHasPlenty_F221/image_thumb_8.png" width="130" border="0"&gt;&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fWindowsLiveWriter%2fAreWeThereYets2008AdventureRaceHasPlenty_F221%2fimage_26.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="316" alt="image" src="http://mark.michaelis.net/Blog/content/binary/WindowsLiveWriter/AreWeThereYets2008AdventureRaceHasPlenty_F221/image_thumb_11.png" width="116" border="0"&gt;&lt;/a&gt;&lt;/a&gt;&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fWindowsLiveWriter%2fAreWeThereYets2008AdventureRaceHasPlenty_F221%2fimage_28.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="315" alt="image" src="http://mark.michaelis.net/Blog/content/binary/WindowsLiveWriter/AreWeThereYets2008AdventureRaceHasPlenty_F221/image_thumb_12.png" width="130" border="0"&gt;&lt;/a&gt;&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fWindowsLiveWriter%2fAreWeThereYets2008AdventureRaceHasPlenty_F221%2fimage_30.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="314" alt="image" src="http://mark.michaelis.net/Blog/content/binary/WindowsLiveWriter/AreWeThereYets2008AdventureRaceHasPlenty_F221/image_thumb_13.png" width="165" border="0"&gt;&lt;/a&gt;&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
Check Point #11 looked challenging.&amp;nbsp; We headed down along the road and reached
the bottom of the hill.&amp;nbsp; The hill looked to be very dense and there was no trail.&amp;nbsp;
We decided to locate an intersection and then take a bearing from there.&amp;nbsp; Once
at the intersection, we were feeling a little discouraged and decided to take a 5
minute nap.&amp;nbsp; This was energizing and appreciated even though it was short.&amp;nbsp;
We fell asleep without issue (besides brief naps, we had all been up for 30 or so
hours by this time).&amp;nbsp; We discussed whether to skip Check Points #11 and #12 and
eventually decided to simply head for Powder Mill and the canoes.&amp;nbsp; Although there
were misgivings about giving up on the last two check points but, since we had already
skipped 2, it wasn't nearly as big a deal.&amp;nbsp; Instead, we were surprised at how
far away the canoe launch seemed.
&lt;/p&gt;
&lt;p&gt;
At the canoe launch, Check Point #13, we were amazed to learn that two teams had been
able to navigate all the trail check points in six hours while it had taken us fifteen
and we had skipped four.&amp;nbsp; Wow!!!&amp;nbsp; How on earth had they done that.&amp;nbsp;
It is unfathomable to us.&amp;nbsp; Truly remarkable! 
&lt;/p&gt;
&lt;p align="center"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fWindowsLiveWriter%2fAreWeThereYets2008AdventureRaceHasPlenty_F221%2f800IS_2497.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="800IS_2497" src="http://mark.michaelis.net/Blog/content/binary/WindowsLiveWriter/AreWeThereYets2008AdventureRaceHasPlenty_F221/800IS_2497_thumb.jpg" width="184" border="0"&gt;&lt;/a&gt; &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fWindowsLiveWriter%2fAreWeThereYets2008AdventureRaceHasPlenty_F221%2f800IS_2496.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="800IS_2496" src="http://mark.michaelis.net/Blog/content/binary/WindowsLiveWriter/AreWeThereYets2008AdventureRaceHasPlenty_F221/800IS_2496_thumb.jpg" width="184" border="0"&gt;&lt;/a&gt; &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fWindowsLiveWriter%2fAreWeThereYets2008AdventureRaceHasPlenty_F221%2fimage_14.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://mark.michaelis.net/Blog/content/binary/WindowsLiveWriter/AreWeThereYets2008AdventureRaceHasPlenty_F221/image_thumb_5.png" width="135" border="0"&gt;&lt;/a&gt;&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fWindowsLiveWriter%2fAreWeThereYets2008AdventureRaceHasPlenty_F221%2fimage_18.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://mark.michaelis.net/Blog/content/binary/WindowsLiveWriter/AreWeThereYets2008AdventureRaceHasPlenty_F221/image_thumb_7.png" width="203" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
We didn't dilly-dally at the transition area, sticking to refreshing our water supply,
grabbing our transition bags, and heading to the water.&amp;nbsp; The water felt great
on our tired feet.&amp;nbsp; Andy and Karen took one canoe while George and I took the
other.&amp;nbsp; Andy and Mark were in the rear (steering).&amp;nbsp; It didn't take long
to get into the rhythm of paddling and the river was incredibly beautiful.&amp;nbsp; If
it wasn't for the pressure of the race, this would make for a leisurely trip along
a gorgeous part of Missouri.&amp;nbsp; We saw fish eagles, blue herons, and pied king
fishers along with Andrew's favorite, a snake.&amp;nbsp; There were frequent camp grounds
and boat landings along the way and we frequently checked with the locals on distance
to the next point on the map.&amp;nbsp; Just prior to dusk we came across some tough rapids
and saw another team on the shore.&amp;nbsp; Mark and George were already past them as
they entered the toughest waters so far.&amp;nbsp; Karen and Andy took the other side
of the island and ended up landing so that they could pick up the other team.&amp;nbsp;
The other team had capsized and their canoe was pinned.&amp;nbsp; They were soaked through
and less than happy to say the least.&amp;nbsp; A ranger showed up within the half hour
and took the additional crew back on a motor boat.&amp;nbsp; (He didn't think it would
be quite fair to tow us although we did ask. :)
&lt;/p&gt;
&lt;p&gt;
We got to Waymeyer (Check Point #14) just as it was getting dark.&amp;nbsp; There we did
a gear check, potty break, and put on additional clothing.&amp;nbsp; Once we started out
again, things were significantly more difficult.&amp;nbsp; There was fog coming off the
water and our light reflected off the haze making it very difficult to see the water.&amp;nbsp;
We could hear the rapids, but couldn't see obstacles until we were on them almost.&amp;nbsp;
Wow.... it was some tense canoeing (but exciting/fun).&amp;nbsp; At the time we thought
it was dangerous and questioned the fact that we were not pulled out of the race.&amp;nbsp;
However, after a discussion with the race director, we agreed with his choice to leave
it to us.&amp;nbsp; Really, the worst that could happen was capsizing and getting wet
- it wasn't really life threatening.&amp;nbsp; At one point Andy and Karen hit a strainer
but their experience avoided any incident.&amp;nbsp; As they discussed a little later,
leaning into the obstacle (rather than away from it as instinct would lead you) is
key.&amp;nbsp; This way, you are tipping the bottom of the boat up river so the water
doesn't flow over the side.&amp;nbsp; About a mile from the end George and Mark hit a
rapid which threw them to the outside of the river and into a strainer.&amp;nbsp; Yikes...
They hit the tree at virtually full throttle; Mark backpaddled one way while George
furiously fought to untangle himself from his flashlight so that he could paddle on
the other.&amp;nbsp; Fortunately, they hit a pivot point at the right angle and it simply
swung the boat around rather than tipped them over.&amp;nbsp; It was intense for a few
short moments and Mark was clobbered on the head by a branch hitting his paddle.&amp;nbsp;
However, this was the worst of it and for this we were all grateful.
&lt;/p&gt;
&lt;p&gt;
Back at race headquarters and our transition area, we replenished our supplies, changed
our clothes and put on warmer clothing (we were cold) and checked the bikes were ready
to go.&amp;nbsp; We also took a 30 minute nap - this really helped replenish us - although
perhaps not our minds.&amp;nbsp; After our nap we plotted out one or two of the bike check
points and headed out.&amp;nbsp; We followed the map and were able to make it fit the
terrain perfectly.&amp;nbsp; The clue was that the check point was next to a barn but
we couldn't find the barn.&amp;nbsp; Strange?&amp;nbsp; We proceeded to check every building
we could find in the two mile stretch of road as though every building was a barn.&amp;nbsp;
We went up and down the road for more than two hours trying to find a the check point
but it was nowhere to be found.&amp;nbsp; Did it get taken down?&amp;nbsp; Why couldn't we
see it?&amp;nbsp; Was our distance measurement off?&amp;nbsp; What gives?&amp;nbsp; Confused and
frustrated, we headed back to the camp, sneaking in the back way, humiliated at our
defeat.&amp;nbsp; No less than 10 minutes later, it occurred to us that perhaps we had
gone the wrong way.&amp;nbsp; We checked our compass (what a novel idea), and sure enough,
we had headed out South instead of North?&amp;nbsp; Wow!&amp;nbsp; How could we have navigated
the last 24 hours straight and now, when the check point was along the road, we just
assumed and didn't even check the compass once before heading out.&amp;nbsp; Mental exhaustion?&amp;nbsp;
Not sure..&amp;nbsp; Lame?&amp;nbsp; Undoubtedly!&amp;nbsp; We headed off in the right direction
and found Check Point #15 within less than 10 minutes.&amp;nbsp; From there we simply
headed back to camp tired and dejected.&amp;nbsp; I think biking, especially fun, challenging
single track (at night even) is our favorite event and we didn't do any. :(
&lt;/p&gt;
&lt;p&gt;
It is interesting how our minds are able to bend the truth to fit with what we want
rather than the way things are.&amp;nbsp; For us, everything was a barn, the valleys all
fitted with the map perfectly, and trails all lined up with what we wanted.&amp;nbsp;
In reality, we were not even close to where we needed to be.&amp;nbsp; Interesting...
how often in life do we do similar things?&amp;nbsp; We project our feelings on to others
or try to change truth to what we want rather than change our minds to conform to
Truth.&amp;nbsp; How often do we say, do, believe what we want rather than allow the Truth
to dictate reality for us.
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2fmark.michaelis.net%2fBlog%2fcontent%2fbinary%2fWindowsLiveWriter%2fAreWeThereYets2008AdventureRaceHasPlenty_F221%2fimage_10.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="205" alt="image" src="http://mark.michaelis.net/Blog/content/binary/WindowsLiveWriter/AreWeThereYets2008AdventureRaceHasPlenty_F221/image_thumb_3.png" width="356" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
At this point, we were beaten mentally, physically and emotionally.&amp;nbsp; We affirmed
what we had already expected when we plotted only a few bike check points, we were
done.&amp;nbsp; We headed back to camp, crawled into sleeping bags, and crashed.&amp;nbsp;
In the back of our minds we were grateful especially since this meant we would sleep
before driving the 3 hours back to St Louis on no sleep -&amp;nbsp; a ludicrous idea that
was likely to kill us.&amp;nbsp; &lt;u&gt;Next year, we make sure a plan is in place to have
a designated non-racer driver, or a good several hours (night) sleep before driving&lt;/u&gt;. 
&lt;/p&gt;
&lt;p&gt;
Before leaving the race site, we sat down with Jason Elsenraat for a lesson in navigation.&amp;nbsp;
It was very helpful.&amp;nbsp; Here is a list of pointers:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Use a map wheel to mark out the mileage on the intended path &lt;a title="Map Wheel" href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2fwww.worldmapsonline.com%2fmapwheel_detail.htm"" target="_blank"&gt;&lt;img height="91" src="http://www.worldmapsonline.com/images/mapwheel/mapwheel_detail.jpg" width="279" align="right" border="0"&gt;&lt;/a&gt; 
&lt;li&gt;
Use a 3mm roller ball to mark check points rather than the Sharpe which frequently
hid contour lines. 
&lt;li&gt;
Use a hi-lighter to mark dotted lines of the intended path between check points 
&lt;li&gt;
Draw arrows using a hi-lighter across the map indicating North (otherwise you have
to unfold the map to check) 
&lt;li&gt;
Use contour lines to get into the general location, rather than rigid following of
the compass for long distances. 
&lt;li&gt;
When one set of contour lines are not distinct, move to a different one for navigation
close to the target and then compass navigate from that point. 
&lt;li&gt;
Feel free to take short cuts rather than a long way round just to stay on the trail.&amp;nbsp;
(Interestingly, our experience from other races was the opposite - take the trail
rather than bush whack the unknown) 
&lt;li&gt;
Use the altimeter for judging distances - especially from a peak of valley 
&lt;li&gt;
Have a designated time keeper other than the navigator (Similarly for the altimeter
says Mark) 
&lt;li&gt;
Place markings on the compass for distance (both 1 in 24000 and 1 in 25000) 
&lt;li&gt;
Carry a pipe cleaner to measure distances on the route (or use string on compass) 
&lt;li&gt;
Two AR roamers: &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2fwww.arnavsupplies.com%2fproduct_pages%2fbasic_roamerar%2fbrar20feat.html"" target="_blank"&gt;Basic
Roamer AR&lt;/a&gt; and &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2fmaptools.com%2fproducts%2fAdvCorners.html"" target="_blank"&gt;Adventure
Racing Corner Rulers&lt;/a&gt; (The &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2fwww.ozarkextreme.com%2fgearreviews.html"" target="_blank"&gt;Ozark
Extreme site has list&lt;/a&gt; as does &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2fmaptools.com%2fUTMTools.html"" target="_blank"&gt;maptools.com&lt;/a&gt;.)&amp;nbsp;
Online there is also a &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2fmaptools.com%2fproducts%2fimages%2fUTMSlots.gif"" target="_blank"&gt;slot
style tool&lt;/a&gt; which looks the best because you can write along the border of the
scale - a significant problem with the other two roamers which you have to lift up
in order to plot a point. 
&lt;li&gt;
*Use contact paper to waterproof your map 
&lt;li&gt;
*Write the clues on the map near the check point, rather than depending on a separate
piece of paper.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
*Team Are We There Yet's idea
&lt;/p&gt;
&lt;p&gt;
On the drive back Andy and George again switched drivers.&amp;nbsp; After a brief nap,
Andy took over from George in order to speed things up in hopes of catching an early
flight rather than waiting until Monday morning - especially since everyone else was
leaving.&amp;nbsp; He succeeded.&amp;nbsp; I spent the bulk of the trip examining various
GPS tracking logs and discovered that none of them really worked so we had virtually
no tracking record of the race - disappointing, but there is always next year.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3&amp;amp;url=http%3a%2f%2fwww.checkpointtracker.com%2findex.cfm%3ffuseaction%3dapp.showTeamProfile%26eventID%3d148%26teamID%3d3567"&gt;Shout
Outs from CheckPoint Tracker&lt;/a&gt; - Thanks for all the cheering everyone! 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://mark.michaelis.net/Blog/aggbug.ashx?id=dcff7980-aaa0-4334-9aba-d9518b91b6a3" /&gt;
&lt;br /&gt;
&lt;hr /&gt;© Copyright 2005-2008 Mark Michaelis</description>
      <comments>http://mark.michaelis.net/Blog/CommentView.aspx?guid=dcff7980-aaa0-4334-9aba-d9518b91b6a3</comments>
      <category>Personal</category>
      <category>Personal/My Sports</category>
    </item>
    <item>
      <trackback:ping>http://mark.michaelis.net/Blog/Trackback.aspx?guid=09f4b66b-4d9f-401c-a1cc-ffee94ff9dbe</trackback:ping>
      <pingback:server>http://mark.michaelis.net/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://mark.michaelis.net/Blog/PermaLink.aspx?guid=09f4b66b-4d9f-401c-a1cc-ffee94ff9dbe</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://mark.michaelis.net/Blog/CommentView.aspx?guid=09f4b66b-4d9f-401c-a1cc-ffee94ff9dbe</wfw:comment>
      <wfw:commentRss>http://mark.michaelis.net/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=09f4b66b-4d9f-401c-a1cc-ffee94ff9dbe</wfw:commentRss>
      <title>Downloading Team Explorer 2005/2008</title>
      <guid isPermaLink="false">http://mark.michaelis.net/Blog/PermaLink.aspx?guid=09f4b66b-4d9f-401c-a1cc-ffee94ff9dbe</guid>
      <link>http://mark.michaelis.net/Blog/DownloadingTeamExplorer20052008.aspx</link>
      <pubDate>Wed, 17 Sep 2008 04:25:04 GMT</pubDate>
      <description>&lt;p&gt;
While at Microsoft today, I was talking with a fellow developer who was complaining
that they couldn't download Team Explorer 2005 from MSDN, even as a VSTS subscriber.&amp;nbsp;
They wanted v2005 because, although they had Team Foundation Server (TFS) 2008, they
were still using Visual Studio 2005.
&lt;/p&gt;
&lt;p&gt;
As it turns out, this isn't this isn't quite true.&amp;nbsp; If you download Team Foundation
Server 2005 (either Trial or Workgroup editions), there is a &lt;font face="Courier New"&gt;TFC&lt;/font&gt; directory
on the ISO file for the Team Explorer install.&amp;nbsp; However, there is a better solution
and it doesn't even require logging on to MSDN.&amp;nbsp; It turns out that to connect
to &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=09f4b66b-4d9f-401c-a1cc-ffee94ff9dbe&amp;amp;url=http%3a%2f%2fcodeplex.com%2f"&gt;codeplex&lt;/a&gt; you
also have the option of using Team Explorer.&amp;nbsp; Since developers won't necessarily
have MSDN subscriptions, &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=09f4b66b-4d9f-401c-a1cc-ffee94ff9dbe&amp;amp;url=http%3a%2f%2fwww.codeplex.com%2fCodePlex%2fWiki%2fView.aspx%3ftitle%3dObtaining%2520the%2520Team%2520Explorer%2520Client"&gt;codeplex
links to downloads of img/iso files for Team Explorer&lt;/a&gt;:
&lt;/p&gt;
&lt;li&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=09f4b66b-4d9f-401c-a1cc-ffee94ff9dbe&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2fdownloads%2fdetails.aspx%3ffamilyid%3d0ed12659-3d41-4420-bbb0-a46e51bfca86%26displaylang%3den"&gt;Team
Explorer 2008&lt;/a&gt; (387 MB iso file) 
&lt;li&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=09f4b66b-4d9f-401c-a1cc-ffee94ff9dbe&amp;amp;url=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f2%2fa%2fd%2f2ad44873-8ccb-4a1b-9c0d-23224b3ba34c%2fVSTFClient.img"&gt;Team
Explorer 2005&lt;/a&gt; (246 MB .img file) 
&lt;p&gt;
By the way, in VSTS 2008, Microsoft includes Team Explorer on the VSTS media.&amp;nbsp;
It is located in the Team Foundation Client directory, &lt;font face="Courier New"&gt;TFS\&lt;/font&gt;.
&lt;/p&gt;
&lt;/li&gt;
&lt;p&gt;
&lt;u&gt;UPDATED 2008-09-30&lt;/u&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=09f4b66b-4d9f-401c-a1cc-ffee94ff9dbe&amp;amp;url=http%3a%2f%2fblogs.msdn.com%2fbriankel%2f"" target="_blank"&gt;Brian
Keller&lt;/a&gt; emailed me today to let me know that Microsoft has added a &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=09f4b66b-4d9f-401c-a1cc-ffee94ff9dbe&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2fdownloads%2fdetails.aspx%3fFamilyId%3d46473C2A-BB85-4461-BB27-4792A5DEF222%26displaylang%3den"" target="_blank"&gt;details
page for Visual Studio Team System 2005 Team Explorer&lt;/a&gt;, making the download easier
to find.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://mark.michaelis.net/Blog/aggbug.ashx?id=09f4b66b-4d9f-401c-a1cc-ffee94ff9dbe" /&gt;
&lt;br /&gt;
&lt;hr /&gt;© Copyright 2005-2008 Mark Michaelis</description>
      <comments>http://mark.michaelis.net/Blog/CommentView.aspx?guid=09f4b66b-4d9f-401c-a1cc-ffee94ff9dbe</comments>
      <category>Computer Related</category>
      <category>Computer Related/Miscellaneous</category>
    </item>
    <item>
      <trackback:ping>http://mark.michaelis.net/Blog/Trackback.aspx?guid=d7e3afe2-bd0e-46d1-9752-0f618b4ed938</trackback:ping>
      <pingback:server>http://mark.michaelis.net/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://mark.michaelis.net/Blog/PermaLink.aspx?guid=d7e3afe2-bd0e-46d1-9752-0f618b4ed938</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://mark.michaelis.net/Blog/CommentView.aspx?guid=d7e3afe2-bd0e-46d1-9752-0f618b4ed938</wfw:comment>
      <wfw:commentRss>http://mark.michaelis.net/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=d7e3afe2-bd0e-46d1-9752-0f618b4ed938</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <title>Turning Off IE Enhanced Security from the Command Line</title>
      <guid isPermaLink="false">http://mark.michaelis.net/Blog/PermaLink.aspx?guid=d7e3afe2-bd0e-46d1-9752-0f618b4ed938</guid>
      <link>http://mark.michaelis.net/Blog/TurningOffIEEnhancedSecurityFromTheCommandLine.aspx</link>
      <pubDate>Fri, 12 Sep 2008 04:55:54 GMT</pubDate>
      <description>&lt;p&gt;
For the most part I have much of the install for Windows 2008 operating system and
programs automated (unattended).&amp;nbsp; However, one thing that I found a little more
difficult to find was a command line way to turn off IE's Enhanced Security (manually
turned off from &lt;strong&gt;Server Manager -&amp;gt; Configure IE ESC&lt;/strong&gt;. 
&lt;/p&gt;
&lt;p&gt;
I found an &lt;a href="http://mark.michaelis.net/Blog/ct.ashx?id=d7e3afe2-bd0e-46d1-9752-0f618b4ed938&amp;amp;url=http%3a%2f%2fwww.itedge.net%2fblog%2f2007%2f08%2f08%2fdisable-ie7-protected-mode-on-windows-server-2008%2f"" target="_blank"&gt;unattended
method&lt;/a&gt; and created a batch file:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;font color="#008000"&gt;:: Backup registry keys &lt;/font&gt;
&lt;br&gt;
REG EXPORT "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A7-37EF-4b3f-8CFC-4F3A74704073}"
"%TEMP%.HKEY_LOCAL_MACHINE.SOFTWARE.Microsoft.Active Setup.Installed Components.A509B1A7-37EF-4b3f-8CFC-4F3A74704073.reg" 
&lt;br&gt;
REG EXPORT "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A7-37EF-4b3f-8CFC-4F3A74704073}"
"%TEMP%.HKEY_LOCAL_MACHINE.SOFTWARE.Microsoft.Active Setup.Installed Components.A509B1A8-37EF-4b3f-8CFC-4F3A74704073.reg" 
&lt;p&gt;
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A7-37EF-4b3f-8CFC-4F3A74704073}"
/v "IsInstalled" /t REG_DWORD /d 0 /f&lt;br&gt;
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A8-37EF-4b3f-8CFC-4F3A74704073}"
/v "IsInstalled" /t REG_DWORD /d 0 /f 
&lt;p&gt;
Rundll32 iesetup.dll, IEHardenLMSettings&lt;br&gt;
Rundll32 iesetup.dll, IEHardenUser&lt;br&gt;
Rundll32 iesetup.dll, IEHardenAdmin 
&lt;p&gt;
REG DELETE "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A7-37EF-4b3f-8CFC-4F3A74704073}"
/f /va&lt;br&gt;
REG DELETE "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A8-37EF-4b3f-8CFC-4F3A74704073}"
/f /va 
&lt;p&gt;
&lt;font color="#008000"&gt;:: Optional to remove warning on first IE Run and set home page
to blank.&lt;br&gt;
&lt;/font&gt;REG DELETE "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main" /v
"First Home Page" /f&lt;br&gt;
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main" /v "Default_Page_URL"
/t REG_SZ /d "about:blank" /f&lt;br&gt;
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main" /v "Start Page"
/t REG_SZ /d "about:blank" /f
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
This seems to work well for Windows 2008.&amp;nbsp; I haven't tried it on other operating
systems.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://mark.michaelis.net/Blog/aggbug.ashx?id=d7e3afe2-bd0e-46d1-9752-0f618b4ed938" /&gt;
&lt;br /&gt;
&lt;hr /&gt;© Copyright 2005-2008 Mark Michaelis</description>
      <comments>http://mark.michaelis.net/Blog/CommentView.aspx?guid=d7e3afe2-bd0e-46d1-9752-0f618b4ed938</comments>
      <category>Computer Related</category>
      <category>Computer Related/Miscellaneous</category>
      <category>Headlines</category>
    </item>
  </channel>
</rss>