<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
    <channel>
        <title>Managed World</title>
        <link>http://geekswithblogs.net/jolson/Default.aspx</link>
        <description>An Odyssey Through The Land Of Geekdom With jolson88</description>
        <language>en-US</language>
        <copyright>Jason Olson</copyright>
        <managingEditor>jason@managed-world.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <image>
            <title>Managed World</title>
            <url>http://geekswithblogs.net/images/RSS2Image.gif</url>
            <link>http://geekswithblogs.net/jolson/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/ManagedWorld" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
            <title>Visual Studio 2010 Training Course on Channel 9</title>
            <category>C# Dev Center</category>
            <category>Development</category>
            <link>http://feedproxy.google.com/~r/ManagedWorld/~3/nLw90XZATdM/visual-studio-2010-training-course-on-channel-9.aspx</link>
            <description>&lt;p&gt;This morning, Channel 9 launched the new &lt;a href="http://channel9.msdn.com/learn/"&gt;Channel 9 Learning Center&lt;/a&gt;. From Channel 9, here’s a description of what the Learning Center is: “The Channel 9 Learning Center is the destination for free technical training on emerging Microsoft products and technologies. The Learning Center consists of a set of courses with each course including a set of videos, hands-on labs, and source code samples to get you up-to-speed quickly.”&lt;a href="http://r.ch9.ms/vs2010tw"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 10px; display: inline; border-top: 0px; border-right: 0px" title="TrainingCourse" border="0" alt="TrainingCourse" align="right" src="http://geekswithblogs.net/images/geekswithblogs_net/jolson/WindowsLiveWriter/VisualStudio2010TrainingCourseonChannel9_8EB6/TrainingCourse_3.jpg" width="335" height="214" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I’m pleased to say that Visual Studio 2010 is one of the first Training Courses that we have launched on Channel 9. Please welcome the &lt;a href="http://r.ch9.ms/vs2010tw"&gt;Visual Studio 2010 Training Course&lt;/a&gt;.  &lt;/p&gt;  &lt;p&gt;What is the Visual Studio 2010 Training Course? The Visual Studio 2010 and .NET Framework 4 Training Course includes videos and hands-on-labs designed to help you learn how to utilize the Visual Studio 2010 features and a variety of framework technologies including: C# 4.0, Visual Basic 10, F#, Parallel Computing Platform, WCF, WF, WPF, ASP.NET AJAX 4.0, ASP.NET MVC Dynamic Data. &lt;/p&gt;  &lt;p&gt;Essentially, the Training Course is an online version of our Visual Studio 2010 Training Kit. In this first release of the training course, it contains a subset of the content that is actually present in the training kit. Of course, since it is an online delivery mechanism, we will continue to add more items from the training kit into this training course over the coming weeks and months. &lt;/p&gt;  &lt;p&gt;This first version of the Training Course includes intro videos and labs on the following technology areas: managed languages, ASP.NET 4, data platform (ADO.NET and “Velocity”), WCF, WF, and Parallel Computing. &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;I hope you all enjoy the &lt;a href="http://r.ch9.ms/vs2010tw"&gt;Visual Studio 2010 Training Course&lt;/a&gt; on Channel 9!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=135638"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=135638" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jolson/aggbug/135638.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=nLw90XZATdM:M8kyaCOWUtU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=nLw90XZATdM:M8kyaCOWUtU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?i=nLw90XZATdM:M8kyaCOWUtU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=nLw90XZATdM:M8kyaCOWUtU:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=nLw90XZATdM:M8kyaCOWUtU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            <dc:creator>Jason Olson</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/jolson/archive/2009/10/21/visual-studio-2010-training-course-on-channel-9.aspx</guid>
            <pubDate>Wed, 21 Oct 2009 17:08:58 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jolson/comments/135638.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jolson/archive/2009/10/21/visual-studio-2010-training-course-on-channel-9.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jolson/comments/commentRss/135638.aspx</wfw:commentRss>
        <feedburner:origLink>http://geekswithblogs.net/jolson/archive/2009/10/21/visual-studio-2010-training-course-on-channel-9.aspx</feedburner:origLink></item>
        <item>
            <title>Visual Studio 2010 Beta 2 Training Kit Published</title>
            <category>C# Dev Center</category>
            <category>Development</category>
            <link>http://feedproxy.google.com/~r/ManagedWorld/~3/iQz3XFj9M_Q/visual-studio-2010-beta-2-training-kit-published.aspx</link>
            <description>&lt;p&gt;The Beta 2 version of DPE’s Visual Studio 2010 Training Kit is now live (you can find it at &lt;a title="http://tinyurl.com/Beta2Training" href="http://tinyurl.com/Beta2Training"&gt;http://tinyurl.com/Beta2Training&lt;/a&gt;). &lt;/p&gt;  &lt;p&gt;&lt;a href="http://tinyurl.com/Beta2Training"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="Training Kit" border="0" alt="Training Kit" align="right" src="http://geekswithblogs.net/images/geekswithblogs_net/jolson/WindowsLiveWriter/VisualStudio2010Beta2TrainingKitPublishe_92CF/Training%20Kit_3.jpg" width="305" height="241" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;A training kit includes presentations, hands-on labs, and demos. This content is designed to help you learn how to utilize a variety of Visual Studio 2010 and .NET Framework 4 technologies. &lt;/p&gt;  &lt;p&gt;The Beta 2 release of the Training Kit contains 15 presentations, 19 hands-on labs, and 13 demos. Many technologies are covered in this release, including: C# 4, VB 10, F#, Parallel Extensions, Windows Communication Foundation, Windows Workflow, Windows Presentation Foundation, ASP.NET 4, Entity Framework, ADO.NET Data Services, Managed Extensibility Framework, and Visual Studio Ultimate.&lt;/p&gt;  &lt;p&gt;There’s a lot of content covered here. See for yourself:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Presentations&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;What’s New in .NET Framework 4&lt;/li&gt;    &lt;li&gt;What’s New in Visual Studio 2010&lt;/li&gt;    &lt;li&gt;Introduction to ASP.NET MVC&lt;/li&gt;    &lt;li&gt;Introduction to Managed Extensibility Framework&lt;/li&gt;    &lt;li&gt;Introduction to .NET RIA Services&lt;/li&gt;    &lt;li&gt;Introduction to “Velocity”&lt;/li&gt;    &lt;li&gt;Parallel Computing for Managed Developers&lt;/li&gt;    &lt;li&gt;Web Deployment with Visual Studio 2010&lt;/li&gt;    &lt;li&gt;What’s New in ASP.NET AJAX 4&lt;/li&gt;    &lt;li&gt;What’s New in ASP.NET Web Forms 4&lt;/li&gt;    &lt;li&gt;What’s New in C# and VB&lt;/li&gt;    &lt;li&gt;What’s New in ADO.NET Data Services&lt;/li&gt;    &lt;li&gt;What’s New in Entity Framework 4&lt;/li&gt;    &lt;li&gt;What’s New in Windows Presentation Foundation 4&lt;/li&gt;    &lt;li&gt;What’s New in Windows Workflow 4&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Hands-On Labs&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Introduction to ADO.NET Data Services&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Exercise 1: Creating and Consuming ADO.NET Data Services&lt;/li&gt;      &lt;li&gt;Exercise 2: Consuming ADO.NET Data Services using ASP.NET AJAX&lt;/li&gt;      &lt;li&gt;Exercise 3: Extending Data Services with Service Operations and Interceptors&lt;/li&gt;      &lt;li&gt;Exercise 4: Adding Client-Side Paging with Row Count&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;ASP.NET AJAX 4&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Exercise 1: Leveraging a Client-Side Template&lt;/li&gt;      &lt;li&gt;Exercise 2: Using the DataView Control&lt;/li&gt;      &lt;li&gt;Exercise 3: Creating Custom Markup Extensions&lt;/li&gt;      &lt;li&gt;Exercise 4: Declaratively Instantiating Behaviors&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Creating Plan My Night – ASP.NET MVC Application&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Exercise 1: Creating an ASP.NET MVC Application, Plan My Night&lt;/li&gt;      &lt;li&gt;Exercise 2: Creating Entity Framework Data Model&lt;/li&gt;      &lt;li&gt;Exercise 3: Adding AJAX For Searching Activities&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Enhancing Plan My Night – ASP.NET MVC Application&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Exercise 1: Adding Caching using “Velocity”&lt;/li&gt;      &lt;li&gt;Exercise 2: Structuring an Application using MVC Areas&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Introduction to ASP.NET Web Forms 4&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Exercise 1: Controlling Server Control ClientIds&lt;/li&gt;      &lt;li&gt;Exercise 2: Enabling Bi-Directional Routing Support&lt;/li&gt;      &lt;li&gt;Exercise 3: Granular ViewState&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Microsoft Office Programmability in C# and Visual Basic&lt;/li&gt;    &lt;li&gt;Introduction to F#&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Exercise 1: Types in F#&lt;/li&gt;      &lt;li&gt;Exercise 2: Using the Let keyword&lt;/li&gt;      &lt;li&gt;Exercise 3: Functions&lt;/li&gt;      &lt;li&gt;Exercise 4: Lists&lt;/li&gt;      &lt;li&gt;Exercise 5: Pattern Matching and Recursion&lt;/li&gt;      &lt;li&gt;Exercise 6: Types and Discriminated Unions&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Introduction to the Managed Extensibility Framework&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Exercise 1: Using MEF To Dynamically Add Modules to an Application&lt;/li&gt;      &lt;li&gt;Exercise 2: Dynamically extending a form&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Introduction to “Velocity”&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Exercise 1: Setting up and running “Velocity”&lt;/li&gt;      &lt;li&gt;Exercise 2: Programming directly against “Velocity” as a generic object cache&lt;/li&gt;      &lt;li&gt;Exercise 3: Using Velocity’s SessionState provider with ASP.NET&lt;/li&gt;      &lt;li&gt;Exercise 4 (Optional): Configure “Velocity” Cache in a cluster&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Introduction to Workflow 4&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Exercise 1: Hello Workflow&lt;/li&gt;      &lt;li&gt;Exercise 2: Refactoring Workflows&lt;/li&gt;      &lt;li&gt;Exercise 3: The CodeActivity&lt;/li&gt;      &lt;li&gt;Exercise 4: Dynamic Workflows with XAML&lt;/li&gt;      &lt;li&gt;Exercise 5: Testing Workflows&lt;/li&gt;      &lt;li&gt;Exercise 6: WorkflowApplication&lt;/li&gt;      &lt;li&gt;Exercise 7: Adding If/Else Logic&lt;/li&gt;      &lt;li&gt;Exercise 8: Error Handling&lt;/li&gt;      &lt;li&gt;Exercise 9: Activity Designers&lt;/li&gt;      &lt;li&gt;Exercise 10: Hosted Designer&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Introduction to Parallel Extensions&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Exercise 1: Parallelize existing algorithm using static Parallel helper class&lt;/li&gt;      &lt;li&gt;Exercise 2: Create and run parallelized Tasks&lt;/li&gt;      &lt;li&gt;Exercise 3: Using the Task&amp;lt;T&amp;gt; class to create and run tasks that return a value&lt;/li&gt;      &lt;li&gt;Exercise 4: Parallelizing LINQ queries using PLINQ&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Test-Driven Development in Visual Studio 2010&lt;/li&gt;    &lt;li&gt;WCF Service Discovery&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Exercise 1: Ad-Hoc Discovery&lt;/li&gt;      &lt;li&gt;Exercise 2: Metadata Extensions&lt;/li&gt;      &lt;li&gt;Exercise 3: Announcements&lt;/li&gt;      &lt;li&gt;Exercise 4: Discovery Proxy&lt;/li&gt;      &lt;li&gt;Exercise 5: Legacy Discovery&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Web Development in Visual Studio 2010&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Exercise 1: Using HTML Code Snippets&lt;/li&gt;      &lt;li&gt;Exercise 2: Web.config Transformations&lt;/li&gt;      &lt;li&gt;Exercise 3: Packaging and Deploying Web Applications&lt;/li&gt;      &lt;li&gt;Exercise 4: Packaging and Deploying Web Applications for IIS&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Building a Data-Driven Master/Detail Business Form using WPF 4&lt;/li&gt;    &lt;li&gt;Multi-touch Gesture – MFC&lt;/li&gt;    &lt;li&gt;Multi-touch WMTouch – MFC&lt;/li&gt;    &lt;li&gt;Ribbon – MFC&lt;/li&gt;    &lt;li&gt;Taskbar - MFC&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Demos&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;ContosoAutomotive (Parallel Extensions + MEF + WPF)&lt;/li&gt;    &lt;li&gt;AdventureWorks AJAX&lt;/li&gt;    &lt;li&gt;ASP.NET AJAX Ten-In-One&lt;/li&gt;    &lt;li&gt;Managed Languages Ten-In-One&lt;/li&gt;    &lt;li&gt;Barrier&lt;/li&gt;    &lt;li&gt;CountdownEvent&lt;/li&gt;    &lt;li&gt;Hello Visual Studio 2010&lt;/li&gt;    &lt;li&gt;Introduction to the Managed Extensibility Framework&lt;/li&gt;    &lt;li&gt;Parallel Baby Names&lt;/li&gt;    &lt;li&gt;Parallel For Loop&lt;/li&gt;    &lt;li&gt;Parallel LINQ (PLINQ)&lt;/li&gt;    &lt;li&gt;Parallel Tasks&lt;/li&gt;    &lt;li&gt;“Velocity”&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=135601"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=135601" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jolson/aggbug/135601.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=iQz3XFj9M_Q:6fX7JznWRQY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=iQz3XFj9M_Q:6fX7JznWRQY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?i=iQz3XFj9M_Q:6fX7JznWRQY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=iQz3XFj9M_Q:6fX7JznWRQY:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=iQz3XFj9M_Q:6fX7JznWRQY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            <dc:creator>Jason Olson</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/jolson/archive/2009/10/20/visual-studio-2010-beta-2-training-kit-published.aspx</guid>
            <pubDate>Tue, 20 Oct 2009 17:54:02 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jolson/comments/135601.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jolson/archive/2009/10/20/visual-studio-2010-beta-2-training-kit-published.aspx#feedback</comments>
            <slash:comments>19</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/jolson/comments/commentRss/135601.aspx</wfw:commentRss>
        <feedburner:origLink>http://geekswithblogs.net/jolson/archive/2009/10/20/visual-studio-2010-beta-2-training-kit-published.aspx</feedburner:origLink></item>
        <item>
            <title>10-4 Episode 26: Creating Extensible Apps with MEF</title>
            <category>Development</category>
            <category>C# Dev Center</category>
            <link>http://feedproxy.google.com/~r/ManagedWorld/~3/qOWpJ0rVS8w/10-4-episode-26-creating-extensible-apps-with-mef.aspx</link>
            <description>&lt;p&gt;In &lt;a href="http://channel9.msdn.com/shows/10-4/10-4-Episode-26-Creating-Extensible-Applications-with-the-Managed-Extensibility-Framework/"&gt;this episode&lt;/a&gt; of 10-4, we take a look at a new library in .NET Framework 4 and how it helps developers write applications that are more extensible and easier to maintain than before. &lt;/p&gt;  &lt;p&gt;For more information on the Managed Extensibility Framework, make sure to check out its home on Codeplex: &lt;a href="http://www.codeplex.com/mef"&gt;http://www.codeplex.com/mef&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;For more 10-4 episodes, be sure to visit:   &lt;br /&gt;&lt;a href="http://channel9.msdn.com/shows/10-4"&gt;http://channel9.msdn.com/shows/10-4&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;10-4! Over and out!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=133466"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=133466" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jolson/aggbug/133466.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=qOWpJ0rVS8w:pqjBZMWE9pA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=qOWpJ0rVS8w:pqjBZMWE9pA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?i=qOWpJ0rVS8w:pqjBZMWE9pA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=qOWpJ0rVS8w:pqjBZMWE9pA:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=qOWpJ0rVS8w:pqjBZMWE9pA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            <dc:creator>Jason Olson</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/jolson/archive/2009/07/13/10-4-episode-26-creating-extensible-apps-with-mef.aspx</guid>
            <pubDate>Tue, 14 Jul 2009 04:17:58 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jolson/comments/133466.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jolson/archive/2009/07/13/10-4-episode-26-creating-extensible-apps-with-mef.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jolson/comments/commentRss/133466.aspx</wfw:commentRss>
        <feedburner:origLink>http://geekswithblogs.net/jolson/archive/2009/07/13/10-4-episode-26-creating-extensible-apps-with-mef.aspx</feedburner:origLink></item>
        <item>
            <title>Parallel Computing with Visual Studio 2010 Beta 1</title>
            <category>Development</category>
            <category>Concurrency</category>
            <link>http://feedproxy.google.com/~r/ManagedWorld/~3/C1Rp4rgiHFc/parallel-computing-with-visual-studio-2010-beta-1.aspx</link>
            <description>&lt;p&gt;One of the big areas of improvements coming to Visual Studio 2010 and .NET Framework 4 is in the area parallel computing. There are a LOT of new features and improvements to existing features here with this latest release of our developer tools. &lt;/p&gt;  &lt;p&gt;Many people smarter and more capable than I have already written about most of this stuff, so there’s not much for me to add. What I did want to do though is to let you know all the places where you can find this wealth of information (and there is a lot of it). So, without further ado, here is a list of content for you if you are interested in Parallel Computing with Visual Studio 2010 and .NET Framework 4 Beta 1.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;MSDN&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd460693(VS.100).aspx"&gt;Managed - Parallel Programming in the .NET Framework&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd504870(VS.100).aspx"&gt;Native – Concurrency Runtime&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd554943(VS.100).aspx"&gt;Walkthrough – Debugging a Parallel Application&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;What’s New…&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/pfxteam/archive/2009/04/29/9576291.aspx"&gt;What’s New in Beta 1 for Parallel LINQ (PLINQ)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/pfxteam/archive/2009/03/27/9514938.aspx"&gt;What’s New in Beta 1 for the Task Parallel Library (part 1/3)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/pfxteam/archive/2009/04/06/9534426.aspx"&gt;What’s New in Beta 1 for the Task Parallel Library (part 2/3)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/pfxteam/archive/2009/04/14/9549246.aspx"&gt;What’s New in Beta 1 for the Task Parallel Library (part 3/3)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/pfxteam/archive/2009/03/04/9457880.aspx"&gt;What’s New in Beta 1 for the Coordination Data Structures&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/ericeil/archive/2009/04/23/clr-4-0-threadpool-improvements-part-1.aspx"&gt;CLR 4 ThreadPool Improvements (part 1)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/pfxteam/archive/2009/05/22/9635790.aspx"&gt;.NET Framework 4 Cancellation Framework&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.danielmoth.com/Blog/2009/05/parallel-tasks-new-visual-studio-2010.html"&gt;Parallel Tasks – New Visual Studio 2010 Debugger Window&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.danielmoth.com/Blog/2009/05/parallel-stacks-another-new-vs2010.html"&gt;Parallel Stacks – Another New Visual Studio 2010 Debugger Window&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.danielmoth.com/Blog/2009/05/parallel-stacks-tasks-view.html"&gt;Parallel Stacks – Tasks View&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.danielmoth.com/Blog/2009/06/parallel-stacks-method-view.html"&gt;Parallel Stacks – Method View&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Diving Deeper&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/pfxteam/archive/2009/06/03/9691796.aspx"&gt;Mechanisms for Creating Tasks&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/pfxteam/archive/2009/06/02/9685804.aspx"&gt;The Nature of TaskCompletionSource&amp;lt;TResult&amp;gt;&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/pfxteam/archive/2009/05/31/9674669.aspx"&gt;Tasks and Unhandled Exceptions&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/pfxteam/archive/2009/06/09/9716439.aspx"&gt;Tasks and the APM Pattern&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/pfxteam/archive/2009/05/27/9645023.aspx"&gt;Exiting from Parallel Loops Early&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/pfxteam/archive/2009/06/06/9703059.aspx"&gt;Achieving Speedups with Small Parallel Loop Bodies&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/pfxteam/archive/2009/05/28/9648672.aspx"&gt;Partitioning in PLINQ&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Channel 9 Videos&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://channel9.msdn.com/shows/going+deep/erika-parsons-and-eric-eilebrecht--clr-4-inside-the-new-threadpool/"&gt;Erika Parsons and Eric Eilebrecht : CLR 4 - Inside the Thread Pool&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;More Oldie-But-Goodie Channel 9 Videos&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://channel9.msdn.com/shows/Going+Deep/Concurrency-and-Parallelism-Native-CC-and-Managed-NET-Perspectives/"&gt;Concurrency and Parallelism: Native and Managed Perspectives&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/"&gt;Joe Duffy: Perspectives on Concurrent Programming and Parallelism&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel9.msdn.com/shows/10-4/10-4-Episode-6-Parallel-Extensions/"&gt;10-4 Episode 6: Parallel Extensions&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Misc…&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/pfxteam/archive/2009/05/26/9641683.aspx"&gt;Known Issues in Parallel Extensions to .NET Framework 4 Beta 1&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/ParExtSamples"&gt;Samples for Parallel Programming with the .NET Framework 4&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Enjoy! There’s a lot here to digest. We definitely live in exciting times :).&lt;/p&gt;  &lt;p&gt;Do you know of some links that you like that I missed here? Feel free to let me know by adding a comment here.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132721"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132721" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jolson/aggbug/132721.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=C1Rp4rgiHFc:Crapd7CGW1M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=C1Rp4rgiHFc:Crapd7CGW1M:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?i=C1Rp4rgiHFc:Crapd7CGW1M:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=C1Rp4rgiHFc:Crapd7CGW1M:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=C1Rp4rgiHFc:Crapd7CGW1M:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            <dc:creator>Jason Olson</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/jolson/archive/2009/06/09/parallel-computing-with-visual-studio-2010-beta-1.aspx</guid>
            <pubDate>Wed, 10 Jun 2009 06:44:34 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jolson/comments/132721.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jolson/archive/2009/06/09/parallel-computing-with-visual-studio-2010-beta-1.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/jolson/comments/commentRss/132721.aspx</wfw:commentRss>
        <feedburner:origLink>http://geekswithblogs.net/jolson/archive/2009/06/09/parallel-computing-with-visual-studio-2010-beta-1.aspx</feedburner:origLink></item>
        <item>
            <title>F# Basics &amp;ndash; Infix Operators</title>
            <category>Functional Programming</category>
            <category>Development</category>
            <link>http://feedproxy.google.com/~r/ManagedWorld/~3/hboD9dBAxXw/f-basics-ndash-infix-operators.aspx</link>
            <description>&lt;p&gt;As I’ve been writing more F# code and learning more about the F# language, I have found myself intrigued by how some surprisingly simple language features can combine with each other to enable us to write very expressive code. While I am still learning F# (and realize just how much more I have to learn), I’m hoping that sharing some of these thoughts will encourage others to dig into what I think is a very powerful language that a lot of us developers can learn from.&lt;/p&gt;  &lt;p&gt;In this post, we’re going to talk about Infix Operators. Before we dive into F#’s implementation of infix operators though, let’s discuss what an “Infix” Operator actually is.&lt;/p&gt;  &lt;p&gt;So what is an “Infix” operator? An infix operator is an operator that is expressed using a mathematical notation called infix notation. When it comes to these types of mathematical notations, there are three primary kinds: Prefix Notation, Infix Notation, and Postfix Notation. &lt;/p&gt;  &lt;p&gt;Take for example the addition operator. The addition operator takes two operands that are then added together. Using infix notation, the operator is written between the two operands it operates upon. Prefix notation would have the operator before the operands, and postfix notation has the operator after the operands. So given the addition operator, the different notations would like the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Prefix notation&lt;/strong&gt;: + 3 4 (definitely familiar to LISP-heads –&amp;gt; “(+ 3 4)”)&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Infix notation&lt;/strong&gt;: 3 + 4 (familiar to most of us developers)&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Postfix notation&lt;/strong&gt;: 3 4 + (an interest way used by Forth for one, a stack-as-first-class-citizen language –&amp;gt; “3 4 ADD”)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;One of the things I love about F# is that infix operators are normal functions that you can easily define yourself. Let’s explore this concept a bit. Open up F# Interactive and execute the following command:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;gt; (+);;     &lt;br /&gt;&lt;em&gt;val it : (int -&amp;gt; int -&amp;gt; int) = &amp;lt;fun:clo@42&amp;gt;&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Surrounding the infix operator with “()” allows us to get at the underlying function that implements the infix operator, rather than the operator itself. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Heck, we can even call it like a normal function:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;gt; (+) 3 4;;     &lt;br /&gt;&lt;em&gt;val it : int = 7&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You can see here that the addition operator is simply a function that accepts two integers and returns an integer (&lt;em&gt;well, this isn’t technically true, but you can think about it this way for now; we’ll get into the difference in a different post&lt;/em&gt;). I said before we can easily define our own infix operator. How do we do that? Well, just for giggles, let’s go ahead and define our own add operator:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;gt; let (|+) x y = x + y;;     &lt;br /&gt;&lt;em&gt;val (|+) : int -&amp;gt; int -&amp;gt; int&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;After we define this function, we can use our new infix operator just like any of the other built-in infix operator:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;gt; 3 |+ 4;;     &lt;br /&gt;&lt;em&gt;val it : int = 7&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Yes, it’s that simple.&lt;/p&gt;  &lt;p&gt;Well, that’s a very quick look at a seemingly simple language feature that a lot of us developers tend to take for granted. In future posts, we’ll see how combining infix operators with other features in F# allows us to write more expressive F# code.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=131279"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=131279" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jolson/aggbug/131279.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=hboD9dBAxXw:CSJN4NLB0N4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=hboD9dBAxXw:CSJN4NLB0N4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?i=hboD9dBAxXw:CSJN4NLB0N4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=hboD9dBAxXw:CSJN4NLB0N4:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=hboD9dBAxXw:CSJN4NLB0N4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            <dc:creator>Jason Olson</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/jolson/archive/2009/04/17/f-basics-ndash-infix-operators.aspx</guid>
            <pubDate>Sat, 18 Apr 2009 10:03:33 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jolson/comments/131279.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jolson/archive/2009/04/17/f-basics-ndash-infix-operators.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/jolson/comments/commentRss/131279.aspx</wfw:commentRss>
        <feedburner:origLink>http://geekswithblogs.net/jolson/archive/2009/04/17/f-basics-ndash-infix-operators.aspx</feedburner:origLink></item>
        <item>
            <title>An Intro to Barrier, cont.d</title>
            <category>Development</category>
            <category>C# Dev Center</category>
            <category>Concurrency</category>
            <link>http://feedproxy.google.com/~r/ManagedWorld/~3/-Y3a_a2NO78/an-intro-to-barrier-cont.d.aspx</link>
            <description>&lt;p&gt;Well, I said I was going to be moving on to CountdownEvent, but I was wrong. there is one more aspect of using Barrier that I just had to share (thanks go to &lt;a href="http://blogs.msdn.com/toub/"&gt;Stephen Toub&lt;/a&gt; on the Parallel Computing Platform team for bringing this up). &lt;/p&gt;  &lt;p&gt;In &lt;a href="http://www.managed-world.com/archive/2009/02/09/an-intro-to-barrier.aspx"&gt;my first Barrier post&lt;/a&gt;, I had mentioned:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Barrier is a great new synchronization primitive to use when there is a known amount of work to do that is being done by different workers that all have common synchronization points.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;To make a long story short, this isn’t strictly true. Barrier can be used just fine when there is an unknown amount of work. The distinction between Barrier and other synchronization primitives isn’t about “known amount versus unknown amount of work”, it’s more about “usable once versus usable many times.” To explain this in more detail, let’s look back at the example from the last post (a Road Trip to Seattle). &lt;/p&gt;  &lt;h3&gt;Multiple Usages&lt;/h3&gt;  &lt;p&gt;First, it is perfectly allowed to use a Barrier more than once. Using the Road Trip metaphor, instead of going straight to Seattle after leaving the Gas Station, let’s have everybody stop for lunch on there way. So now there are two “sync points” that we have. First, we’ll wait for everybody to meet up at the gas station, then we’ll also wait for everybody to meet up for lunch after they’ve left the gas station. &lt;/p&gt;  &lt;p&gt;Revising our DriveToSeattle method from the last post, we will simply call SignalAndWait() a second time to provide a second sync point where everybody meets for lunch:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; DriveToSeattle(&lt;span class="kwrd"&gt;string&lt;/span&gt; name, TimeSpan timeDelay)
{
    &lt;span class="rem"&gt;// Perform some work&lt;/span&gt;
    Console.WriteLine(&lt;span class="str"&gt;"[{0}] Leaving House"&lt;/span&gt;, name);
    Thread.Sleep(timeDelay);
    Console.WriteLine(&lt;span class="str"&gt;"[{0}] Arrived at Gas Station"&lt;/span&gt;, name);

    &lt;span class="rem"&gt;// Need to wait for others&lt;/span&gt;
    sync.SignalAndWait();

    &lt;span class="rem"&gt;// Perform some work&lt;/span&gt;
    Console.WriteLine(&lt;span class="str"&gt;"[{0}] Leaving for Seattle"&lt;/span&gt;, name);
    Thread.Sleep(timeDelay);
    Console.WriteLine(&lt;span class="str"&gt;"[{0}] Meet for lunch"&lt;/span&gt;, name);

    &lt;span class="rem"&gt;// Need to wait for others&lt;/span&gt;
    sync.SignalAndWait();

    Console.WriteLine(&lt;span class="str"&gt;"[{0}] Leaving for Seattle"&lt;/span&gt;, name);
}&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[
.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; }]]&gt;&lt;/style&gt;

