<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" 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:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Geek Noise</title>
    <description>Rants, rambles, news and notes by Peter Provost</description>
    <link>http://www.peterprovost.org/blog/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 1.4.0.0</generator>
<language>en-US</language><blogChannel:blogRoll>http://www.peterprovost.org/blog/opml.axd</blogChannel:blogRoll><blogChannel:blink>http://www.dotnetblogengine.net/syndication.axd</blogChannel:blink><dc:creator>Peter Provost</dc:creator><dc:title>Geek Noise</dc:title><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/GeekNoise" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>Extending Visual Studio 2010 UML Designers &amp;ndash; Part 1: Getting Started</title><description>&lt;p&gt;&lt;em&gt;This is the first in a series of blog posts to show how the new UML Modeling capabilities in Visual Studio 2010 Ultimate can be extended. Later articles will expand on the examples shown here and show more advanced extensibility.&lt;/em&gt;&lt;/p&gt;  &lt;h2&gt;Introduction&lt;/h2&gt;  &lt;p&gt;In Visual Studio 2010 Ultimate we have introduced a set of new UML 2.1.2 modeling capabilities. We include designers for producing five UML diagram types:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Class Diagram &lt;/li&gt;    &lt;li&gt;Sequence Diagram &lt;/li&gt;    &lt;li&gt;Component Diagram &lt;/li&gt;    &lt;li&gt;Use Case Diagram &lt;/li&gt;    &lt;li&gt;Activity Diagram &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In addition, we also have tools for analyzing, documenting and validating your architecture. The Layer Diagram can be used to define the large layered components on your solution, map them to real code elements and later validate that your as-built system conforms to what you planned. If you have existing systems you want to investigate and understand better, we have the Architecture Explorer and a set of Dependency Graphs that you can create to see how the parts come together.&lt;/p&gt;  &lt;p&gt;As we were building our new capabilities, we realized that people would need to be able to add new capabilities to the diagrams and models we’re including in the box. You may, for example, want to add a command for refactoring the model to the menu that appears when you right click on on a shape on the Class Diagram. Or perhaps you want to be able to drag-and-drop something onto a diagram and have it create new model elements based on the source of the drag. Or maybe your enterprise has guidelines about what makes a model “valid” and want to code those validation constraints into the tool so you know when you have deviated.&lt;/p&gt;  &lt;p&gt;We can support all of those scenarios using very simple extensibility mechanisms that are present in Visual Studio 2010 Ultimate.&lt;/p&gt;  &lt;h2&gt;Before You Begin&lt;/h2&gt;  &lt;p&gt;This series of articles assumes you already have Visual Studio 2010 Beta 2 Ultimate installed on your system. To make our lives a lot easier we will also be using the Visual Studio 2010 Beta 2 SDK to get our projects started, installed and debugged.&lt;/p&gt;  &lt;p&gt;In case you are missing any of those, you can find links to all of the downloads on the &lt;a href="http://go.microsoft.com/fwlink/?LinkID=151797"&gt;Visual Studio 2010 and .NET Framework Beta 2&lt;/a&gt; Landing Page.&lt;/p&gt;  &lt;h2&gt;Creating Your First Extension Project&lt;/h2&gt;  &lt;p&gt;Visual Studio 2010 uses the Managed Extensibility Framework for lightweight extensibility and we were eager adopters of that when we created our own extensibility hooks. What this means is that to create a new UML Designer extension, you create a new VSIX Project (a VSIX is just a ZIP file that tells Visual Studio how to install the extension…see &lt;a href="http://blogs.msdn.com/quanto/archive/2009/05/26/what-is-a-vsix.aspx"&gt;What is a VSIX?&lt;/a&gt; for more information) and then add a simple little MEF component to it. Easy pie. So let’s get started…&lt;/p&gt;  &lt;h3&gt;Creating the VSIX Project&lt;/h3&gt;  &lt;p&gt;Before we can get into the extension itself, we need to get our project set-up correctly.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Create a new C# VSIX Project (you can do VB if you want but my code here is in C#). File | New | Project | Visual C# | Extensibility | VSIX Project. &lt;/li&gt;    &lt;li&gt;Add references to the following .NET Assemblies:      &lt;ul&gt;       &lt;li&gt;Microsoft.VisualStudio.Modeling.Sdk.10.0 &lt;/li&gt;        &lt;li&gt;Microsoft.VisualStudio.Uml.Extensions &lt;/li&gt;        &lt;li&gt;Microsoft.VisualStudio.Uml.Interfaces &lt;/li&gt;        &lt;li&gt;System.ComponentModel.Composition &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Open source.extension.vsixmanifest in the editor. (If it opens in an XML editor, close it and choose View Designer from the file context menu). &lt;/li&gt;    &lt;li&gt;Fill in the Name, Author, and Description sections. &lt;/li&gt;    &lt;li&gt;Set “Supported VS Editions” to Visual Studio Ultimate. &lt;/li&gt;    &lt;li&gt;Save all open files and close them. &lt;/li&gt;    &lt;li&gt;Delete the file VSIXProject.cs from the project &lt;/li&gt; &lt;/ol&gt;  &lt;h3&gt;VSSDK Beta 2 Bug Workarounds&lt;/h3&gt;  &lt;p&gt;Unfortunately there are a couple of bugs in the current VSSDK Beta 2 that we have to work around. I’ve been told they will be fixed in an update release but until then, let me take you through the project cleanup required to make this work:&lt;/p&gt;  &lt;h4&gt;Step 1 – Tweak the .csproj file&lt;/h4&gt;  &lt;ol&gt;   &lt;li&gt;Right click on your project and choose “Unload Project”. &lt;/li&gt;    &lt;li&gt;Right click again on your project and choose “Edit Yourprojectname.csproj” &lt;/li&gt;    &lt;li&gt;In the topmost property group, look for the XML tag &amp;lt;IncludeAssemblyInVSIXContainer&amp;gt;. It will be set to false. Change it to true. &lt;/li&gt;    &lt;li&gt;Save the .csproj file and reload it into Visual Studio. &lt;/li&gt; &lt;/ol&gt;  &lt;h4&gt;Step 2 – Tweak the .vsixmanifest file&lt;/h4&gt;  &lt;ol&gt;   &lt;li&gt;Right click on the file “source.extension.vsixmanifest” and choose View Code &lt;/li&gt;    &lt;li&gt;At the bottom of the file in the section called &amp;lt;Content&amp;gt; add the following line. (Yes, those vertical bars are important.)      &lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;MefComponent&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;|Yourprojectname|&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;MefComponent&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;/pre&gt;
  &lt;/li&gt;

  &lt;li&gt;Save and close the file. &lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Say “Hello World!”&lt;/h3&gt;

&lt;p&gt;Now let’s make this thing fly. We won’t get into any complicated UML or model manipulation in this article. Instead we will just add a new menu item to the context menu of the UML Class Designer. When clicked, the menu item will say Hello World.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Add a Project Reference to System.Windows.Forms (a simple way to get a MessageBox). &lt;/li&gt;

  &lt;li&gt;Add a new class named HelloWorldCommandExtension.cs to the project &lt;/li&gt;

  &lt;li&gt;Have your new class implement the ICommandExtension interface and add the following attributes to your class (you will need to add the required using directives): 
    &lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;[Export(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(ICommandExtension))] 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;[ClassDesignerExtension] &lt;/pre&gt;&lt;/pre&gt;
  &lt;/li&gt;

  &lt;li&gt;Delete the body of the QueryStatus method &lt;/li&gt;

  &lt;li&gt;Replace the Text property implementation as shown here: 
    &lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; Text
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;    &lt;span style="color: #0000ff"&gt;get&lt;/span&gt; { &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &amp;quot;&lt;span style="color: #8b0000"&gt;Hello World!&lt;/span&gt;&amp;quot;; }
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;}
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;/pre&gt;
  &lt;/li&gt;

  &lt;li&gt;Replace the Execute method as follows: 
    &lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Execute(IMenuCommand command)
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;    System.Windows.Forms.MessageBox.Show(&amp;quot;&lt;span style="color: #8b0000"&gt;Hello World!&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;}&lt;/pre&gt;&lt;/pre&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Testing Your Extension&lt;/h3&gt;

&lt;p&gt;The nice thing about using the VSIX project template is that is sets everything up for debugging and testing for you using the Visual Studio Experimental hive. To run your extension without debugging, press Ctrl+F5. To run with debugging enabled, just press F5.&lt;/p&gt;

&lt;p&gt;One the Experimental Hive is up and running, create a new Modeling Project, add a new Class diagram, and right click on the surface. You should see your “Hello World!” menu item and choosing it should display the message box. Voila!&lt;/p&gt;

&lt;h3&gt;Next Steps&lt;/h3&gt;

