<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Charlie Calvert's Community Blog : Video</title><link>http://blogs.msdn.com/charlie/archive/tags/Video/default.aspx</link><description>Tags: Video</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Official Publication of Creating Windows Azure Applications with Visual Studio Videos</title><link>http://blogs.msdn.com/charlie/archive/2009/11/30/official-publication-of-videos-on-creating-windows-azure-applications-with-visual-studio.aspx</link><pubDate>Mon, 30 Nov 2009 18:15:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9930296</guid><dc:creator>Charlie Calvert</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/charlie/comments/9930296.aspx</comments><wfw:commentRss>http://blogs.msdn.com/charlie/commentrss.aspx?PostID=9930296</wfw:commentRss><description>&lt;p&gt;Though they were previewed earlier this month, we have now officially released the first of Windows Azure series of How Do I videos. Below you find a list of the videos that have been created, along with links to their location in the &lt;a href="http://msdn.microsoft.com/en-us/vcsharp/bb798022.aspx"&gt;How Do I Video library&lt;/a&gt;.&lt;/p&gt;  &lt;h2&gt;The Developing Windows Azure Applications with Visual Studio Video Series&lt;/h2&gt;  &lt;p&gt;In this series of videos Jim Nakashima shows how to develop Windows Azure applications with the tools provided in Visual Studio.&lt;/p&gt;  &lt;p&gt;All these videos were created by &lt;a href="http://blogs.msdn.com/charlie"&gt;Charlie Calvert&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/vcsharp/ee830329.aspx"&gt;&lt;img title="" alt="Windows Azure: Getting the Tools, Creating a Project, Creating Roles and Configuration" src="http://i.msdn.microsoft.com/ee830329.1_150x113(en-us,MSDN.10).jpg" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/vcsharp/ee830329.aspx"&gt;#1 | Windows Azure: Getting the Tools, Creating a Project, Creating Roles and Configuration&lt;/a&gt;     &lt;br /&gt;(14 minutes, 26 seconds)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/vcsharp/ee830330.aspx"&gt;&lt;img title="" alt="Running and Debugging a Windows Azure Application Locally with Visual Studio" src="http://i.msdn.microsoft.com/ee830330.2_150x113(en-us,MSDN.10).jpg" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/vcsharp/ee830330.aspx"&gt;#2 | Running and Debugging a Windows Azure Application Locally with Visual Studio&lt;/a&gt;     &lt;br /&gt;(6 minutes, 11 seconds)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/vcsharp/ee830334.aspx"&gt;&lt;img alt="Deploying Windows Azure Applications from Visual Studio" src="http://i.msdn.microsoft.com/ee830334.3_150x113(en-us,MSDN.10).jpg" width="150" height="120" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/vcsharp/ee830334.aspx"&gt;#3 | Deploying Windows Azure Applications from Visual Studio&lt;/a&gt;     &lt;br /&gt;(6 minutes, 56 seconds)&lt;/p&gt; &lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.msdn.com%2fcharlie%2farchive%2f2009%2f11%2f30%2fofficial-publication-of-videos-on-creating-windows-azure-applications-with-visual-studio.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.msdn.com%2fcharlie%2farchive%2f2009%2f11%2f30%2fofficial-publication-of-videos-on-creating-windows-azure-applications-with-visual-studio.aspx" /&gt;&lt;/a&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9930296" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/charlie/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Video/default.aspx">Video</category><category domain="http://blogs.msdn.com/charlie/archive/tags/C_2300_+4.0/default.aspx">C# 4.0</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Cloud+Computing/default.aspx">Cloud Computing</category></item><item><title>HDI Video: Generate from Usage in Visual Studio 2010 with Karen Liu</title><link>http://blogs.msdn.com/charlie/archive/2009/11/07/hdi-video-generate-from-usage-with-karen-liu.aspx</link><pubDate>Sat, 07 Nov 2009 23:45:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9898211</guid><dc:creator>Charlie Calvert</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/charlie/comments/9898211.aspx</comments><wfw:commentRss>http://blogs.msdn.com/charlie/commentrss.aspx?PostID=9898211</wfw:commentRss><description>&lt;style type="text/css"&gt;