&lt;p&gt;In real-word usage of the Barrier primitive, this doesn’t have to be limited to two uses of the Barrier. We can use the Barrier any number of times we need to in order to provide these common synchronization points for our parallel code. &lt;/p&gt;

&lt;h3&gt;Unknown Number of Workers&lt;/h3&gt;

&lt;p&gt;I mentioned that it wasn’t strictly true that Barrier is great for a just a known amount of work. That’s because Barrier provides the functionality you need to even use it when the number of workers performing our work is unknown. &lt;/p&gt;

&lt;p&gt;Back to our Road Trip. Dennis’s sister Dee is planning to come along on the Road Trip as well. However, she forgets to set her alarm and wakes up late. And unfortunately, Charlie, Mac, and Dennis have already left for Seattle. She still wants to go though so she plans to meet up with them for lunch. &lt;/p&gt;

&lt;p&gt;What we need is for a way for Dee to flag “Hey guys! I’m coming!” And it just so happens that the Barrier class provides an AddParticipant method that we can use to make sure the extra “worker” (Dee in this case) is included the next time everybody waits for each other to “complete their work.” &lt;/p&gt;

&lt;p&gt;In this case, Dee would simply “add herself” to the Barrier when her thread is spun up. To do this, let’s create a new DriveStraightToLunch method that will be used instead of the existing DriveToSeattle method we created before. &lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; DriveStraightToLunch(&lt;span class="kwrd"&gt;string&lt;/span&gt; name, TimeSpan timeDelay)
{
    &lt;span class="rem"&gt;// "I'm coming along guys"&lt;/span&gt;
    sync.AddParticipant();

    &lt;span class="rem"&gt;// Meet for lunch&lt;/span&gt;
    Console.WriteLine(&lt;span class="str"&gt;"[{0}] Leaving for Seattle"&lt;/span&gt;, name);
    Thread.Sleep(timeDelay);
    Console.WriteLine(&lt;span class="str"&gt;"[{0}] Meeting for lunch"&lt;/span&gt;, name);

    &lt;span class="rem"&gt;// Need to wait for others&lt;/span&gt;
    sync.SignalAndWait();

    Console.WriteLine(&lt;span class="str"&gt;"[{0}] Leaving for Seattle"&lt;/span&gt;, name);
}&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[
.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; }]]&gt;&lt;/style&gt;