&lt;p&gt;In the next part of this series, I will show you how to create new model elements in the Model Store and display them on the diagram surface. Subsequent articles will explore other diagram types and more complex scenarios including creating a full VSPackage.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=Y4Ytuxl4roI:gv4vYOcY9R0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=Y4Ytuxl4roI:gv4vYOcY9R0:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=Y4Ytuxl4roI:gv4vYOcY9R0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?i=Y4Ytuxl4roI:gv4vYOcY9R0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=Y4Ytuxl4roI:gv4vYOcY9R0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=Y4Ytuxl4roI:gv4vYOcY9R0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/GeekNoise/~3/Y4Ytuxl4roI/post.aspx</link><author>peter.provost.nospam@nospam.microsoft.com (Peter Provost)</author><comments>http://www.peterprovost.org/blog/post/Extending-Visual-Studio-2010-UML-Designers-ndash3b-Part-1-Getting-Started.aspx#comment</comments><guid isPermaLink="false">http://www.peterprovost.org/blog/post.aspx?id=408cb58f-fd0e-4dfd-9732-090f33416427</guid><pubDate>Mon, 26 Oct 2009 10:28:07 -1400</pubDate><category>Technology</category><dc:publisher>Peter Provost</dc:publisher><pingback:server>http://www.peterprovost.org/blog/pingback.axd</pingback:server><pingback:target>http://www.peterprovost.org/blog/post.aspx?id=408cb58f-fd0e-4dfd-9732-090f33416427</pingback:target><slash:comments>10</slash:comments><trackback:ping>http://www.peterprovost.org/blog/trackback.axd?id=408cb58f-fd0e-4dfd-9732-090f33416427</trackback:ping><wfw:comment>http://www.peterprovost.org/blog/post/Extending-Visual-Studio-2010-UML-Designers-ndash3b-Part-1-Getting-Started.aspx#comment</wfw:comment><wfw:commentRss>http://www.peterprovost.org/blog/syndication.axd?post=408cb58f-fd0e-4dfd-9732-090f33416427</wfw:commentRss><feedburner:origLink>http://www.peterprovost.org/blog/post.aspx?id=408cb58f-fd0e-4dfd-9732-090f33416427</feedburner:origLink></item><item><title>Visual Studio 2010 and .NET 4.0 Beta 2 LIVE on MSDN</title><description>&lt;p&gt;&lt;a href="http://www.peterprovost.org/blog/image.axd?picture=WindowsLiveWriter/VisualStudio2010and.NET.0Beta2LIVEonMSDN/613C5D9D/VS2010dotNet4Logo.png" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 10px; display: inline; border-top: 0px; border-right: 0px" title="VS-2010-dotNet4-Logo" border="0" alt="VS-2010-dotNet4-Logo" align="right" src="http://www.peterprovost.org/blog/image.axd?picture=WindowsLiveWriter/VisualStudio2010and.NET.0Beta2LIVEonMSDN/3F70850C/VS2010dotNet4Logo_thumb.png" width="225" height="99" /&gt;&lt;/a&gt;This morning we released to MSDN the &lt;a href="http://go.microsoft.com/fwlink/?LinkID=151797"&gt;Beta 2 release of Visual Studio 2010 and .NET Framework 4.0 to MSDN&lt;/a&gt;. See &lt;a href="http://blogs.msdn.com/somasegar/archive/2009/10/19/announcing-visual-studio-2010-and-net-fx-4-beta-2.aspx"&gt;Soma’s blog post&lt;/a&gt; for the official bits. &lt;/p&gt;  &lt;p&gt;There is so much good stuff coming in Beta 2 it is hard to keep track of it all. Over in the Arch Tooling team where I work, we’ve done a ton of work on increasing the performance of the UML, Layer and Architecture designers we’ve made. We have also added a BUNCH of new and cool MEF-based extensibility hooks into our designers so customers can add new and interesting features that we may not have thought of.&lt;/p&gt;  &lt;p&gt;We’ve been dogfooding this release (client and server) internally for quite a while now and I have to say I really like it. It feels good, it looks good and it does what I want to do.&lt;/p&gt;  &lt;p&gt;Probably the biggest thing people will talk about initially, however is the new SKU changes we’re making in 2010. I remember way back before I joined Microsoft I criticized the “role-based” SKU system as not actually aligning with how real teams get work done. As &lt;a href="http://blogs.msdn.com/bharry/archive/2009/10/19/vs-2010-licensing-changes.aspx"&gt;Brian Harry explains on his SKU changes post&lt;/a&gt;, we’ve fixed that by adopting a SKU system very similar to that used by Windows and Office:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Microsoft Visual Studio 2010 Ultimate with MSDN&lt;/b&gt;: the comprehensive suite of application lifecycle management tools for software teams to ensure quality results from design to deployment. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Microsoft Visual Studio 2010 Premium with MSDN&lt;/b&gt;: a complete toolset for developers to deliver scalable, high quality applications. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Microsoft Visual Studio 2010 Professional with MSDN&lt;/b&gt;: the essential tool for professional development tasks to assist developers in implementing their ideas easily. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;As you can see this is a much cleaner SKU model and we’re excited to see how customers respond. &lt;/p&gt;  &lt;p&gt;This Beta 2 release is available on MSDN subscriber downloads NOW and will be generally available on Wednesday October 21. .NET Framework Beta 2 will be released in English, Japanese, German and Arabic.&amp;#160; VS Beta 2 will be released in English, Japanese, and German.&lt;/p&gt;  &lt;p&gt;There have also been a bunch of updates recently to the &lt;a href="http://msdn.microsoft.com/"&gt;Microsoft Developer Network&lt;/a&gt; (MSDN) website. A serious design update and ton of new social networking features should help people get the information they need faster than ever. &lt;a href="http://www.hanselman.com/blog/ANewMSDNForANewOperatingSystemAndANewDevelopmentEnvironment.aspx"&gt;Scott Hanselman blogged about it&lt;/a&gt; last week.&lt;/p&gt;  &lt;p&gt;We all hope you try this release out and give us tons of feedback on how it works for you and your business.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Edit: Added link to Brian Harry’s SKU post and some descriptive content about the SKUs.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=aRBrpvbWj9k:dOqWDtZ5lPY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=aRBrpvbWj9k:dOqWDtZ5lPY:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=aRBrpvbWj9k:dOqWDtZ5lPY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?i=aRBrpvbWj9k:dOqWDtZ5lPY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=aRBrpvbWj9k:dOqWDtZ5lPY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=aRBrpvbWj9k:dOqWDtZ5lPY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/GeekNoise/~3/aRBrpvbWj9k/post.aspx</link><author>peter.provost.nospam@nospam.microsoft.com (Peter Provost)</author><comments>http://www.peterprovost.org/blog/post/Visual-Studio-2010-and-NET-40-Beta-2-LIVE-on-MSDN.aspx#comment</comments><guid isPermaLink="false">http://www.peterprovost.org/blog/post.aspx?id=681c8c28-10e1-48ce-bcc3-062c94fd82c7</guid><pubDate>Mon, 19 Oct 2009 03:32:34 -1400</pubDate><category>Technology</category><dc:publisher>Peter Provost</dc:publisher><pingback:server>http://www.peterprovost.org/blog/pingback.axd</pingback:server><pingback:target>http://www.peterprovost.org/blog/post.aspx?id=681c8c28-10e1-48ce-bcc3-062c94fd82c7</pingback:target><slash:comments>1</slash:comments><trackback:ping>http://www.peterprovost.org/blog/trackback.axd?id=681c8c28-10e1-48ce-bcc3-062c94fd82c7</trackback:ping><wfw:comment>http://www.peterprovost.org/blog/post/Visual-Studio-2010-and-NET-40-Beta-2-LIVE-on-MSDN.aspx#comment</wfw:comment><wfw:commentRss>http://www.peterprovost.org/blog/syndication.axd?post=681c8c28-10e1-48ce-bcc3-062c94fd82c7</wfw:commentRss><feedburner:origLink>http://www.peterprovost.org/blog/post.aspx?id=681c8c28-10e1-48ce-bcc3-062c94fd82c7</feedburner:origLink></item><item><title>New Gaming PC Build-out &amp;ndash; Final Results</title><description>&lt;p&gt;&lt;a href="http://www.peterprovost.org/blog/image.axd?picture=WindowsLiveWriter/NewGamingPCBuildoutFinalResults/5AFD01F7/001.jpg" rel="lightbox"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="Close up of the case and internals" border="0" alt="Close up of the case and internals" align="right" src="http://www.peterprovost.org/blog/image.axd?picture=WindowsLiveWriter/NewGamingPCBuildoutFinalResults/73206C52/001_thumb.jpg" width="200" height="260" /&gt;&lt;/a&gt; It has been all done for a little over a week, and I love it. As I said in &lt;a href="http://www.peterprovost.org/blog/post/New-Gaming-PC-Build-out-ndash3b-The-Order.aspx"&gt;my last post&lt;/a&gt;, I decided, for the first time in almost 20 years, to build a machine from scratch for my home-office. I spent a bunch of time chatting with friends at work and who I play World of Warcraft with, and I think I ended up with a pretty kicking kit.&lt;/p&gt;  &lt;p&gt;The order came in 5 shipments, which had me a bit freaked out that 4 would arrive and the CPU would be a day late stuck in Kansas, but that didn’t happen. The whole thing arrived on time, and in one big pile of boxes. In addition to the order I described last time, I also ordered another Dell E228WFP to go with the one I already had.&lt;/p&gt;  &lt;p&gt;Construction of the machine was painless. Far more painless than I thought it would be. I was a bit worried about screwing it up, so I went pretty slowly. Opened each box, looked at what was there, set the instructions aside, etc.&lt;/p&gt;  &lt;p&gt;The case is pretty big. It has four fans, including a big 200mm one in the top. You’d think it would be loud, and I guess it is louder than my laptop was, but I don’t find it distracting.&lt;/p&gt;  &lt;p&gt;First thing to go in was the motherboard. I decided to put the mobo in before installing the CPU and memory and probably would do it that way next time too. Brad Wilson suggested doing the CPU and RAM on my desk to make it easier, but I figured moving that sucker around all loaded up would suck.&lt;/p&gt;  &lt;p&gt;The mobo has tons of ports (USB, eSATA and more) on the back and came with a little panel that slides into a slot on the case to expose all the ports. That was nice and simple. Motherboard slid right in, crewed it down and moved on to the next step.&lt;/p&gt;  &lt;p&gt;I bought a 750W power supply. Some would say that is too big, but the graphics card claimed that I needed a minimum 550W supply and the motherboard/CPU wanted 140W so I didn’t want to come up short. It came in a velvet bag like a bottle of Crown Royale, which made my laugh. Tons of connectors on it, which is great. Dropped right in, no issues. On to the next step.&lt;/p&gt;  &lt;p&gt;I was a bit concerned about getting the CPU in there right. I’d heard stories of people breaking off pins, or breaking the lockdown clamps and crap like that. I guess going slowly was on my side though… it dropped right in. The only issue I had was getting the heatsink clamp to grab on both sides. I had to push A LOT harder than I expected. I was a bit nervous pushing that hard and had a friend on the phone saying, “Don’t worry man, I’ve done dozens of those and never broken one. Just push on it.” Haha… he was right. In it went.&lt;/p&gt;  &lt;p&gt;After that it was smooth sailing. RAM went in next. Who knew RAM came with heat dissipation fins these days? Wow. Video card after that. Man that’s a big sucker. Takes two slots on the case, has its own big ol’ fan and two external power connectors.&lt;/p&gt;  &lt;p&gt;Hard disk, DVD came last, then got into routing power and data cables. All in all it came together quite nicely I think and I would happily do it again. I do expect I’ll upgrade this next year to a double graphics setup. Since I’m using nVidia it will be SLI based which means I probably have to buy another mobo. That is the only downside to the sweet bundle deal I got. I’ll also add another 4GB RAM sometime later this year to bring me up to 8GB.&lt;/p&gt;  &lt;p&gt;I’m running Windows7 RTM x64 which I love. Best operating system Microsoft has ever produced IMHO. WoW screams on this machine, pulling appx 75-100 fps with most of the graphics sliders turned way, way up. Here is the final setup on my desk showing the two monitors and my work laptop.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.peterprovost.org/blog/image.axd?picture=WindowsLiveWriter/NewGamingPCBuildoutFinalResults/1D93D998/dsc05371q.jpg" rel="lightbox"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Desk showing new machine and monitors" border="0" alt="Desk showing new machine and monitors" src="http://www.peterprovost.org/blog/image.axd?picture=WindowsLiveWriter/NewGamingPCBuildoutFinalResults/2F043A70/dsc05371q_thumb.jpg" width="520" height="395" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;I’m using &lt;a href="http://synergy2.sourceforge.net/"&gt;Synergy&lt;/a&gt; to share my mouse and keyboard onto the laptop which effectively makes it like a third monitor without having to actually hook it up that way. (More coming on Synergy in a follow-up post.)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=CoEL1yZWDbQ:Csx73Qf6xeo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=CoEL1yZWDbQ:Csx73Qf6xeo:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=CoEL1yZWDbQ:Csx73Qf6xeo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?i=CoEL1yZWDbQ:Csx73Qf6xeo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=CoEL1yZWDbQ:Csx73Qf6xeo:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=CoEL1yZWDbQ:Csx73Qf6xeo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/GeekNoise/~3/CoEL1yZWDbQ/post.aspx</link><author>peter.provost.nospam@nospam.microsoft.com (Peter Provost)</author><comments>http://www.peterprovost.org/blog/post/New-Gaming-PC-Build-out-ndash3b-Final-Results.aspx#comment</comments><guid isPermaLink="false">http://www.peterprovost.org/blog/post.aspx?id=b327329d-ecd0-4637-99bb-b7f7d0e1d9d7</guid><pubDate>Wed, 14 Oct 2009 04:19:50 -1400</pubDate><category>Technology</category><category>Games and Other Fun Stuff</category><dc:publisher>Peter Provost</dc:publisher><pingback:server>http://www.peterprovost.org/blog/pingback.axd</pingback:server><pingback:target>http://www.peterprovost.org/blog/post.aspx?id=b327329d-ecd0-4637-99bb-b7f7d0e1d9d7</pingback:target><slash:comments>4</slash:comments><trackback:ping>http://www.peterprovost.org/blog/trackback.axd?id=b327329d-ecd0-4637-99bb-b7f7d0e1d9d7</trackback:ping><wfw:comment>http://www.peterprovost.org/blog/post/New-Gaming-PC-Build-out-ndash3b-Final-Results.aspx#comment</wfw:comment><wfw:commentRss>http://www.peterprovost.org/blog/syndication.axd?post=b327329d-ecd0-4637-99bb-b7f7d0e1d9d7</wfw:commentRss><feedburner:origLink>http://www.peterprovost.org/blog/post.aspx?id=b327329d-ecd0-4637-99bb-b7f7d0e1d9d7</feedburner:origLink></item><item><title>New Gaming PC Build-out &amp;ndash; The Order</title><description>&lt;p&gt;&lt;a href="http://www.peterprovost.org/blog/image.axd?picture=WindowsLiveWriter/NewGamingPCBuildoutTheOrder/1EA48DEF/Antec_900.jpg" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 8px; display: inline; border-top: 0px; border-right: 0px" title="Antec_900" border="0" alt="Antec_900" align="right" src="http://www.peterprovost.org/blog/image.axd?picture=WindowsLiveWriter/NewGamingPCBuildoutTheOrder/48A48C17/Antec_900_thumb.jpg" width="170" height="170" /&gt;&lt;/a&gt; I’ve been a gamer for a few years now, mostly playing World of Warcraft but also occasionally spending time on other games. I’ve never actually owned a good gaming machine, however. I’ve always played on a laptop, mostly using and external monitor, keyboard and mouse.&lt;/p&gt;  &lt;p&gt;For a few months I’ve been considering building out a new machine from scratch. It was a bit intimidating given how long it has been since I’ve played in this space, but with the help of a few friends who know this stuff, I think I picked out a pretty good setup.&lt;/p&gt;  &lt;p&gt;I went off to &lt;a href="http://www.newegg.com/"&gt;NewEgg.com&lt;/a&gt; and started picking parts. They’ve got lots of combo deals, reviews and spec information so they really are a great place to do this from. I also used &lt;a href="http://www.tomshardware.com/charts/"&gt;Tom’s Hardware Guide&lt;/a&gt; to compare important things like CPUs and Video chipsets.&lt;/p&gt;  &lt;p&gt;When I finally clicked BUY last night, here’s what I had decided on:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Case – &lt;a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16811129021" name="CART_ITEM"&gt;Antec Nine Hundred Black Steel ATX Mid Tower&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;CPU - &lt;a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16819103675" name="CART_ITEM"&gt;AMD Phenom II X4 945 Deneb 3.0GHz Quad-Core&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Power Supply - &lt;a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16817139006" name="CART_ITEM"&gt;CORSAIR CMPSU-750TX 750W ATX12V / EPS12V SLI Ready&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Hard disk - &lt;a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16822148337" name="CART_ITEM"&gt;Seagate Barracuda 1.5TB 7200 RPM SATA 3.0Gb/s&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Motherboard - &lt;a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16813130223" name="CART_ITEM"&gt;MSI 790FX-GD70 AM3 AMD 790FX ATX AMD Motherboard&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Video - &lt;a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16814130475" name="CART_ITEM"&gt;EVGA 896-P3-1170-AR GeForce GTX 275 896MB&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;DVDR - &lt;a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16827151188" name="CART_ITEM"&gt;SAMSUNG DVD Burner Black SATA Model SH-S223L&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;RAM - &lt;a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16820145249" name="CART_ITEM"&gt;CORSAIR DOMINATOR 4GB (2 x 2GB) 240-Pin DDR3 SDRAM 1600&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I would have liked to get a 10,000 rpm drive but I got a sweet deal on a CPU/HDD/Mobo bundle and went with it for now. I’ll also probably add 4GB RAM later to bring it up to 8GB total.&lt;/p&gt;  &lt;p&gt;Also, I’m not really one for the glowy blue case thing, but the airflow on that case and the great reviews it gets sold me.&lt;/p&gt;  &lt;p&gt;We’ll see… I’ll post more once I start putting it together.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=J6gYfZYgsjY:OWSkdwGCPws:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=J6gYfZYgsjY:OWSkdwGCPws:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=J6gYfZYgsjY:OWSkdwGCPws:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?i=J6gYfZYgsjY:OWSkdwGCPws:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=J6gYfZYgsjY:OWSkdwGCPws:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=J6gYfZYgsjY:OWSkdwGCPws:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/GeekNoise/~3/J6gYfZYgsjY/post.aspx</link><author>peter.provost.nospam@nospam.microsoft.com (Peter Provost)</author><comments>http://www.peterprovost.org/blog/post/New-Gaming-PC-Build-out-ndash3b-The-Order.aspx#comment</comments><guid isPermaLink="false">http://www.peterprovost.org/blog/post.aspx?id=f2f92987-5aab-408d-90a4-d5be2f44702e</guid><pubDate>Mon, 28 Sep 2009 08:28:39 -1400</pubDate><category>Technology</category><category>Games and Other Fun Stuff</category><dc:publisher>Peter Provost</dc:publisher><pingback:server>http://www.peterprovost.org/blog/pingback.axd</pingback:server><pingback:target>http://www.peterprovost.org/blog/post.aspx?id=f2f92987-5aab-408d-90a4-d5be2f44702e</pingback:target><slash:comments>3</slash:comments><trackback:ping>http://www.peterprovost.org/blog/trackback.axd?id=f2f92987-5aab-408d-90a4-d5be2f44702e</trackback:ping><wfw:comment>http://www.peterprovost.org/blog/post/New-Gaming-PC-Build-out-ndash3b-The-Order.aspx#comment</wfw:comment><wfw:commentRss>http://www.peterprovost.org/blog/syndication.axd?post=f2f92987-5aab-408d-90a4-d5be2f44702e</wfw:commentRss><feedburner:origLink>http://www.peterprovost.org/blog/post.aspx?id=f2f92987-5aab-408d-90a4-d5be2f44702e</feedburner:origLink></item><item><title>Two Weeks as a Caregiver</title><description>&lt;p&gt;The last two weeks have been… interesting. Last month my wife Emily was diagnosed with very early breast cancer. It is simply amazing what modern imaging can find. The tumor was just a smudge on the images. A biopsy found something that was less than 1mm in side and had to get sent to Vanderbilt for diagnosis. The diagnosis was micro-invasive ductal carcinoma in her left breast. &lt;/p&gt;  &lt;p&gt;Ugh. She’s 36.&lt;/p&gt;  &lt;p&gt;Because of family history she opted for a double simple mastectomy with reconstruction including the sentinel node on the left side. In the weeks leading up to the surgery, as we prepared emotionally for it all, the most amazing thing happened. Meghan, Em’s sister, organized a huge operation of helpers and friends to do everything from bringing us food to picking up the kids after school. &lt;strong&gt;I simply can’t say enough how much we appreciate all the help our amazing friends and family gave us during this time.&lt;/strong&gt; Thank you thank you thank you.&lt;/p&gt;  &lt;p&gt;The surgery was two weeks ago and it went great. Sentinel node came back clear which means it didn’t spread. Woot! We spent the first night in the hospital which is fine, I’ve done that enough times. The hospital has good Wi-Fi so when Em wasn’t awake I goofed off on my laptop playing WoW or something else.&lt;/p&gt;  &lt;p&gt;The pain levels Em experienced were a bit more than we had expected, so we had to work a bunch to get the right mix of painkillers to keep her comfortable. After going home, the game continued. As her primary caregiver, I had to figure out how to track and manage all her pills, which was a bit daunting at first. Geek that I am, I eventually came up with a cool Excel printout that I put in the bathroom.&lt;/p&gt;  &lt;p&gt;It looked like this (I used it vertically--the time went top-to-bottom):&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://www.peterprovost.org/blog/image.axd?picture=WindowsLiveWriter/TwoWeeksasaCaregiver/2F5BBBB2/EmilyDrugSchedule.png" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Emily-Drug-Schedule" border="0" alt="Emily-Drug-Schedule" src="http://www.peterprovost.org/blog/image.axd?picture=WindowsLiveWriter/TwoWeeksasaCaregiver/4E9E6285/EmilyDrugSchedule_thumb.png" width="504" height="198" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Nerdy? Yes. Effective? HELL YES! I had alarms set on my phone and on my bedside alarm clock that reminded me every time we had to do something. It was kinda nutty, but for that first week it helped immensely. One thing you don’t want to do after major surgery is fall behind on the pain. It can be almost impossible to catch up without pushing the limits on some of the drugs and it can seriously slow down recuperation if the patient is in major pain.&lt;/p&gt;  &lt;p&gt;The other thing we had to do is what they call “strip the drains”. After the surgery, Em had two tubes coming out of her sides that went to little vacuum reservoirs to collect the fluid. Every few hours (at first) I had to drain the reservoirs and wring out the tubes to remove any clots that may have formed. Kinda yucky work, but it needed to happen. She also had a cool little “pain pump” installed that directly sent local anesthetic into the wound site via two little wiry tubes. Once the pain pump ran out, I got the job of removing the wires. I was just a bit startled how much tubing was inside her… almost 8 inches! It was kinda fun pulling them out. Hehe…&lt;/p&gt;  &lt;p&gt;Sidenote: When you’re doing the drain stripping, be really REALLY careful to not tug on the tubes or your wife will try to kick you out of the house regardless of how much meds she has on board. You have been warned. :)&lt;/p&gt;  &lt;p&gt;As the first week ramped down, the pain got much more under control. We started dropping off the schedule at night and went to a mode on-demand kind of thing. During the day I still tried to stick with it as best I could. The amount of fluid coming out dropped a lot during this time as well, which was good. The doctors has said we wouldn’t have the drains out until we were at less than 25cc in 24 hours. (At first we would get more than 25cc in 3 hours per side!)&lt;/p&gt;  &lt;p&gt;During the second week, Em still spent most of her time in bed but was much more able to get up and move around the house. She was on milder pain meds too so she was a lot less loopy which she liked. We still had amazing support coming in daily from our friends and family… food, snacks, toys and kidcare. Another huge shout out to everyone who helped.&lt;/p&gt;  &lt;p&gt;Exactly two weeks after the day of surgery we went back in to the plastic surgeon who was doing the reconstruction. Recovery was going well, swelling is low and they decided to take the drains out and add more fluid to the tissue expanders that were implanted during surgery.&lt;/p&gt;  &lt;p&gt;“It will feel like when you had your braces tightened as a kid.” Hmmm… not too bad.&lt;/p&gt;  &lt;p&gt;BULLSHIT! At least for Emily it was a bit more than that. She had to go back onto Vicodin for two days to get through it, but now she’s back to simpler stuff which makes us both happy.&lt;/p&gt;  &lt;p&gt;Looking into the future we can expect them to add more saline to the expanders for a few more weeks (which Em isn’t looking forward to), then a few months to let it all settle down. After that, the expanders come out and in another surgery they replace them with traditional saline implants.&lt;/p&gt;  &lt;p&gt;I started back to work today which is both good and bad. Good to be getting back to a sense of normalcy. Bad because I have to catch up on two weeks of shit that happened while I was gone. Oh well… things could be much worse.&lt;/p&gt;  &lt;p&gt;In addition to all the thanks I want to heap on all those who helped us during this time, I also was to say loudly how proud I am of Emily. She has been such a trooper through all this and she amazes me every day. Emily I love you more than anything else in the world.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=4mPxWyA2kHg:SzX9uKdQDrI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=4mPxWyA2kHg:SzX9uKdQDrI:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=4mPxWyA2kHg:SzX9uKdQDrI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?i=4mPxWyA2kHg:SzX9uKdQDrI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=4mPxWyA2kHg:SzX9uKdQDrI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=4mPxWyA2kHg:SzX9uKdQDrI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/GeekNoise/~3/4mPxWyA2kHg/post.aspx</link><author>peter.provost.nospam@nospam.microsoft.com (Peter Provost)</author><comments>http://www.peterprovost.org/blog/post/Two-Weeks-as-a-Caregiver.aspx#comment</comments><guid isPermaLink="false">http://www.peterprovost.org/blog/post.aspx?id=50cabb15-fcd6-4ea6-8e61-262ca72dfd42</guid><pubDate>Mon, 28 Sep 2009 06:55:40 -1400</pubDate><category>Personal</category><dc:publisher>Peter Provost</dc:publisher><pingback:server>http://www.peterprovost.org/blog/pingback.axd</pingback:server><pingback:target>http://www.peterprovost.org/blog/post.aspx?id=50cabb15-fcd6-4ea6-8e61-262ca72dfd42</pingback:target><slash:comments>4</slash:comments><trackback:ping>http://www.peterprovost.org/blog/trackback.axd?id=50cabb15-fcd6-4ea6-8e61-262ca72dfd42</trackback:ping><wfw:comment>http://www.peterprovost.org/blog/post/Two-Weeks-as-a-Caregiver.aspx#comment</wfw:comment><wfw:commentRss>http://www.peterprovost.org/blog/syndication.axd?post=50cabb15-fcd6-4ea6-8e61-262ca72dfd42</wfw:commentRss><feedburner:origLink>http://www.peterprovost.org/blog/post.aspx?id=50cabb15-fcd6-4ea6-8e61-262ca72dfd42</feedburner:origLink></item><item><title>DSL Tools Model Bus Sample</title><description>&lt;p&gt;&lt;a href="http://www.peterprovost.org/blog/image.axd?picture=WindowsLiveWriter/DSLToolsModelBusSample/19DF7C68/VisualStudioLogo.jpg" rel="lightbox"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="Visual Studio Logo" border="0" alt="Visual Studio Logo" align="right" src="http://www.peterprovost.org/blog/image.axd?picture=WindowsLiveWriter/DSLToolsModelBusSample/6E2EB26B/VisualStudioLogo_thumb.jpg" width="120" height="121" /&gt;&lt;/a&gt; Jean-Marc Prieur and Stuart Kent, fellow Team Architects who work on DSL Tools, have just posted some great new content about the new DSL ModelBus. The ModelBus enables integration across models and designers, which is something people have been asking for since DSL Tools first shipped.&lt;/p&gt;  &lt;p&gt;Check it out:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmprieur/archive/2009/06/01/a-modelbus-sample-is-now-available.aspx"&gt;A ModelBus sample is now available !&lt;/a&gt; (Jean-Marc Prieur) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/stuart_kent/archive/2009/06/03/dsl-tools-vs2010-beta1-modelbus-sample.aspx"&gt;DSL Tools VS2010 Beta1: ModelBus Sample&lt;/a&gt; (Stuart Kent) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=xQg16bUf4AE:j-xYxBZapIc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=xQg16bUf4AE:j-xYxBZapIc:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=xQg16bUf4AE:j-xYxBZapIc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?i=xQg16bUf4AE:j-xYxBZapIc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=xQg16bUf4AE:j-xYxBZapIc:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=xQg16bUf4AE:j-xYxBZapIc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/GeekNoise/~3/xQg16bUf4AE/post.aspx</link><author>peter.provost.nospam@nospam.microsoft.com (Peter Provost)</author><comments>http://www.peterprovost.org/blog/post/DSL-Tools-Model-Bus-Sample.aspx#comment</comments><guid isPermaLink="false">http://www.peterprovost.org/blog/post.aspx?id=89a82c52-8e38-49a6-9b34-cf8870dc7ed4</guid><pubDate>Thu, 04 Jun 2009 03:44:00 -1400</pubDate><category>Technology</category><dc:publisher>Peter Provost</dc:publisher><pingback:server>http://www.peterprovost.org/blog/pingback.axd</pingback:server><pingback:target>http://www.peterprovost.org/blog/post.aspx?id=89a82c52-8e38-49a6-9b34-cf8870dc7ed4</pingback:target><slash:comments>0</slash:comments><trackback:ping>http://www.peterprovost.org/blog/trackback.axd?id=89a82c52-8e38-49a6-9b34-cf8870dc7ed4</trackback:ping><wfw:comment>http://www.peterprovost.org/blog/post/DSL-Tools-Model-Bus-Sample.aspx#comment</wfw:comment><wfw:commentRss>http://www.peterprovost.org/blog/syndication.axd?post=89a82c52-8e38-49a6-9b34-cf8870dc7ed4</wfw:commentRss><feedburner:origLink>http://www.peterprovost.org/blog/post.aspx?id=89a82c52-8e38-49a6-9b34-cf8870dc7ed4</feedburner:origLink></item><item><title>Fun with PowerShell and TFS Work Items</title><description>&lt;p&gt;It all started with me wanting a better burndown chart for my team. That was relatively simple to solve as we’ve got some pretty good ones floating around inside Microsoft. (Apologies in advance but I can’t share my spreadsheet with you at this time.)&lt;/p&gt;  &lt;p&gt;Then came the fun… I wanted to be able to pull any given day’s “work done” and “work remaining” data. But for my own reasons, I don’t want this spreadsheet bound to the OLAP cube, I want to be able to mess with it.&lt;/p&gt;  &lt;p&gt;Being the PowerShell junkie that I am I was pretty sure I could do this. I found &lt;a href="http://blogs.msdn.com/jmanning/archive/2006/09/28/776141.aspx"&gt;James Manning’s killer “get-tfs.ps1” script&lt;/a&gt; which meant I didn’t have to work out that bit myself.&lt;/p&gt;  &lt;p&gt;Using it is simple:&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; $tfs = get-tfs http://mytfs:8080&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; $wi = $tfs.wit.GetWorkItem(12345)&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;As you can see, I get the TFS client object via James’s script, and then I pull a WorkItem from it. From there I can ask the $wi object for all the bits of information in the work item. Piping it to get-member showed me the following methods and properties:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;    TypeName: Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItem&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; Name                   MemberType            Definition                                                                &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; ----                   ----------            ----------                                                                &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt; FieldChanged           Event                 Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemFieldChangeEve...&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt; Copy                   Method                Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItem Copy(Microsof...&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt; Equals                 Method                bool Equals(System.Object obj)                                            &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt; GetHashCode            Method                int GetHashCode()                                                         &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt; GetNextState           Method                string GetNextState(string action)                                        &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt; GetType                Method                type GetType()                                                            &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt; IsValid                Method                bool IsValid()                                                            &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt; MergeToLatest          Method                System.Void MergeToLatest()                                               &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt; Open                   Method                System.Void Open()                                                        &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt; PartialOpen            Method                System.Void PartialOpen()                                                 &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt; Reset                  Method                System.Void Reset()                                                       &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt; Save                   Method                System.Void Save()                                                        &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt; SyncToLatest           Method                System.Void SyncToLatest()                                                &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt; ToString               Method                string ToString()                                                         &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum20"&gt;  20:&lt;/span&gt; Validate               Method                System.Collections.ArrayList Validate()                                   &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum21"&gt;  21:&lt;/span&gt; Item                   ParameterizedProperty System.Object Item(string name) {get;set;}, System.Object Item(Microsof...&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum22"&gt;  22:&lt;/span&gt; AreaId                 Property              System.Int32 AreaId {get;set;}                                            &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum23"&gt;  23:&lt;/span&gt; AreaPath               Property              System.String AreaPath {get;set;}                                         &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum24"&gt;  24:&lt;/span&gt; AttachedFileCount      Property              System.Int32 AttachedFileCount {get;}                                     &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum25"&gt;  25:&lt;/span&gt; Attachments            Property              Microsoft.TeamFoundation.WorkItemTracking.Client.AttachmentCollection A...&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum26"&gt;  26:&lt;/span&gt; ChangedBy              Property              System.String ChangedBy {get;}                                            &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum27"&gt;  27:&lt;/span&gt; ChangedDate            Property              System.DateTime ChangedDate {get;}                                        &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum28"&gt;  28:&lt;/span&gt; CreatedBy              Property              System.String CreatedBy {get;}                                            &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum29"&gt;  29:&lt;/span&gt; CreatedDate            Property              System.DateTime CreatedDate {get;}                                        &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum30"&gt;  30:&lt;/span&gt; Description            Property              System.String Description {get;set;}                                      &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum31"&gt;  31:&lt;/span&gt; DisplayForm            Property              System.String DisplayForm {get;}                                          &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum32"&gt;  32:&lt;/span&gt; ExternalLinkCount      Property              System.Int32 ExternalLinkCount {get;}                                     &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum33"&gt;  33:&lt;/span&gt; Fields                 Property              Microsoft.TeamFoundation.WorkItemTracking.Client.FieldCollection Fields...&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum34"&gt;  34:&lt;/span&gt; History                Property              System.String History {get;set;}                                          &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum35"&gt;  35:&lt;/span&gt; HyperLinkCount         Property              System.Int32 HyperLinkCount {get;}                                        &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum36"&gt;  36:&lt;/span&gt; Id                     Property              System.Int32 Id {get;}                                                    &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum37"&gt;  37:&lt;/span&gt; IsDirty                Property              System.Boolean IsDirty {get;}                                             &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum38"&gt;  38:&lt;/span&gt; IsNew                  Property              System.Boolean IsNew {get;}                                               &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum39"&gt;  39:&lt;/span&gt; IsOpen                 Property              System.Boolean IsOpen {get;}                                              &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum40"&gt;  40:&lt;/span&gt; IsPartialOpen          Property              System.Boolean IsPartialOpen {get;}                                       &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum41"&gt;  41:&lt;/span&gt; IsReadOnly             Property              System.Boolean IsReadOnly {get;}                                          &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum42"&gt;  42:&lt;/span&gt; IsReadOnlyOpen         Property              System.Boolean IsReadOnlyOpen {get;}                                      &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum43"&gt;  43:&lt;/span&gt; IterationId            Property              System.Int32 IterationId {get;set;}                                       &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum44"&gt;  44:&lt;/span&gt; IterationPath          Property              System.String IterationPath {get;set;}                                    &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum45"&gt;  45:&lt;/span&gt; Links                  Property              Microsoft.TeamFoundation.WorkItemTracking.Client.LinkCollection Links {...&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum46"&gt;  46:&lt;/span&gt; NodeName               Property              System.String NodeName {get;}                                             &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum47"&gt;  47:&lt;/span&gt; Project                Property              Microsoft.TeamFoundation.WorkItemTracking.Client.Project Project {get;}   &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum48"&gt;  48:&lt;/span&gt; Reason                 Property              System.String Reason {get;set;}                                           &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum49"&gt;  49:&lt;/span&gt; RelatedLinkCount       Property              System.Int32 RelatedLinkCount {get;}                                      &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum50"&gt;  50:&lt;/span&gt; Rev                    Property              System.Int32 Rev {get;}                                                   &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum51"&gt;  51:&lt;/span&gt; RevisedDate            Property              System.DateTime RevisedDate {get;}                                        &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum52"&gt;  52:&lt;/span&gt; Revision               Property              System.Int32 Revision {get;}                                              &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum53"&gt;  53:&lt;/span&gt; Revisions              Property              Microsoft.TeamFoundation.WorkItemTracking.Client.RevisionCollection Rev...&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum54"&gt;  54:&lt;/span&gt; State                  Property              System.String State {get;set;}                                            &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum55"&gt;  55:&lt;/span&gt; Store                  Property              Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore Store {g...&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum56"&gt;  56:&lt;/span&gt; TemporaryId            Property              System.Int32 TemporaryId {get;}                                           &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum57"&gt;  57:&lt;/span&gt; Title                  Property              System.String Title {get;set;}                                            &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum58"&gt;  58:&lt;/span&gt; Type                   Property              Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemType Type {get;} &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum59"&gt;  59:&lt;/span&gt; Uri                    Property              System.Uri Uri {get;}                                                     &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum60"&gt;  60:&lt;/span&gt; WorkItemLinkHistory    Property              Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemLinkCollection...&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum61"&gt;  61:&lt;/span&gt; WorkItemLinks          Property              Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemLinkCollection...&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum62"&gt;  62:&lt;/span&gt; GetCompletedWorkByDate ScriptMethod          System.Object GetCompletedWorkByDate();                                   &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum63"&gt;  63:&lt;/span&gt; GetRemainingWorkByDate ScriptMethod          System.Object GetRemainingWorkByDate();                                   &lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Lots of great stuff there, but what I really wanted was the work done &lt;em&gt;on any given day&lt;/em&gt; and not the current work remaining. Hmmm…&lt;/p&gt;