span.squiggle { color: red; text-decoration: underline;}
.listing { font-weight: bold }
.figure { font-weight: bold }
.note { font-weight: italic; background: lightgray; border: 1px solid black; }&lt;/style&gt;  &lt;p&gt;Karen Liu, the Lead Program Manager for the Visual C# and Visual Basic IDEs, has created a &lt;a href="http://msdn.microsoft.com/en-us/vcsharp/ee633445.aspx"&gt;new video&lt;/a&gt; on &lt;a href="http://msdn.microsoft.com/en-us/library/dd409796(VS.100).aspx"&gt;Generate from Usage&lt;/a&gt; (GFU), a feature found in Visual Studio 2010, Beta 2. This post recaps what is included in the video, including the sections that show how GFU can be used to enhance &lt;a href="http://www.extremeprogramming.org/rules/testfirst.html"&gt;test first development&lt;/a&gt;. The video is shot in both VB and C#. Since this is a C# blog, I’ll show only C# code, and will translate the VB code that Karen shows into C#.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Download the &lt;a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=linqfarm&amp;amp;DownloadId=8077"&gt;source code&lt;/a&gt; from the &lt;a href="http://code.msdn.microsoft.com/linqfarm"&gt;LINQ Farm&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Generate from Usage (GFU) is a new feature in 2010 that allows you to write code that consumes a library or API before that API even exists. Using Visual Studio menus or shortcuts, you can automatically generate classes, constructors, methods, fields and properties from the code you typed in the editor.&lt;/p&gt;  &lt;p&gt;As the video begins, Karen first types in the code to initialize a class called &lt;strong&gt;Automobile&lt;/strong&gt; that does not yet exist:&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:5cf3a3f0-6bee-4a46-8d17-8a5e29158786" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0 0 0 2em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; myCar = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; Automobile(Make: &lt;span style="color:#a31515"&gt;&amp;quot;Honda&amp;quot;&lt;/span&gt;, Model: &lt;span style="color:#a31515"&gt;&amp;quot;Accord&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Notice that the class name &lt;strong&gt;Automobile&lt;/strong&gt; is &lt;u&gt;not&lt;/u&gt; colored in teal, which is Visual Studio’s way of telling you that it does not yet it exist. When seen inside Visual Studio, the word &lt;strong&gt;Automobile&lt;/strong&gt; will also have red squiggly (or wavy) underline, and a small blue&lt;strong&gt; smart tag &lt;/strong&gt;under the letter A, as shown in Figure 1. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/HDIVideoGeneratefromUsagewithKarenLiu_7209/Figure01_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Figure01" border="0" alt="Figure01" src="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/HDIVideoGeneratefromUsagewithKarenLiu_7209/Figure01_thumb.png" width="644" height="161" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p class="figure"&gt;Figure 1: The red squiggle is Visual Studio’s way of telling you that the type &lt;u&gt;Automobile&lt;/u&gt; will not compile. The blue &lt;em&gt;smart tag&lt;/em&gt; under the letter A let’s the user know that an expansion tip is available by simultaneously pressing the Control key and a period (Ctrl + .).&lt;/p&gt;  &lt;p&gt;The smart tag under the letter A is Visual Studio’s way of telling you to press the control and period keys to bring up a special expansion tip, as shown in Figure 2. Here we see two options, one for directly creating a class called &lt;strong&gt;Automobile&lt;/strong&gt;, and the other for bringing up a dialog which allows us to define or tweak the details of the type of we create.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/HDIVideoGeneratefromUsagewithKarenLiu_7209/Figure02_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Figure02" border="0" alt="Figure02" src="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/HDIVideoGeneratefromUsagewithKarenLiu_7209/Figure02_thumb.png" width="644" height="247" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p class="figure"&gt;Figure 2: Viewing an expansion tip in Visual Studio.&lt;/p&gt;  &lt;p&gt;You can also bring up the options to create a new class or type by right clicking on the word &lt;strong&gt;Automobile&lt;/strong&gt; and selecting &lt;strong&gt;Generate&lt;/strong&gt; from the popup menu, as shown in Figure 3.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;a href="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/HDIVideoGeneratefromUsagewithKarenLiu_7209/Figure03_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Figure03" border="0" alt="Figure03" src="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/HDIVideoGeneratefromUsagewithKarenLiu_7209/Figure03_thumb.png" width="644" height="174" /&gt;&lt;/a&gt; &lt;/strong&gt;&lt;/p&gt;  &lt;p class="figure"&gt;Figure 3: A second way to generate a class is to right click the word &lt;u&gt;Automobile&lt;/u&gt; and choose &lt;u&gt;Generate &lt;/u&gt;from the popup menu.&lt;/p&gt;  &lt;p&gt;If you select the option to create a new class, then Visual Studio will automatically generate a new file called &lt;strong&gt;Automobile.cs&lt;/strong&gt; and place inside it a new class called &lt;strong&gt;Automobile&lt;/strong&gt;. The entire generated file is shown in Listing 1.&lt;/p&gt;  &lt;p class="listing"&gt;Listing 1: The code generate when you choose to create a new class based on an undefined identifier in Visual Studio 2010.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:51302077-3aa5-4dcb-94f7-45db8bcc830f" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;using&lt;/span&gt; System;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;using&lt;/span&gt; System.Linq;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;using&lt;/span&gt; System.Text;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;namespace&lt;/span&gt; DeleteMe&lt;/li&gt; &lt;li&gt;{&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Automobile&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;/li&gt; &lt;li&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;You can now go back to your original source file where you will see that there is still a red squiggly and blue tool tip, as shown in Figure 4. These hints are shown because we have not yet created a constructor for the &lt;strong&gt;Automobile&lt;/strong&gt; class. If we again press control plus period, then the option to generate these code elements is made available to us, as shown in Figure 4.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/HDIVideoGeneratefromUsagewithKarenLiu_7209/Figure04_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Figure04" border="0" alt="Figure04" src="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/HDIVideoGeneratefromUsagewithKarenLiu_7209/Figure04_thumb_1.png" width="644" height="146" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p class="figure"&gt;Figure 4: Selecting the smart tag a second time brings up an option to automatically generate the constructor and associated fields for your class.&lt;/p&gt;  &lt;p&gt;The code that is generated by selecting the expansion tip is shown in Listing 2. Notice that on lines 10 and 11 fields were created for your class and on lines 16 and 17 code was generated inside the constructor for initializing them. A comment in the form of a &lt;strong&gt;TODO&lt;/strong&gt; item is also added to your class. These &lt;strong&gt;TODO&lt;/strong&gt; items are visible in the Visual Studio &lt;a href="http://msdn.microsoft.com/en-us/library/zce12xx2(VS.100).aspx"&gt;Task List&lt;/a&gt;. You can access the &lt;strong&gt;Task List &lt;/strong&gt;by choosing &lt;strong&gt;View | Task List &lt;/strong&gt;from the menu, or by pressing &lt;strong&gt;Ctrl+W, T&lt;/strong&gt;. Be sure to choose the &lt;strong&gt;Comments&lt;/strong&gt; option from the drop down at the top of the &lt;strong&gt;Task List&lt;/strong&gt;.&lt;/p&gt;  &lt;p class="listing"&gt;Listing 2: The code for the Automobile’s constructor is automatically generated by the IDE.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:39825868-2600-44c3-aca2-c3e2393bc188" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;using&lt;/span&gt; System;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;using&lt;/span&gt; System.Linq;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;using&lt;/span&gt; System.Text;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;namespace&lt;/span&gt; GenerateFromUsageSample&lt;/li&gt; &lt;li&gt;{&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Automobile&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; Make;&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; Model;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; Automobile(&lt;span style="color:#0000ff"&gt;string&lt;/span&gt; Make, &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; Model)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#008000"&gt;// TODO: Complete member initialization&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.Make = Make;&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.Model = Model;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Karen next types in code for a &lt;strong&gt;TurnLeft &lt;/strong&gt;method, and for a property called &lt;strong&gt;IsFacingNorth&lt;/strong&gt;. As she types each item, a smart tag appears, and again she has the option to press &lt;strong&gt;Ctrl+.&lt;/strong&gt; to automatically generate code for the &lt;strong&gt;Automobile &lt;/strong&gt;class. The code typed in the program’s entry point is shown in Listing 3, and the code generated by the IDE is shown mostly in Listing 4. Notice, however, that code for a private object called &lt;strong&gt;distance &lt;/strong&gt;was automatically generated in the &lt;strong&gt;Main&lt;/strong&gt; method. The IDE actually gives you the option to create either a &lt;strong&gt;private &lt;/strong&gt;field, as shown here, or a &lt;strong&gt;public&lt;/strong&gt; property.&lt;/p&gt;  &lt;p class="listing"&gt;Listing 3: The complete code for Karen’s first sample includes a constructor, a method called &lt;u&gt;TurnLeft&lt;/u&gt;, and a property called &lt;u&gt;IsFacingNorth&lt;/u&gt;.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:98dfe693-a81d-4df2-8435-00a22ea59678" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;namespace&lt;/span&gt; GenerateFromUsage&lt;/li&gt; &lt;li&gt;{&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Program&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff"&gt;object&lt;/span&gt; distance;&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; Main(&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;[] args)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; myCar = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Automobile&lt;/span&gt;(Make: &lt;span style="color:#a31515"&gt;&amp;quot;Honda&amp;quot;&lt;/span&gt;, Model: &lt;span style="color:#a31515"&gt;&amp;quot;Accord&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;myCar.TurnLeft(distance);&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;myCar.IsFacingNorth = &lt;span style="color:#0000ff"&gt;true&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p class="listing"&gt;Listing 4: The code generated by the IDE for the TurnLeft method and the IsFacingNorth property.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f7d9d6bd-a681-4139-b84f-0468606a8287" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;using&lt;/span&gt; System;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;namespace&lt;/span&gt; GenerateFromUsage&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;{&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Automobile&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; Make;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; Model;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; Automobile(&lt;span style="color:#0000ff"&gt;string&lt;/span&gt; Make, &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; Model)&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#008000"&gt;// TODO: Complete member initialization&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.Make = Make;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.Model = Model;&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;internal&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; TurnLeft(&lt;span style="color:#0000ff"&gt;object&lt;/span&gt; distance)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;throw&lt;/span&gt; &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;NotImplementedException&lt;/span&gt;();&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;bool&lt;/span&gt; IsFacingNorth { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;When looking at Listing 4, notice that code for generating a &lt;strong&gt;NotImplementedException &lt;/strong&gt;is automatically generated in the &lt;strong&gt;TurnLeft &lt;/strong&gt;method. The IDE was also smart enough to discern that the &lt;strong&gt;IsFacingNorth&lt;/strong&gt; property returns a &lt;strong&gt;bool&lt;/strong&gt;. All the lines of code shown in Listing 4 were generated by typing just three lines of code in the &lt;strong&gt;main &lt;/strong&gt;method found in Listing 3.&lt;/p&gt;  &lt;h2&gt;The C# Side&lt;/h2&gt;  &lt;p&gt;In the second part of the video Karen shows how you can use &lt;em&gt;generate from usage&lt;/em&gt; (GFU) to enhance your experience when creating unit tests. Many theorists advocate using a test first methodology in which you first create a test, and then write the code that you want to test. You will see that GFU can be used to make this style of development quite natural and simple to use inside of Visual Studio.&lt;/p&gt;  &lt;p class="note"&gt;NOTE: This section of the post requires high end versions of Visual Studio that contain the test wizards. Even if you don’t have those tools, you can still follow along to see how Generate from Usage can be used in all versions of Visual Studio to make it easier to create unit tests.&lt;/p&gt;  &lt;p&gt;Begin by starting a new console application called &lt;strong&gt;Customer&lt;/strong&gt;. Choose &lt;strong&gt;Tests | New Test &lt;/strong&gt;from the Visual Studio menu. Select &lt;strong&gt;Basic Unit Test&lt;/strong&gt; from the dialog, and name it &lt;strong&gt;Customers&lt;/strong&gt;, as shown in Figure 5. When you press &lt;strong&gt;OK &lt;/strong&gt;in the &lt;strong&gt;Add New Test &lt;/strong&gt;dialog you will be prompted for the name of your unit test project. Type in &lt;strong&gt;CustomerTests&lt;/strong&gt;. When you are done, the &lt;strong&gt;Solution Explorer&lt;/strong&gt; for your project should look as it does in Figure 6.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/HDIVideoGeneratefromUsagewithKarenLiu_7209/Figure06_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Figure06" border="0" alt="Figure06" src="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/HDIVideoGeneratefromUsagewithKarenLiu_7209/Figure06_thumb.png" width="577" height="484" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p class="figure"&gt;Figure 5: Create a new unit test project that will house a file called Customers.&lt;/p&gt;  &lt;p&gt;Right click on the &lt;strong&gt;Customer&lt;/strong&gt; node in the &lt;strong&gt;solution explorer&lt;/strong&gt; and choose &lt;strong&gt;Add | New Folder&lt;/strong&gt; to create a new directory called &lt;strong&gt;Models&lt;/strong&gt;. When you are done you should see a new node in the &lt;strong&gt;solution explorer&lt;/strong&gt;, as shown in Figure 6. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/HDIVideoGeneratefromUsagewithKarenLiu_7209/Figure07_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Figure07" border="0" alt="Figure07" src="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/HDIVideoGeneratefromUsagewithKarenLiu_7209/Figure07_thumb.png" width="315" height="386" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p class="figure"&gt;Figure 6: This solution contains two projects, one a simple console application called &lt;u&gt;Customer &lt;/u&gt;that contains a folder called &lt;u&gt;Models&lt;/u&gt;. The other project is called &lt;u&gt;CustomerTests&lt;/u&gt; and it is designed to hold unit tests.&lt;/p&gt;  &lt;p&gt;I want to check if my Customer list is create correctly. In the Customers file from your test project, create a method called IsCustomerListValid. Inside the method create code to initialize a &lt;strong&gt;CustomerList&lt;/strong&gt; object, as shown in Listing X. &lt;/p&gt;  &lt;p&gt;Listing 5: A simple unit test with the code to initialize a class called CustomerList. Note that the CustomerList is not colored in Teal, since its declaration has not been created yet.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:fbbd71a3-4443-4c5b-bdba-8d3dee069dfa" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;using&lt;/span&gt; System;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;using&lt;/span&gt; System.Text;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;using&lt;/span&gt; System.Linq;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;using&lt;/span&gt; Microsoft.VisualStudio.TestTools.UnitTesting;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;namespace&lt;/span&gt; CustomerTests&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;{&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;[&lt;span style="color:#2b91af"&gt;TestClass&lt;/span&gt;]&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Customers&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;[&lt;span style="color:#2b91af"&gt;TestMethod&lt;/span&gt;]&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; IsCustomerListValid()&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;CustomerList cust = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; CustomerList();&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;At this stage, there is no CustomerList, so in Visual Studio you will again see the red squiggles and the blue smart tag, just as I showed in Figure 2. Without needing to take your hands off the keyboard, you can press control plus dot to bring up the expansion tips as in Figure 2. This time select &lt;strong&gt;New Type. &lt;/strong&gt;A dialog comes up like the one shown in Figure 7. In the dialog we can change the accessibility, the kind of code to generate and the project file and directory where we want to place it. Set the &lt;strong&gt;Access&lt;/strong&gt; to &lt;strong&gt;public&lt;/strong&gt; and the &lt;strong&gt;Kind&lt;/strong&gt; to &lt;strong&gt;class&lt;/strong&gt;. Use the &lt;strong&gt;Project&lt;/strong&gt; drop down to select the &lt;strong&gt;Customer&lt;/strong&gt; project and the the &lt;strong&gt;Create new file&lt;/strong&gt; drop down to select the &lt;strong&gt;Model&lt;/strong&gt; directory. Type in &lt;strong&gt;CustomerList.cs &lt;/strong&gt;as the name of the file to create. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/HDIVideoGeneratefromUsagewithKarenLiu_7209/Figure05_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Figure05" border="0" alt="Figure05" src="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/HDIVideoGeneratefromUsagewithKarenLiu_7209/Figure05_thumb.png" width="378" height="407" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p class="figure"&gt;Figure 7. Selecting the kind of type that you want to create, as well as the project, folder and file in which you want to place it.&lt;/p&gt;  &lt;p&gt;When you press OK in the&lt;strong&gt; Generate New Type&lt;/strong&gt; dialog, the new type will be created, and the IDE will add the using directive and the correct references. You can now fill out your test and your generated class as shown in Listing 6 and 7. Note that we have used generate from usage to enhance the &lt;strong&gt;CustomerList&lt;/strong&gt; class with a method called &lt;strong&gt;Add.&lt;/strong&gt; I then manually wrote code to create a list into which the text we pass can be inserted.&lt;/p&gt;  &lt;p class="listing"&gt;Listing 6: A simple unit test.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:2d4608a7-da3a-480f-8b2f-520f6b9aea55" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;using&lt;/span&gt; Customer.Models;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;using&lt;/span&gt; Microsoft.VisualStudio.TestTools.UnitTesting;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;namespace&lt;/span&gt; CustomerTests&lt;/li&gt; &lt;li&gt;{&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;[&lt;span style="color:#2b91af"&gt;TestClass&lt;/span&gt;]&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Customers&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;[&lt;span style="color:#2b91af"&gt;TestMethod&lt;/span&gt;]&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; IsCustomerListValid()&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#2b91af"&gt;CustomerList&lt;/span&gt; cust = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;CustomerList&lt;/span&gt;();&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;cust.Add(&lt;span style="color:#a31515"&gt;&amp;quot;Karen&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#2b91af"&gt;Assert&lt;/span&gt;.IsNotNull(cust);&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;/li&gt; &lt;li&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p class="listing"&gt;Listing 7: The using directive, namespace, CustomerList class and header for the Add method were auto-generated. I manually created the list and inserted the call to Add an item into it.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:2c11c353-a69d-4687-bb78-e50d45f80650" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;namespace&lt;/span&gt; Customer.Models&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;{&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af"&gt;CustomerList&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;&amp;gt; list = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;&amp;gt;();&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; Add(&lt;span style="color:#0000ff"&gt;string&lt;/span&gt; p)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;list.Add(p);&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;You can now use the Test | View menu to bring up the Test List Editor and Test View to select and run your test.&lt;/p&gt;  &lt;h2&gt;Summary&lt;/h2&gt;  &lt;p&gt;In this post you got a second look at the code used in Karen Liu’s generate from usage video. You saw that GFU can be used to create classes, constructors, parameters, properties and fields. You also explored the powerful &lt;strong&gt;Generate New Type&lt;/strong&gt; dialog which gives you the flexibility to choose the kind of type you want to create, as well as the project, directory and file in which you want to insert it. Finally, you saw that generate from usage can be powerful aid when you are engaged in test first development.&lt;/p&gt;  &lt;h2&gt;Resources&lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;Download the &lt;a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=linqfarm&amp;amp;DownloadId=8077"&gt;source code&lt;/a&gt; from the &lt;a href="http://code.msdn.microsoft.com/linqfarm"&gt;LINQ Farm&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/vcsharp/ee633445.aspx"&gt;The How Do I Generate from Usage Video&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd409796(VS.100).aspx"&gt;Generate from Usage in the MSDN Library&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/vbteam/archive/2008/12/13/walkthrough-tdd-support-with-the-generate-from-usage-feature-in-vs-2010-lisa-feigenbaum.aspx"&gt;Walkthrough: TDD Support with the Generate From Usage Feature in VS 2010 (Lisa Feigenbaum)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blog.noop.se/archive/2009/06/16/generate-from-usage-in-visual-studio-2010.aspx"&gt;Magnus Martensson on Generate from Usage&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/zce12xx2(VS.100).aspx"&gt;Task Lists and TODO comments in the MSDN Library&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.msdn.com%2fcharlie%2farchive%2f2009%2f11%2f07%2fhdi-video-generate-from-usage-with-karen-liu.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.msdn.com%2fcharlie%2farchive%2f2009%2f11%2f07%2fhdi-video-generate-from-usage-with-karen-liu.aspx" /&gt;&lt;/a&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9898211" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/charlie/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Video/default.aspx">Video</category><category domain="http://blogs.msdn.com/charlie/archive/tags/LinqFarm/default.aspx">LinqFarm</category><category domain="http://blogs.msdn.com/charlie/archive/tags/C_2300_+4.0/default.aspx">C# 4.0</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Testing/default.aspx">Testing</category></item><item><title>CSharp “How Do I Videos (Podcasts)” for the Zune Software</title><link>http://blogs.msdn.com/charlie/archive/2009/11/01/csharp-how-do-i-videos-for-the-zune-software.aspx</link><pubDate>Sun, 01 Nov 2009 20:54:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9915933</guid><dc:creator>Charlie Calvert</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/charlie/comments/9915933.aspx</comments><wfw:commentRss>http://blogs.msdn.com/charlie/commentrss.aspx?PostID=9915933</wfw:commentRss><description>&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;p&gt;It can be handy to create custom RSS feeds for the Zune so that it is easy to download and watch selected videos. You can watch these videos either on your PC, or on the Zune itself. &lt;a href="http://www.elvenware.com/charlie/rss/CSharpZuneReadyHowDoIVideos.rss"&gt;Here&lt;/a&gt; is a custom feed I created that contains all the new C# 4.0 language and IDE &lt;a href="http://msdn.microsoft.com/en-us/bb629407.aspx"&gt;How Do I Videos&lt;/a&gt;, plus a selection of other How Do I videos. In total, at this time, there are 35 videos in the feed. The RSS I created uses a simple and quite minimal syntax tested only with Internet Explorer 8 and the software for Zune 4.0.740.0. The source for the C# program that generated the feed includes regular expressions, LINQ to Objects and LINQ to SQL. I discuss that program briefly at the bottom of this post.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.elvenware.com/charlie/rss/CSharpZuneReadyHowDoIVideos.rss"&gt;Charlie’s Custom C# and Visual Studio Feed&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/bb629407.aspx"&gt;The How Do I Video Home Page with over 500 Videos&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;How Do Videos for &lt;a href="http://msdn.microsoft.com/en-us/vstudio/bb507746.aspx"&gt;Visual Studio&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/vcsharp/bb798022.aspx"&gt;How Do I Videos for C#&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Download the &lt;a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=linqfarm&amp;amp;DownloadId=7971"&gt;source&lt;/a&gt; for this post from the &lt;a href="http://code.msdn.microsoft.com/linqfarm"&gt;LINQ farm&lt;/a&gt;. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You can use this custom feed from inside IE, as shown in Figure 0. However, I really created this feed to run on the Zune, so you should import the feed into the Zune software as a series of podcast. I explain this latter process in the next section of this post.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/CSharpHowDoIVideosfortheZuneSoftware_AB92/Figure00_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Figure00" border="0" alt="Figure00" src="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/CSharpHowDoIVideosfortheZuneSoftware_AB92/Figure00_thumb.png" width="644" height="471" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Figure 0: Viewing a simple RSS feed in IE 8. Click the image to expand it.&lt;/strong&gt;&lt;/p&gt;  &lt;h2&gt;Using the Feed in the Zune Software&lt;/h2&gt;  &lt;p&gt;In this section I provide a quick tutorial for those who’ve never used Podcasts with a Zune. Open &lt;a href="http://www.elvenware.com/charlie/rss/CSharpZuneReadyHowDoIVideos.rss"&gt;the custom RSS&lt;/a&gt; feed in IE and grab the URL from the address bar. Alternately, you can just right click on any of the links to the feed in this document and choose &lt;strong&gt;Copy Shortcut &lt;/strong&gt;or whatever the equivalent command is in Firefox or other browsers. Open the Zune software and turn to the &lt;strong&gt;Collection | Podcasts&lt;/strong&gt; page. Click the button on the bottom left of the page called &lt;strong&gt;Add a Podcast&lt;/strong&gt;. The &lt;strong&gt;Subscribe&lt;/strong&gt; dialog appears. Paste in the URL for the feed, as shown in Figure 1, and then click the &lt;strong&gt;Subscribe&lt;/strong&gt; button. The various How Do I podcasts included in the feed should begin downloading to your system, as shown in Figure 2.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Figure01" border="0" alt="Figure01" src="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/CSharpHowDoIVideosfortheZuneSoftware_AB92/Figure01_3.png" width="471" height="223" /&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Figure 1: Subscribing to an RSS Podcast feed in Zune Software 4.0.740.0&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/CSharpHowDoIVideosfortheZuneSoftware_AB92/Figure02_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Figure02" border="0" alt="Figure02" src="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/CSharpHowDoIVideosfortheZuneSoftware_AB92/Figure02_thumb.png" width="644" height="317" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Figure 2: Viewing a feed in the Zune Software.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You can then plug in your Zune and right click on the feed and choose to sync the videos to your device. I’ll confess, however, that many of these videos look best on a PC, since you need a certain amount of screen real estate to adequately view the code typed in by the presenters. &lt;/p&gt;  &lt;h2&gt;&lt;strong&gt;Creating the RSS Feed by Screen Scrapping&lt;/strong&gt;&lt;/h2&gt;  &lt;p&gt;I created this feed by the time honored hack of screen scraping. I first copied the URL for the home page of each video and passed it to C# code designed to download the HTML associated with the URL. The program parsed the HTML looking for the elements I needed in my feed. LINQ to XML provided a handy tool for creating my simple RSS feed. I simply passed in the data retrieved from the HTML file to a set of LINQ routines designed to produce the XML for an RSS feed. &lt;/p&gt;  &lt;p&gt;This technique is simple to implement.&amp;#160; Screen scraping is nevertheless a very brittle practice, as my code will last only so long as the basic structure of the HTML pages that I’m parsing remains static. How long such conditions will prevail one can only suppose.&lt;/p&gt;  &lt;p&gt;I called my quick and dirty program &lt;strong&gt;CreateRssFeed, &lt;/strong&gt;and its source is available for &lt;a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=linqfarm&amp;amp;DownloadId=7971"&gt;download&lt;/a&gt;. The program is based on two custom classes, one for generating the RSS feed, the other for using Regular Expressions to parse the HTML file.&amp;#160; I store the URLs for the 35 HDI video pages in a file called &lt;strong&gt;UrlsToProcess.txt&lt;/strong&gt;. I won’t bore you with the complete listings for this code, but I show the main body in Listing 1, and a short excerpt from the RSS feed is shown in Listing 2. &lt;/p&gt;  &lt;p&gt;When you download the source, you will find versions for both VS 2008 and VS 2010, Beta 2. The latter solution contains both a console and a windows forms app. They each have their advantages, but I tend to prefer the former.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Listing 1: The main body of the program.&lt;/strong&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:86edbd1a-51cc-4e41-8c27-625eb52e991e" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;using&lt;/span&gt; System;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;using&lt;/span&gt; System.IO;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;using&lt;/span&gt; CreateRssVideo.Code;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;namespace&lt;/span&gt; CreateRssVideo&lt;/li&gt; &lt;li&gt;{&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af"&gt;ProgramConsole&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; Main(&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;[] args)&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;[] urls = &lt;span style="color:#2b91af"&gt;File&lt;/span&gt;.ReadAllLines(&lt;span style="color:#a31515"&gt;&amp;quot;UrlsToProcess.txt&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;&amp;gt; items = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;&amp;gt;();&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#2b91af"&gt;ParseHdiVideoPages&lt;/span&gt; parser = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;ParseHdiVideoPages&lt;/span&gt;(items);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;foreach&lt;/span&gt; (&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; url &lt;span style="color:#0000ff"&gt;in&lt;/span&gt; urls)&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;parser.ProcessUrl(url);&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#2b91af"&gt;Console&lt;/span&gt;.WriteLine(items[items.Count-&lt;span style="color:#a52a2a"&gt;1&lt;/span&gt;]);&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#2b91af"&gt;File&lt;/span&gt;.WriteAllText(&lt;span style="color:#a31515"&gt;@&amp;quot;..&amp;#92;..&amp;#92;CSharpZuneReadyHowDoIVideos.rss&amp;quot;&lt;/span&gt;, parser.RetrieveXml());&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;/li&gt; &lt;li&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Listing 1: An abbreviated version of the RSS Feed created by the code for the CreateRssVideo program.&lt;/strong&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:afae1f2d-aa35-488e-b6cb-aa3a70ad7f2b" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a31515"&gt;xml&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;version&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;1.0&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;encoding&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;utf-8&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;standalone&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;yes&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;?&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color:#008000"&gt;Charlie&amp;#39;s RSS Feed for Videos&lt;/span&gt;&lt;span style="color:#0000ff"&gt;--&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;rss&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;version&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;2.0&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;channel&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;title&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;CSharp How Do I Video Custom Feed for Zune Software&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;title&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;description&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;VS 2010 Related Videos&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;description&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;link&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;http://blogs.msdn.com/charlie&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;link&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;item&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;title&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;Add Tool Windows to the Visual Studio IDE?&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;title&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;description&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;This video demonstrates how to&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;description&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;link&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;http://msdn.microsoft.com/en-us/vstudio/dd250814.aspx&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;link&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;enclosure&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;url&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;http://download.microsoft.com/CreatingToolWindows.wmv&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;type&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;video/x-ms-wmv&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;item&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;#160;&amp;#160;&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;channel&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;rss&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;The C# code for the &lt;strong&gt;CreateRssVideo&lt;/strong&gt; program uses the build-in &lt;strong&gt;WebClient&lt;/strong&gt; object to download the HTML for the video home page as a string: &lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; RetrieveHtmlFromSite(&lt;span class="kwrd"&gt;string&lt;/span&gt; urlName)
{
    WebClient objWebClient = &lt;span class="kwrd"&gt;new&lt;/span&gt; WebClient();
    &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] requestedUrl = objWebClient.DownloadData(urlName);
    UTF8Encoding utf8 = &lt;span class="kwrd"&gt;new&lt;/span&gt; UTF8Encoding();
    &lt;span class="kwrd"&gt;string&lt;/span&gt; htmlAsString = utf8.GetString(requestedUrl);
    &lt;span class="kwrd"&gt;return&lt;/span&gt; htmlAsString;
}&lt;/pre&gt;