&lt;p&gt;And then we just spin up this new piece of work (added to our code in Main before all threads are joined):&lt;/p&gt;

&lt;pre class="csharpcode"&gt;... creation and start of Dennis thread

Thread.Sleep(TimeSpan.FromSeconds(6));
var dee = &lt;span class="kwrd"&gt;new&lt;/span&gt; Thread(() =&amp;gt; DriveStraightToLunch(&lt;span class="str"&gt;"Dee"&lt;/span&gt;, TimeSpan.FromSeconds(5)));
dee.Start();

dee.Join();
... join other threads&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[
.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; }]]&gt;&lt;/style&gt;

&lt;p&gt;It’s that simple.&lt;/p&gt;

&lt;h3&gt;In Closing&lt;/h3&gt;

&lt;p&gt;I hope in the last two posts you’ve seen how useful the new Barrier synchronization primitive can be when writing Parallel Code. API-wise there really isn’t much to the new Barrier class. Of course, as is usual with writing parallel code, it’s learning to use it correctly or use it in the right situations that’s the tricky part :). &lt;/p&gt;

&lt;p&gt;I would say "tune in next time when we chat about CountdownEvent” but considering this recent change of plans, I’m not going to tempt fate :). Later!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129647"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129647" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jolson/aggbug/129647.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=-Y3a_a2NO78:iu6lvWHbFhg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=-Y3a_a2NO78:iu6lvWHbFhg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?i=-Y3a_a2NO78:iu6lvWHbFhg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=-Y3a_a2NO78:iu6lvWHbFhg:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=-Y3a_a2NO78:iu6lvWHbFhg:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            <dc:creator>Jason Olson</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/jolson/archive/2009/02/24/an-intro-to-barrier-cont.d.aspx</guid>
            <pubDate>Tue, 24 Feb 2009 22:42:04 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jolson/comments/129647.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jolson/archive/2009/02/24/an-intro-to-barrier-cont.d.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jolson/comments/commentRss/129647.aspx</wfw:commentRss>
        <feedburner:origLink>http://geekswithblogs.net/jolson/archive/2009/02/24/an-intro-to-barrier-cont.d.aspx</feedburner:origLink></item>
        <item>
            <title>Tour de BCL 4.0</title>
            <category>Development</category>
            <link>http://feedproxy.google.com/~r/ManagedWorld/~3/bXpNnPDeZkY/tour-de-bcl.aspx</link>
            <description>&lt;p&gt;Over the coming months, I would like to take you on a whirlwind tour of a bunch of the new data structures and APIs being added to the Base Class Libraries (BCL) for .NET Framework 4.0. This will take us everywhere from new multithreading-oriented data structures like Barrier and CountdownEvent, to more basic structures like Tuple. &lt;/p&gt;  &lt;p&gt;I’ll update this post with correct links as new posts are created…&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.managed-world.com/archive/2009/02/09/an-intro-to-barrier.aspx"&gt;An Intro to Barrier&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.managed-world.com/archive/2009/02/24/an-intro-to-barrier-cont.d.aspx"&gt;An Intro to Barrier, Continued&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;An Intro to CountdownEvent &lt;/li&gt;    &lt;li&gt;An Intro to LazyInit &lt;/li&gt;    &lt;li&gt;An Intro to Tuple &lt;/li&gt;    &lt;li&gt;An Intro to Memory-Mapped File &lt;/li&gt;    &lt;li&gt;And more to come... &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129305"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129305" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jolson/aggbug/129305.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=bXpNnPDeZkY:-hl3PtTBLd4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=bXpNnPDeZkY:-hl3PtTBLd4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?i=bXpNnPDeZkY:-hl3PtTBLd4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=bXpNnPDeZkY:-hl3PtTBLd4:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=bXpNnPDeZkY:-hl3PtTBLd4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            <dc:creator>Jason Olson</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/jolson/archive/2009/02/09/tour-de-bcl.aspx</guid>
            <pubDate>Tue, 10 Feb 2009 11:40:34 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jolson/comments/129305.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jolson/archive/2009/02/09/tour-de-bcl.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jolson/comments/commentRss/129305.aspx</wfw:commentRss>
        <feedburner:origLink>http://geekswithblogs.net/jolson/archive/2009/02/09/tour-de-bcl.aspx</feedburner:origLink></item>
        <item>
            <title>An Intro to Barrier</title>
            <category>Development</category>
            <category>Concurrency</category>
            <category>C# Dev Center</category>
            <link>http://feedproxy.google.com/~r/ManagedWorld/~3/JJR-48XTcBk/an-intro-to-barrier.aspx</link>
            <description>&lt;p&gt;In this first stage of our Tour de BCL, we will be passing through the new Barrier class. &lt;/p&gt;  &lt;p&gt;So what is a Barrier? Let’s take a look at the &lt;strike&gt;boring&lt;/strike&gt; technical description for a Barrier:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;A &lt;strong&gt;Barrier&lt;/strong&gt; is a synchronization primitive that enforces the stopping of execution between a number of threads or processes at a given point and prevents further execution until all threads or processors have reached the given point.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I don’t know about you, but sometimes technical descriptions like the above just sound like “blah, blah, blah” to me. What does a Barrier really mean to me, as a developer. Let’s break it down a different way by looking at a specific real-life scenario.&lt;/p&gt;  &lt;h3&gt;Think of a Road Trip&lt;/h3&gt;  &lt;p&gt;Instead of looking at the technical description above, think of the concept of a road trip.&lt;/p&gt;  &lt;p&gt;There are three friends, Mac, Charlie, and Dennis. They live in a small town south of Seattle but want to take a road trip up to Seattle. So Mac calls up Charlie and Dennis and says “Hey guys, let’s take a road trip to Seattle. Meet up at the local gas station and then we’ll all leave from there.” So now they all now they need to go to the local gas station, wait for all of them to show up, and then they’ll leave for Seattle together and follow each other there. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/jolson/WindowsLiveWriter/AnIntroductiontoBarrier_D0FA/Barrier_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="Barrier" border="0" alt="Barrier" src="http://geekswithblogs.net/images/geekswithblogs_net/jolson/WindowsLiveWriter/AnIntroductiontoBarrier_D0FA/Barrier_thumb_1.png" width="441" height="256" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Relating this scenario to some code, let’s say that Charlie, Mac, and Dennis are all individual threads that have one method of execution, the DriveToSeattle() method. Within that method, they are all going “to drive” to the same gas station and then continue to drive to Seattle.&lt;/p&gt;  &lt;p&gt;If we don’t use the Barrier to synchronize the work (aka wait for each other to arrive at the gas station), each one of them will leave for Seattle the second they arrive at the gas station: &lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)
{
    var charlie = &lt;span class="kwrd"&gt;new&lt;/span&gt; Thread(() =&amp;gt; {
        DriveToSeattle(&lt;span class="str"&gt;"Charlie"&lt;/span&gt;, TimeSpan.FromSeconds(1))
    }); 
    charlie.Start();

    var mac = &lt;span class="kwrd"&gt;new&lt;/span&gt; Thread(() =&amp;gt; {
        DriveToSeattle(&lt;span class="str"&gt;"Mac"&lt;/span&gt;, TimeSpan.FromSeconds(2))
    }); 
    mac.Start();

    var dennis = &lt;span class="kwrd"&gt;new&lt;/span&gt; Thread(() =&amp;gt; {
        DriveToSeattle(&lt;span class="str"&gt;"Dennis"&lt;/span&gt;, TimeSpan.FromSeconds(3))
    }); 
    dennis.Start();

    charlie.Join();
    mac.Join();
    dennis.Join();

    Console.ReadKey();
}