&lt;p&gt;After digging around in the object model (with PowerShell of course), I found the answer. The Revisions collection contains the full history of the Work Item. If I enumerated that, looking at the dates, I should be able to get what I want.&lt;/p&gt;

&lt;p&gt;A little while later I had it all worked out, setup as a type extension in PowerShell so it automatically works with every WorkItem type I get. Type extensions are added via a special XML file (more info). Here’s what I added to mine:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItem&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Members&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ScriptMethod&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;GetCompletedWorkByDate&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Script&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt;&amp;#160; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;                 $date = [datetime] $args[0]&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;                 $total = 0&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;                 $&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Revisions | % {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;                     &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($_.Fields[&lt;span style="color: #006080"&gt;'Changed Date'&lt;/span&gt;].Value.Date -eq $date) {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;                         $work = $_.Fields[&lt;span style="color: #006080"&gt;&amp;quot;Completed Work&amp;quot;&lt;/span&gt;]&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;                         &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($work -ne $&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;) { $total += ([&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;] $work.Value) - ([&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;] $work.OriginalValue) }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;                     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;                 }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; $total&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;             &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Script&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ScriptMethod&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ScriptMethod&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;GetRemainingWorkByDate&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Script&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt;&amp;#160; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;                 $date = [datetime] $args[0]&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;                 $total = 0&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;                 $&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Revisions | % {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;                     &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($_.Fields[&lt;span style="color: #006080"&gt;'Changed Date'&lt;/span&gt;].Value.Date -le $date) {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;                         $work = $_.Fields[&lt;span style="color: #006080"&gt;&amp;quot;Remaining Work&amp;quot;&lt;/span&gt;]&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;                         &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($work -ne $&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;) {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;                             $total = ([&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;] $work.Value)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;                         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;                     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;                 }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; $total&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;             &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Script&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ScriptMethod&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Members&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;What this does is add two new methods to the .NET type Microsoft.TeamFoundation.WorkItemTracking.Client.Workitem. The first method takes a date and returns the sum of the “Completed Work” field for all revisions that occurred on that date. The second method enumerates the same Revisions collection, but this time it process all revisions up through the given date looking for the last one that says anything about the “Remaining Work” field.&lt;/p&gt;