&lt;p&gt;It then uses bits of Regular Expression code to parse the HTML and extract the title, description and video URL from it:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; FindStringInHtmlFile(&lt;span class="kwrd"&gt;string&lt;/span&gt; htmlAsString, &lt;span class="kwrd"&gt;string&lt;/span&gt; regEx)
{
    Regex r = &lt;span class="kwrd"&gt;new&lt;/span&gt; Regex(regEx, RegexOptions.IgnoreCase);

    MatchCollection matchCollection = r.Matches(htmlAsString);
    &lt;span class="kwrd"&gt;string&lt;/span&gt; groupItem = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;

    &lt;span class="kwrd"&gt;if&lt;/span&gt; (matchCollection.Count &amp;gt; 0)
    {
        &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (Group groupItemFound &lt;span class="kwrd"&gt;in&lt;/span&gt; matchCollection[0].Groups)
        {
            groupItem = groupItemFound.Value;
        }
    }
    &lt;span class="kwrd"&gt;return&lt;/span&gt; groupItem;
}        &lt;/pre&gt;

&lt;p&gt;Below is a sample of one of the simple regular expressions that I pass into the &lt;strong&gt;FindStringInHtmlFile &lt;/strong&gt;method. This particular bit of code is used to retrieve the description of the video from the HTML file:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; regExDescriptionText = &lt;span class="str"&gt;@&amp;quot;([A-Z\s0-9#\.,\(\)\-]+)&amp;quot;&lt;/span&gt;;
&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; regExDescription = &lt;span class="str"&gt;@&amp;quot;&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;About this Video&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;quot;&lt;/span&gt; + regExDescriptionText;&lt;/pre&gt;

&lt;p&gt;While we are parsing the HTML, the program works step by step to create the RSS document using LINQ to XML. The first stage in the RSS creation is to new-up an outline or shell that will hold the meat of the document:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Start()
{
    &lt;span class="kwrd"&gt;string&lt;/span&gt; link = &lt;span class="str"&gt;&amp;quot;http://blogs.msdn.com/charlie&amp;quot;&lt;/span&gt;;
    &lt;span class="kwrd"&gt;string&lt;/span&gt; title = &lt;span class="str"&gt;&amp;quot;CSharp How Do I Video Custom Feed for Zune Software&amp;quot;&lt;/span&gt;;
    &lt;span class="kwrd"&gt;string&lt;/span&gt; description = &lt;span class="str"&gt;&amp;quot;VS 2010 Related Videos&amp;quot;&lt;/span&gt;;

    theDocument = &lt;span class="kwrd"&gt;new&lt;/span&gt; XDocument(&lt;span class="kwrd"&gt;new&lt;/span&gt; XDeclaration(&lt;span class="str"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;utf-8&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;yes&amp;quot;&lt;/span&gt;),
        &lt;span class="kwrd"&gt;new&lt;/span&gt; XComment(&lt;span class="str"&gt;&amp;quot;Charlie's RSS Feed for Videos&amp;quot;&lt;/span&gt;),
        GetChannel(link, title, description));
}        

&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; XElement GetChannel(&lt;span class="kwrd"&gt;string&lt;/span&gt; link, &lt;span class="kwrd"&gt;string&lt;/span&gt; title, &lt;span class="kwrd"&gt;string&lt;/span&gt; description)
{
    &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(&lt;span class="str"&gt;&amp;quot;rss&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;new&lt;/span&gt; XAttribute(&lt;span class="str"&gt;&amp;quot;version&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;2.0&amp;quot;&lt;/span&gt;),
        &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(&lt;span class="str"&gt;&amp;quot;channel&amp;quot;&lt;/span&gt;,
                        &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(&lt;span class="str"&gt;&amp;quot;title&amp;quot;&lt;/span&gt;, title),
                        &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(&lt;span class="str"&gt;&amp;quot;description&amp;quot;&lt;/span&gt;, description),
                        &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(&lt;span class="str"&gt;&amp;quot;link&amp;quot;&lt;/span&gt;, link)));
}&lt;/pre&gt;

&lt;p&gt;The &lt;strong&gt;Start&lt;/strong&gt; method creates the document itself, including an XML declaration and a comment. The &lt;strong&gt;GetChannel&lt;/strong&gt; method adds a few simple fields to the document that describes its purpose and which list the URL for my home page. Compare this code with the first few lines from Listing 1 to be sure you understand its purpose. &lt;/p&gt;

&lt;p&gt;As the information for each HDI video is discovered, a new &lt;strong&gt;&amp;lt;item&amp;gt;&lt;/strong&gt; node is created for the RSS feed. This node lists the title for the video, describes the video, and references the URL for the HTML page where the video is stored. Finally, and most importantly, the code includes the &lt;strong&gt;&amp;lt;enclosure&amp;gt;&lt;/strong&gt; node which stores the URL of the actual video. It is the &lt;strong&gt;&amp;lt;enclosure&amp;gt;&lt;/strong&gt; node that the Zune software uses to locate the video which it downloads to your system:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; XElement GetItem(&lt;span class="kwrd"&gt;string&lt;/span&gt; itemTitle, &lt;span class="kwrd"&gt;string&lt;/span&gt; description, &lt;span class="kwrd"&gt;string&lt;/span&gt; linkUrl, &lt;span class="kwrd"&gt;string&lt;/span&gt; videoUrl)
{
    XElement item = &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(&lt;span class="str"&gt;&amp;quot;item&amp;quot;&lt;/span&gt;,
                &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(&lt;span class="str"&gt;&amp;quot;title&amp;quot;&lt;/span&gt;, itemTitle),
                &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(&lt;span class="str"&gt;&amp;quot;description&amp;quot;&lt;/span&gt;, description),
                &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(&lt;span class="str"&gt;&amp;quot;link&amp;quot;&lt;/span&gt;, linkUrl),
                &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(&lt;span class="str"&gt;&amp;quot;enclosure&amp;quot;&lt;/span&gt;,
                    &lt;span class="kwrd"&gt;new&lt;/span&gt; XAttribute(&lt;span class="str"&gt;&amp;quot;url&amp;quot;&lt;/span&gt;, videoUrl), &lt;span class="kwrd"&gt;new&lt;/span&gt; XAttribute(&lt;span class="str"&gt;&amp;quot;type&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;video/x-ms-wmv&amp;quot;&lt;/span&gt;)));
    &lt;span class="kwrd"&gt;return&lt;/span&gt; item;
}&lt;/pre&gt;

&lt;p&gt;Once the &lt;strong&gt;&amp;lt;item&amp;gt;&lt;/strong&gt; node has been created, it is added to the XML document itself:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; AddItem(&lt;span class="kwrd"&gt;string&lt;/span&gt; itemTitle, &lt;span class="kwrd"&gt;string&lt;/span&gt; description, &lt;span class="kwrd"&gt;string&lt;/span&gt; linkUrl, &lt;span class="kwrd"&gt;string&lt;/span&gt; videoUrl)
{            
    XElement item = GetItem(itemTitle, description, linkUrl, videoUrl);            

    var linkNode = from x &lt;span class="kwrd"&gt;in&lt;/span&gt; theDocument.Descendants(&lt;span class="str"&gt;&amp;quot;link&amp;quot;&lt;/span&gt;)
                   select x;
    
    linkNode.First().AddAfterSelf(item);            
}&lt;/pre&gt;

&lt;p&gt;Note that this code includes a simple LINQ query used to discover the proper insertion point in the XML document, and then employs the LINQ to XML &lt;strong&gt;AddAfterSelf&lt;/strong&gt; operator to insert the new &lt;strong&gt;&amp;lt;item&amp;gt;&lt;/strong&gt; XML node into the code for the RSS feed. The program enters and loop and repeats the process of creating and inserting &lt;strong&gt;&amp;lt;item&amp;gt; &lt;/strong&gt;nodes into our RSS feed multiple times. Once all the URLs in our &lt;strong&gt;UrlsToProcess.txt&lt;/strong&gt; document have been examined the program exits.&lt;/p&gt;

&lt;h2&gt;Summary&lt;/h2&gt;

&lt;p&gt;The primary purpose of this post is to provide an RSS feed that you can use to download videos for viewing in the Zune software or in the Zune itself. I also showed a simple, and very brittle, screen scraping program that I used to create the feed. I wrote this program for my own use, and pass it on to you with only minimal claims of its value. If nothing else, it provides some examples of how to have fun writing Regular Expressions, and demonstrates how easy it is to use LINQ to Objects and LINQ to XML to create XML documents.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The &lt;a href="http://www.elvenware.com/charlie/rss/CSharpZuneReadyHowDoIVideos.rss"&gt;video feed&lt;/a&gt;. &lt;/li&gt;

  &lt;li&gt;The &lt;a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=linqfarm&amp;amp;DownloadId=7971"&gt;source&lt;/a&gt; from the &lt;a href="http://code.msdn.microsoft.com/linqfarm"&gt;LINQ farm&lt;/a&gt;. &lt;/li&gt;
&lt;/ul&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.msdn.com%2fcharlie%2farchive%2f2009%2f11%2f01%2fcsharp-how-do-i-videos-for-the-zune-software.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.msdn.com%2fcharlie%2farchive%2f2009%2f11%2f01%2fcsharp-how-do-i-videos-for-the-zune-software.aspx" /&gt;&lt;/a&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9915933" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/charlie/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Samples/default.aspx">Samples</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Video/default.aspx">Video</category><category domain="http://blogs.msdn.com/charlie/archive/tags/C_2300_+4.0/default.aspx">C# 4.0</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Web/default.aspx">Web</category></item><item><title>Community Convergence LVI</title><link>http://blogs.msdn.com/charlie/archive/2009/10/19/community-convergence-lvi.aspx</link><pubDate>Mon, 19 Oct 2009 20:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9890489</guid><dc:creator>Charlie Calvert</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/charlie/comments/9890489.aspx</comments><wfw:commentRss>http://blogs.msdn.com/charlie/commentrss.aspx?PostID=9890489</wfw:commentRss><description>&lt;P&gt;Welcome to the fifty-sixth community convergence. As you probably know by now, &lt;A href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx" mce_href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx"&gt;Visual Studio 2010 Beta 2&lt;/A&gt; has been released on MSDN and will be available to the general public on Wednesday, October 21, 2009. I’ve worked with the team to create a wide range of technical material designed to support this release, and I will call out each item out here in this post. Be sure to check out the new &lt;A href="http://msdn.microsoft.com/en-us/vcsharp/bb798022.aspx" mce_href="http://msdn.microsoft.com/en-us/vcsharp/bb798022.aspx"&gt;How Do I&lt;/A&gt; and &lt;A href="http://channel9.msdn.com/posts/CharlieCalvert/CSharp-4-Dynamic-with-Chris-Burrows-and-Sam-Ng/" mce_href="http://channel9.msdn.com/posts/CharlieCalvert/CSharp-4-Dynamic-with-Chris-Burrows-and-Sam-Ng/"&gt;Interview&lt;/A&gt; videos, the &lt;A href="http://code.msdn.microsoft.com/csharpfuture" mce_href="http://code.msdn.microsoft.com/csharpfuture"&gt;samples&lt;/A&gt;, and the great posts by &lt;A href="http://blogs.msdn.com/csharpfaq/" mce_href="http://blogs.msdn.com/csharpfaq/"&gt;Alexandra Rusina&lt;/A&gt;. In other news, we’ve gotten word that the &lt;A href="http://www.socalcodecamp.com/" mce_href="http://www.socalcodecamp.com/"&gt;SoCal code camp&lt;/A&gt; will be held right after PDC this year. If you live in the LA area, this is a great chance to see some of the Microsoft speakers who will be presenting at PDC.&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;From the C# Team&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;STRONG&gt;How Do Videos on C# 4.0&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/vcsharp/ee460905.aspx" mce_href="http://msdn.microsoft.com/en-us/vcsharp/ee460905.aspx"&gt;How Do I Use Named and Optional Parameters in C# 4.0?&lt;/A&gt; (with Sam Ng) &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/vcsharp/ee460939.aspx" mce_href="http://msdn.microsoft.com/en-us/vcsharp/ee460939.aspx"&gt;How Do I Use COM Interop and Office in C# 4.0?&lt;/A&gt; (with Sam Ng) &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/vcsharp/ee672314.aspx" mce_href="http://msdn.microsoft.com/en-us/vcsharp/ee672314.aspx"&gt;How Do I Use Covariance and Contravariance in VS 2010 Part I?&lt;/A&gt; (with Eric Lippert) &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/vcsharp/ee672319.aspx" mce_href="http://msdn.microsoft.com/en-us/vcsharp/ee672319.aspx"&gt;How Do I Use Covariance and Contravariance in VS 2010 Part II?&lt;/A&gt; (with Eric Lippert) &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;How Do Videos on the Visual Studio 2010 IDE&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/vcsharp/ee625744.aspx" mce_href="http://msdn.microsoft.com/en-us/vcsharp/ee625744.aspx"&gt;How Do I Use Highlight References in the Visual Studio 2010 IDE&lt;/A&gt; (with DJ Park) &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/vcsharp/ee625748.aspx" mce_href="http://msdn.microsoft.com/en-us/vcsharp/ee625748.aspx"&gt;How Do I use Code Snippets in the Visual Studio IDE&lt;/A&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;(with Karen Liu) &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/vcsharp/ee633445.aspx" mce_href="http://msdn.microsoft.com/en-us/vcsharp/ee633445.aspx"&gt;How Do I Use Generate from Usage in Visual Studio 2010?&lt;/A&gt; (with Karen Liu) &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/vcsharp/ee672315.aspx" mce_href="http://msdn.microsoft.com/en-us/vcsharp/ee672315.aspx"&gt;How Do I Use the Call Hierarchy?&lt;/A&gt; (with DJ Park) &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/vcsharp/ee672313.aspx" mce_href="http://msdn.microsoft.com/en-us/vcsharp/ee672313.aspx"&gt;How Do I Step with the Debugger in Visual Studio?&lt;/A&gt; (with Dustin Campbell) &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/vcsharp/ee672318.aspx" mce_href="http://msdn.microsoft.com/en-us/vcsharp/ee672318.aspx"&gt;How Do I Refactor my Code in Visual Studio Part I?&lt;/A&gt; (with Dustin Campbell) &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/vcsharp/ee675607.aspx" mce_href="http://msdn.microsoft.com/en-us/vcsharp/ee675607.aspx"&gt;How Do I Refactor my Code in Visual Studio Part II?&lt;/A&gt; (with Dustin Campbell) &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Interview Videos on Channel 9&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A href="http://channel9.msdn.com/posts/CharlieCalvert/CSharp-4-Dynamic-with-Chris-Burrows-and-Sam-Ng" mce_href="http://channel9.msdn.com/posts/CharlieCalvert/CSharp-4-Dynamic-with-Chris-Burrows-and-Sam-Ng"&gt;C# 4.0 Dynamic with Chris Burrows and Sam Ng&lt;/A&gt;&lt;/STRONG&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Alexandra Rusina&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/csharpfaq/archive/2009/09/14/generating-dynamic-methods-with-expression-trees-in-visual-studio-2010.aspx" mce_href="http://blogs.msdn.com/csharpfaq/archive/2009/09/14/generating-dynamic-methods-with-expression-trees-in-visual-studio-2010.aspx"&gt;Generating Dynamic Methods with Expression Trees in Visual Studio 2010&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/csharpfaq/archive/2009/10/01/dynamic-in-c-4-0-introducing-the-expandoobject.aspx" mce_href="http://blogs.msdn.com/csharpfaq/archive/2009/10/01/dynamic-in-c-4-0-introducing-the-expandoobject.aspx"&gt;Dynamic in C# 4.0: Introducing the Expando Object&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/csharpfaq/archive/2009/10/19/dynamic-in-c-4-0-creating-wrappers-with-dynamicobject.aspx" mce_href="http://blogs.msdn.com/csharpfaq/archive/2009/10/19/dynamic-in-c-4-0-creating-wrappers-with-dynamicobject.aspx"&gt;Dynamic in C# 4.0: Creating Wrappers with Dynamic Object&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Eric Lippert&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/ericlippert/archive/2009/10/19/what-is-this-thing-you-call-thread-safe.aspx" mce_href="http://blogs.msdn.com/ericlippert/archive/2009/10/19/what-is-this-thing-you-call-thread-safe.aspx"&gt;What is this thing you call "thread safe"?&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/ericlippert/archive/2009/10/15/as-timeless-as-infinity.aspx" mce_href="http://blogs.msdn.com/ericlippert/archive/2009/10/15/as-timeless-as-infinity.aspx"&gt;As Timeless As Infinity&lt;/A&gt; (On Delphi, VB Script and Exceptions) &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/ericlippert/archive/2009/10/12/absence-of-evidence-is-not-evidence-of-absence.aspx" mce_href="http://blogs.msdn.com/ericlippert/archive/2009/10/12/absence-of-evidence-is-not-evidence-of-absence.aspx"&gt;Absence of evidence is not evidence of absence&lt;/A&gt; (On Constructors) &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/ericlippert/archive/2009/10/08/what-s-the-difference-between-as-and-cast-operators.aspx" mce_href="http://blogs.msdn.com/ericlippert/archive/2009/10/08/what-s-the-difference-between-as-and-cast-operators.aspx"&gt;What's the difference between "as" and "cast" operators?&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/ericlippert/archive/2009/10/05/why-no-extension-properties.aspx" mce_href="http://blogs.msdn.com/ericlippert/archive/2009/10/05/why-no-extension-properties.aspx"&gt;Why No Extension Properties?&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/ericlippert/archive/2009/10/01/why-does-char-convert-implicitly-to-ushort-but-not-vice-versa.aspx" mce_href="http://blogs.msdn.com/ericlippert/archive/2009/10/01/why-does-char-convert-implicitly-to-ushort-but-not-vice-versa.aspx"&gt;Why does char convert implicitly to ushort but not vice versa?&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Kirill Osenkov&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/kirillosenkov/archive/2009/10/19/visual-studio-2010-beta-2-known-issues.aspx" mce_href="http://blogs.msdn.com/kirillosenkov/archive/2009/10/19/visual-studio-2010-beta-2-known-issues.aspx"&gt;Visual Studio 2010 Beta 2 Known Issues&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/kirillosenkov/archive/2009/10/12/saving-images-bmp-png-etc-in-wpf-silverlight.aspx" mce_href="http://blogs.msdn.com/kirillosenkov/archive/2009/10/12/saving-images-bmp-png-etc-in-wpf-silverlight.aspx"&gt;Saving images (.bmp, .png, etc) in WPF/Silverlight&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/kirillosenkov/archive/2009/10/05/links.aspx" mce_href="http://blogs.msdn.com/kirillosenkov/archive/2009/10/05/links.aspx"&gt;Links&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Luca Bolognese&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/lucabol/archive/2009/09/22/becoming-really-rich-with-c.aspx" mce_href="http://blogs.msdn.com/lucabol/archive/2009/09/22/becoming-really-rich-with-c.aspx"&gt;Becoming really rich with C#&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;Beta 2&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Visual Studio 2010 &lt;A href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=csharpfuture&amp;amp;DownloadId=7632" mce_href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=csharpfuture&amp;amp;DownloadId=7632"&gt;Samples&lt;/A&gt;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A href="http://msdn.microsoft.com/en-us/subscriptions/downloads/default.aspx?pv=18:370" mce_href="http://msdn.microsoft.com/en-us/subscriptions/downloads/default.aspx?pv=18:370"&gt;MSDN Subscribers: Download the Beta&lt;/A&gt;&lt;/STRONG&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://channel9.msdn.com/shows/10-4/10-4-Episode-33-Downloading-and-Installing-Visual-Studio-2010-Beta-2/" mce_href="http://channel9.msdn.com/shows/10-4/10-4-Episode-33-Downloading-and-Installing-Visual-Studio-2010-Beta-2/"&gt;A Video on How to Download and Install the Beta&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/vstudio/dd441784.aspx" mce_href="http://msdn.microsoft.com/en-us/vstudio/dd441784.aspx"&gt;Walkthroughs and Related Content&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;&lt;STRONG&gt;From the C# Community at Microsoft&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;Scott Guthrie&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://weblogs.asp.net/scottgu/archive/2009/10/15/announcing-microsoft-ajax-library-preview-6-and-the-microsoft-ajax-minifier.aspx" mce_href="http://weblogs.asp.net/scottgu/archive/2009/10/15/announcing-microsoft-ajax-library-preview-6-and-the-microsoft-ajax-minifier.aspx"&gt;Announcing Microsoft Ajax Library (Preview 6) and the Microsoft Ajax Minifier&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://weblogs.asp.net/scottgu/archive/2009/10/13/url-routing-with-asp-net-4-web-forms-vs-2010-and-net-4-0-series.aspx" mce_href="http://weblogs.asp.net/scottgu/archive/2009/10/13/url-routing-with-asp-net-4-web-forms-vs-2010-and-net-4-0-series.aspx"&gt;URL Routing with ASP.NET 4 Web Forms (VS 2010 and .NET 4.0 Series)&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Scott Hanselman&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://feedproxy.google.com/~r/ScottHanselman/~3/nlo-NV9tMms/VisualStudio2010Beta2.aspx" mce_href="http://feedproxy.google.com/~r/ScottHanselman/~3/nlo-NV9tMms/VisualStudio2010Beta2.aspx"&gt;Visual Studio 2010 Beta 2&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://feedproxy.google.com/~r/ScottHanselman/~3/VWXarnbHm8E/HanselminutesOnChannel9InsideCodePlexcom.aspx" mce_href="http://feedproxy.google.com/~r/ScottHanselman/~3/VWXarnbHm8E/HanselminutesOnChannel9InsideCodePlexcom.aspx"&gt;Hanselminutes on Channel 9 - Inside CodePlex.com&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://feedproxy.google.com/~r/ScottHanselman/~3/3oOFaBsv9eg/HanselminutesPodcast184PreviewOfASPNET4WithScottHunter.aspx" mce_href="http://feedproxy.google.com/~r/ScottHanselman/~3/3oOFaBsv9eg/HanselminutesPodcast184PreviewOfASPNET4WithScottHunter.aspx"&gt;Hanselminutes Podcast 184: Preview of ASP.NET 4 with Scott Hunter&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://feedproxy.google.com/~r/ScottHanselman/~3/r8Y5FyI_Jbw/ObscureWindowsHomeServerTipRestoringWhenYouDidntHaveNetworkDriversInstalledBefore.aspx" mce_href="http://feedproxy.google.com/~r/ScottHanselman/~3/r8Y5FyI_Jbw/ObscureWindowsHomeServerTipRestoringWhenYouDidntHaveNetworkDriversInstalledBefore.aspx"&gt;Windows Home Server: Restoring when you didn't have Network Drivers installed before&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://feedproxy.google.com/~r/ScottHanselman/~3/sBkZg5Ryl9g/HanselminutesPodcast183LIVEGadgetsHiDefWebCams4GAndMore.aspx" mce_href="http://feedproxy.google.com/~r/ScottHanselman/~3/sBkZg5Ryl9g/HanselminutesPodcast183LIVEGadgetsHiDefWebCams4GAndMore.aspx"&gt;Hanselminutes Podcast 183: LIVE! Gadgets, Hi-Def, WebCams, 4G and More&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://feedproxy.google.com/~r/ScottHanselman/~3/VwBZxqTbJX0/ANewMSDNForANewOperatingSystemAndANewDevelopmentEnvironment.aspx" mce_href="http://feedproxy.google.com/~r/ScottHanselman/~3/VwBZxqTbJX0/ANewMSDNForANewOperatingSystemAndANewDevelopmentEnvironment.aspx"&gt;A new MSDN for a new Operating System and a new Development Environment&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://feedproxy.google.com/~r/ScottHanselman/~3/Bha0h4oOUO0/ReviewAndComparisonMicrosoftLifeCamCinemaHDAndVX7000WithHighQualityVideoInSkypeAndLiveMessenger.aspx" mce_href="http://feedproxy.google.com/~r/ScottHanselman/~3/Bha0h4oOUO0/ReviewAndComparisonMicrosoftLifeCamCinemaHDAndVX7000WithHighQualityVideoInSkypeAndLiveMessenger.aspx"&gt;Review and Comparison: Microsoft LifeCam Cinema HD and VX-7000 with High Quality Video in Skype and Live Messenger&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Dan Fernandez&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title=article-5902171-146 name=article-5902171-146&gt;&lt;/A&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;H5&gt;&lt;A href="http://blogs.msdn.com/danielfe/archive/2009/10/13/my-pics-for-pdc-2009.aspx" mce_href="http://blogs.msdn.com/danielfe/archive/2009/10/13/my-pics-for-pdc-2009.aspx"&gt;My Picks for PDC 2009&lt;/A&gt;&lt;/H5&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;H5&gt;&lt;A href="http://channel9.msdn.com/shows/Coding4FunTV/The-Coding4Fun-Show-Advanced-Rendering-with-Silverlight-Rick-Barraza/" mce_href="http://channel9.msdn.com/shows/Coding4FunTV/The-Coding4Fun-Show-Advanced-Rendering-with-Silverlight-Rick-Barraza/"&gt;The Coding4Fun Show: Advanced Rendering with Silverlight, Rick Barraza&lt;/A&gt; &lt;/H5&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;MSDN Magazine&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/msdnmagazine/archive/2009/10/09/9905842.aspx" mce_href="http://blogs.msdn.com/msdnmagazine/archive/2009/10/09/9905842.aspx"&gt;Lining Up Columns&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/msdnmagazine/archive/2009/10/08/9905656.aspx" mce_href="http://blogs.msdn.com/msdnmagazine/archive/2009/10/08/9905656.aspx"&gt;A Necessary 101 on Professional Application Development&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/msdnmagazine/archive/2009/10/07/9904758.aspx" mce_href="http://blogs.msdn.com/msdnmagazine/archive/2009/10/07/9904758.aspx"&gt;File &amp;gt; New &amp;gt; Project: Developing a New MSDN Magazine!!&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Mitsu&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/mitsu/archive/2009/09/08/surface-academy-toolkit-2009.aspx" mce_href="http://blogs.msdn.com/mitsu/archive/2009/09/08/surface-academy-toolkit-2009.aspx"&gt;Surface Academy Toolkit with Card Game, plus Dick Lantim!&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;From the Community&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.ineta.org/newsletters/2009_09.htm" mce_href="http://www.ineta.org/newsletters/2009_09.htm"&gt;September INETA Newsletter&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.msdn.com%2fcharlie%2farchive%2f2009%2f10%2f19%2fcommunity-convergence-lvi.aspx" mce_href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.msdn.com%2fcharlie%2farchive%2f2009%2f10%2f19%2fcommunity-convergence-lvi.aspx"&gt;&lt;IMG border=0 alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.msdn.com%2fcharlie%2farchive%2f2009%2f10%2f19%2fcommunity-convergence-lvi.aspx" mce_src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.msdn.com%2fcharlie%2farchive%2f2009%2f10%2f19%2fcommunity-convergence-lvi.aspx"&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9890489" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/charlie/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Community+Convergence/default.aspx">Community Convergence</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Video/default.aspx">Video</category><category domain="http://blogs.msdn.com/charlie/archive/tags/C_2300_+4.0/default.aspx">C# 4.0</category></item><item><title>CodeRush Xpress 9.2 Ships</title><link>http://blogs.msdn.com/charlie/archive/2009/08/28/coderush-express-9-2-ships.aspx</link><pubDate>Fri, 28 Aug 2009 22:47:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9888774</guid><dc:creator>Charlie Calvert</dc:creator><slash:comments>25</slash:comments><comments>http://blogs.msdn.com/charlie/comments/9888774.aspx</comments><wfw:commentRss>http://blogs.msdn.com/charlie/commentrss.aspx?PostID=9888774</wfw:commentRss><description>&lt;p&gt;The &lt;a href="http://www.devexpress.com/Products/Visual_Studio_Add-in/CodeRushX/"&gt;free CodeRush Xpress&lt;/a&gt; from &lt;a href="http://www.devexpress.com/"&gt;DevExpress&lt;/a&gt; provides C# and VB developers with powerful extensions to Visual Studio. These features include editing and refactoring tools that make it easier for you to quickly produce well designed code. Version 9.2 of CodeRush Xpress, which shipped on August 25, 2009, has greatly improved memory and performance characteristics.&amp;#160; &lt;/p&gt;  &lt;p&gt;CodeRush Express comes with a set of &lt;a href="http://www.devexpress.com/Products/Visual_Studio_Add-in/CodeRushX/selection.xml"&gt;selection&lt;/a&gt;, &lt;a href="http://www.devexpress.com/Products/Visual_Studio_Add-in/CodeRushX/navigation.xml"&gt;navigation&lt;/a&gt; and &lt;a href="http://www.devexpress.com/Products/Visual_Studio_Add-in/CodeRushX/declaration.xml"&gt;declaration&lt;/a&gt; features, as well as over 60 refactorings which are grouped into the following categories:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Changing Signatures &lt;/li&gt;    &lt;li&gt;Conditionals &lt;/li&gt;    &lt;li&gt;Declaration and Initialization &lt;/li&gt;    &lt;li&gt;Expressions &lt;/li&gt;    &lt;li&gt;Lambda Expressions and Anonymous methods &lt;/li&gt;    &lt;li&gt;Loops and Blocks &lt;/li&gt;    &lt;li&gt;Properties and Fields &lt;/li&gt;    &lt;li&gt;Moving/Extracting Methods &lt;/li&gt;    &lt;li&gt;Resource Files and Strings &lt;/li&gt;    &lt;li&gt;Types and Visibility &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/CodeRushExpress9.2Ships_AE89/DustinAndMark01_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DustinAndMark01" border="0" alt="DustinAndMark01" src="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/CodeRushExpress9.2Ships_AE89/DustinAndMark01_thumb.png" width="578" height="369" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Figure 1: Dustin Campbell and Mark Miller discuss the cool features in CodeRush Xpress.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The new features in CodeRush Xpress 9.2 include:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Faster Performance &lt;/li&gt;    &lt;li&gt;Reduced Memory Consumption &lt;/li&gt;    &lt;li&gt;Support for Preprocessor Directives &lt;/li&gt;    &lt;li&gt;Background Processing Progress Bar&amp;#160; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;To learn more, watch the CodeRush Xpress 9.1 &lt;a href="http://tv.devexpress.com/CRX91FeaturesCS.movie"&gt;introductory video&lt;/a&gt; with Microsoft’s &lt;a href="http://diditwith.net/"&gt;Dustin Campbell&lt;/a&gt; and CodeRush creator Mark Miller. You can also read an &lt;a href="http://community.devexpress.com/blogs/markmiller/archive/2009/07/15/what-s-new-in-coderush-9-2.aspx"&gt;in-depth review&lt;/a&gt; of the new features in CodeRush Xpress 9.2 on &lt;a href="http://community.devexpress.com/blogs/markmiller/default.aspx"&gt;Mark’s blog&lt;/a&gt;. A few months back, Dustin posted on some of the updated features in a May release of CodeRush Xpress, including&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Duplicate Line, &lt;/li&gt;    &lt;li&gt;Highlight All References &lt;/li&gt;    &lt;li&gt;Increase or Reduce Selection &lt;/li&gt;    &lt;li&gt;Smart Clipboard &lt;/li&gt;    &lt;li&gt;Generate from Using &lt;/li&gt;    &lt;li&gt;Quick Navigation Window &lt;/li&gt;    &lt;li&gt;Quick File Navigation &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Many of the features in CodeRush Xpress are also explained in depth on the DevExpress web site. For instance, you can &lt;a href="http://www.devexpress.com/Products/Visual_Studio_Add-in/CodeRushX/navigation.xml"&gt;click here&lt;/a&gt; for an explanation of the navigation features. In Figure 2 you can see a screen shot from the video which highlights some of the features of CodeRush Xpress. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/CodeRushExpress9.2Ships_AE89/Refactor03_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Refactor03" border="0" alt="Refactor03" src="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/CodeRushExpress9.2Ships_AE89/Refactor03_thumb.png" width="589" height="381" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Figure 2: A screen shot from the CodeRush Xpress introductory video shows the &lt;em&gt;Refactor&lt;/em&gt; menu and &lt;em&gt;New Field Active&lt;/em&gt; tip window. Click the picture to see a larger version.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;CodeRush Xpress provides lots of tools designed to make coding inside Visual Studio easier. Take a look and see if it can help you get more work done in less time.&lt;/p&gt; &lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.msdn.com%2fcharlie%2farchive%2f2009%2f08%2f28%2fcoderush-express-9-2-ships.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.msdn.com%2fcharlie%2farchive%2f2009%2f08%2f28%2fcoderush-express-9-2-ships.aspx" /&gt;&lt;/a&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9888774" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/charlie/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Community/default.aspx">Community</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Video/default.aspx">Video</category></item><item><title>Recent Videos from the C# Team (2008-2009)</title><link>http://blogs.msdn.com/charlie/archive/2009/07/31/recent-videos-from-the-c-team.aspx</link><pubDate>Fri, 31 Jul 2009 23:17:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9854671</guid><dc:creator>Charlie Calvert</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/charlie/comments/9854671.aspx</comments><wfw:commentRss>http://blogs.msdn.com/charlie/commentrss.aspx?PostID=9854671</wfw:commentRss><description>&lt;p&gt;Here is a selection of videos created between July, 2008 and July, 2009 by members of the C# team at Microsoft:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://channel9.msdn.com/posts/Charles/C-40-Meet-the-Design-Team/"&gt;C# 4.0 Meet the Design Team&lt;/a&gt;: &lt;strong&gt;Anders Hejlsberg, Eric Lippert&lt;/strong&gt;, et al &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/charlie/archive/2008/07/25/video-new-error-checking-feature-in-visual-studio-service-pack-1.aspx"&gt;Error Checking Feature in Visual Studio Service Pack 1&lt;/a&gt;: &lt;strong&gt;DJ Park&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel9.msdn.com/shows/Going+Deep/Inside-C-40-dynamic-type-optional-parameters-more-COM-friendly/"&gt;Inside C# 4.0 - Dynamic Typing, Optional Params, Variance&lt;/a&gt;:&lt;strong&gt; Sam Ng&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel9.msdn.com/posts/Charles/Anders-Hejlsberg-and-Guy-Steele-Concurrency-and-Language-Design/"&gt;Concurrency and Language Design&lt;/a&gt;:&lt;strong&gt; Anders Hejlsberg&lt;/strong&gt; and&lt;strong&gt; Guy Steele&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel9.msdn.com/pdc2008/TL16/"&gt;The Future of C#&lt;/a&gt;: &lt;strong&gt;Anders Hejlsberg&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/emea/teched2008/developer/tv/"&gt;The Joy of Writing Code in Visual Studio 2010&lt;/a&gt;: &lt;strong&gt;Karen Liu&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/charlie/archive/2008/11/13/anders-hejlsberg-video-on-c-dynamic.aspx"&gt;C# 4.0 Video on Dynamic&lt;/a&gt;: &lt;strong&gt;Anders Hejlsberg&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/charlie/archive/2008/12/03/jeff-richter-video-on-asynchronous-programming-and-his-power-threading-library.aspx"&gt;Asynchronous Programming Power Threading Library&lt;/a&gt;: &lt;strong&gt;Jeff Richter &lt;/strong&gt;and &lt;strong&gt;Charlie Calvert&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel9.msdn.com/shows/Going+Deep/Expert-to-Expert-Anders-Hejlsberg-The-Future-of-C/"&gt;Expert to Expert – The Future of C#&lt;/a&gt;: &lt;strong&gt;Erik Meijer &lt;/strong&gt;and &lt;strong&gt;Anders Hejlsberg&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel9.msdn.com/posts/Charles/Emmanuel-Stapf-Eiffel-and-Contract-Oriented-Programming/"&gt;Eiffel and Contract Oriented Programming&lt;/a&gt;: &lt;strong&gt;Mads Torgersen&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel9.msdn.com/posts/Charles/Eric-Lippert-Happy-Birthday-C9/"&gt;Eric Lippert Happy Birthday&lt;/a&gt;: &lt;strong&gt;Eric Lippert&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt; &lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.msdn.com%2fcharlie%2farchive%2f2009%2f07%2f31%2frecent-videos-from-the-c-team.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.msdn.com%2fcharlie%2farchive%2f2009%2f07%2f31%2frecent-videos-from-the-c-team.aspx" /&gt;&lt;/a&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9854671" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/charlie/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://blogs.msdn.com/charlie/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Video/default.aspx">Video</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Dynamic/default.aspx">Dynamic</category><category domain="http://blogs.msdn.com/charlie/archive/tags/C_2300_+4.0/default.aspx">C# 4.0</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Parallel/default.aspx">Parallel</category></item><item><title>Jeff Richter Video on Asynchronous Programming and his Power Threading Library</title><link>http://blogs.msdn.com/charlie/archive/2008/12/03/jeff-richter-video-on-asynchronous-programming-and-his-power-threading-library.aspx</link><pubDate>Thu, 04 Dec 2008 09:23:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9173818</guid><dc:creator>Charlie Calvert</dc:creator><slash:comments>20</slash:comments><comments>http://blogs.msdn.com/charlie/comments/9173818.aspx</comments><wfw:commentRss>http://blogs.msdn.com/charlie/commentrss.aspx?PostID=9173818</wfw:commentRss><description>&lt;p&gt;I recently had the chance to &lt;a href="http://channel9.msdn.com/posts/Charles/Jeffrey-Richter-and-his-AsyncEnumerator/"&gt;sit down&lt;/a&gt; with &lt;a href="http://wintellect.com/TechnicalBioDetail.aspx?Tech=3"&gt;Jeff Richter&lt;/a&gt; and discuss his &lt;a href="http://wintellect.com/PowerThreading.aspx"&gt;Power Threading&lt;/a&gt; Library. This library provides a simple technique for handling asynchronous development. By making clever use of C# &lt;a href="http://msdn.microsoft.com/en-us/library/dscyy5s0.aspx"&gt;Iterators&lt;/a&gt;, Jeff is able to make asynchronous code looks as though it is synchronous code the executes in a linear fashion. Jeff's library greatly simplifies the asynchronous programming model, making it easy for you to navigate waters that you may have once considered formidably perilous.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/JeffRichteronAsynchronousProgrammingandh_130B9/Jeff2_2.jpg"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="Jeff2" src="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/JeffRichteronAsynchronousProgrammingandh_130B9/Jeff2_thumb.jpg" width="644" height="373"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Figure 1: Jeff Richter explains how to use his Power Threading Library.&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Many of you who've had experience with asynchronous development know how difficult such code can be to write. Asynchronous code is typically non-linear, and jumps from one portion of a program to another. It is difficult to debug, and is difficult to tame if errors occur.&lt;/p&gt; &lt;p&gt;To understand the difficulties inherent in asynchronous development it helps to first consider a simple example. Suppose you begin an IO operation of some kind, perhaps the download of a large file. The download is going to take several minutes. To avoid locking up your program during the download, you set up a thread on which the operation can run. You start the thread, call it from your main thread, and set up a callback method which can be executed when the operation completes. Because the download is run on a secondary thread, the main thread of your program is still responsive during the download, and can interact with the user. When the task completes, the callback is executed, thereby announcing the termination of the download. You might then have a new asynchronous task that you might want to begin, such as processing the downloaded file and adding portions of its content to a database. Again, this task is going to take some time, and so you start another thread, providing another callback method that can be executed when the task is completed. &lt;/p&gt; &lt;p&gt;The model outlined in the previous paragraph is common, but awkward. The problems inherent in this scenario are numerous, but two of the worst problems can be summed up as follows:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;The code does not execute in serial fashion, but instead jumps from one callback to another, thereby making it difficult to debug. Someone new to the code might find it hard to understand which callback will execute next, or which thread is currently active.  &lt;li&gt;If something goes wrong during the execution of the code, it can be very difficult to clean up the current operation and exit the process smoothly. Operations are occurring on multiple threads, or inside some seemingly random callback. Allocations, open files, and initialized variables are hard to clean up, and it is difficult to define which code should execute next after you enter an error condition. Setting up a try..catch block is difficult at best, and sometimes impossible. The result can be a mass of spaghetti code that is difficult for the original developer to understand, and nearly incomprehensible to others who are assigned the unfortunate task of maintaining it.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;All of these problems are commonly encountered by developers who create asynchronous code. What Jeff has done is write a library that allows you to write asynchronous code in a synchronous style, as if each operation were occurring in a linear, or serial, sequence. In other words, you can write a single method in which the file is first downloaded, then parsed, and data is then inserted in a database. The code looks like synchronous code, and appears to execute in a linear fashion. Behind the scenes, however, the code is actually asynchronous, and uses multiple threads. As mentioned earlier, the library is built around C# Iterators, which bear the weight of handling the multiple threads that are spawned during your asynchronous operations.&lt;/p&gt; &lt;p&gt;Take a look at the movie to learn exactly how it works, and then download Jeff's free library to try it yourself. Jeff is, of course, a great speaker, and his explanation of this library is a joy to hear. Not only does he show a simple way to write asynchronous code, but he also does a great job of explaining exactly how C# Iterators are put together. It's one of the best explanations of that important subject I've ever heard.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Download or view the &lt;a href="http://channel9.msdn.com/posts/Charles/Jeffrey-Richter-and-his-AsyncEnumerator/"&gt;video&lt;/a&gt;: &lt;a href="http://channel9.msdn.com/posts/Charles/Jeffrey-Richter-and-his-AsyncEnumerator/"&gt;http://channel9.msdn.com/posts/Charles/Jeffrey-Richter-and-his-AsyncEnumerator/&lt;/a&gt;  &lt;li&gt;Visit Jeff's &lt;a href="http://wintellect.com/PowerThreading.aspx "&gt;Web Site&lt;/a&gt; and download the library: &lt;a href="http://wintellect.com/PowerThreading.aspx"&gt;http://wintellect.com/PowerThreading.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.msdn.com%2fcharlie%2farchive%2f2008%2f12%2f03%2fjeff-richter-video-on-asynchronous-programming-and-his-power-threading-library.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.msdn.com%2fcharlie%2farchive%2f2008%2f12%2f03%2fjeff-richter-video-on-asynchronous-programming-and-his-power-threading-library.aspx"&gt;&lt;/a&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9173818" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/charlie/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Video/default.aspx">Video</category></item><item><title>Anders Hejlsberg Video on C# Dynamic</title><link>http://blogs.msdn.com/charlie/archive/2008/11/13/anders-hejlsberg-video-on-c-dynamic.aspx</link><pubDate>Thu, 13 Nov 2008 12:17:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9065784</guid><dc:creator>Charlie Calvert</dc:creator><slash:comments>43</slash:comments><comments>http://blogs.msdn.com/charlie/comments/9065784.aspx</comments><wfw:commentRss>http://blogs.msdn.com/charlie/commentrss.aspx?PostID=9065784</wfw:commentRss><description>&lt;p&gt;In &lt;a href="http://channel9.msdn.com/posts/VisualStudio/C-40-Questions-and-reasons-behind-the-answers/"&gt;this Channel 9 video&lt;/a&gt; C# architect Anders Hejlsberg answers some commonly asked questions about the new Dynamic features that will be included in C# 4.0. Building on the talk that he gave at PDC,&amp;nbsp; Anders chats with C# Community PM Charlie Calvert. They discuss questions that community members have asked and riff on themes of import to developers who have been following the latest news from the C# team.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://channel9.msdn.com/posts/VisualStudio/C-40-Questions-and-reasons-behind-the-answers/"&gt;The New Channel 9 Video&lt;/a&gt;  &lt;li&gt;&lt;a href="http://channel9.msdn.com/pdc2008/TL16/"&gt;Anders' Original PDC Talk on C# 4.0&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="mms://mschnlnine.wmod.llnwd.net/a1809/d1/ch9/4/2/3/2/4/4/CSharpFourQuestionsAndReasons_s_ch9.wmv"&gt;&lt;img alt="Entry Media" src="http://mschnlnine.vo.llnwd.net/d1/ch9/4/2/3/2/4/4/CSharpFourQuestionsAndReasons_large_ch9.jpg"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.msdn.com%2fcharlie%2farchive%2f2008%2f11%2f13%2fanders-hejlsberg-video-on-c-dynamic.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.msdn.com%2fcharlie%2farchive%2f2008%2f11%2f13%2fanders-hejlsberg-video-on-c-dynamic.aspx"&gt;&lt;/a&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9065784" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/charlie/archive/tags/Video/default.aspx">Video</category><category domain="http://blogs.msdn.com/charlie/archive/tags/C_2300_+4.0/default.aspx">C# 4.0</category></item><item><title>Video: New Error Checking Feature in Visual Studio Service Pack 1</title><link>http://blogs.msdn.com/charlie/archive/2008/07/25/video-new-error-checking-feature-in-visual-studio-service-pack-1.aspx</link><pubDate>Fri, 25 Jul 2008 22:06:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8772710</guid><dc:creator>Charlie Calvert</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/charlie/comments/8772710.aspx</comments><wfw:commentRss>http://blogs.msdn.com/charlie/commentrss.aspx?PostID=8772710</wfw:commentRss><description>&lt;p&gt;In this 12 minute video I talk with C# IDE PM DJ Park about a new feature in &lt;a href="http://msdn.microsoft.com/en-us/vstudio/cc533448.aspx"&gt;Visual Studio 2008 Service Pack 1&lt;/a&gt; beta called Live Semantic Errors or Squiggles. This feature gives an increased level of live feedback on potential errors that might be found in your code. In the past, many of these errors would only surface after you tried to compile your code, but now you can see them interactively as you type code in the IDE. This feature should help developers become more productive by allowing them to find errors quickly.&lt;/p&gt;  &lt;p&gt;You have the choice of either watching video correctly or downloading it as zip file:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://download.microsoft.com/download/9/8/9/989e1c67-264a-46c3-868c-cba613947af5/CharlieDJParkSquiglies.wmv"&gt;Watch the Video&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://download.microsoft.com/download/9/8/9/989e1c67-264a-46c3-868c-cba613947af5/CharlieDJParkSquiglies.zip"&gt;Download the Video in a zip file&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/AlertVisualStudioServicePack1HasSquiggle_9815/DjAndCharlieSquiggles_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="315" alt="DjAndCharlieSquiggles" src="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/AlertVisualStudioServicePack1HasSquiggle_9815/DjAndCharlieSquiggles_thumb.png" width="474" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Thanks to &lt;a href="http://blogs.msdn.com/bethmassi/"&gt;Beth Massi&lt;/a&gt; who filmed this video and produced a WMV file for us to share with the community.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt; &lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.msdn.com%2fcharlie%2farchive%2f2008%2f07%2f25%2fvideo-new-error-checking-feature-in-visual-studio-service-pack-1.aspx"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.msdn.com%2fcharlie%2farchive%2f2008%2f07%2f25%2fvideo-new-error-checking-feature-in-visual-studio-service-pack-1.aspx" border="0" /&gt;&lt;/a&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8772710" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/charlie/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Video/default.aspx">Video</category></item><item><title>Anders Hejlsberg Film Festival: The C# and other VS Language Teams at the Movies</title><link>http://blogs.msdn.com/charlie/archive/2008/03/28/anders-hejlsberg-film-festival-the-c-and-other-vsl-teams-at-the-movies.aspx</link><pubDate>Sat, 29 Mar 2008 09:09:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8343034</guid><dc:creator>Charlie Calvert</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/charlie/comments/8343034.aspx</comments><wfw:commentRss>http://blogs.msdn.com/charlie/commentrss.aspx?PostID=8343034</wfw:commentRss><description>&lt;p&gt;It's a bit rainy and snowy today in Redmond. What an excellent time to curl up by the fire and watch a movie! Here are some suggestions.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Videos by Anders  &lt;ul&gt; &lt;li&gt;&lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=273744"&gt;Anders Hejlsberg, Herb Sutter, Erik Meijer, Brian Beckman: Software Composability and the Future of Languages&lt;/a&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/charlie/archive/2007/01/26/anders-hejlsberg-on-linq-and-functional-programming.aspx"&gt;Anders on LINQ and Functional Programming&lt;/a&gt;  &lt;li&gt;&lt;a title="1-01 - CSharp3 - Anders Hejlsberg" href="http://www.langnetsymposium.com/talks/1-01%20-%20CSharp3%20-%20Anders%20Hejlsberg.html"&gt;Anders Hejlsberg - Lang.Net 2008 CSharp3 - Anders Hejlsberg&lt;/a&gt;  &lt;li&gt;&lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=237177"&gt;Anders Hejlsberg - Lang.Net 2006 Compiler Symposium&lt;/a&gt;  &lt;li&gt;&lt;a href="http://channel9.msdn.com/ShowPost.aspx?PageIndex=1&amp;amp;PostID=10276"&gt;Anders Hejlsberg - Programming data in C# 3.0&lt;/a&gt;  &lt;li&gt;&lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=273120"&gt;Anders on Ask the Experts, Jan 17, 2007&lt;/a&gt;  &lt;li&gt;&lt;a href="http://channel9.msdn.com/ShowPost.aspx?PageIndex=1&amp;amp;PostID=114680"&gt;Anders Hejlsberg - LINQ (2005)&lt;/a&gt;&amp;nbsp; &lt;li&gt;&lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=347940"&gt;Programming in the Age of Concurrency - Anders Hejlsberg and Joe Duffy: Concurrent Programming with PFX&lt;/a&gt;  &lt;li&gt;&lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=260402"&gt;Anders Hejlsberg and Chris McConnell: Reflections on LINQ, Desktop Search, WinFS, Functional and Intentional Programming&lt;/a&gt;  &lt;li&gt;&lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=55021"&gt;Anders Hejlsberg - More C# Talk from C#'s Architect (Happy Birthday Video #3)&lt;/a&gt;  &lt;li&gt;&lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=10212"&gt;Anders Hejlsberg - What's so great about generics?&lt;/a&gt;  &lt;li&gt;&lt;a href="http://channel9.msdn.com/ShowPost.aspx?PageIndex=1&amp;amp;PostID=159952"&gt;Life and Times of Anders Hejlsberg&lt;/a&gt;  &lt;li&gt;&lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=237386"&gt;Anders Hejlsberg - Tour through computing industry history at the Microsoft Museum&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Videos by other Team Members  &lt;ul&gt; &lt;li&gt;&lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=313081"&gt;Luke Hoban: Orcas - Compiling LINQ, C# Futures, Intellisense&lt;/a&gt;  &lt;li&gt;&lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=357685"&gt;Luke Hoban - VS2008 Training Kit: What's new in C# 3.0?&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.langnetsymposium.com/talks/3-02 - FSharp - Luke Hoban.html"&gt;Luke Hoban FSharp - Luke Hoban&lt;/a&gt; &lt;a href="http://download.microsoft.com/download/c/e/5/ce5434ca-4f54-42b1-81ea-7f5a72f3b1dd/3-02 - FSharp - Luke Hoban.wmv"&gt;wmv&lt;/a&gt;  &lt;li&gt;&lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=357683"&gt;Luca Bolognese - VS2008 Training Kit: .NET Language Integrated Query (LINQ)&lt;/a&gt;  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/msdntv/episode.aspx?xml=episodes/en/20060622linqlb/manifest.xml"&gt;Luca Bolognese (Lead PM, C# Team) on "What's New in the May LINQ Preview"&lt;/a&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/charlie/archive/2007/08/06/linq-to-sql-pipeline-video-with-luca-bolognese-and-matt-warren.aspx"&gt;LINQ to SQL Pipeline Video with Luca Bolognese and Matt Warren&lt;/a&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/ericlippert/archive/2006/11/17/a-face-made-for-email-part-three.aspx"&gt;Eric Lippert on Type Inference&lt;/a&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/charlie/archive/2006/11/17/video-with-peter-hallam-automatic-properties.aspx"&gt;Peter Hallam on Automatic Properties&lt;/a&gt;  &lt;li&gt;&lt;a href="http://wm.microsoft.com/ms/msdn/visualcsharp/anson/Anson_0001.wmv"&gt;Performance Issues in Visual Studio&lt;/a&gt;  &lt;li&gt;&lt;a href="http://wm.microsoft.com/ms/msdn/visualcsharp/MVP_2006_09/DJ%20and%20Karen.wmv"&gt;C# PM's Karen Liu and DJ Park on the C# IDE, LAF, and support for LINQ.&lt;/a&gt;  &lt;li&gt;&lt;a href="http://wm.microsoft.com/ms/msdn/visualcsharp/wes_dyer_2007_01/WesDyer_0002.wmv"&gt;An Interview with Wes Dyer&lt;/a&gt; (&lt;a href="http://download.microsoft.com/download/4/c/a/4cafaeb6-30aa-42f4-bae9-cd1a92e9789d/WesDyer_0002.zip"&gt;Download&lt;/a&gt;)  &lt;li&gt;&lt;a href="http://www.langnetsymposium.com/talks/3-00 - IronRuby - John Lam.html"&gt;IronRuby - John Lam&lt;/a&gt; &lt;a href="http://download.microsoft.com/download/c/e/5/ce5434ca-4f54-42b1-81ea-7f5a72f3b1dd/3-00 - IronRuby - John Lam.wmv"&gt;wmv&lt;/a&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/charlie/archive/2007/02/26/linq-farm-linq-to-sql-beginners-video.aspx"&gt;LINQ to SQL Beginners Video&lt;/a&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/charlie/archive/2007/02/28/linq-farm-one-to-many-and-joins-video.aspx"&gt;LINQ Farm: Videos on One-to-Many Relationships and Joins&lt;/a&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/charlie/archive/2007/02/26/linq-farm-linq-to-sql-beginners-video.aspx"&gt;LINQ Farm: LINQ To Sql Beginners Video&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Other Teams  &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.langnetsymposium.com/talks.asp"&gt;Lang.NET 2008&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.msdn.com%2fcharlie%2farchive%2f2008%2f03%2f28%2fanders-hejlsberg-film-festival-the-c-and-other-vsl-teams-at-the-movies.aspx"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.msdn.com%2fcharlie%2farchive%2f2008%2f03%2f28%2fanders-hejlsberg-film-festival-the-c-and-other-vsl-teams-at-the-movies.aspx" border="0"&gt;&lt;/a&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8343034" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/charlie/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://blogs.msdn.com/charlie/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Video/default.aspx">Video</category></item><item><title>Video of Luke Hoban's In-Depth Look at C# 3.0</title><link>http://blogs.msdn.com/charlie/archive/2008/02/22/video-of-luke-hoban-in-depth-look-at-c-3-0.aspx</link><pubDate>Fri, 22 Feb 2008 23:52:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7850891</guid><dc:creator>Charlie Calvert</dc:creator><slash:comments>79</slash:comments><comments>http://blogs.msdn.com/charlie/comments/7850891.aspx</comments><wfw:commentRss>http://blogs.msdn.com/charlie/commentrss.aspx?PostID=7850891</wfw:commentRss><description>&lt;p&gt;Last fall in Barcelona, Spain two PM's from the C# team gave talks on key parts of the new LINQ technology found in Visual Studio 2008:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Luca Bolognese&lt;/strong&gt;: &lt;a href="http://www.microsoft.com/emea/msdn/spotlight/sessionh.aspx?videoid=716"&gt;LINQ to SQL: Accessing Relational Data with Language Integrated Query&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Luke Hoban&lt;/strong&gt;: &lt;a href="http://www.microsoft.com/emea/msdn/spotlight/sessionh.aspx?videoid=710"&gt;Microsoft Visual C# Under the Covers: An In-Depth Look at C# 3.0&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/lukeh/"&gt;Luke Hoban&lt;/a&gt; was the PM who drove the development of LINQ to Objects, and the man who created the now famous &lt;a href="http://blogs.msdn.com/lukeh/archive/2007/10/01/taking-linq-to-objects-to-extremes-a-fully-linqified-raytracer.aspx"&gt;implementation&lt;/a&gt; of a ray tracer in a single, very long, LINQ query expression. He is now focusing his efforts on F#. By listening to his talk on C# 3.0 features you will get a chance to see a detailed and specific analysis of how LINQ works. Listening to him give this talk marked a turning point in my understanding of LINQ. For the first time I understood how the team folded extension methods and query expressions together to create the marvelously supple and deceptively simple syntax that we know as LINQ. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/VideoofLukeHobanInDepthLookatC3.0_B4D4/Barcelona01_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="201" alt="Barcelona01" src="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/VideoofLukeHobanInDepthLookatC3.0_B4D4/Barcelona01_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Figure 1: Luke Hoban's vision of the inner workings of LINQ to Objects gives developers significant insight into the beauty of C# 3.0.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/lucabol/"&gt;Luca Bolognese&lt;/a&gt; is the Principal Program Manager Lead on the C# team. His talk on LINQ to SQL endows developers with the knowledge necessary to wield the tools that drive data driven application development under C# 3.0. A consummate speaker, Luca skillfully guides his audience through the elements that comprise LINQ to SQL development.&lt;/p&gt;  &lt;p&gt;Here are the links you need to get started.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The Talks discussed in this post:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/emea/msdn/spotlight/sessionh.aspx?videoid=710"&gt;&lt;b&gt;Microsoft Visual C# Under the Covers: An In-Depth Look at C# 3.0&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;&lt;a href="http://www.microsoft.com/emea/msdn/spotlight/sessionh.aspx?videoid=716"&gt;LINQ to SQL: Accessing Relational Data with Language Integrated Query&lt;/a&gt;&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;More talks from the TechEd Developers Event Link: &lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/emea/msdn/spotlight/event.aspx?id=82"&gt;&lt;strong&gt;http://www.microsoft.com/emea/msdn/spotlight/event.aspx?id=82&lt;/strong&gt;&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.msdn.com%2fcharlie%2farchive%2f2008%2f02%2f22%2fvideo-of-luke-hoban-in-depth-look-at-c-3-0.aspx"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.msdn.com%2fcharlie%2farchive%2f2008%2f02%2f22%2fvideo-of-luke-hoban-in-depth-look-at-c-3-0.aspx" border="0" /&gt;&lt;/a&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7850891" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/charlie/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://blogs.msdn.com/charlie/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Video/default.aspx">Video</category></item><item><title>LINQ and Deferred Execution Video</title><link>http://blogs.msdn.com/charlie/archive/2007/12/13/deferred-execution-video.aspx</link><pubDate>Fri, 14 Dec 2007 10:14:51 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6731940</guid><dc:creator>Charlie Calvert</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/charlie/comments/6731940.aspx</comments><wfw:commentRss>http://blogs.msdn.com/charlie/commentrss.aspx?PostID=6731940</wfw:commentRss><description>&lt;p&gt;Here is a video version of the &lt;a href="http://blogs.msdn.com/charlie/archive/2007/12/09/deferred-execution.aspx"&gt;Deferred Execution post&lt;/a&gt; I published on December 9. You can watch the video on &lt;a href="http://video.msn.com/?user=4908805029525873480"&gt;SoapBox&lt;/a&gt;, or you can access it directly from the &lt;a href="http://download.microsoft.com/download/1/a/3/1a38e40f-e68c-4cf9-874f-23dd5a91a8a7/DeferredExecution.wmv"&gt;Microsoft Downloads site&lt;/a&gt;. To download the video, just right click on &lt;a href="http://download.microsoft.com/download/1/a/3/1a38e40f-e68c-4cf9-874f-23dd5a91a8a7/DeferredExecution.wmv"&gt;this link&lt;/a&gt; and choose &lt;strong&gt;Save target as&lt;/strong&gt; or &lt;strong&gt;Save link as&lt;/strong&gt; from the popup menu.&lt;/p&gt; &lt;p&gt;Many people might find it easiest to watch the video once, then go to the original post to pursue this subject in more depth. The full Visual Studio 2008 project shown in the video is attached to the article.&amp;nbsp; You can also go to the post to read about the subject matter of the video at your own pace, or to cut and paste code shown in the video. &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Original Article: &lt;a href="http://blogs.msdn.com/charlie/archive/2007/12/09/deferred-execution.aspx"&gt;LINQ and Deferred Execution&lt;/a&gt;  &lt;li&gt;Video: &lt;a href="http://download.microsoft.com/download/1/a/3/1a38e40f-e68c-4cf9-874f-23dd5a91a8a7/DeferredExecution.wmv"&gt;Deferred Execution&lt;/a&gt;  &lt;li&gt;Soapbox Video: &lt;a href="http://video.msn.com/video.aspx/?mkt=en-us&amp;amp;user=4908805029525873480&amp;amp;wa=wsignin1.0#"&gt;Deferred Execution&lt;/a&gt;, or just click on the video below.  &lt;li&gt;Source Code: &lt;a href="http://blogs.msdn.com/charlie/attachment/6699015.ashx"&gt;DeferredExecutionWithDatabase.zip&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:7b2146b5-8533-4551-ad0f-0cba432b7268" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; width: 432px; padding-top: 0px"&gt;&lt;div id="f0209300-19ef-430b-a01e-3afe1c722151" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://video.msn.com/video.aspx?vid=affcc938-2d66-41ad-9701-8e89367b93f5&amp;amp;from=writer" target="_new"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/charlie/WindowsLiveWriter/DeferredExecutionVideo_13E82/video6756990ba94a_1.jpg" galleryimg="no" onload="var downlevelDiv = document.getElementById('f0209300-19ef-430b-a01e-3afe1c722151'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;embed src=\&amp;quot;http://images.video.msn.com/flash/soapbox1_1.swf\&amp;quot; quality=\&amp;quot;high\&amp;quot; width=\&amp;quot;432\&amp;quot; height=\&amp;quot;364\&amp;quot; wmode=\&amp;quot;transparent\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; pluginspage=\&amp;quot;http://macromedia.com/go/getflashplayer\&amp;quot; flashvars=\&amp;quot;c=v&amp;amp;v=affcc938-2d66-41ad-9701-8e89367b93f5&amp;amp;from=writer\&amp;quot; &amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;The URL of the video:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;a href="http://download.microsoft.com/download/1/a/3/1a38e40f-e68c-4cf9-874f-23dd5a91a8a7/DeferredExecution.wmv"&gt;http://download.microsoft.com/download/1/a/3/1a38e40f-e68c-4cf9-874f-23dd5a91a8a7/DeferredExecution.wmv&lt;/a&gt; &lt;/p&gt;&lt;/blockquote&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.msdn.com%2fcharlie%2farchive%2f2007%2f12%2f13%2fdeferred-execution-video.aspx"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.msdn.com%2fcharlie%2farchive%2f2007%2f12%2f13%2fdeferred-execution-video.aspx" border="0"&gt;&lt;/a&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6731940" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/charlie/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://blogs.msdn.com/charlie/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Video/default.aspx">Video</category></item><item><title>LINQ to SQL Pipeline Video with Luca Bolognese and Matt Warren</title><link>http://blogs.msdn.com/charlie/archive/2007/08/06/linq-to-sql-pipeline-video-with-luca-bolognese-and-matt-warren.aspx</link><pubDate>Tue, 07 Aug 2007 00:49:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4266421</guid><dc:creator>Charlie Calvert</dc:creator><slash:comments>16</slash:comments><comments>http://blogs.msdn.com/charlie/comments/4266421.aspx</comments><wfw:commentRss>http://blogs.msdn.com/charlie/commentrss.aspx?PostID=4266421</wfw:commentRss><description>&lt;p&gt;C# Principal Architect Matt Warren and Lead PM Luca Bolognese detail the pipeline&amp;nbsp;that hastens your LINQ queries to execution. Matt did most of the design and implementation of this code.&amp;nbsp;His explanations&amp;nbsp;are vivid and useful. The drawings are well organized, well executed, and clearly explained. Matt and Luca have worked together for years, and they make an excellent team.  &lt;p&gt;You can see the 40 minute video by clicking on the Soapbox graphic shown in Figure 1. There are also two downloadable versions of this video. The smaller one is roughly equivalent in quality to the embedded Soapbox video found in this blog, the other is of much higher quality, but also much larger. Both versions of the&amp;nbsp;video&amp;nbsp;are in WMV format and are&amp;nbsp;stored in zip files.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://download.microsoft.com/download/0/0/b/00b94c47-c0bc-47a9-bcbf-e837c82eeea7/LinqPipeline.zip"&gt;High quality video&lt;/a&gt;&amp;nbsp;(318,630 KB)  &lt;li&gt;&lt;a href="http://download.microsoft.com/download/0/0/b/00b94c47-c0bc-47a9-bcbf-e837c82eeea7/LinqPipelineSmall.zip"&gt;Compact version of video for smaller devices&lt;/a&gt;&amp;nbsp;(35,198 KB)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;embed pluginspage="http://macromedia.com/go/getflashplayer" src="http://images.soapbox.msn.com/flash/soapbox1_1.swf" width="432" height="364" type="application/x-shockwave-flash" flashvars="c=v&amp;amp;v=e3727a82-1f76-4cc5-a06b-bdd8c8ef194d" wmode="transparent" quality="high"&gt;&lt;/embed&gt;&lt;br&gt;&lt;strong&gt;Figure 1: &lt;/strong&gt;&lt;a title="LINQ Pipeline" href="http://soapbox.msn.com/video.aspx?vid=e3727a82-1f76-4cc5-a06b-bdd8c8ef194d" target="_new"&gt;&lt;strong&gt;Video: LINQ Pipeline&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;  &lt;p&gt;Topics covered in&amp;nbsp;the video:  &lt;ul&gt; &lt;li&gt;A step by step in depth explanation of the LINQ Pipeline that transforms a LINQ query into&amp;nbsp;SQL and returns a result to the user.  &lt;li&gt;A detailed explanation of&amp;nbsp;updates and calls to &lt;strong&gt;SubmitChanges()&lt;/strong&gt; including discussions of:  &lt;ul&gt; &lt;li&gt;Transactions&amp;nbsp;  &lt;li&gt;Injecting stored procedures into the update pipeline. &lt;/li&gt;&lt;/ul&gt; &lt;li&gt;A discussion of&amp;nbsp;the history of LINQ and its roots. Matt and Luca talk about the many years of hard work necessary to bring LINQ to fruition, and the roles that such luminaries as Erik Meijer and Anders Hejlsberg had in that process. Both Luca and Matt have been with LINQ since&amp;nbsp;its inception. They know the whole story, and no one could possibly be better poised to explain it than these two who had so much to do with its creation and implementation.&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.msdn.com/charlie/archive/2007/08/06/linq-to-sql-pipeline-video-with-luca-bolognese-and-matt-warren.aspx"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.msdn.com/charlie/archive/2007/08/06/linq-to-sql-pipeline-video-with-luca-bolognese-and-matt-warren.aspx" border="0"&gt;&lt;/a&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4266421" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/charlie/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://blogs.msdn.com/charlie/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Video/default.aspx">Video</category></item><item><title>LINQ to SQL Introductory Video</title><link>http://blogs.msdn.com/charlie/archive/2007/06/20/linq-to-sql-introductory-video.aspx</link><pubDate>Wed, 20 Jun 2007 20:43:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3428481</guid><dc:creator>Charlie Calvert</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/charlie/comments/3428481.aspx</comments><wfw:commentRss>http://blogs.msdn.com/charlie/commentrss.aspx?PostID=3428481</wfw:commentRss><description>&lt;p&gt;This video shows the basic steps required to create a LINQ to SQL video using Visual Studio&amp;nbsp;2008 Beta 1 (aka as Orcas Beta 1). You will be introduced to following concepts:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Using the LINQ to SQL designer to map data in your database to classes in your program.  &lt;ol&gt; &lt;li&gt;Generating a &lt;strong&gt;DataContext&lt;/strong&gt; used to connect to your database and access its tables and field  &lt;li&gt;Exploring the auto-generated ORM-style entity classes that wrap the tables in your database&lt;/li&gt;&lt;/ol&gt; &lt;li&gt;Writing LINQ to SQL code  &lt;ol&gt; &lt;li&gt;Instantiating an instance of the &lt;strong&gt;DataContext&lt;/strong&gt;  &lt;li&gt;Writing a SQL Expression to query data  &lt;li&gt;Iterating over LINQ to SQL data with a &lt;strong&gt;foreach&lt;/strong&gt; loop  &lt;li&gt;Using Anonymous Types to create a&amp;nbsp;projection, or custom view, of data in a table  &lt;li&gt;Creating a LINQ style join between two tables that are linked by a foreign key  &lt;li&gt;Using the &lt;strong&gt;ObjectDumper&lt;/strong&gt; class from&amp;nbsp;Visual Studio 2008 (Orcas)  &lt;li&gt;Using Type Inference and the &lt;strong&gt;var&lt;/strong&gt; keyword&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;There is nothing very fancy in this video, but&amp;nbsp;it will provide you with&amp;nbsp;an easy to follow introduction to LINQ to SQL.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a title="LINQ to SQL Introduction by Charlie Calvert" href="http://www.elvenware.com/charlie/data/LinqIntroWeb/LinqIntroWeb.html" target="_blank"&gt;Stream the Video&lt;/a&gt; (Flash and JavaScript&amp;nbsp;required)  &lt;li&gt;&lt;a title="LINQ to SQL Introduction by Charlie Calvert" href="http://www.elvenware.com/charlie/data/LinqIntroWeb/LinqIntroWeb.zip" target="_blank"&gt;Download the video&lt;/a&gt;: (Size 6.6 MB.&amp;nbsp;Flash required.&amp;nbsp;JavaScript required unless you have a standalone flash player.) &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:db996380-da05-4843-8121-457f1cb8c921" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;del.icio.us Tags: &lt;a href="http://del.icio.us/popular/C#" rel="tag"&gt;C#&lt;/a&gt;, &lt;a href="http://del.icio.us/popular/LINQ" rel="tag"&gt;LINQ&lt;/a&gt;&lt;/div&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.msdn.com/charlie/archive/2007/06/20/linq-to-sql-introductory-video.aspx"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.msdn.com/charlie/archive/2007/06/20/linq-to-sql-introductory-video.aspx" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3428481" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/charlie/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://blogs.msdn.com/charlie/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Video/default.aspx">Video</category></item><item><title>Videos</title><link>http://blogs.msdn.com/charlie/archive/2007/06/18/videos.aspx</link><pubDate>Mon, 18 Jun 2007 20:36:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3387325</guid><dc:creator>Charlie Calvert</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/charlie/comments/3387325.aspx</comments><wfw:commentRss>http://blogs.msdn.com/charlie/commentrss.aspx?PostID=3387325</wfw:commentRss><description>&lt;p&gt;I'm trying to pull together lists of available C#&amp;nbsp;videos. I'll be working on this list over time, but here are few preliminary pointers.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Luca at Tech Ed 2007: (&lt;a href="http://www.microsoft.com/events/EventDetails.aspx?CMTYSvcSource=MSCOMMedia&amp;amp;Params=%7eCMTYDataSvcParams%5e%7earg+Name%3d%22ID%22+Value%3d%221032340926%22%2f%5e%7earg+Name%3d%22ProviderID%22+Value%3d%22A6B43178-497C-4225-BA42-DF595171F04C%22%2f%5e%7earg+Name%3d%22lang%22+Value%3d%22en%22%2f%5e%7earg+Name%3d%22cr%22+Value%3d%22US%22%2f%5e%7esParams%5e%7e%2fsParams%5e%7e%2fCMTYDataSvcParams%5e"&gt;The .NET Language Integrated Query (LINQ) Framework (Level 300)&lt;/a&gt;)  &lt;li&gt;&lt;a href="http://sessions.visitmix.com/silverlight/v1/videos/DEV04.wmv"&gt;Anders at Mix&lt;/a&gt;&amp;nbsp;(You can just right click on this link to save it to disk.) &lt;li&gt;FebCtp Video: &lt;a href="http://wm.microsoft.com/ms/msdn/visualcsharp/FebCtp/FebCtp_0001.wmv"&gt;Stream it&lt;/a&gt;  &lt;li&gt;FebCtp Video: &lt;a href="http://download.microsoft.com/download/c/0/9/c0971723-89a1-46dd-ba75-ecc6de6dabbc/FebCTP.zip"&gt;Download Video&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.microsoft.com/emea/msdnshowtime/sessionh.aspx?videoid=317"&gt;LINQ Overview&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.microsoft.com/emea/msdnshowtime/sessionh.aspx?videoid=319"&gt;C# 3.0&lt;/a&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/charlie/archive/2007/01/26/anders-hejlsberg-on-linq-and-functional-programming.aspx"&gt;Anders on LINQ and Functional Programming&lt;/a&gt;  &lt;li&gt;&lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=273120"&gt;Anders on Ask the Experts, Jan 17, 2007&lt;/a&gt;  &lt;li&gt;&lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=114680"&gt;Anders on LINQ&lt;/a&gt;&amp;nbsp;from 2005  &lt;li&gt;&lt;a href="http://download.microsoft.com/download/9/4/1/94138e2a-d9dc-435a-9240-bcd985bf5bd7/AndersH-LINQ_0001.wmv"&gt;Anders on LINQ from the LANG.NET Conference&lt;/a&gt;  &lt;li&gt;&lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=202138"&gt;Anders Chatting about LINQ and ADO.NET&lt;/a&gt;  &lt;li&gt;&lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=273697"&gt;Anders, Herb Sutter, Erik Meijer, Brian Beckman on Software Composability&lt;/a&gt;  &lt;li&gt;&lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=260202"&gt;Anders with Chris McConnell&lt;/a&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/ericlippert/archive/2006/11/17/a-face-made-for-email-part-three.aspx"&gt;Eric Lippert on Type Inference&lt;/a&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/charlie/archive/2006/11/17/video-with-peter-hallam-automatic-properties.aspx"&gt;Peter Hallam on Automatic Properties&lt;/a&gt;  &lt;li&gt;&lt;a href="http://wm.microsoft.com/ms/msdn/visualcsharp/anson/Anson_0001.wmv"&gt;Performance Issues in Visual Studio&lt;/a&gt;&amp;nbsp;(Anson Horton, C# PM,&amp;nbsp;only tangentially related to LINQ)  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/msdntv/episode.aspx?xml=episodes/en/20060622linqlb/manifest.xml"&gt;Luca Bolognese (Lead PM, C# Team) on "What's New in the May LINQ Preview"&lt;/a&gt;  &lt;li&gt;&lt;a href="http://wm.microsoft.com/ms/msdn/visualcsharp/MVP_2006_09/DJ%20and%20Karen.wmv"&gt;C# PM's Karen Liu and DJ Park on the C# IDE, LAF, and support for LINQ.&lt;/a&gt;  &lt;li&gt;&lt;a href="http://wm.microsoft.com/ms/msdn/visualcsharp/wes_dyer_2007_01/WesDyer_0002.wmv"&gt;An Interview with Wes Dyer&lt;/a&gt;&amp;nbsp;(&lt;a href="http://download.microsoft.com/download/4/c/a/4cafaeb6-30aa-42f4-bae9-cd1a92e9789d/WesDyer_0002.zip"&gt;Download&lt;/a&gt;)  &lt;li&gt;&lt;a href="http://wm.microsoft.com/ms/msdn/visualcsharp/pm_raj/pm_raj_02.wmv"&gt;Raj Pai, C# GPM, on the C# Team&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;Beginning Developer Series&lt;/h3&gt; &lt;p&gt;Thanks to Kathleen McGrath who helped track some of these down.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://msdn.microsoft.com/vstudio/express/beginner/reference/wf_vcsharp/default.aspx"&gt;How-To Windows Forms Controls Series – Visual C#&lt;/a&gt;  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/vstudio/express/visualcsharp/features/default.aspx"&gt;C# 2005 Express Feature Tour&lt;/a&gt;  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/vstudio/express/beginner/windows/tier1/csharp/"&gt;Introduction to the C# Language&lt;/a&gt;  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/vstudio/express/beginner/windows/tier2/begin1/cs/"&gt;Absolute Beginners series&lt;/a&gt;.. &lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;Older Videos&lt;/h2&gt; &lt;p&gt;Thanks to Kathleen McGrath who helped track some of these down.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.microsoft.com/#Introductionto3DVideoGameDevelopment"&gt;Introduction to 3-D Video Game Development&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.microsoft.com/#ProjectHoshimi"&gt;Project Hoshimi&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.microsoft.com/#Introductionto2DVideoGameDevelopment"&gt;Introduction to 2-D Video Game Development&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.microsoft.com/#VisualCSouptoNuts"&gt;Visual C# Soup to Nuts&lt;/a&gt;  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/vcsharp/programming/videos/default.aspx"&gt;C# Videos&lt;/a&gt;  &lt;li&gt;&lt;a href="http://channel9.msdn.com/ShowForum.aspx?ForumID=38&amp;amp;TagID=16"&gt;Channel 9 Screencasts&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3387325" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/charlie/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://blogs.msdn.com/charlie/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://blogs.msdn.com/charlie/archive/tags/Video/default.aspx">Video</category></item></channel></rss>