&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; DriveToSeattle(&lt;span class="kwrd"&gt;string&lt;/span&gt; name, TimeSpan timeToGasStation)
{
    &lt;span class="rem"&gt;// Drive to gas station&lt;/span&gt;
    Console.WriteLine(&lt;span class="str"&gt;"[{0}] Leaving House"&lt;/span&gt;, name);
    Thread.Sleep(timeToGasStation);
    Console.WriteLine(&lt;span class="str"&gt;"[{0}] Arrived at Gas Station"&lt;/span&gt;, name);

    &lt;span class="rem"&gt;// Need to sync here&lt;/span&gt;

    &lt;span class="rem"&gt;// Perform some more work&lt;/span&gt;
    Console.WriteLine(&lt;span class="str"&gt;"[{0}] Leaving for Seattle"&lt;/span&gt;, name);
}&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[


.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; }]]&gt;&lt;/style&gt;&lt;style type="text/css"&gt;&lt;![CDATA[


.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; }]]&gt;&lt;/style&gt;&lt;style type="text/css"&gt;&lt;![CDATA[


.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; }]]&gt;&lt;/style&gt;

&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/jolson/WindowsLiveWriter/AnIntroductiontoBarrier_D0FA/BeforeBarrier_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="BeforeBarrier" border="0" alt="BeforeBarrier" src="http://geekswithblogs.net/images/geekswithblogs_net/jolson/WindowsLiveWriter/AnIntroductiontoBarrier_D0FA/BeforeBarrier_thumb.jpg" width="686" height="350" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Well, that’s hardly a road trip. If I were in Mac’s or Charlie’s shoes when Dennis left for Seattle without me, I know I would be a little upset. We obviously don’t want that to happen. So we can use the new Barrier to make sure they all “wait up” for each other at the gas station.&lt;/p&gt;