&lt;p&gt;Next step… create a script to wrap all this up into an easy to use command I call get-burndowndata.ps1:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;param&lt;/span&gt;( &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;         $deliverable = $(&lt;span style="color: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="color: #006080"&gt;&amp;quot;Must provide deliverable ID&amp;quot;&lt;/span&gt;),&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;         $date = [datetime]::Now.Date &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; )&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt; $tfs = get-tfs &lt;a href="http://mytfs:8080"&gt;http://mytfs:8080&lt;/a&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt; $deliverable = $tfs.WIT.GetWorkItem($deliverable) &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt; $result = @()&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt; $deliverable.WorkItemLinks | ? { $_.LinkType.Name &lt;span style="color: #cc6633"&gt;-eq&lt;/span&gt; &lt;span style="color: #006080"&gt;&amp;quot;Child&amp;quot;&lt;/span&gt; } | % {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;     $feature = $tfs.WIT.GetWorkItem($_.TargetId)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt;     $feature.WorkItemLinks | ? { $_.LinkType.Name &lt;span style="color: #cc6633"&gt;-eq&lt;/span&gt; &lt;span style="color: #006080"&gt;&amp;quot;Child&amp;quot;&lt;/span&gt; } | % {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt;         $task = $tfs.WIT.GetWorkItem($_.TargetId)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt;         $completed = $task.GetCompletedWorkByDate($date)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt;         $remaining = $task.GetRemainingWorkByDate($date)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt;         $obj = &lt;span style="color: #006080"&gt;&amp;quot;&amp;quot;&lt;/span&gt; | select-object ID, Title, Completed, Remaining &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum20"&gt;  20:&lt;/span&gt;         $obj.ID = $task.ID&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum21"&gt;  21:&lt;/span&gt;         $obj.Title = $task.Title&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum22"&gt;  22:&lt;/span&gt;         $obj.Completed = $completed&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum23"&gt;  23:&lt;/span&gt;         $obj.Remaining = $remaining&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum24"&gt;  24:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum25"&gt;  25:&lt;/span&gt;         $result += $obj&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum26"&gt;  26:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum27"&gt;  27:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum28"&gt;  28:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum29"&gt;  29:&lt;/span&gt; $result&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Now, getting any given day’s burndown information is as simple as calling that script and opening the result in Excel:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; get-burndowndata.ps1 12345 &lt;span style="color: #006080"&gt;&amp;quot;4/1/2009&amp;quot;&lt;/span&gt; | export-csv data_20090401.csv&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; invoke-item data_20090401.csv&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Works like a charm!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Disclaimer: &lt;/strong&gt;The get-burndowndata.ps1 script makes lots of assumptions about your TFS Work Item struction and relationships . It probably won’t work unmodified for anyone outside of DevDiv.&lt;/em&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=oUGIJy0Tapk:dOeWl_qJzZo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=oUGIJy0Tapk:dOeWl_qJzZo:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=oUGIJy0Tapk:dOeWl_qJzZo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?i=oUGIJy0Tapk:dOeWl_qJzZo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=oUGIJy0Tapk:dOeWl_qJzZo:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=oUGIJy0Tapk:dOeWl_qJzZo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/GeekNoise/~3/oUGIJy0Tapk/post.aspx</link><author>peter.provost.nospam@nospam.microsoft.com (Peter Provost)</author><comments>http://www.peterprovost.org/blog/post/Fun-with-PowerShell-and-TFS-Work-Items.aspx#comment</comments><guid isPermaLink="false">http://www.peterprovost.org/blog/post.aspx?id=7f9b2184-d0f1-47ee-993d-0375e3641779</guid><pubDate>Fri, 10 Apr 2009 06:53:23 -1400</pubDate><category>Technology</category><category>Agile Software Development</category><dc:publisher>Peter Provost</dc:publisher><pingback:server>http://www.peterprovost.org/blog/pingback.axd</pingback:server><pingback:target>http://www.peterprovost.org/blog/post.aspx?id=7f9b2184-d0f1-47ee-993d-0375e3641779</pingback:target><slash:comments>4</slash:comments><trackback:ping>http://www.peterprovost.org/blog/trackback.axd?id=7f9b2184-d0f1-47ee-993d-0375e3641779</trackback:ping><wfw:comment>http://www.peterprovost.org/blog/post/Fun-with-PowerShell-and-TFS-Work-Items.aspx#comment</wfw:comment><wfw:commentRss>http://www.peterprovost.org/blog/syndication.axd?post=7f9b2184-d0f1-47ee-993d-0375e3641779</wfw:commentRss><feedburner:origLink>http://www.peterprovost.org/blog/post.aspx?id=7f9b2184-d0f1-47ee-993d-0375e3641779</feedburner:origLink></item><item><title>Enterprise Library v5.0 Planning Has Begun!</title><description>&lt;p&gt;&lt;a href="http://www.codeplex.com/entlib"&gt;&lt;img style="border-right-width: 0px; margin: 0px 0px 0px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="PAG_Logo_NoText" border="0" alt="PAG_Logo_NoText" align="right" src="http://www.peterprovost.org/blog/image.axd?picture=PAG_Logo_NoText.png" width="113" height="90" /&gt;&lt;/a&gt; Way back in 2004, sitting in the “delta lounge” team room with Scott, Brian, Ed, T-Shak, Rohit, Prashant and Mani, I never would have believed that almost 5 years later, we’d still be shipping &lt;a href="http://www.codeplex.com/entlib"&gt;Enterprise Library&lt;/a&gt; (aka EntLib) or that we’d be up to version 5.0.&lt;/p&gt;  &lt;p&gt;A few days ago, my good friend Grigori Melnik, who is the PM for EntLib over in Patterns &amp;amp; Practices, sent me an email reminding me that they are looking for planning input on the version 5.0 features.&lt;/p&gt;  &lt;p&gt;He’s written it all up over on his blog:    &lt;br /&gt;&lt;a title="http://blogs.msdn.com/agile/archive/2009/01/26/enterprise-library-5-what-s-on-your-wish-list.aspx" href="http://blogs.msdn.com/agile/archive/2009/01/26/enterprise-library-5-what-s-on-your-wish-list.aspx"&gt;http://blogs.msdn.com/agile/archive/2009/01/26/enterprise-library-5-what-s-on-your-wish-list.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you are a current or past EntLib user, please don’t miss this opportunity to help steer the product. As I tell my wife, “If you don’t tell me what you want, you shouldn’t expect me to get you the right thing.”&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=wx7_DddPV-4:IQcQz41undY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=wx7_DddPV-4:IQcQz41undY:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=wx7_DddPV-4:IQcQz41undY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?i=wx7_DddPV-4:IQcQz41undY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=wx7_DddPV-4:IQcQz41undY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=wx7_DddPV-4:IQcQz41undY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/GeekNoise/~3/wx7_DddPV-4/post.aspx</link><author>peter.provost.nospam@nospam.microsoft.com (Peter Provost)</author><comments>http://www.peterprovost.org/blog/post/Enterprise-Library-v50-Planning-Has-Begun!.aspx#comment</comments><guid isPermaLink="false">http://www.peterprovost.org/blog/post.aspx?id=d649365d-b15b-4403-b347-fdb78b008ccb</guid><pubDate>Mon, 02 Feb 2009 02:17:39 -1400</pubDate><category>Technology</category><dc:publisher>Peter Provost</dc:publisher><pingback:server>http://www.peterprovost.org/blog/pingback.axd</pingback:server><pingback:target>http://www.peterprovost.org/blog/post.aspx?id=d649365d-b15b-4403-b347-fdb78b008ccb</pingback:target><slash:comments>0</slash:comments><trackback:ping>http://www.peterprovost.org/blog/trackback.axd?id=d649365d-b15b-4403-b347-fdb78b008ccb</trackback:ping><wfw:comment>http://www.peterprovost.org/blog/post/Enterprise-Library-v50-Planning-Has-Begun!.aspx#comment</wfw:comment><wfw:commentRss>http://www.peterprovost.org/blog/syndication.axd?post=d649365d-b15b-4403-b347-fdb78b008ccb</wfw:commentRss><feedburner:origLink>http://www.peterprovost.org/blog/post.aspx?id=d649365d-b15b-4403-b347-fdb78b008ccb</feedburner:origLink></item><item><title>Rules of the Road</title><description>&lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" border="0" alt="http://realestatetomato.typepad.com/the_real_estate_tomato/F_St.jpg" align="right" src="http://realestatetomato.typepad.com/the_real_estate_tomato/F_St.jpg" width="240" height="228" /&gt;I was digging through my OneNote today, organizing stuff and reading old notes and whatnot, when I found a page I wrote on 7/13/2006. I don’t know why I wrote it in OneNote, but it is something I’ve talked about to my direct reports, colleagues and others for a long time.&lt;/p&gt;  &lt;p&gt;It was simply titled “Rules of the Road” and had the following content:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Don't stress out about things you can't control - ignore them&lt;/li&gt;    &lt;li&gt;Don't stress out about things you can control - fix them&lt;/li&gt;    &lt;li&gt;Confront someone as soon as you recognize the problem - don't let it fester!&lt;/li&gt;    &lt;li&gt;Help people who sincerely ask for help&lt;/li&gt;    &lt;li&gt;Fight for what you believe in&lt;/li&gt;    &lt;li&gt;Admit when you are wrong&lt;/li&gt;    &lt;li&gt;Reserve the right to change your mind&lt;/li&gt;    &lt;li&gt;You do NOT have to justify saying no to someone&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;My dad taught my 1-3 when I was growing up. He had ulcer issues as a younger man because he let stress build up too much. Those rules help you get grounded when you feel stressed and show you simple ways out, even when, as in Rule #1, the out is to ignore the issue.&lt;/p&gt;  &lt;p&gt;Numbers 4-5 are extensions I’ve added over time to help me guide my life. Help your friends. Admit when you make a mistake. Do not be afraid to change your mind. Don’t let other people convince you that “flip flopping” in the presence of new information is somehow bad. When you know better, do better.&lt;/p&gt;  &lt;p&gt;The final one is the newest addition to the family. Sometimes many people, when presented with a request they has to say no to, will seek a rationalization or a story that they can use to justify saying no. Here’s the thing… you don’t have to justify saying No. You shouldn’t be rude, you should be always polite and respectful, but you can just say, “No, I’m sorry but I can’t,” and leave it at that.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=Dy1gFbcMH-o:avJq_oMeXt4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=Dy1gFbcMH-o:avJq_oMeXt4:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=Dy1gFbcMH-o:avJq_oMeXt4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?i=Dy1gFbcMH-o:avJq_oMeXt4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=Dy1gFbcMH-o:avJq_oMeXt4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=Dy1gFbcMH-o:avJq_oMeXt4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/GeekNoise/~3/Dy1gFbcMH-o/post.aspx</link><author>peter.provost.nospam@nospam.microsoft.com (Peter Provost)</author><comments>http://www.peterprovost.org/blog/post/Rules-of-the-Road.aspx#comment</comments><guid isPermaLink="false">http://www.peterprovost.org/blog/post.aspx?id=675f3ce9-532d-44aa-b313-545f2dbbe1c5</guid><pubDate>Thu, 29 Jan 2009 03:24:27 -1400</pubDate><category>Opinions, Politics, Rants</category><category>Personal</category><dc:publisher>Peter Provost</dc:publisher><pingback:server>http://www.peterprovost.org/blog/pingback.axd</pingback:server><pingback:target>http://www.peterprovost.org/blog/post.aspx?id=675f3ce9-532d-44aa-b313-545f2dbbe1c5</pingback:target><slash:comments>3</slash:comments><trackback:ping>http://www.peterprovost.org/blog/trackback.axd?id=675f3ce9-532d-44aa-b313-545f2dbbe1c5</trackback:ping><wfw:comment>http://www.peterprovost.org/blog/post/Rules-of-the-Road.aspx#comment</wfw:comment><wfw:commentRss>http://www.peterprovost.org/blog/syndication.axd?post=675f3ce9-532d-44aa-b313-545f2dbbe1c5</wfw:commentRss><feedburner:origLink>http://www.peterprovost.org/blog/post.aspx?id=675f3ce9-532d-44aa-b313-545f2dbbe1c5</feedburner:origLink></item><item><title>Elegant Code Interview</title><description>&lt;p&gt;A few weeks ago I was invited by the folks over at Elegant Code to do an interview about myself, agile and the stuff I’m working on in VSTS. The podcast for that went live today:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://elegantcode.com/2009/01/26/code-cast-19-peter-provost-on-agile-visual-studio-2010-and-architecture-tools/" href="http://elegantcode.com/2009/01/26/code-cast-19-peter-provost-on-agile-visual-studio-2010-and-architecture-tools/"&gt;http://elegantcode.com/2009/01/26/code-cast-19-peter-provost-on-agile-visual-studio-2010-and-architecture-tools/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=3gbMN-Dl4lU:ryMbNNYXWn8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=3gbMN-Dl4lU:ryMbNNYXWn8:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=3gbMN-Dl4lU:ryMbNNYXWn8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?i=3gbMN-Dl4lU:ryMbNNYXWn8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=3gbMN-Dl4lU:ryMbNNYXWn8:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=3gbMN-Dl4lU:ryMbNNYXWn8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/GeekNoise/~3/3gbMN-Dl4lU/post.aspx</link><author>peter.provost.nospam@nospam.microsoft.com (Peter Provost)</author><comments>http://www.peterprovost.org/blog/post/Elegant-Code-Interview.aspx#comment</comments><guid isPermaLink="false">http://www.peterprovost.org/blog/post.aspx?id=2b9e67fb-e502-41a8-bc6e-be0ddf049861</guid><pubDate>Mon, 26 Jan 2009 09:16:34 -1400</pubDate><category>Technology</category><category>Agile Software Development</category><dc:publisher>Peter Provost</dc:publisher><pingback:server>http://www.peterprovost.org/blog/pingback.axd</pingback:server><pingback:target>http://www.peterprovost.org/blog/post.aspx?id=2b9e67fb-e502-41a8-bc6e-be0ddf049861</pingback:target><slash:comments>0</slash:comments><trackback:ping>http://www.peterprovost.org/blog/trackback.axd?id=2b9e67fb-e502-41a8-bc6e-be0ddf049861</trackback:ping><wfw:comment>http://www.peterprovost.org/blog/post/Elegant-Code-Interview.aspx#comment</wfw:comment><wfw:commentRss>http://www.peterprovost.org/blog/syndication.axd?post=2b9e67fb-e502-41a8-bc6e-be0ddf049861</wfw:commentRss><feedburner:origLink>http://www.peterprovost.org/blog/post.aspx?id=2b9e67fb-e502-41a8-bc6e-be0ddf049861</feedburner:origLink></item><item><title>Layer Validation with the VSTS 2010 CTP</title><description>&lt;p&gt;&lt;a href="http://www.peterprovost.org/blog/image.axd?picture=WindowsLiveWriter/LayerValidationwiththeVSTS2010CTP_6F96/VSTS%20Logo_2.png" rel="lightbox"&gt;&lt;img title="VSTS Logo" style="border-right: 0px; border-top: 0px; display: inline; margin-left: 0px; border-left: 0px; margin-right: 0px; border-bottom: 0px" height="99" alt="VSTS Logo" src="http://www.peterprovost.org/blog/image.axd?picture=WindowsLiveWriter/LayerValidationwiththeVSTS2010CTP_6F96/VSTS%20Logo_thumb.png" width="160" align="right" border="0" /&gt;&lt;/a&gt; Cameron Skinner has recently made two excellent blog posts that give a great explanation of how to use Layer Diagrams for architecture and design validation in your code. He shows you the basics of creating a layer diagram and binding it to your solution elements. He then shows you how to incorporate that validation right into your build!&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/camerons/archive/2008/12/09/layer-validation-with-the-vsts-2010-ctp.aspx"&gt;Layer Validation with the VSTS 2010 CTP&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/camerons/archive/2008/12/11/incorporate-layer-validation-in-your-builds.aspx"&gt;Incorporate Layer Validation in your Builds&lt;/a&gt;&lt;/li&gt;    &lt;p&gt;     &lt;ul&gt;&lt;/ul&gt;   &lt;/p&gt; &lt;/ul&gt;  &lt;p&gt;Excellent stuff you should certainly go read.&lt;/p&gt;  &lt;p&gt;(For all this stuff, you will need to be running the &lt;a href="http://blogs.msdn.com/briankel/archive/2008/10/27/helpful-links-for-the-visual-studio-2010-ctp.aspx"&gt;VSTS 2010 CTP&lt;/a&gt;.)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=R6Iy3t08KjA:PNQpMAoVoJE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=R6Iy3t08KjA:PNQpMAoVoJE:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=R6Iy3t08KjA:PNQpMAoVoJE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?i=R6Iy3t08KjA:PNQpMAoVoJE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=R6Iy3t08KjA:PNQpMAoVoJE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=R6Iy3t08KjA:PNQpMAoVoJE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/GeekNoise/~3/R6Iy3t08KjA/post.aspx</link><author>peter.provost.nospam@nospam.microsoft.com (Peter Provost)</author><comments>http://www.peterprovost.org/blog/post/Layer-Validation-with-the-VSTS-2010-CTP.aspx#comment</comments><guid isPermaLink="false">http://www.peterprovost.org/blog/post.aspx?id=ac6cddbe-9cb8-4b99-9e96-a3f117f12cef</guid><pubDate>Thu, 11 Dec 2008 01:03:00 -1400</pubDate><category>Technology</category><dc:publisher>Peter Provost</dc:publisher><pingback:server>http://www.peterprovost.org/blog/pingback.axd</pingback:server><pingback:target>http://www.peterprovost.org/blog/post.aspx?id=ac6cddbe-9cb8-4b99-9e96-a3f117f12cef</pingback:target><slash:comments>3</slash:comments><trackback:ping>http://www.peterprovost.org/blog/trackback.axd?id=ac6cddbe-9cb8-4b99-9e96-a3f117f12cef</trackback:ping><wfw:comment>http://www.peterprovost.org/blog/post/Layer-Validation-with-the-VSTS-2010-CTP.aspx#comment</wfw:comment><wfw:commentRss>http://www.peterprovost.org/blog/syndication.axd?post=ac6cddbe-9cb8-4b99-9e96-a3f117f12cef</wfw:commentRss><feedburner:origLink>http://www.peterprovost.org/blog/post.aspx?id=ac6cddbe-9cb8-4b99-9e96-a3f117f12cef</feedburner:origLink></item><item><title>Code Generation Made Easy</title><description>&lt;p&gt;&lt;a href="http://www.peterprovost.org/blog/image.axd?picture=WindowsLiveWriter/CodeGenerationMadeEasy_9436/Visual%20Studio%20Logo_2.jpg" rel="lightbox"&gt;&lt;img title="Visual Studio Logo" style="border-right: 0px; border-top: 0px; display: inline; margin-left: 0px; border-left: 0px; margin-right: 0px; border-bottom: 0px" height="120" alt="Visual Studio Logo" src="http://www.peterprovost.org/blog/image.axd?picture=WindowsLiveWriter/CodeGenerationMadeEasy_9436/Visual%20Studio%20Logo_thumb.jpg" width="120" align="right" border="0" /&gt;&lt;/a&gt; The Text Template Transformation Toolkit, aka T4 Templates, is getting some press recently. T4 is a code generation and templating system that is built into VS, but not enough people know about it.&lt;/p&gt;  &lt;p&gt;In P&amp;amp;P, we used it for almost all of our code generation in our Software Factories, and it will be an important part of how we do code-gen in Visual Studio Team System Architecture Edition.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://reddevnews.com/news/devnews/article.aspx?editorialsid=1199"&gt;This recent article in the Redmond Developer News&lt;/a&gt; prompted me to blog this, and it is a nice overview of what T4 is all about with quotes from many of the key people involved in the development of the toolkit.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Here are some more recent posts about T4:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="T4 (Text Template Transformation Toolkit) Code Generation - Best Kept Visual Studio Secret" href="http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCodeGenerationBestKeptVisualStudioSecret.aspx"&gt;T4 Code Generation - Best Kept Visual Studio Secret&lt;/a&gt; - Scott Hanselman’s Uber Post about T4. Tons of good info here.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.t4editor.net/"&gt;Clarius T4 Editor&lt;/a&gt; – written by my good friends and former colleagues at Clarius Consulting in Argentina&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/davidebb/archive/2008/11/26/fun-with-t4-templates-and-dynamic-data.aspx"&gt;Fun with T4 Templates and Dynamic Data&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=VOpZSZAPAH8:dQP5LNZDZgU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=VOpZSZAPAH8:dQP5LNZDZgU:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=VOpZSZAPAH8:dQP5LNZDZgU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?i=VOpZSZAPAH8:dQP5LNZDZgU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=VOpZSZAPAH8:dQP5LNZDZgU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=VOpZSZAPAH8:dQP5LNZDZgU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/GeekNoise/~3/VOpZSZAPAH8/post.aspx</link><author>peter.provost.nospam@nospam.microsoft.com (Peter Provost)</author><comments>http://www.peterprovost.org/blog/post/Code-Generation-Made-Easy.aspx#comment</comments><guid isPermaLink="false">http://www.peterprovost.org/blog/post.aspx?id=e916f535-69c5-44fc-8c45-cbeb0738c91a</guid><pubDate>Wed, 03 Dec 2008 03:39:04 -1400</pubDate><category>Technology</category><dc:publisher>Peter Provost</dc:publisher><pingback:server>http://www.peterprovost.org/blog/pingback.axd</pingback:server><pingback:target>http://www.peterprovost.org/blog/post.aspx?id=e916f535-69c5-44fc-8c45-cbeb0738c91a</pingback:target><slash:comments>2</slash:comments><trackback:ping>http://www.peterprovost.org/blog/trackback.axd?id=e916f535-69c5-44fc-8c45-cbeb0738c91a</trackback:ping><wfw:comment>http://www.peterprovost.org/blog/post/Code-Generation-Made-Easy.aspx#comment</wfw:comment><wfw:commentRss>http://www.peterprovost.org/blog/syndication.axd?post=e916f535-69c5-44fc-8c45-cbeb0738c91a</wfw:commentRss><feedburner:origLink>http://www.peterprovost.org/blog/post.aspx?id=e916f535-69c5-44fc-8c45-cbeb0738c91a</feedburner:origLink></item><item><title>Visual Studio Team System 2008 Database Edition GDR - RTM</title><description>&lt;p&gt;In case you missed it yesterday, the Visual Studio Team System 2008 Database Edition GDR shipped yesterday!&lt;/p&gt;  &lt;p&gt;Here’s a snippet from &lt;a href="http://blogs.msdn.com/gertd/archive/2008/11/25/visual-studio-team-system-2008-database-edition-gdr-rtm.aspx"&gt;Gert Drapers’ announcement post&lt;/a&gt; on his Data Dude blog:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Although the name &amp;quot;GDR&amp;quot;, which stands for &amp;quot;General Redistribution Release&amp;quot;, implies otherwise, this really is a complete new release, based on a new architecture. We have taken the architectural changes from the Rosario project (Visual Studio Team System 2010) and rolled them forward in time. Rolling forward these changes help us align the GDR release with the upcoming Visual Studio Team System 2010 release and provide numerous new features and extensibility points in this release. If you would compare the GDR release with the &amp;quot;Visual Studio 2005 Team Edition for Database Professionals&amp;quot; or &amp;quot;Visual Studio Team System 2008 Database Edition&amp;quot; you will agree this is a completely new product! &lt;/p&gt;    &lt;h3&gt;The key architectural changes&lt;/h3&gt;    &lt;ul&gt;     &lt;li&gt;Model based architecture - Everything underneath the covers is based on a true model representation of the SQL Server schema. This facilitates a true offline declarative database development system where the source code defines the shapes of the schema objects. &lt;/li&gt;      &lt;li&gt;Models are implemented by Database Schema Providers, DSP's for short. - The introduction of a provider model enables multiple things at once. First of all the decoupling of release vehicles. For example when SQL Server will release a new version or adds new functionality in a service pack, like they did in SQL Server 2005 SP2 when adding &amp;quot;vardecimal&amp;quot; support, we can simply update an existing provider or provide a new one in case of a new SQL Server release. Overtime we will go to a model where the SQL Server providers will be an integral part of the SQL Server release. The provider model is also a key extensibility point, allowing 3rd parties to extend database project ecosystem and add support for other database platforms in Visual Studio Team System 2010. &lt;/li&gt;      &lt;li&gt;Tool extensibility - In this release external tool writers have full access to the T-SQL parsers (for SQL Server 2000, 2005 and 2008), the SQL Script DOM and the schema model (when inside Visual Studio). This adds on top of the ability to write extend the tools inside the platform. You can extend T-SQL refactoring by writing your own refactoring types (operations) and refactoring targets; add T-SQL Static Code Analysis rules, data generators, data distributions and test conditions. Database Projects (.dbproj) now provide a truly extensible declarative database development platform. &lt;/li&gt;      &lt;li&gt;Separation of BUILD and DEPLOY. - The separation of build &amp;amp; deploy makes it possible to deploy the output of your database project to many different targets and different points in time. Build now produces a single artifact file hat describes the schema inside your database, called a .DBSCHEMA file. This file is used by the deployment engine to deploy your schema. &lt;/li&gt;      &lt;li&gt;Standalone Deployment Engine. - The inclusion of a standalone and &lt;a href="http://blogs.msdn.com/gertd/archive/2008/08/22/redist.aspx"&gt;redistributable&lt;/a&gt; deployment engine makes it possible to deploy the output of your database projects (.DBSCHEMA files) to a target database without the need of having Visual Studio Team System Database Edition installed. This enables key scenarios like the inclusion of database schema deployment as part of your application installation. &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;All these architectural changes enable many new usage scenarios and interesting new features.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Many, many congrats to the team!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=rw23oo55h3U:q7hKJxzg5G4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=rw23oo55h3U:q7hKJxzg5G4:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=rw23oo55h3U:q7hKJxzg5G4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?i=rw23oo55h3U:q7hKJxzg5G4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=rw23oo55h3U:q7hKJxzg5G4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=rw23oo55h3U:q7hKJxzg5G4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/GeekNoise/~3/rw23oo55h3U/post.aspx</link><author>peter.provost.nospam@nospam.microsoft.com (Peter Provost)</author><comments>http://www.peterprovost.org/blog/post/Visual-Studio-Team-System-2008-Database-Edition-GDR-RTM.aspx#comment</comments><guid isPermaLink="false">http://www.peterprovost.org/blog/post.aspx?id=e1e8ca09-39ad-470b-bd5a-8e3d5ac5dfa6</guid><pubDate>Wed, 03 Dec 2008 03:26:14 -1400</pubDate><category>Technology</category><dc:publisher>Peter Provost</dc:publisher><pingback:server>http://www.peterprovost.org/blog/pingback.axd</pingback:server><pingback:target>http://www.peterprovost.org/blog/post.aspx?id=e1e8ca09-39ad-470b-bd5a-8e3d5ac5dfa6</pingback:target><slash:comments>1</slash:comments><trackback:ping>http://www.peterprovost.org/blog/trackback.axd?id=e1e8ca09-39ad-470b-bd5a-8e3d5ac5dfa6</trackback:ping><wfw:comment>http://www.peterprovost.org/blog/post/Visual-Studio-Team-System-2008-Database-Edition-GDR-RTM.aspx#comment</wfw:comment><wfw:commentRss>http://www.peterprovost.org/blog/syndication.axd?post=e1e8ca09-39ad-470b-bd5a-8e3d5ac5dfa6</wfw:commentRss><feedburner:origLink>http://www.peterprovost.org/blog/post.aspx?id=e1e8ca09-39ad-470b-bd5a-8e3d5ac5dfa6</feedburner:origLink></item><item><title>Hyper-V Management Console on Vista x64</title><description>&lt;p&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 0px 0px 0px 15px; border-left: 0px; border-bottom: 0px" height="95" alt="logo-ms-ws08-v" src="http://www.peterprovost.org/blog/image.axd?picture=WindowsLiveWriter/HyperVManagementConsoleonVistax64_DAD5/logo-ms-ws08-v_3.png" width="244" align="right" border="0" /&gt; After a great time in Los Angeles last week for PDC2008, I returned to Redmond this week to re-deliver my talk &amp;quot;Architecture Without Big-Design-Up-Front&amp;quot; for the &lt;em&gt;patterns &amp;amp; practices &lt;/em&gt;Summit this morning.&lt;/p&gt;  &lt;p&gt;I've been doing my demos for this talk using the new Visual Studio 2010 CTP and have it running on by under-the-desk machine (more power than my laptop). But since the Summit is in a different building than my demo machine, I wanted to reach into it from my laptop using the Hyper-V Management Console from Windows Vista.&lt;/p&gt;  &lt;p&gt;After getting my machine up to SP1 (one of my prereqs had failed) I was able to install it. But for some reason, I couldn't get it to connect. I could connect with Remote Desktop, but I couldn't connect with the Hyper-V Console.&lt;/p&gt;  &lt;p&gt;After a bit of digging, I found a WONDEFUL set of posts by John Howard, a PM from the Hyper-V team. In there he shows you all the security and firewall connections you should check if you have issues connecting to the Hyper-V server.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.technet.com/jhoward/archive/2008/03/28/part-1-hyper-v-remote-management-you-do-not-have-the-requested-permission-to-complete-this-task-contact-the-administrator-of-the-authorization-policy-for-the-computer-computername.aspx"&gt;Part 1 - The Server-side Stuff&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.technet.com/jhoward/archive/2008/03/28/part-2-hyper-v-remote-management-you-do-not-have-the-requested-permission-to-complete-this-task-contact-the-administrator-of-the-authorization-policy-for-the-computer-computername.aspx"&gt;Part 2 - The Client-side Stuff&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.technet.com/jhoward/archive/2008/03/30/part-3-hyper-v-remote-management-you-do-not-have-the-requested-permission-to-complete-this-task-contact-the-administrator-of-the-authorization-policy-for-the-computer-computername.aspx"&gt;Part 3 - Server-side with Server Core&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.technet.com/jhoward/archive/2008/04/01/part-4-domain-joined-environment-hyper-v-remote-management-you-do-not-have-the-requested-permission-to-complete-this-task-contact-the-administrator-of-the-authorization-policy-for-the-computer-computername.aspx"&gt;Part 4 - In a Domain-joined Environment&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.technet.com/jhoward/archive/2008/04/04/part-5-domain-client-to-workgroup-server-hyper-v-remote-management-you-do-not-have-the-requested-permission-to-complete-this-task-contact-the-administrator-of-the-authorization-policy-for-the-computer-computername.aspx"&gt;Part 5 - Weirder Domain-joined Stuff&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;It turns out that all of my settings from Part 1 were correct, but one setting in Part 2 was wrong (WHY??). I didn't need Parts 3-5, but I'm including them here for completeness.&lt;/p&gt;  &lt;p&gt;Thanks John! You saved my ass. &lt;/p&gt;  &lt;p&gt;PS. Now that PDC is behind me, I'm planning a bunch of blog content to share all that great stuff with the rest of you. Stay tuned!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=WjgKXnP4UVE:pai1xpSo2To:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=WjgKXnP4UVE:pai1xpSo2To:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=WjgKXnP4UVE:pai1xpSo2To:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?i=WjgKXnP4UVE:pai1xpSo2To:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=WjgKXnP4UVE:pai1xpSo2To:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=WjgKXnP4UVE:pai1xpSo2To:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/GeekNoise/~3/WjgKXnP4UVE/post.aspx</link><author>peter.provost.nospam@nospam.microsoft.com (Peter Provost)</author><comments>http://www.peterprovost.org/blog/post/Hyper-V-Management-Console-on-Vista-x64.aspx#comment</comments><guid isPermaLink="false">http://www.peterprovost.org/blog/post.aspx?id=13652ec5-2b75-4eab-8c40-38cce491a03b</guid><pubDate>Tue, 04 Nov 2008 09:39:52 -1400</pubDate><category>Technology</category><dc:publisher>Peter Provost</dc:publisher><pingback:server>http://www.peterprovost.org/blog/pingback.axd</pingback:server><pingback:target>http://www.peterprovost.org/blog/post.aspx?id=13652ec5-2b75-4eab-8c40-38cce491a03b</pingback:target><slash:comments>0</slash:comments><trackback:ping>http://www.peterprovost.org/blog/trackback.axd?id=13652ec5-2b75-4eab-8c40-38cce491a03b</trackback:ping><wfw:comment>http://www.peterprovost.org/blog/post/Hyper-V-Management-Console-on-Vista-x64.aspx#comment</wfw:comment><wfw:commentRss>http://www.peterprovost.org/blog/syndication.axd?post=13652ec5-2b75-4eab-8c40-38cce491a03b</wfw:commentRss><feedburner:origLink>http://www.peterprovost.org/blog/post.aspx?id=13652ec5-2b75-4eab-8c40-38cce491a03b</feedburner:origLink></item><item><title>Crazy Times Ahead - PDC, P&amp;amp;P Summit, Tech Ed EMEA</title><description>&lt;p&gt;I don't know how I get myself into these things, but it looks like I'm hitting three conferences in three weeks, only two weeks after moving my family into a new house.&lt;/p&gt;  &lt;p&gt;Foolish? Hell yeah. Fun? You bet!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoftpdc.com/"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 0px 0px 0px 15px; border-left: 0px; border-bottom: 0px" height="170" alt="Bling1" src="http://www.peterprovost.org/blog/image.axd?picture=WindowsLiveWriter/CrazyTimesAheadPDCPPSummitTechEdEMEA_11E5B/Bling1_3.jpg" width="124" align="right" border="0" /&gt;&lt;/a&gt;I'm very fortunate this year to be one of the folks representing Visual Studio Team System Architecture Edition at the &lt;a href="http://www.microsoftpdc.com/"&gt;Microsoft Professional Developer's Conference&lt;/a&gt; (PDC) in Los Angeles. PDC is always a special conference, because this is where we get to tell you what we've got coming up for developers. What is the next cool thing? Only one way to find out and that is come to PDC.&lt;/p&gt;  &lt;p&gt;My talk at PDC is called &amp;quot;Architecture Without Big Design Up Front&amp;quot;. It is a mix of agile development, architecture tooling, a little process, a real world problem to solve with real code (so made up samples here) and hopefully some fun.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.pnpsummit.com/"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="96" alt="PAG_Logo_NoText" src="http://www.peterprovost.org/blog/image.axd?picture=WindowsLiveWriter/CrazyTimesAheadPDCPPSummitTechEdEMEA_11E5B/PAG_Logo_NoText_1.png" width="120" align="right" border="0" /&gt;&lt;/a&gt; The week after PDC I fly up to Redmond to kill two birds with one stone: my monthly visit to my team in Building 25 on campus and a stop off at the P&amp;amp;P Summit to talk again. I always&amp;#160; love the &lt;a href="http://www.pnpsummit.com/"&gt;P&amp;amp;P Summit&lt;/a&gt; as a speaking gig. The audience is small, but not too small. The talks can be very interactive and you always get to talk about interesting things.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/emea/teched2008/developer/registration/"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 0px 0px 0px 5px; border-left: 0px; border-bottom: 0px" height="130" alt="TechEd_EMEA_180_Speak_DEV" src="http://www.peterprovost.org/blog/image.axd?picture=WindowsLiveWriter/CrazyTimesAheadPDCPPSummitTechEdEMEA_11E5B/TechEd_EMEA_180_Speak_DEV_3.jpg" width="130" align="right" border="0" /&gt;&lt;/a&gt; The following week, I'll be in Barcelona Spain for &lt;a href="http://www.microsoft.com/emea/teched2008/developer/registration/"&gt;Tech Ed EMEA&lt;/a&gt;. I'll be repeating my PDC talk there for people who couldn't make it to LA, and I'll also be doing my classic &amp;quot;Agile Talk on Agility&amp;quot;. (Thanks again to &lt;a href="http://www.agileprogrammer.com/oneagilecoder/"&gt;Brian Button&lt;/a&gt; from whom I stole this talk years ago). My wonderful, amazing wife &lt;a href="http://blogs.provost.org/emily/"&gt;Emily&lt;/a&gt; is coming along on this one (she never lets me go on trips like this solo), and it just happens to coincide with our 8th Anniversary, so we're going to do a little vacation while we're there.&lt;/p&gt;  &lt;p&gt;Hopefully I'll bump into some of you on the road this tour. Please if you see me walking the hallways or in the hotel lobby or at one of the many social events, feel free to walk up and introduce yourself.&lt;/p&gt;  &lt;p&gt;See you there!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=2cNhdV1XL-I:uY85QiBbcn4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=2cNhdV1XL-I:uY85QiBbcn4:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=2cNhdV1XL-I:uY85QiBbcn4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?i=2cNhdV1XL-I:uY85QiBbcn4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=2cNhdV1XL-I:uY85QiBbcn4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GeekNoise?a=2cNhdV1XL-I:uY85QiBbcn4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GeekNoise?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/GeekNoise/~3/2cNhdV1XL-I/post.aspx</link><author>peter.provost.nospam@nospam.microsoft.com (Peter Provost)</author><comments>http://www.peterprovost.org/blog/post/Crazy-Times-Ahead-PDC-Pamp3bP-Summit-Tech-Ed-EMEA.aspx#comment</comments><guid isPermaLink="false">http://www.peterprovost.org/blog/post.aspx?id=42fbe195-f7a4-407f-8374-238cbd502079</guid><pubDate>Thu, 23 Oct 2008 13:27:29 -1400</pubDate><category>Technology</category><dc:publisher>Peter Provost</dc:publisher><pingback:server>http://www.peterprovost.org/blog/pingback.axd</pingback:server><pingback:target>http://www.peterprovost.org/blog/post.aspx?id=42fbe195-f7a4-407f-8374-238cbd502079</pingback:target><slash:comments>1</slash:comments><trackback:ping>http://www.peterprovost.org/blog/trackback.axd?id=42fbe195-f7a4-407f-8374-238cbd502079</trackback:ping><wfw:comment>http://www.peterprovost.org/blog/post/Crazy-Times-Ahead-PDC-Pamp3bP-Summit-Tech-Ed-EMEA.aspx#comment</wfw:comment><wfw:commentRss>http://www.peterprovost.org/blog/syndication.axd?post=42fbe195-f7a4-407f-8374-238cbd502079</wfw:commentRss><feedburner:origLink>http://www.peterprovost.org/blog/post.aspx?id=42fbe195-f7a4-407f-8374-238cbd502079</feedburner:origLink></item></channel>
</rss>