&lt;h3&gt;Using the new Barrier class&lt;/h3&gt;

&lt;p&gt;So how do you use the new Barrier class? It’s actually quite simple.The cool thing is that there are really only three things you need to learn to use the Barrier for this simple type of scenario: a single constructor and two method calls (both of which take zero parameters). Yes, it’s that simple to use.&lt;/p&gt;

&lt;p&gt;Let’s look at what our new code using Barrier looks like (the three bold lines are the new ones): &lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;strong&gt;&lt;span class="kwrd"&gt;static&lt;/span&gt; Barrier sync;&lt;/strong&gt;

&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)
{
    &lt;strong&gt;sync = &lt;span class="kwrd"&gt;new&lt;/span&gt; Barrier(participantCount:3);&lt;/strong&gt;

    var charlie = &lt;span class="kwrd"&gt;new&lt;/span&gt; Thread(() =&amp;gt; {
        DriveToSeattle(&lt;span class="str"&gt;"Charlie"&lt;/span&gt;, TimeSpan.FromSeconds(1))
    }); 
    charlie.Start();

    var mac = &lt;span class="kwrd"&gt;new&lt;/span&gt; Thread(() =&amp;gt; {
        DriveToSeattle(&lt;span class="str"&gt;"Mac"&lt;/span&gt;, TimeSpan.FromSeconds(2))
    }); 
    mac.Start();

    var dennis = &lt;span class="kwrd"&gt;new&lt;/span&gt; Thread(() =&amp;gt; {
        DriveToSeattle(&lt;span class="str"&gt;"Dennis"&lt;/span&gt;, TimeSpan.FromSeconds(3))
    }); 
    dennis.Start();

    charlie.Join();
    mac.Join();
    dennis.Join();

    Console.ReadKey();
}

&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; DriveToSeattle(&lt;span class="kwrd"&gt;string&lt;/span&gt; name, TimeSpan timeToGasStation)
{
    &lt;span class="rem"&gt;// Drive to gas station&lt;/span&gt;
    Console.WriteLine(&lt;span class="str"&gt;"[{0}] Leaving House"&lt;/span&gt;, name);
    Thread.Sleep(timeToGasStation);
    Console.WriteLine(&lt;span class="str"&gt;"[{0}] Arrived at Gas Station"&lt;/span&gt;, name);

    &lt;span class="rem"&gt;// Need to sync here&lt;/span&gt;
    &lt;strong&gt;sync.SignalAndWait();&lt;/strong&gt;

    &lt;span class="rem"&gt;// Perform some more work&lt;/span&gt;
    Console.WriteLine(&lt;span class="str"&gt;"[{0}] Leaving for Seattle"&lt;/span&gt;, name);
}&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[


.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; }]]&gt;&lt;/style&gt;&lt;style type="text/css"&gt;&lt;![CDATA[


.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; }]]&gt;&lt;/style&gt;&lt;style type="text/css"&gt;&lt;![CDATA[


.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; }]]&gt;&lt;/style&gt;

&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/jolson/WindowsLiveWriter/AnIntroductiontoBarrier_D0FA/AfterBarrier_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="AfterBarrier" border="0" alt="AfterBarrier" src="http://geekswithblogs.net/images/geekswithblogs_net/jolson/WindowsLiveWriter/AnIntroductiontoBarrier_D0FA/AfterBarrier_thumb.jpg" width="684" height="348" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;You can see now that nobody leaves for Seattle until everybody has arrived at the gas station. Essentially, with every call to SignalAndWait(), the number of signals received by the barrier is incremented. Once the number of signals received reaches the number of participants the Barrier was constructed with, all threads are then allowed to continue execution. And that’s all it takes to leverage the new Barrier class being introduced into the BCL with .NET Framework 4.0. &lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;But Jason&lt;/strong&gt;... What is up with that line of code: “sync = new Barrier(participantCount:3);”? I mean, what the heck is “participantCount:3”? How is that valid syntax?&lt;/p&gt;

  &lt;p&gt;Well, that’s easy. This is a new feature in C# 4.0 called Named Parameters where you can actually use a parameter’s name to specify what a value applies to. This becomes very handy in two places: 1) when combined with Optional Parameters, and 2) when used to clarify “magic numbers” (or “magic strings”, “magic booleans”, etc.) without having to introducing a temporary variable. &lt;/p&gt;

  &lt;p&gt;In this case, I could have left out participantCount and written just “sync = new Barrier(3);”. But I personally don’t like a magic number like “3” just floating around like this and Named Parameters give me an easy way to provide more context about the value “3”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;In Closing&lt;/h3&gt;

&lt;p&gt;So let’s look back at that &lt;strike&gt;boring&lt;/strike&gt; technical description again:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;A &lt;strong&gt;Barrier&lt;/strong&gt; is a synchronization primitive that enforces the stopping of execution between a number of threads or processes at a given point and prevents further execution until all threads or processors have reached the given point.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Think about it this way:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;“stopping of execution between a number of threads...” = waiting for each other to arrive &lt;/li&gt;

  &lt;li&gt;“… at a given point” = the gas station &lt;/li&gt;

  &lt;li&gt;“prevents further execution until all threads… have reached the given point” = can’t leave for Seattle until everybody shows up &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See? Nice and simple!&lt;/p&gt;

&lt;p&gt;Barrier is a great new synchronization primitive to use when there is a known amount of work to do that is being done by different workers that all have common synchronization points. However, if the amount of work needing to be done is not well known beforehand, Barrier is not the greatest primitive to use. Next we’ll look at another new synchronization primitive coming in .NET Framework 4.0 that is great to use when the amount of work is not known: the CountdownEvent. &lt;/p&gt;

&lt;p&gt;I hope you all enjoyed this first stage in our Tour de BCL. Until the next stage, we’ll see you later.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129304"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129304" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jolson/aggbug/129304.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=JJR-48XTcBk:U7tAQLlYUD0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=JJR-48XTcBk:U7tAQLlYUD0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?i=JJR-48XTcBk:U7tAQLlYUD0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=JJR-48XTcBk:U7tAQLlYUD0:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=JJR-48XTcBk:U7tAQLlYUD0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            <dc:creator>Jason Olson</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/jolson/archive/2009/02/09/an-intro-to-barrier.aspx</guid>
            <pubDate>Tue, 10 Feb 2009 11:17:39 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jolson/comments/129304.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jolson/archive/2009/02/09/an-intro-to-barrier.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/jolson/comments/commentRss/129304.aspx</wfw:commentRss>
        <feedburner:origLink>http://geekswithblogs.net/jolson/archive/2009/02/09/an-intro-to-barrier.aspx</feedburner:origLink></item>
        <item>
            <title>A work in progress</title>
            <category>Game Development</category>
            <link>http://feedproxy.google.com/~r/ManagedWorld/~3/wsJ5lRO-G_8/a-work-in-progress.aspx</link>
            <description>&lt;p&gt;Here's a sneak peek at a project/library I'm currently working on:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;include Microsoft::Xna::Framework
include Microsoft::Xna::Framework::Graphics
include RubyXna

&lt;span class="kwrd"&gt;class&lt;/span&gt; FluxxGame &amp;lt; RubyXnaGame
    def initialize
        self.background_color = Color.black
    end

    def load(loader)
        &lt;span class="preproc"&gt;@font&lt;/span&gt; = loader.load_font(&lt;span class="str"&gt;"Title"&lt;/span&gt;)
    end

    def render(renderer)
        renderer.draw_text(@font, &lt;span class="str"&gt;"Fluxx, v0.1"&lt;/span&gt;, Vector2.zero, Color.white)
    end
end&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[
.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; }]]&gt;&lt;/style&gt;

&lt;p&gt;The combination of IronRuby and XNA Game Studio is proving to be pretty darn fun!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=128356"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=128356" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jolson/aggbug/128356.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=wsJ5lRO-G_8:PldBXYY_neQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=wsJ5lRO-G_8:PldBXYY_neQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?i=wsJ5lRO-G_8:PldBXYY_neQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=wsJ5lRO-G_8:PldBXYY_neQ:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=wsJ5lRO-G_8:PldBXYY_neQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            <dc:creator>Jason Olson</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/jolson/archive/2009/01/04/a-work-in-progress.aspx</guid>
            <pubDate>Mon, 05 Jan 2009 04:06:51 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jolson/comments/128356.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jolson/archive/2009/01/04/a-work-in-progress.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/jolson/comments/commentRss/128356.aspx</wfw:commentRss>
        <feedburner:origLink>http://geekswithblogs.net/jolson/archive/2009/01/04/a-work-in-progress.aspx</feedburner:origLink></item>
        <item>
            <title>10-4 Episode 2: Welcome to Visual Studio 2010</title>
            <category>Development</category>
            <link>http://feedproxy.google.com/~r/ManagedWorld/~3/264GR6h15YQ/10-4-episode-2-welcome-to-visual-studio-2010.aspx</link>
            <description>&lt;p&gt;Happy Holidays, everybody! First of all, thanks to everybody who helped get the word out on the launch of this new show on Channel 9 by blogging, tweeting, or spreading the word using other ways. There is no doubt in our minds that the launch of this new show wouldn’t have been nearly as successful without all of you! &lt;/p&gt;  &lt;p&gt;In this second episode of 10-4, we’ll take a very high-level look at Visual Studio 2010. We’ll discuss what types of features you can expect to see in Visual Studio 2010 and .NET Framework 4.0 depending on what type of developer you are. And lastly we’ll go ahead and dive into a revised area of Visual Studio: the Start Page. The Start Page in Visual Studio 2010 has been revised to be XAML-based and allows full customization. &lt;/p&gt;  &lt;p&gt;In future episodes we’ll dive more deeply into the technical underpinnings of Visual Studio 2010 and the .NET Framework 4.0, but for this second episode we want to make sure everybody gains an understanding of what different areas are being focused in Visual Studio 2010. While an overview is given, there is only so much time and so many features we can talk about. So if you don't see something mentioned, don't worry as we have a lot more information to dive into in the coming weeks and months. &lt;/p&gt;  &lt;p&gt;For more 10-4 episodes, be sure to visit:   &lt;br /&gt;&lt;a href="http://channel9.msdn.com/Shows/10-4/"&gt;http://channel9.msdn.com/Shows/10-4/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Over and out! &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=128162"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=128162" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jolson/aggbug/128162.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=264GR6h15YQ:t8FxOZoiHWk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=264GR6h15YQ:t8FxOZoiHWk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?i=264GR6h15YQ:t8FxOZoiHWk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=264GR6h15YQ:t8FxOZoiHWk:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagedWorld?a=264GR6h15YQ:t8FxOZoiHWk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagedWorld?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            <dc:creator>Jason Olson</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/jolson/archive/2008/12/24/10-4-episode-2-welcome-to-visual-studio-2010.aspx</guid>
            <pubDate>Thu, 25 Dec 2008 02:34:20 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jolson/comments/128162.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jolson/archive/2008/12/24/10-4-episode-2-welcome-to-visual-studio-2010.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jolson/comments/commentRss/128162.aspx</wfw:commentRss>
        <feedburner:origLink>http://geekswithblogs.net/jolson/archive/2008/12/24/10-4-episode-2-welcome-to-visual-studio-2010.aspx</feedburner:origLink></item>
    </channel>
</rss>
