<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://jeffbarnes.net/portal/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>jeffbarnes.net</title><link>http://jeffbarnes.net/portal/blogs/</link><description>Spreading .NET to the Masses</description><dc:language>en-US</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>Alabama Code Camp - January 17th</title><link>http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2009/01/04/alabama-code-camp-january-17th.aspx</link><pubDate>Sun, 04 Jan 2009 06:49:06 GMT</pubDate><guid isPermaLink="false">1c3582eb-33a3-4e3c-8015-155fa6fb45bf:4244</guid><dc:creator>jeff.barnes</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;It&amp;#39;s that time again.&amp;nbsp; The next &lt;a href="http://www.alabamacodecamp.com" target="_blank"&gt;Alabama Code Camp&lt;/a&gt; has been scheduled for Saturday, January 17th in Montgomery, AL at the Auburn University campus.&amp;nbsp; The call for speakers is now open.&amp;nbsp; Please stay tuned to the web site for additional information.&amp;nbsp; The event is barely two weeks away.&amp;nbsp; So, registration will probably open soon.&lt;/p&gt; &lt;p&gt;This should be a good opportunity to learn some new things and meet some new people.&amp;nbsp; I hope to see you at the event.&lt;/p&gt;&lt;img src="http://jeffbarnes.net/portal/aggbug.aspx?PostID=4244" width="1" height="1"&gt;</description><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Code+Camp/default.aspx">Code Camp</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Alabama/default.aspx">Alabama</category></item><item><title>MSDN Developer Conference</title><link>http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/11/18/msdn-developer-conference.aspx</link><pubDate>Tue, 18 Nov 2008 14:31:17 GMT</pubDate><guid isPermaLink="false">1c3582eb-33a3-4e3c-8015-155fa6fb45bf:4241</guid><dc:creator>jeff.barnes</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;For those of you that haven’t heard, Microsoft has recently announced the &lt;a href="http://www.msdndevcon.com/pages/start.aspx" target="_blank"&gt;MSDN Developer Conference&lt;/a&gt;, which is a one day event that delivers that core content from the PDC.&amp;#160; So, if you didn’t get to make it out to Los Angeles for &lt;a href="http://www.microsoftpdc.com/" target="_blank"&gt;PDC 2008&lt;/a&gt;, this will be your chance to get to see some of the primary content.&amp;#160; The event will be held at several cities across the U.S. over the next couple of months.&amp;#160; The fee is $99, which is quite reasonable.&lt;/p&gt;  &lt;p&gt;On Tuesday, December 16th, I will be speaking at the &lt;a href="http://www.msdndevcon.com/pages/Atlanta.aspx" target="_blank"&gt;Atlanta&lt;/a&gt; event.&amp;#160; I will be co-presenting with &lt;a href="http://blogs.msdn.com/chabrook/" target="_blank"&gt;Chad Brooks&lt;/a&gt; for the “Lap Around Windows Azure and the Azure Service Platform” session.&amp;#160; &lt;a href="http://blogs.msdn.com/glengordon/" target="_blank"&gt;Glen Gordon&lt;/a&gt; recently &lt;a href="http://blogs.msdn.com/glengordon/archive/2008/11/12/great-new-perks-announced-for-the-atlanta-msdn-developer-conference-coming-in-december.aspx" target="_blank"&gt;blogged&lt;/a&gt; about several perks for attending the conference including a lot of nice giveaways.&amp;#160; If you are interested in keeping up with the future of the Microsoft .NET platform and peripheral technologies, you should make time to attend.&lt;/p&gt;  &lt;p&gt;I hope to see you at the event.&lt;/p&gt;&lt;img src="http://jeffbarnes.net/portal/aggbug.aspx?PostID=4241" width="1" height="1"&gt;</description></item><item><title>Thoughts on PDC 2008 Keynote</title><link>http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/10/27/thoughts-on-pdc-2008-keynote.aspx</link><pubDate>Mon, 27 Oct 2008 16:52:27 GMT</pubDate><guid isPermaLink="false">1c3582eb-33a3-4e3c-8015-155fa6fb45bf:4234</guid><dc:creator>jeff.barnes</dc:creator><slash:comments>3</slash:comments><description>&lt;p&gt;Microsoft formally kicked off the PDC event this week with Ray Ozzie delivering the keynote address.&amp;nbsp; I was fortunate enough to land a seat on the front row.&amp;nbsp; As expected, some new initiatives were finally unveiled: Windows Azure.&amp;nbsp; Azure is the new cloud services platform, which has an extremely compelling story.&amp;nbsp; Essentially, this is an effort to push the hosting of application from inside the enterprise to the cloud.&amp;nbsp; Don&amp;#39;t be fooled into thinking that this is only referring to web applications.&amp;nbsp; Azure expands well beyond the scope of mere web applications.&amp;nbsp; It will offer a platform for inexpensively hosting applications, databases, and more.&lt;/p&gt; &lt;p&gt;Based on what has been shown so far, it appears to be a very simple and seamless development experience.&amp;nbsp; Developers are still capable of locally developing and debugging applications on their desktop.&amp;nbsp; After the solution is ready to be deployed, you merely have to go to the Azure portal to create an application environment and upload the solution as a package.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Where all of this stuff starts to get interesting is the scalability aspect.&amp;nbsp; So, you need to scale your application up for an increased number of users?&amp;nbsp; No problem.&amp;nbsp; All you need to do is modify your configuration to specify a higher number of nodes.&amp;nbsp; Azure takes care of all of the dirty work behind the scenes.&amp;nbsp; It will be interesting to see whether all of this works as well as advertised.&amp;nbsp; If it pans out, I can see this as being overwhelmingly compelling for small companies all the way to large enterprises.&amp;nbsp; Imagine not only the cost savings, but the how much easier it would be to avoid the headaches of setting up your own major infrastructure in house.&lt;/p&gt; &lt;p&gt;However, I still think trust is going to be a major factor.&amp;nbsp; There are many businesses that are understandably reluctant to let someone else house their data.&amp;nbsp; It will take some time to build up trust and convince many organizations that this is a viable option.&amp;nbsp; However, I am starting to believe that the cost savings could be a compelling argument to give it a try.&amp;nbsp; Nevertheless, security will be a concern at the forefront of this platform.&amp;nbsp; I am anxious to hear more about the security aspects of the platform later this week.&amp;nbsp; More importantly,I am incredibly eager to get my hands on the CTP and give it a test drive.&lt;/p&gt; &lt;p&gt;What do you think?&amp;nbsp; I&amp;#39;d love to hear the comments of others.&lt;/p&gt;&lt;img src="http://jeffbarnes.net/portal/aggbug.aspx?PostID=4234" width="1" height="1"&gt;</description><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/PDC2008/default.aspx">PDC2008</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Cloud+Services/default.aspx">Cloud Services</category></item><item><title>Next TechMixer Scheduled for Nov 13th</title><link>http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/10/21/next-techmixer-scheduled-for-nov-13th.aspx</link><pubDate>Tue, 21 Oct 2008 05:01:00 GMT</pubDate><guid isPermaLink="false">1c3582eb-33a3-4e3c-8015-155fa6fb45bf:4231</guid><dc:creator>jeff.barnes</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;For those technology professionals in Birmingham and surrounding areas, take note that the next &lt;a href="http://www.techbirmingham.com/unplugged-2/" target="_blank"&gt;TechMixer&lt;/a&gt; has been scheduled for Thursday, November 13th.&amp;nbsp; It will be held at the Innovation Depot from 5:30 PM to 8:30 PM.&lt;/p&gt;
&lt;p&gt;In case you aren&amp;#39;t familiar with it, this is one of the area&amp;#39;s largest technical networking events.&amp;nbsp; There will be booths&amp;nbsp; to represent all of the area user groups as well as several technical companies.&amp;nbsp; Each iteration of the event has turned out a larger and larger crowd.&amp;nbsp; There is usually free finger foods as well as a cash bar.&amp;nbsp; So, load up on business cards and come on out to meet some new people.&lt;/p&gt;
&lt;p&gt;Be sure to visit the &lt;a href="http://techmixerunplugged.eventbrite.com/"&gt;registration site&lt;/a&gt; and RSVP.&lt;/p&gt;&lt;img src="http://jeffbarnes.net/portal/aggbug.aspx?PostID=4231" width="1" height="1"&gt;</description><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Birmingham/default.aspx">Birmingham</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Local+Events/default.aspx">Local Events</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Alabama/default.aspx">Alabama</category></item><item><title>PDC 2008 Is Approaching</title><link>http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/10/20/pdc-2008-is-approaching.aspx</link><pubDate>Mon, 20 Oct 2008 21:14:00 GMT</pubDate><guid isPermaLink="false">1c3582eb-33a3-4e3c-8015-155fa6fb45bf:4230</guid><dc:creator>jeff.barnes</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;It is getting close to time for &lt;a href="http://microsoftpdc.com/Default.aspx" target="_blank"&gt;PDC&lt;/a&gt;, and I have been giving some thought to the sessions that I want to attend.&amp;nbsp; There are too many scheduling conflicts to make all of the ones that interest me.&amp;nbsp; So, I have tried to strike a balance between my focus areas and some things a little outside of my comfort zone.&amp;nbsp; Given the breadth of the technologies that will be presented, I wanted to get a broad mix to try and understand the vision of where things are going over the next year or two.&amp;nbsp; Considering all of the pending announcements, it is certainly promising to be a very exciting week.&lt;/p&gt;
&lt;p&gt;For those that are interested, I will be blogging and using &lt;a href="http://twitter.com/jeff_barnes" target="_blank"&gt;twitter&lt;/a&gt; quite a bit for the duration of the event.&amp;nbsp; If you want to meet up and talk tech for a while, feel free to ping me.&amp;nbsp; Here is my tentative schedule of sessions that I plan to attend, but it is certainly subject to change.&lt;/p&gt;
&lt;table class="" cellspacing="0" cellpadding="10"&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;table class=""&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;div style="FONT-WEIGHT:bold;FONT-SIZE:11pt;"&gt;
&lt;h3&gt;&lt;/h3&gt;
&lt;div class="schedule"&gt;
&lt;div class="day"&gt;Sunday, October 26&lt;/div&gt;
&lt;table class="" cellspacing="0" cellpadding="0"&gt;

&lt;tr&gt;
&lt;td class="time" class="time"&gt;Sunday Evening&lt;/td&gt;
&lt;td class="item" class="item"&gt;Party with Palermo&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="schedule"&gt;
&lt;div class="day"&gt;Monday, October 27&lt;/div&gt;
&lt;table class="" cellspacing="0" cellpadding="0"&gt;

&lt;tr&gt;
&lt;td class="time" class="time"&gt;8:30 AM - 10:30 AM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;
&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="time" class="time"&gt;8:30 AM - 11:00 AM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;div class="schedule"&gt;
&lt;div&gt;Keynote &lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td class=""&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="time" class="time"&gt;11:00 AM - 12:15 PM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;div class="schedule"&gt;
&lt;div&gt;Under the Hood: Advances in the .NET Type System &lt;/div&gt;
&lt;div&gt;151&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td class=""&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="time" class="time"&gt;12:45 PM - 1:30 PM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;div class="schedule"&gt;
&lt;div&gt;Microsoft Expression Blend: Tips &amp;amp; Tricks &lt;/div&gt;
&lt;div&gt;408B&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td class=""&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="time" class="time"&gt;1:45 PM - 3:00 PM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;div class="schedule"&gt;
&lt;div&gt;Microsoft Visual Studio: Bringing out the Best in Multicore Systems &lt;/div&gt;
&lt;div&gt;502A&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td class=""&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="time" class="time"&gt;3:30 PM - 4:45 PM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;div class="schedule"&gt;
&lt;div&gt;ASP.NET MVC: A New Framework for Building Web Applications &lt;/div&gt;
&lt;div&gt;153&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td class=""&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="time" class="time"&gt;5:15 PM - 6:30 PM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;div class="schedule"&gt;
&lt;div&gt;WF 4.0: A First Look &lt;/div&gt;
&lt;div&gt;151&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td class=""&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="schedule"&gt;
&lt;div class="day"&gt;Tuesday, October 28&lt;/div&gt;
&lt;table class="" cellspacing="0" cellpadding="0"&gt;

&lt;tr&gt;
&lt;td class="time" class="time"&gt;8:30 AM - 10:30 AM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;
&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="time" class="time"&gt;8:30 AM - 11:00 AM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;div class="schedule"&gt;
&lt;div&gt;Keynote &lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td class=""&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="time" class="time"&gt;11:00 AM - 12:00 PM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;div class="schedule"&gt;
&lt;div&gt;Keynote &lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td class=""&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="time" class="time"&gt;11:00 AM - 12:30 PM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;
&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="time" class="time"&gt;12:45 PM - 1:30 PM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;div class="schedule"&gt;
&lt;div&gt;WCF: Zen of Performance and Scale &lt;/div&gt;
&lt;div&gt;515B&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td class=""&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="time" class="time"&gt;1:45 PM - 3:00 PM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;div class="schedule"&gt;
&lt;div&gt;SQL Server 2008: Beyond Relational &lt;/div&gt;
&lt;div&gt;406A&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td class=""&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="time" class="time"&gt;3:30 PM - 4:45 PM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;div class="schedule"&gt;
&lt;div&gt;Microsoft Silverlight Futures: Building Business Focused Applications &lt;/div&gt;
&lt;div&gt;153&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td class=""&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="time" class="time"&gt;5:15 PM - 6:30 PM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;div class="schedule"&gt;
&lt;div&gt;Entity Framework Futures &lt;/div&gt;
&lt;div&gt;151&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td class=""&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="schedule"&gt;
&lt;div class="day"&gt;Wednesday, October 29&lt;/div&gt;
&lt;table class="" cellspacing="0" cellpadding="0"&gt;

&lt;tr&gt;
&lt;td class="time" class="time"&gt;8:30 AM - 10:00 AM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;
&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="time" class="time"&gt;8:30 AM - 11:00 AM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;div class="schedule"&gt;
&lt;div&gt;Keynote &lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td class=""&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="time" class="time"&gt;10:30 AM - 11:45 AM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;div class="schedule"&gt;
&lt;div&gt;WCF 4.0: Building WCF Services with WF in Microsoft .NET 4.0 &lt;/div&gt;
&lt;div&gt;151&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td class=""&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="time" class="time"&gt;12:00 PM - 12:45 PM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;div class="schedule"&gt;
&lt;div&gt;Improving Code Quality with Code Analysis &lt;/div&gt;
&lt;div&gt;409A&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td class=""&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="time" class="time"&gt;1:15 PM - 2:30 PM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;div class="schedule"&gt;
&lt;div&gt;Modeling Data for Efficient Access at Scale &lt;/div&gt;
&lt;div&gt;403AB&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td class=""&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="time" class="time"&gt;3:00 PM - 4:15 PM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;div class="schedule"&gt;
&lt;div&gt;The Future of C# &lt;/div&gt;
&lt;div&gt;502A&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td class=""&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="time" class="time"&gt;4:45 PM - 6:00 PM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;div class="schedule"&gt;
&lt;div&gt;WF 4.0: Extending with Custom Activities &lt;/div&gt;
&lt;div&gt;408B&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td class=""&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="schedule"&gt;
&lt;div class="day"&gt;Thursday, October 30&lt;/div&gt;
&lt;table class="" cellspacing="0" cellpadding="0"&gt;

&lt;tr&gt;
&lt;td class="time" class="time"&gt;8:30 AM - 10:00 AM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;div class="schedule"&gt;
&lt;div&gt;Parallel Symposium: Addressing the Hard Problems with Concurrency &lt;/div&gt;
&lt;div&gt;515A&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td class=""&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="time" class="time"&gt;8:30 AM - 9:45 AM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;
&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="time" class="time"&gt;10:15 AM - 11:30 AM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;div class="schedule"&gt;
&lt;div&gt;Microsoft .NET Framework: CLR Futures &lt;/div&gt;
&lt;div&gt;153&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td class=""&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="time" class="time"&gt;10:15 AM - 11:45 AM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;
&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="time" class="time"&gt;12:00 PM - 1:15 PM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;div class="schedule"&gt;
&lt;div&gt;&amp;quot;Oslo&amp;quot;: Building Textual DSLs &lt;/div&gt;
&lt;div&gt;502A&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td class=""&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="time" class="time"&gt;12:00 PM - 1:30 PM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;
&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="time" class="time"&gt;1:45 PM - 3:00 PM &lt;/td&gt;
&lt;td class="item" class="item"&gt;
&lt;table class=""&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;div class="schedule"&gt;
&lt;div&gt;An Introduction to Microsoft F# &lt;/div&gt;
&lt;div&gt;502A&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td class=""&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;img src="http://jeffbarnes.net/portal/aggbug.aspx?PostID=4230" width="1" height="1"&gt;</description><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Personal/default.aspx">Personal</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Conferences/default.aspx">Conferences</category></item><item><title>MVP++</title><link>http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/10/01/mvp.aspx</link><pubDate>Wed, 01 Oct 2008 14:58:00 GMT</pubDate><guid isPermaLink="false">1c3582eb-33a3-4e3c-8015-155fa6fb45bf:4226</guid><dc:creator>jeff.barnes</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;I was just informed that I have been awarded again as an MVP for 2009 in Connected Systems.&amp;#160; This is something that I certainly regard as an honor considering the extent of distinguished talent in the ranks of the MVP program.&lt;/p&gt;  &lt;p&gt;It is going to be an exciting year for Connected Systems with Oslo around the corner among many other advancements in areas such as BizTalk, WCF, and WF.&amp;#160; Even outside of Connected Systems, there is a plethora of interesting topics: Visual Studio 2010, .NET Framework 4.0, F#, Parallel LINQ, Iron Ruby, Iron Python, etc.&lt;/p&gt;  &lt;p&gt;It is an exciting time to be a developer on the Microsoft platform, and I am honored to be in a privileged position where I can leverage additional resources to engage and assist the community.&amp;#160; &lt;/p&gt;&lt;img src="http://jeffbarnes.net/portal/aggbug.aspx?PostID=4226" width="1" height="1"&gt;</description><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Personal/default.aspx">Personal</category></item><item><title>EntLib 4.0 Presentation Materials</title><link>http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/09/25/entlib-4-0-presentation-materials.aspx</link><pubDate>Thu, 25 Sep 2008 09:15:03 GMT</pubDate><guid isPermaLink="false">1c3582eb-33a3-4e3c-8015-155fa6fb45bf:4225</guid><dc:creator>jeff.barnes</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;It took me a lot longer than expected to post this material.&amp;nbsp; I am beyond overloaded between work and personal stuff that is going on right now.&amp;nbsp; At any rate, the presentation slides and code can be downloaded &lt;a href="http://jeffbarnes.net/download/presentations/bsda/2008//09/EntLib40.zip" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Keep in mind that the code requires Enterprise Library 4.0 to be installed, which can be downloaded from CodePlex at the following link: &lt;a title="http://www.codeplex.com/entlib" href="http://www.codeplex.com/entlib" target="_blank"&gt;http://www.codeplex.com/entlib&lt;/a&gt;.&amp;nbsp; Be sure to look at the QuickStart sample projects that are installed with the library.&amp;nbsp; A couple of them are the ones we looked at during the presentation.&amp;nbsp; These are a great guide to getting started and learning more about the features.&lt;/p&gt; &lt;p&gt;You should also check out the community project: &lt;a title="http://www.codeplex.com/entlibcontrib" href="http://www.codeplex.com/entlibcontrib"&gt;http://www.codeplex.com/entlibcontrib&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://jeffbarnes.net/portal/aggbug.aspx?PostID=4225" width="1" height="1"&gt;</description><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Presentations/default.aspx">Presentations</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Enterprise+Library/default.aspx">Enterprise Library</category></item><item><title>Presenting for BSDA on Thu Sept 11</title><link>http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/09/08/presenting-for-bsda-on-thu-sept-11.aspx</link><pubDate>Tue, 09 Sep 2008 02:10:20 GMT</pubDate><guid isPermaLink="false">1c3582eb-33a3-4e3c-8015-155fa6fb45bf:4221</guid><dc:creator>jeff.barnes</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I meant to blog about this last month, and it completely slipped my mind.&amp;nbsp; On Thursday, September 11, I will be presented for the &lt;a href="http://www.bsda.info" target="_blank"&gt;Birmingham Software Developer Association&lt;/a&gt;.&amp;nbsp; The meeting will convene at 6:30 PM at New Horizons.&amp;nbsp; I will be delivering a presentation that provides an overview of the major features in Enterprise Library 4.0.&amp;nbsp; Obviously, due to the breadth of functionality, this will be a high level survey that only gives a teaser of what Enterprise Library has to offer.&lt;/p&gt; &lt;p&gt;Here is the abstract:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Enterprise Library is a collection of application blocks provided by the Microsoft Patterns &amp;amp; Practice Team.&amp;nbsp; These application blocks are essentially &amp;quot;infrastructure modules&amp;quot; that can be used &amp;quot;as is&amp;quot;, extended, or modified to assist with solving common development challenges such as database access, logging, validation, and more.&amp;nbsp; In this presentation, we will survey the major features that Enterprise Library has to offer by taking a look at both pros and cons of the most commonly used application blocks.&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://jeffbarnes.net/portal/aggbug.aspx?PostID=4221" width="1" height="1"&gt;</description><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/.NET+Framework/default.aspx">.NET Framework</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/User+Group/default.aspx">User Group</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Birmingham/default.aspx">Birmingham</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Local+Events/default.aspx">Local Events</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Alabama/default.aspx">Alabama</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Enterprise+Library/default.aspx">Enterprise Library</category></item><item><title>TechMixer University WCF Presentation Material</title><link>http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/08/20/techmixer-university-wcf-presentation-material.aspx</link><pubDate>Wed, 20 Aug 2008 10:41:01 GMT</pubDate><guid isPermaLink="false">1c3582eb-33a3-4e3c-8015-155fa6fb45bf:4217</guid><dc:creator>jeff.barnes</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Yesterday, the first ever &lt;a href="http://www.techmixeruniversity.com/" target="_blank"&gt;TechMixer University&lt;/a&gt; was held at the BJCC.&amp;nbsp; Hats off to the organizers of the event.&amp;nbsp; It seemed to be very well planned and coordinated.&amp;nbsp; Everyone that I spoke with was enjoying themselves.&amp;nbsp; I hope there will be more of these events in the future.&amp;nbsp; They are great for building the overall technical community in the Birmingham area.&lt;/p&gt; &lt;p&gt;Right after lunch, I gave a presentation entitled &amp;quot;Hit the Ground Running with WCF Services.&amp;quot;&amp;nbsp; It was an introduction to some of the core concepts in WCF.&amp;nbsp; Based on a rough estimate, I would say about 40 or so were in the session.&amp;nbsp; I greatly appreciate the feedback that I received from several attendees.&amp;nbsp; Hopefully, it will ease the learning curve for some of you.&lt;/p&gt; &lt;p&gt;As promised, I have posted the slides and code for my presentation.&amp;nbsp; You can download it &lt;a href="http://jeffbarnes.net/download/presentations/techmixer/2008/08/TechMixerWCF.zip" target="_blank"&gt;here&lt;/a&gt;.&amp;nbsp; If you have any questions, feel free to ping me at jeff _ at_ jeffbarnes.net.&lt;/p&gt;&lt;img src="http://jeffbarnes.net/portal/aggbug.aspx?PostID=4217" width="1" height="1"&gt;</description><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/WCF/default.aspx">WCF</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Birmingham/default.aspx">Birmingham</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Local+Events/default.aspx">Local Events</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Alabama/default.aspx">Alabama</category></item><item><title>Sara Ford Presenting in Birmingham on 8/25</title><link>http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/08/11/sara-ford-presenting-in-birimingham-on-8-25.aspx</link><pubDate>Mon, 11 Aug 2008 21:04:12 GMT</pubDate><guid isPermaLink="false">1c3582eb-33a3-4e3c-8015-155fa6fb45bf:4216</guid><dc:creator>jeff.barnes</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;There will be a special presentation by Sara Ford on Monday, August 25th about Visual Studio IDE Tips and Tricks.&amp;#160; For those of you that don’t know, Sara Ford maintains the popular blog &lt;a href="http://blogs.msdn.com/saraford/archive/tags/Visual+Studio+2008+Tip+of+the+Day/default.aspx" target="_blank"&gt;Visual Studio Tip of the Day&lt;/a&gt; and works on the &lt;a href="http://www.codeplex.com" target="_blank"&gt;CodePlex&lt;/a&gt; team.&amp;#160; She will be passing through the Birmingham, AL area after the DevLink event and has graciously agreed to drop by and give a talk to the area.&amp;#160; It will be held at the Southern Living Auditorium on the Southern Progress Campus located at 2100 Lakeshore Drive.&amp;#160; Here is a link to the event registration with complete details: &lt;a title="https://www.clicktoattend.com/invitation.aspx?code=130429" href="https://www.clicktoattend.com/invitation.aspx?code=130429"&gt;https://www.clicktoattend.com/invitation.aspx?code=130429&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Those of you that know me are already aware how I am a big advocate of time savers in the IDE.&amp;#160; This will be a great opportunity to learn a few things to add to your bag of tricks for getting things done in Visual Studio.&amp;#160; I hope to see you there!&lt;/p&gt;  &lt;p&gt;Here is the abstract for the presentation:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Performance improvements begin by speeding up the simple task you do every minute of every hour of every day you use Visual Studio.&amp;#160; Just like a coin jar where you place your spare change,&amp;#160; you’ll see the time you save add up into the days, weeks, and into the months.&amp;#160; This talk provides the best of the best, 21 tips that can be used in any language, which stretched across your 3 primary activities in the IDE: coding, customizing, and debugging.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;Sara Ford is the program manager for CodePlex, Microsoft’s open source project hosting site. Prior to CodePlex, she worked on the Visual Studio team for six years, where she continues to run the Visual Studio Tip of the Day on her blog. Her life-long goal is to become a 97 year old weightlifter, so she can be featured on the local news.&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://jeffbarnes.net/portal/aggbug.aspx?PostID=4216" width="1" height="1"&gt;</description><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Birmingham/default.aspx">Birmingham</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Local+Events/default.aspx">Local Events</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Alabama/default.aspx">Alabama</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>TechMixer University – August 19th</title><link>http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/08/11/techmixer-university-august-19th.aspx</link><pubDate>Mon, 11 Aug 2008 20:46:46 GMT</pubDate><guid isPermaLink="false">1c3582eb-33a3-4e3c-8015-155fa6fb45bf:4215</guid><dc:creator>jeff.barnes</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;On Tuesday, August 19th, TechMixer University will be held in Birmingham, AL.&amp;#160; This will be a large community driven training event that covers a wide spectrum of technologies.&amp;#160;&amp;#160;&amp;#160; The organizers have strived to offer a little something for everyone including developers, database professionals, project managers, and network professionals.&amp;#160; The event also provides coverage of non-Microsoft technologies such as Oracle, MySql, and Ruby.&lt;/p&gt;  &lt;p&gt;Even if you can’t attend the entire event, I would encourage you to drop by for one or two sessions that interest you.&amp;#160; Visit the website for complete details: &lt;a title="http://www.techmixeruniversity.com/TechMixer_University.html" href="http://www.techmixeruniversity.com/TechMixer_University.html"&gt;http://www.techmixeruniversity.com/TechMixer_University.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I’ll be delivering a session on WCF entitled “Hit the Ground Running with WCF Services”.&amp;#160; Here is the abstract:&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Windows Communication Foundation (WCF) is a major advancement within the Microsoft .NET platform that allows for easily exposing units of functionality as services that are accessible via a broad spectrum of communication protocols.&amp;#160; WCF has been built from the ground up around a highly flexible and extensible model that allows developers to concentrate on business problems rather than the details of communication plumbing.&amp;#160; Write your business logic once and simply expose it over the necessary protocols via configuration without changing a line of code!&amp;#160; If this sounds interesting, please join me for a crash course in the fundamental concepts of WCF.&amp;#160; This session is packed with material and strives to significantly reduce the learning curve for those that are new to the technology by providing an introduction to major features and capabilities of the WCF platform.&lt;/p&gt;&lt;img src="http://jeffbarnes.net/portal/aggbug.aspx?PostID=4215" width="1" height="1"&gt;</description><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Local+Events/default.aspx">Local Events</category></item><item><title>VS2008 and .NET 3.5 SP1</title><link>http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/05/12/vs2008-and-net-3-5-sp1.aspx</link><pubDate>Mon, 12 May 2008 21:29:12 GMT</pubDate><guid isPermaLink="false">1c3582eb-33a3-4e3c-8015-155fa6fb45bf:4213</guid><dc:creator>jeff.barnes</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;In case you haven&amp;#39;t heard, Microsoft has formally announced plans to provide a service pack (SP1) for Visual Studio 2008 and .NET Framework 3.5 by the end of the year.&amp;nbsp; There is a long list of items that will be included, but the most notable one to me was the ADO.NET Entity Framework.&amp;nbsp; &lt;/p&gt; &lt;p&gt;I&amp;#39;ll avoid repeating all of the information here.&amp;nbsp; My intent was to simply help propagate the information to the masses.&amp;nbsp; For all of the details, go read &lt;a href="http://blogs.msdn.com/brada" target="_blank"&gt;Brad Abrams&amp;#39;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/brada/archive/2008/05/05/visual-studio-2008-and-net-framework-3-5-sp1-beta.aspx" target="_blank"&gt;extensive blog post&lt;/a&gt; about the framework portion of the news.&amp;nbsp; The &lt;a href="http://blogs.msdn.com/webdevtools" target="_blank"&gt;WebDev Tools Blog&lt;/a&gt; also has a &lt;a href="http://blogs.msdn.com/webdevtools/archive/2008/05/12/visual-studio-2008-sp1-beta.aspx" target="_blank"&gt;long blog post&lt;/a&gt; that details more of the Visual Studio portion of the release. You should also listen to the latest episode of &lt;a href="http://www.dotnetrocks.com/" target="_blank"&gt;Dot Net Rocks&lt;/a&gt; (Show #340).&amp;nbsp; Carl Franklin and Richard Campbell interviewed Brad and Omar Khan about a lot of the details.&lt;/p&gt; &lt;p&gt;Over the next few months, I will be closely following this release and tinkering with the betas as much as possible.&amp;nbsp; Once EF is officially released, I&amp;#39;m hoping to get it into my production environment as soon as possible.&lt;/p&gt; &lt;p&gt;It is an exciting time to be a .NET developer!&lt;/p&gt;&lt;img src="http://jeffbarnes.net/portal/aggbug.aspx?PostID=4213" width="1" height="1"&gt;</description><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/.NET+Framework/default.aspx">.NET Framework</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Announcements/default.aspx">Announcements</category></item><item><title>BizTalk Server 2006 R3 Announced</title><link>http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/04/24/biztalk-server-2006-r3-announced.aspx</link><pubDate>Thu, 24 Apr 2008 12:07:38 GMT</pubDate><guid isPermaLink="false">1c3582eb-33a3-4e3c-8015-155fa6fb45bf:4209</guid><dc:creator>jeff.barnes</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;In case you haven&amp;#39;t heard, it was formally &lt;a href="http://blogs.msdn.com/stevemar/archive/2008/04/23/biztalk-server-platform-updates.aspx" target="_blank"&gt;announced&lt;/a&gt; that a new release of BizTalk Server 2006 is being planned to provide better support for Windows Server 2008, SQL Server 2008, and .NET Framework 3.5.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Here are the major highlights:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;New web service registry capabilities with support for UDDI (Universal Description Discovery and Integration) version 3.0  &lt;li&gt;Enhanced service enablement of applications (through new and enhanced adapters for LOB applications, databases, and legacy/host systems) &lt;li&gt;Enhanced service enablement of “edge” devices through BizTalk RFID Mobile &lt;li&gt;Enhanced interoperability and connectivity support for B2B protocols (like SWIFT, EDI, etc) &lt;li&gt;SOA patterns and best practices guidance to assist our customer’s implementations&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The major goodness will still have to wait for Oslo. :)&lt;/p&gt;&lt;img src="http://jeffbarnes.net/portal/aggbug.aspx?PostID=4209" width="1" height="1"&gt;</description><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/BizTalk/default.aspx">BizTalk</category></item><item><title>MVP Summit Next Week</title><link>http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/04/09/mvp-summit-next-week.aspx</link><pubDate>Wed, 09 Apr 2008 10:27:48 GMT</pubDate><guid isPermaLink="false">1c3582eb-33a3-4e3c-8015-155fa6fb45bf:4202</guid><dc:creator>jeff.barnes</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Next week, the annual &lt;a href="https://www.mvpsummit2008.com/"&gt;Microsoft MVP Summit&lt;/a&gt; will be held in Seattle.&amp;nbsp; The event runs for four days and will be split between the Washington Convention Center and Microsoft&amp;#39;s campus in Redmond.&amp;nbsp; The majority of my focus will be on Oslo.&amp;nbsp; At this point, I&amp;#39;m not sure how much of the information will be subject to NDA, but I will definitely pass along any interesting tidbits that are eligible for disclosure.&amp;nbsp; &lt;/p&gt; &lt;p&gt;If nothing else, I&amp;#39;m sure that I will be twittering a lot during the week.&amp;nbsp; So, you can follow along with what&amp;#39;s happening via my twitter feed: &lt;a title="http://twitter.com/jeff_barnes" href="http://twitter.com/jeff_barnes"&gt;http://twitter.com/jeff_barnes&lt;/a&gt;.&amp;nbsp; I&amp;#39;m looking forward to the opportunity to hang out and speak geek with a number of other MVPs and Microsoft employees.&amp;nbsp; It has been far too long since I have spoken with a number of those guys due to my crazy workload over the last couple of months.&lt;/p&gt;&lt;img src="http://jeffbarnes.net/portal/aggbug.aspx?PostID=4202" width="1" height="1"&gt;</description><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Oslo/default.aspx">Oslo</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Conferences/default.aspx">Conferences</category></item><item><title>To StringBuilder Or Not To StringBuilder</title><link>http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/03/18/to-stringbuilder-or-not-to-stringbuilder.aspx</link><pubDate>Tue, 18 Mar 2008 05:14:15 GMT</pubDate><guid isPermaLink="false">1c3582eb-33a3-4e3c-8015-155fa6fb45bf:4148</guid><dc:creator>jeff.barnes</dc:creator><slash:comments>4</slash:comments><description>&lt;p&gt;Between work and stuff going on in my personal life, there hasn&amp;#39;t been a lot of spare time for blogging and developer community things over the last few weeks.&amp;nbsp; Hopefully, that will be changing in the near future.&amp;nbsp; In the meantime, I wanted to squeeze in a quick blog post about something that came up today regarding StringBuilder.&lt;/p&gt; &lt;p&gt;It was pointed out someone on my team was concatenating several strings to build a query in a few methods.&amp;nbsp; It is arguable whether these particular queries should be embedded in the source code, but that isn&amp;#39;t what this post is about.&amp;nbsp; It was requested that the developer modify the source code to use a StringBuilder rather than concatenating the strings.&amp;nbsp; Generally speaking, I would agree with this approach as the StringBuilder is more efficient when concatenating several strings, but this wasn&amp;#39;t one of those cases.&lt;/p&gt; &lt;p&gt;Consider the following two methods:&lt;/p&gt;&lt;pre class="coloredcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; LiteralConcatenationExample()
{
    &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;SELECT T1.Field1, &amp;quot;&lt;/span&gt; +
                  &lt;span class="str"&gt;&amp;quot;T1.Field2, &amp;quot;&lt;/span&gt; +
                  &lt;span class="str"&gt;&amp;quot;T1.Field3, &amp;quot;&lt;/span&gt; +
                  &lt;span class="str"&gt;&amp;quot;T2.Field4 &amp;quot;&lt;/span&gt; +
            &lt;span class="str"&gt;&amp;quot;FROM Table1 T1 &amp;quot;&lt;/span&gt; +
            &lt;span class="str"&gt;&amp;quot;INNER JOIN Table2 T2 ON T1.Field1 = T2.Field1&amp;quot;&lt;/span&gt;;
}

&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; StringBuilderWithLiteralsExample()
{
    &lt;span class="cls"&gt;StringBuilder&lt;/span&gt; sb = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="cls"&gt;StringBuilder&lt;/span&gt;();

    sb.Append(&lt;span class="str"&gt;&amp;quot;SELECT T1.Field1, &amp;quot;&lt;/span&gt;);
    sb.Append(&lt;span class="str"&gt;&amp;quot;T1.Field2, &amp;quot;&lt;/span&gt;);
    sb.Append(&lt;span class="str"&gt;&amp;quot;T1.Field3, &amp;quot;&lt;/span&gt;);
    sb.Append(&lt;span class="str"&gt;&amp;quot;T2.Field4 &amp;quot;&lt;/span&gt;);
    sb.Append(&lt;span class="str"&gt;&amp;quot;FROM Table1 T1 &amp;quot;&lt;/span&gt;);
    sb.Append(&lt;span class="str"&gt;&amp;quot;INNER JOIN Table2 T2 ON T1.Field1 = T2.Field1&amp;quot;&lt;/span&gt;);

    &lt;span class="kwrd"&gt;return&lt;/span&gt; sb.ToString();
}&lt;/pre&gt;
&lt;p&gt;Which method do you think would be more efficient?&lt;/p&gt;
&lt;p&gt;If you chose the second method, you should take a closer look at the generated IL:&lt;/p&gt;&lt;pre&gt;.method public hidebysig static string  LiteralConcatenationExample() cil managed
{
  // Code size       11 (0xb)
  .maxstack  1
  .locals init ([0] string CS$1$0000)
  IL_0000:  nop
  IL_0001:  ldstr      &amp;quot;SELECT T1.Field1, T1.Field2, T1.Field3, T2.Field4 &amp;quot;
  + &amp;quot;FROM Table1 T1 INNER JOIN Table2 T2 ON T1.Field1 = T2.Field1&amp;quot;
  IL_0006:  stloc.0
  IL_0007:  br.s       IL_0009
  IL_0009:  ldloc.0
  IL_000a:  ret
} // end of method Program::LiteralConcatenationExample&lt;/pre&gt;&lt;pre&gt;.method public hidebysig static string  StringBuilderWithLiteralsExample() cil managed
{
  // Code size       90 (0x5a)
  .maxstack  2
  .locals init ([0] class [mscorlib]System.Text.StringBuilder sb,
           [1] string CS$1$0000)
  IL_0000:  nop
  IL_0001:  newobj     instance void [mscorlib]System.Text.StringBuilder::.ctor()
  IL_0006:  stloc.0
  IL_0007:  ldloc.0
  IL_0008:  ldstr      &amp;quot;SELECT T1.Field1, &amp;quot;
  IL_000d:  callvirt   instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
  IL_0012:  pop
  IL_0013:  ldloc.0
  IL_0014:  ldstr      &amp;quot;T1.Field2, &amp;quot;
  IL_0019:  callvirt   instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
  IL_001e:  pop
  IL_001f:  ldloc.0
  IL_0020:  ldstr      &amp;quot;T1.Field3, &amp;quot;
  IL_0025:  callvirt   instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
  IL_002a:  pop
  IL_002b:  ldloc.0
  IL_002c:  ldstr      &amp;quot;T2.Field4 &amp;quot;
  IL_0031:  callvirt   instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
  IL_0036:  pop
  IL_0037:  ldloc.0
  IL_0038:  ldstr      &amp;quot;FROM Table1 T1 &amp;quot;
  IL_003d:  callvirt   instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
  IL_0042:  pop
  IL_0043:  ldloc.0
  IL_0044:  ldstr      &amp;quot;INNER JOIN Table2 T2 ON T1.Field1 = T2.Field1&amp;quot;
  IL_0049:  callvirt   instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
  IL_004e:  pop
  IL_004f:  ldloc.0
  IL_0050:  callvirt   instance string [mscorlib]System.Object::ToString()
  IL_0055:  stloc.1
  IL_0056:  br.s       IL_0058
  IL_0058:  ldloc.1
  IL_0059:  ret
} // end of method Program::StringBuilderWithLiteralsExample&lt;/pre&gt;
&lt;p&gt;As you can see, the string concatenation is considerable more efficient.&amp;nbsp; This may be a bit confusing to some people as you have undoubtedly had it hammered into your head that a StringBuilder should be used when concatenating strings.&amp;nbsp; Well, I would agree when you are dealing with dynamic strings that are built using parameters.&amp;nbsp; However, literal strings are a different story.&lt;/p&gt;
&lt;p&gt;Since this scenario is using literal strings, the compiler can optimize the values into one large string that can be loaded with a single load string operation (ldstr).&amp;nbsp; If the code is modified to use a StringBuilder for each line of the query, it actually increases the number of operations by four for each line of the query.&lt;/p&gt;
&lt;p&gt;In fairness, most situations will probably be dealing with dynamic strings, which would change this scenario back to favor the usage of a StringBuilder.&amp;nbsp; However, you should keep in mind that a StringBuilder doesn&amp;#39;t automagically give you a more efficient solution in every situation, especially if you are only concatenating a few strings.&lt;/p&gt;&lt;img src="http://jeffbarnes.net/portal/aggbug.aspx?PostID=4148" width="1" height="1"&gt;</description><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/.NET+Framework/default.aspx">.NET Framework</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>Dell XPS M1530 - Finally Loaded and Ready</title><link>http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/03/12/dell-xps-m1530-finally-loaded-and-ready.aspx</link><pubDate>Wed, 12 Mar 2008 12:20:59 GMT</pubDate><guid isPermaLink="false">1c3582eb-33a3-4e3c-8015-155fa6fb45bf:4103</guid><dc:creator>jeff.barnes</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;The last time that I purchased a computer was 2003.&amp;#160; I bought all the parts and built my own gargantuan desktop, which has been my faithful servant for the nearly five years.&amp;#160; Unfortunately, all good things must come to an end.&amp;#160; Although my old desktop would still get the job done, it was becoming noticeably outdated.&amp;#160; During the last few years, I have also found myself becoming more and more dependent upon the need for a laptop.&amp;#160; It is a little difficult to drag around a mammoth desktop to code camps and user groups when I&amp;#39;m doing a presentation.&amp;#160; While my employer issued laptop was adequate, it certainly left a lot to be desired.&amp;#160; &lt;/p&gt;  &lt;p&gt;After debating for some time as to whether I wanted another desktop or a kick ass laptop, I finally decided it was time to say good bye to my desktop.&amp;#160; It is difficult for me to come up with many valid reasons for going the desktop route again.&amp;#160; Five years ago, I was a fairly intense MMORPG gamer, but I have finally beaten that addiction and have no desire to return to such a waste of time (albeit a fun waste of time).&amp;#160; My gaming itch is now satisfied via XBox 360.&amp;#160; Games that can be paused are much more attractive to me these days.&amp;#160; Since PC gaming is removed from the picture, a laptop was the logical choice.&lt;/p&gt;  &lt;p&gt;After researching quite a few options and waiting for the right deal to come along, I finally went with the Dell XPS M1530.&amp;#160; It was the perfect balance between price and power.&amp;#160; I have spent many hours over the last several nights trying to get it setup with all of my software and various tweaks.&amp;#160; Finally, it is beginning to feel like home rather than a stranger&amp;#39;s computer.&lt;/p&gt;  &lt;p&gt;Here is a photo of the model that I bought as well as the specs:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://jeffbarnes.net/pics/blog/screenshots/DellXPSM1530.jpg" alt="" /&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Intel Core 2 Duo Processor T7500 (2.2Ghz / 800Mhz FSB / 4MB L2 Cache)&lt;/li&gt;    &lt;li&gt;4GB DDR2 667Mhz &lt;/li&gt;    &lt;li&gt;200GB 7200RPM SATA (with Free Fall Sensor)&lt;/li&gt;    &lt;li&gt;256MB NVIDIA GeForce 8600M GT&lt;/li&gt;    &lt;li&gt;8X DVD+/-RW Slot Load Drive&lt;/li&gt;    &lt;li&gt;Intel 4965AGN Wireless N Mini-Card&lt;/li&gt;    &lt;li&gt;85 WHr 9-cell Lithium Ion Primary Battery&lt;/li&gt;    &lt;li&gt;Integrated Biometric Finger Print Reader&lt;/li&gt;    &lt;li&gt;Integrated Web Camera&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;As I write this post, my old desktop is being reformatted and reinstalled with Windows Server 2003.&amp;#160; It will now become a file server for my wife and me, and it will probably serve a few other experimental purposes as well.&amp;#160; I would love to have loaded Windows Server 2008 on it, but the hardware isn&amp;#39;t 64 bit.&amp;#160; At least, my old companion will continue to live on in some other capacity rather than being sent to the big hardware dumpster in the sky.&lt;/p&gt;&lt;img src="http://jeffbarnes.net/portal/aggbug.aspx?PostID=4103" width="1" height="1"&gt;</description><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Personal/default.aspx">Personal</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Hardware/default.aspx">Hardware</category></item><item><title>WCF 3.5: Syndication Feeds</title><link>http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/03/04/wcf-3-5-syndication-feeds.aspx</link><pubDate>Tue, 04 Mar 2008 11:09:39 GMT</pubDate><guid isPermaLink="false">1c3582eb-33a3-4e3c-8015-155fa6fb45bf:4097</guid><dc:creator>jeff.barnes</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;In .NET 3.0, WCF did not have any built-in support for syndication feeds, such as RSS and ATOM.&amp;nbsp; As a result, it was necessary to roll your own solution anytime you wanted to render a syndication feed from your service.&amp;nbsp; While this wasn&amp;#39;t an incredibly difficult task, it was still rather tedious.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Fortunately, .NET 3.5 introduced rich support for easily enabling syndication feeds from your service with relatively little effort.&amp;nbsp; Overall, it does a great job of handling the dirty work for you.&amp;nbsp; Let&amp;#39;s take a look at how to set it up.&lt;/p&gt; &lt;p&gt;For this example, let&amp;#39;s say that you have a WCF service that provides product information.&amp;nbsp; We want to enhance this service to provide an RSS/ATOM feed containing the product information.&amp;nbsp; The first thing we need to do is setup our service contract.&amp;nbsp; &lt;/p&gt;&lt;pre class="coloredcode"&gt;[&lt;span class="cls"&gt;ServiceContract&lt;/span&gt;(Namespace = &lt;span class="str"&gt;&amp;quot;JeffBarnes.Samples.Syndication&amp;quot;&lt;/span&gt;)]
[&lt;span class="cls"&gt;ServiceKnownType&lt;/span&gt;(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="cls"&gt;Rss20FeedFormatter&lt;/span&gt;))]
[&lt;span class="cls"&gt;ServiceKnownType&lt;/span&gt;(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="cls"&gt;Atom10FeedFormatter&lt;/span&gt;))]
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;interface&lt;/span&gt; &lt;span class="cls"&gt;IProductService&lt;/span&gt;
{
    [&lt;span class="cls"&gt;OperationContract&lt;/span&gt;]
    [&lt;span class="cls"&gt;WebGet&lt;/span&gt;(UriTemplate = &lt;span class="str"&gt;&amp;quot;/product/{code}&amp;quot;&lt;/span&gt;)]
    &lt;span class="cls"&gt;Product&lt;/span&gt; GetProduct(&lt;span class="kwrd"&gt;string&lt;/span&gt; code);

    [&lt;span class="cls"&gt;OperationContract&lt;/span&gt;(Name = &lt;span class="str"&gt;&amp;quot;GetAllProducts&amp;quot;&lt;/span&gt;)]
    [&lt;span class="cls"&gt;WebGet&lt;/span&gt;(UriTemplate = &lt;span class="str"&gt;&amp;quot;/products?format={format}&amp;quot;&lt;/span&gt;)]
    &lt;span class="cls"&gt;SyndicationFeedFormatter&lt;/span&gt; GetProductSyndicationFeed(&lt;span class="kwrd"&gt;string&lt;/span&gt; format);

    [&lt;span class="cls"&gt;OperationContract&lt;/span&gt;(Name = &lt;span class="str"&gt;&amp;quot;GetProductsByCategory&amp;quot;&lt;/span&gt;)]
    [&lt;span class="cls"&gt;WebGet&lt;/span&gt;(UriTemplate = &lt;span class="str"&gt;&amp;quot;/products/{category}?format={format}&amp;quot;&lt;/span&gt;)]
    &lt;span class="cls"&gt;SyndicationFeedFormatter&lt;/span&gt; GetProductSyndicationFeed(&lt;span class="kwrd"&gt;string&lt;/span&gt; category, &lt;span class="kwrd"&gt;string&lt;/span&gt; format);
}&lt;/pre&gt;
&lt;p&gt;If you are familiar with WCF services, the ServiceContract and OperationContract attributes should already be familiar to you.&amp;nbsp; Depending upon whether you have written many advanced services, you may also be familiar with ServiceKnownType.&amp;nbsp; If not, it is essentially used to inform the WCF runtime that it needs to be aware of a specific type for the purpose of serialization.&lt;/p&gt;
&lt;p&gt;The &lt;a href="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2007/09/11/wcf-3-5-webget-attribute.aspx" target="_blank"&gt;WebGet&lt;/a&gt; attribute is a newcomer in .NET 3.5.&amp;nbsp; It is part of the new REST stack.&amp;nbsp; I have already written about WebGet in a previous &lt;a href="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2007/09/11/wcf-3-5-webget-attribute.aspx" target="_blank"&gt;post&lt;/a&gt;.&amp;nbsp; You should refer to it for a more thorough overview.&amp;nbsp; The abridged version is that it allows the WCF runtime to dispatch HTTP GET requests that match the specified UriTemplate to the given method.&amp;nbsp; As you can probably discern from the code, the GetProductSyndicationFeed method returns a feed of products in a specified format (RSS or ATOM).&lt;/p&gt;
&lt;p&gt;So, what does the implementation look like?&amp;nbsp; I&amp;#39;m going to trim it down to the most interesting pieces for the sake of brevity.&lt;/p&gt;&lt;pre class="coloredcode"&gt;&lt;span class="rem"&gt;// Create the syndication items from the products.&lt;/span&gt;
&lt;span class="cls"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span class="cls"&gt;SyndicationItem&lt;/span&gt;&amp;gt; items =
    &lt;span class="kwrd"&gt;from&lt;/span&gt; product &lt;span class="kwrd"&gt;in&lt;/span&gt; products
    &lt;span class="kwrd"&gt;orderby&lt;/span&gt; product.Code
    &lt;span class="kwrd"&gt;select&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="cls"&gt;SyndicationItem&lt;/span&gt;(...);

&lt;span class="rem"&gt;// Create the syndication feed.&lt;/span&gt;
&lt;span class="cls"&gt;SyndicationFeed&lt;/span&gt; feed = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="cls"&gt;SyndicationFeed&lt;/span&gt;(
    &lt;span class="str"&gt;&amp;quot;Jeff&amp;#39;s Product Catalog&amp;quot;&lt;/span&gt;,
    feedDesc,
    &lt;span class="cls"&gt;WebOperationContext&lt;/span&gt;.Current.IncomingRequest.UriTemplateMatch.RequestUri,
    items);

&lt;span class="rem"&gt;// Determine the format to use.&lt;/span&gt;
&lt;span class="cls"&gt;SyndicationFeedFormatter&lt;/span&gt; formatter = &lt;span class="kwrd"&gt;null&lt;/span&gt;;
&lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="cls"&gt;String&lt;/span&gt;.Compare(format, &lt;span class="str"&gt;&amp;quot;rss&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;true&lt;/span&gt;) == 0)
{
    formatter = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="cls"&gt;Rss20FeedFormatter&lt;/span&gt;(feed);
}
&lt;span class="kwrd"&gt;else&lt;/span&gt;
{
    formatter = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="cls"&gt;Atom10FeedFormatter&lt;/span&gt;(feed);
}

&lt;span class="kwrd"&gt;return&lt;/span&gt; formatter;
&lt;/pre&gt;
&lt;p&gt;First, a LINQ query is used to construct an enumerable collection of SyndicationItems based upon the product information.&amp;nbsp;&amp;nbsp; SyndicationItem offers a lot of flexibility and extensibility.&amp;nbsp; It provides seamless support for formatting your content as html, xml, or custom formats.&amp;nbsp; Next, the SyndicationItems are supplied to a SyndicationFeed that decorates the items with some other information.&amp;nbsp; Ultimately, the SyndicationFeed is wrapped by a feed formatter.&amp;nbsp; Depending upon the requested format, either RSS or ATOM will be used.&lt;/p&gt;
&lt;p&gt;There is one last gotcha to keep in mind in regards to the hosting of the service.&amp;nbsp; In order to enable the REST stack, there is a specific binding and behavior that must be used:&amp;nbsp; webHttpBinding and webHttpBehavior.&amp;nbsp; You can manually set these up via configuration.&amp;nbsp; However, there is a new ServiceHost subclass available that offers a configuration free alternative.&amp;nbsp; Check out the following snippet:&lt;/p&gt;&lt;pre class="coloredcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; (&lt;span class="cls"&gt;WebServiceHost&lt;/span&gt; host = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="cls"&gt;WebServiceHost&lt;/span&gt;(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="cls"&gt;ProductService&lt;/span&gt;), &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="cls"&gt;Uri&lt;/span&gt;(&lt;span class="str"&gt;&amp;quot;http://localhost:8000/ProductService&amp;quot;&lt;/span&gt;)))
{
    host.Open();
    &lt;span class="cls"&gt;Console&lt;/span&gt;.WriteLine(&lt;span class="str"&gt;&amp;quot;Service Ready&amp;quot;&lt;/span&gt;);
    &lt;span class="cls"&gt;Console&lt;/span&gt;.Read();
}&lt;/pre&gt;
&lt;p&gt;WebServiceHost will automatically create an endpoint with the necessary binding and behavior to enable the REST stack.&amp;nbsp; I don&amp;#39;t even have a configuration file in this demo.&amp;nbsp; The only configuration code is what is shown above.&amp;nbsp; If you are using IIS to host your service, you can still use WebServiceHost, but it requires referencing System.ServiceModel.Activation.WebServiceHostFactory from your SVC file.&lt;/p&gt;
&lt;p&gt;Once you get everything wired together, it&amp;#39;s as easy as typing a URL into your web browser of choice and viewing the results.&amp;nbsp; Most browsers are aware of syndication feeds and apply special formatting to them.&amp;nbsp; For example, here is a screen shot of IE when you hit http://localhost:8000/productservice/products/Beverage for the demo.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://jeffbarnes.net/download/blog/2008/03/SyndicationOutput.jpg" alt="" /&gt; &lt;/p&gt;
&lt;p&gt;I have barely scratched the surface of the capabilities of the syndication infrastructure in WCF, but this example effectively demonstrates how little effort is required to get started.&amp;nbsp; I&amp;#39;ll probably do some additional posts on some of the more advanced syndication abilities at some point in the future.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;You can download the complete sample &lt;a href="http://jeffbarnes.net/download/blog/2008/03/SyndicationDemo.zip" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://jeffbarnes.net/portal/aggbug.aspx?PostID=4097" width="1" height="1"&gt;</description><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/.NET+Framework/default.aspx">.NET Framework</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/WCF/default.aspx">WCF</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>Return to Twitter</title><link>http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/02/26/return-to-twitter.aspx</link><pubDate>Tue, 26 Feb 2008 14:36:56 GMT</pubDate><guid isPermaLink="false">1c3582eb-33a3-4e3c-8015-155fa6fb45bf:4095</guid><dc:creator>jeff.barnes</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Due to the persistence of &lt;a href="http://www.keithelder.net/blog" target="_blank"&gt;Keith Elder&lt;/a&gt;, he has managed to convince several of the speakers at &lt;a href="http://www.alabamacodecamp.com/" target="_blank"&gt;Alabama Code Camp&lt;/a&gt; to either sign up for &lt;a href="http://twitter.com/" target="_blank"&gt;Twitter&lt;/a&gt; or start using it again.&amp;nbsp; Some of the suckers that fell into the trap include &lt;a href="http://twitter.com/arcanecode" target="_blank"&gt;Robert Cain&lt;/a&gt; (Arcane Code), &lt;a href="http://twitter.com/tmiranda" target="_blank"&gt;Todd Miranda&lt;/a&gt;, and &lt;a href="http://twitter.com/dougt" target="_blank"&gt;Doug Turnure&lt;/a&gt;.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Several months ago, I signed up for Twitter and managed to stick with it for a little while, but it became too much effort.&amp;nbsp; One of the biggest gripes that I had with it was the limited abilities to send updates.&amp;nbsp; At the time, you were restricted to the web site or text messages from your phone.&amp;nbsp; Personally, I&amp;#39;m not a huge fan of text messaging, especially when I&amp;#39;m sitting at the computer.&amp;nbsp; There was supposedly an IM interface, but it never worked.&lt;/p&gt; &lt;p&gt;Fast forward to present day and it appears as though their web site has been greatly improved.&amp;nbsp; Twitter has opened up some web services that have enabled a number of custom clients to be created.&amp;nbsp; Keith was a big advocate of &lt;a href="http://code.google.com/p/wittytwitter/" target="_blank"&gt;Witty&lt;/a&gt;, which is a WPF smart client.&amp;nbsp; (What a shocker...Keith evangelizing a smart client application).&amp;nbsp; After getting it downloaded and setup, I have to admit that it is quite nice.&amp;nbsp; The application has that smooth WPF look and it appears to be fairly responsive.&lt;/p&gt; &lt;p&gt;So, I have made my return to Twitter.&amp;nbsp; For the last couple of days, I have been sending periodic updates.&amp;nbsp; Admittedly, I can feel it becoming somewhat addictive.&amp;nbsp; When there is a moron at the office causing the day to suck tremendously, it provides a nice little outlet to let everyone know about it.&amp;nbsp; If you are interested in &lt;strike&gt;following&lt;/strike&gt; stalking me, here is the link to my twitter feed: &lt;a title="http://twitter.com/jeff_barnes" href="http://twitter.com/jeff_barnes"&gt;http://twitter.com/jeff_barnes&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://jeffbarnes.net/portal/aggbug.aspx?PostID=4095" width="1" height="1"&gt;</description><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Personal/default.aspx">Personal</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Cool+Stuff/default.aspx">Cool Stuff</category></item><item><title>Alabama Code Camp Presentations</title><link>http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/02/25/alabama-code-camp-presentations.aspx</link><pubDate>Mon, 25 Feb 2008 12:07:46 GMT</pubDate><guid isPermaLink="false">1c3582eb-33a3-4e3c-8015-155fa6fb45bf:4093</guid><dc:creator>jeff.barnes</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I decided to take a couple of nights to catch up on sleep.&amp;nbsp; So, I&amp;#39;m a little late about posting a follow up about code camp.&amp;nbsp; At any rate, another code camp has come and gone.&amp;nbsp; In my opinion, the event was enormously successful.&amp;nbsp; It appeared to be one of the largest crowds to date for the Alabama Code Camp series.&amp;nbsp; Registration prior to the event was closed after 200 people, and I would be willing to wager at least 150 or more of them showed up on Saturday.&lt;/p&gt; &lt;p&gt;For the most part, I felt as though my sessions went well.&amp;nbsp; I would have to say my classic &amp;quot;Introduction to WCF&amp;quot; presentation was my best of the day.&amp;nbsp; The room was packed out and most of the attendees seemed to be engaged and interested.&amp;nbsp; If it hadn&amp;#39;t been for a few slots that needed to be filled, I probably wouldn&amp;#39;t have even given the introductory talk.&amp;nbsp; But, I&amp;#39;m glad that I did.&amp;nbsp; It goes to show that there are still a lot of folks unacquainted with WCF or were looking for a refresher.&amp;nbsp; I&amp;#39;ll be sure to submit this one again at future events.&lt;/p&gt; &lt;p&gt;My talk on REST vs SOAP from a WCF perspective also went relatively well.&amp;nbsp; However, the 45 minute limit on the session really caused me some grief.&amp;nbsp; During my rehearsal of the presentation, I felt pretty good about the layout in regards to time, but it didn&amp;#39;t pan out so well for the real deal.&amp;nbsp; I ended up having to rush through a lot of the code at the end.&amp;nbsp; &lt;/p&gt; &lt;p&gt;The parallel programming talk was easily my worst of the day, but I appreciate those who told me they enjoyed the material.&amp;nbsp; It was definitely an experimental presentation, and I probably kept it at too high level.&amp;nbsp; As I was preparing the material, I restructured it several times and never reached a point where I was completely happy with it.&amp;nbsp; Given the wide range of experience and backgrounds of individuals attending code camp, it was difficult to decide which group to target.&amp;nbsp; At any rate, I appreciate the attendees allowing me to use them for a trial run.&amp;nbsp; I will definitely be giving this presentation again, but it will be dramatically different.&amp;nbsp; Most likely, it will become a two part presentation.&amp;nbsp; The first one will be mostly conceptual with adequate code to reinforce the concepts and the second part will jump right into the nuts and bolts of Parallel LINQ.&lt;/p&gt; &lt;p&gt;Here are the downloads for each presentation.&amp;nbsp; Each zip file contains both the presentations and the demos.&lt;/p&gt; &lt;p&gt;&lt;a href="http://jeffbarnes.net/download/presentations/alabamacodecamp/2008/02/IntroToParallelProgramming.zip" target="_blank"&gt;Introduction to Parallel Programming&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jeffbarnes.net/download/presentations/alabamacodecamp/2008/02/IntroToWCF.zip" target="_blank"&gt;Introduction to Windows Communication Foundation&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jeffbarnes.net/download/presentations/alabamacodecamp/2008/02/RESTvsSOAP.zip" target="_blank"&gt;REST vs SOAP: Is There Really A Winner (WCF&amp;#39;s Perspective)&lt;/a&gt;&lt;/p&gt;&lt;img src="http://jeffbarnes.net/portal/aggbug.aspx?PostID=4093" width="1" height="1"&gt;</description><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Code+Camp/default.aspx">Code Camp</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/WCF/default.aspx">WCF</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Alabama/default.aspx">Alabama</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Presentations/default.aspx">Presentations</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Parallel+Computing/default.aspx">Parallel Computing</category></item><item><title>SOA Society Meeting - Feb 26th</title><link>http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/02/21/soa-society-meeting-feb-26th.aspx</link><pubDate>Thu, 21 Feb 2008 20:57:16 GMT</pubDate><guid isPermaLink="false">1c3582eb-33a3-4e3c-8015-155fa6fb45bf:4092</guid><dc:creator>jeff.barnes</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Below is the announcement for the February Meeting of the SOA Society...&lt;/p&gt;&lt;br /&gt; &lt;p&gt;After exploring domain-specific modeling at the January meeting, the SOA Society is going to look at service-oriented architecture in the context of the Business Services Model at the February meeting.&amp;nbsp; Marc Guthrie, the CEO of COMFRAME, will present, “ &lt;i&gt;SOA – The Perfect Storm”&lt;/i&gt;.  &lt;p&gt;According to Guthrie, “How parallel progressions in Information systems complexity, business knowledge requirements, and technology /standards advancements has created the perfect environment for the business services model.”  &lt;p&gt;Join us Tuesday and hear about the forces that are driving the next wave of technology innovation. The meeting is as usual free but please R.S.V.P. The January meeting was a packed house. We want to be sure that there will be pizza enough to go around.  &lt;p&gt;Meeting Date: Tuesday February 26, 2008&lt;br /&gt;Meeting Time: Gather at 6:00 PM, Presentation @ 7:00 P.M.&lt;br /&gt;Place: Intermark Group, 1800 International Park Drive, Suite 500 (off Acton Road, near the Acton Road Exit off I-459); Birmingham, AL 35243 [&lt;a href="http://www.mapquest.com/maps/map.adp?searchtype=address&amp;amp;country=US&amp;amp;addtohistory=&amp;amp;searchtab=home&amp;amp;formtype=address&amp;amp;popflag=0&amp;amp;latitude=&amp;amp;longitude=&amp;amp;name=&amp;amp;phone=&amp;amp;level=&amp;amp;cat=&amp;amp;address=1800+International+Park+Dr.&amp;amp;city=Birmingham&amp;amp;state=AL&amp;amp;zipcode=35243"&gt;Directions 1800 International Park Drive&lt;/a&gt;]&lt;br /&gt;Host: Scott Pierce &lt;br /&gt;Coordinator: Margaret Marston&lt;b&gt;&lt;br /&gt;&lt;/b&gt;Refreshments: Pizza &lt;br /&gt;Meeting Fee: &lt;b&gt;FREE&lt;/b&gt;&lt;br /&gt;RSVP: Margaret Marston [&lt;b&gt;&lt;a&gt;mmarston@windstream.net&lt;/a&gt;]&lt;/b&gt;&lt;/p&gt;&lt;img src="http://jeffbarnes.net/portal/aggbug.aspx?PostID=4092" width="1" height="1"&gt;</description><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Birmingham/default.aspx">Birmingham</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Local+Events/default.aspx">Local Events</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Alabama/default.aspx">Alabama</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/SOA/default.aspx">SOA</category></item><item><title>Getting Started with PLINQ</title><link>http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/02/12/getting-started-with-plinq.aspx</link><pubDate>Tue, 12 Feb 2008 07:51:55 GMT</pubDate><guid isPermaLink="false">1c3582eb-33a3-4e3c-8015-155fa6fb45bf:4066</guid><dc:creator>jeff.barnes</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Going forward, I am hoping to write at least one post per week about PLINQ.&amp;nbsp; Since this is really the first one, it seemed like a good starting point would be going over how to get setup with the bits.&amp;nbsp; Keep in mind that PLINQ is currently available as a CTP.&amp;nbsp; The most recent version is the December 2007 CTP.&amp;nbsp; Although I haven&amp;#39;t experienced any problems, you should remember that it is still in a pre-release status.&amp;nbsp; In other words, don&amp;#39;t go installing it onto critical environments.&lt;/p&gt; &lt;p&gt;You can download the CTP &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e848dc1d-5be3-4941-8705-024bc7f180ba&amp;amp;displaylang=en" target="_blank"&gt;here&lt;/a&gt;.&amp;nbsp; It should be noted that PLINQ requires .NET Framework 3.5 and Visual Studio 2008.&amp;nbsp; Windows Server 2003, XP, and Vista are the only supported OSes.&amp;nbsp; Hopefully, you aren&amp;#39;t trying to install it on Windows 95 or you have bigger problems.&amp;nbsp; There are two files to download:&amp;nbsp; ParallelExtensions.zip and ParallelExtensions_Dec07CTP.msi.&amp;nbsp; Obviously, the msi file will install the bits on your machine.&amp;nbsp; The zip file contains the API documentation.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Before you even open up Visual Studio, I strongly recommend reading through the API documentation.&amp;nbsp; It also contains an overview of the different ways to leverage PLINQ as well as some of the concepts behind it.&amp;nbsp; There isn&amp;#39;t a huge amount of information, but it is a good primer that helps point you in the right direction.&amp;nbsp; I think it is rather commendable of the Parallel Programming Team to provide this type of documentation with their first CTP.&amp;nbsp; I have worked with some CTPs that didn&amp;#39;t give you anything to go on in terms of documentation.&lt;/p&gt; &lt;p&gt;When you get ready to fire up Visual Studio, you will need to add a reference to the System.Threading assembly.&amp;nbsp; After your reference is added, the fun stuff is contained within System.Linq, System.Linq.Parallel, and System.Threading.&amp;nbsp; You may find it helpful to peruse the assembly with Reflector to get an idea of the classes and their relationships.&lt;/p&gt; &lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://jeffbarnes.net/portal/aggbug.aspx?PostID=4066" width="1" height="1"&gt;</description><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/PLINQ/default.aspx">PLINQ</category></item><item><title>My Technical Focus Areas for 2008</title><link>http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/02/11/my-technical-focus-areas-for-2008.aspx</link><pubDate>Tue, 12 Feb 2008 04:38:55 GMT</pubDate><guid isPermaLink="false">1c3582eb-33a3-4e3c-8015-155fa6fb45bf:4065</guid><dc:creator>jeff.barnes</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;When it comes to my list of favorite technologies, it is no surprise to find WCF at the top of the list.&amp;nbsp; Ever since I first experimented with the bits of the early CTPs, I have been an avid supporter of the platform.&amp;nbsp; The design is so flexible and extensible that I suspect it will continue to be the communication goo of Microsoft .NET solutions for a number of years.&amp;nbsp; While I have no intentions of abandoning WCF, I have been feeling a desire to branch out a bit into some other areas.&amp;nbsp; After giving it quite a bit of thought, I have decided that I am going to focus my research/learning efforts in the following areas for 2008:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Oslo&lt;/strong&gt;&lt;br /&gt;In case you haven&amp;#39;t heard, Oslo is the codename for a concerted effort by the Microsoft Connected Systems Division to unify some of their products into a complete SOA platform.&amp;nbsp; For the most part, it will be manifested in the next major version of BizTalk, Visual Studio, and .NET Framework.&amp;nbsp; However, I suspect there will be some announcements within the next few months that unveil some of the pieces to the puzzle.&amp;nbsp; This is an area that greatly interests me, and I intend to follow the developments of Oslo very closely.&amp;nbsp; As a side effect, I anticipate becoming much more intimate with BizTalk this year.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Parallel LINQ (PLINQ)&lt;/strong&gt;&lt;br /&gt;I have always been fascinated by the complexities of parallel processing.&amp;nbsp; It has so much potential to provide truly scalable solutions that really harness the capabilities of the underlying hardware.&amp;nbsp; However, let&amp;#39;s be honest.&amp;nbsp; Parallelism is not a simple programming endeavor.&amp;nbsp; It can quickly become very complicated, and a lot of developers have a hard time really understanding the intricacies of multithreaded execution.&amp;nbsp; Furthermore, the current state of the hardware is making it difficult to ignore the necessity of parallelism.&amp;nbsp; In seven years from now (maybe sooner) when there are CPUs with 128 cores, you will have a hard time taking advantage of the hardware if you are still programming in a single-threaded sequential fashion.&amp;nbsp; Fortunately, PLINQ has a lot of promise for making the lives of developers much simpler in regards to parallelism.&amp;nbsp; During the coming months, I intend to delve more deeply into PLINQ and it will likely be the subject of a number of posts.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;F#&lt;/strong&gt;&lt;br /&gt;Functional programming has recently received a lot of attention, particularly in the realm of Microsoft .NET.&amp;nbsp; Personally, I think F# has a lot to do with it.&amp;nbsp; While it is still considered an incubation project within Microsoft Research, it has been revealed that F# will become a featured language of .NET with full support in Visual Studio.&amp;nbsp; I&amp;#39;m really excited about the benefits this language has to offer.&amp;nbsp; While many of the concepts are still somewhat foreign to me because of my imperative programming background, there have been a number of &amp;quot;wow&amp;quot; moments from listening to podcasts from DNR and Hanselminutes that featured F#.&amp;nbsp; Within the next month or so, you should begin to see a few posts showing up here about F#.&amp;nbsp; I suspect there will be some good material to write about as I attempt to wrap my mind around many of the functional programming concepts.&lt;/p&gt;&lt;img src="http://jeffbarnes.net/portal/aggbug.aspx?PostID=4065" width="1" height="1"&gt;</description><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Oslo/default.aspx">Oslo</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/PLINQ/default.aspx">PLINQ</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/F_2300_/default.aspx">F#</category></item><item><title>Don't Use Types for Locking</title><link>http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/02/07/don-t-use-types-for-locking.aspx</link><pubDate>Thu, 07 Feb 2008 10:00:20 GMT</pubDate><guid isPermaLink="false">1c3582eb-33a3-4e3c-8015-155fa6fb45bf:4014</guid><dc:creator>jeff.barnes</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;Earlier this week, I &lt;a href="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/02/05/static-methods-and-locking.aspx"&gt;posted&lt;/a&gt; a reminder that static methods don&amp;#39;t always require locking.&amp;nbsp; However, I also wanted to emphasize to exercise caution when selecting the object that will be used for a lock.&amp;nbsp; For years, there have been many examples that use the containing type for the lock object, but this is not really a good idea.&lt;/p&gt; &lt;p&gt;Here&amp;#39;s an example of the wrong way:&lt;/p&gt;&lt;pre class="coloredcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; &lt;span class="cls"&gt;MyClass&lt;/span&gt;
{
    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; _counter = 0;

    &lt;span class="rem"&gt;// Don&amp;#39;t do this!&lt;/span&gt;
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; StatefulAdd(&lt;span class="kwrd"&gt;int&lt;/span&gt; value1, &lt;span class="kwrd"&gt;int&lt;/span&gt; value2)
    {
        &lt;span class="kwrd"&gt;lock &lt;/span&gt;(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="cls"&gt;MyClass&lt;/span&gt;))
        {
            _counter++;
        }

        &lt;span class="kwrd"&gt;return&lt;/span&gt; value1 + value2;
    }
}&lt;/pre&gt;
&lt;p&gt;There have been numerous publications and blog articles written with locking examples that do something similar.&amp;nbsp; However, this is not a recommended best practice, and Microsoft has been attempting to modify their documentation to reflect the preferred approach.&amp;nbsp; Before I get into the recommended approach, let me clarify what&amp;#39;s wrong with the other solution.&lt;/p&gt;
&lt;p&gt;First, the typeof operator is relatively slow, at least when compared to accessing a variable within the class.&amp;nbsp; Second, typeof returns a Type object, which is a publicly accessible object.&amp;nbsp; As such, any other class could choose to lock on the same object, which opens up the potential for deadlock scenarios.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;So, what is the recommended best practice?&amp;nbsp; Rather than using a Type object or some other publicly accessible object, it is recommended to use a private static member variable.&amp;nbsp; This ensures that only the implementation within the containing type has access to the lock object.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Here&amp;#39;s an example of the right way:&lt;/p&gt;&lt;pre class="coloredcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; &lt;span class="cls"&gt;MyClass&lt;/span&gt;
{
    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; _counter = 0;
    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; _lockObject = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt;();

    &lt;span class="rem"&gt;// Do this!&lt;/span&gt;
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; StatefulAdd(&lt;span class="kwrd"&gt;int&lt;/span&gt; value1, &lt;span class="kwrd"&gt;int&lt;/span&gt; value2)
    {
        &lt;span class="kwrd"&gt;lock&lt;/span&gt; (_lockObject)
        {
            _counter++;
        }

        &lt;span class="kwrd"&gt;return&lt;/span&gt; value1 + value2;
    }
}&lt;/pre&gt;
&lt;p&gt;For a more insight into possible problems with the typeof approach, there are a couple of articles that I recommend reading.&amp;nbsp;&amp;nbsp; &lt;a href="http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/dnaraskdr/html/askgui06032003.asp" target="_blank"&gt;Here&lt;/a&gt; is a link to an MSDN article from 2003.&amp;nbsp; &lt;a href="http://www.bluebytesoftware.com/blog/2006/08/22/DontLockOnMarshalbybleedObjects.aspx" target="_blank"&gt;Here&lt;/a&gt; is a link to a blog post from Joe Duffy aka Threading Master.&amp;nbsp; Even though the MSDN article was dated back in 2003, I have still seen some articles as recently as 2007 that still contain examples of using typeof.&amp;nbsp; As they say, some habits die hard.&lt;/p&gt;&lt;img src="http://jeffbarnes.net/portal/aggbug.aspx?PostID=4014" width="1" height="1"&gt;</description><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Parallel+Computing/default.aspx">Parallel Computing</category></item><item><title>IPSA Meeting - February 8th</title><link>http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/02/06/ipsa-meeting-february-8th.aspx</link><pubDate>Wed, 06 Feb 2008 22:20:59 GMT</pubDate><guid isPermaLink="false">1c3582eb-33a3-4e3c-8015-155fa6fb45bf:4019</guid><dc:creator>jeff.barnes</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;The February meeting for the &lt;a href="http://www.ipsaonline.org/"&gt;Internet Professionals Society of Alabama&lt;/a&gt; (IPSA) will be on Friday, February 8th.&amp;nbsp; The meeting will be held from 12PM to 1PM in the Special Events Room of the McWane Science Center.&amp;nbsp; There will be designated networking time from 11:30AM to 12PM prior to the beginning of the presentation.  &lt;p&gt;Jere Chandler will be presenting &amp;quot;Simplicity in Design&amp;quot;. Here is the abstract: &lt;blockquote&gt; &lt;p&gt;Simplicity in design is one of the primary concepts that will give software companies a competitive advantage over the next few years. Jere Chandler, a User Experience Engineer for DAXKO, will discuss why simplicity is so important, the reasons we tend to complicate things, and why the software that&amp;#39;s easiest to use is usually the most difficult to create.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Be sure to RSVP at the site if you are planning to attend. &lt;p&gt;I&amp;#39;ll see you there.&lt;/p&gt;&lt;img src="http://jeffbarnes.net/portal/aggbug.aspx?PostID=4019" width="1" height="1"&gt;</description><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/User+Group/default.aspx">User Group</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Birmingham/default.aspx">Birmingham</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Local+Events/default.aspx">Local Events</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Alabama/default.aspx">Alabama</category></item><item><title>BSDA Meeting - February 7th</title><link>http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/02/06/bsda-meeting-february-7th.aspx</link><pubDate>Wed, 06 Feb 2008 22:17:44 GMT</pubDate><guid isPermaLink="false">1c3582eb-33a3-4e3c-8015-155fa6fb45bf:4018</guid><dc:creator>jeff.barnes</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I meant to post about this earlier in the week, but I suppose it is better late than never.&amp;nbsp; &lt;/p&gt; &lt;p&gt;On Thursday, February 7th, the &lt;a href="http://www.bsda.info/" target="_blank"&gt;Birmingham Software Developer Association&lt;/a&gt; will be meeting at &lt;a href="http://local.live.com/?v=2&amp;amp;sp=Point.pkcfrs7ryc7t_601%20Beacon%20Pkwy%20W%2C%20Birmingham%2C%20AL%2035209-3121%2C%20United%20States___&amp;amp;encType=1" target="_blank"&gt;New Horizons&lt;/a&gt;.&amp;nbsp; &lt;a href="http://blogs.msdn.com/dougturn" target="_blank"&gt;Doug Turnure&lt;/a&gt;, our regional Microsoft .NET Developer Evangelist, will be giving a technical overview of Visual Studio 2008 and LINQ.&amp;nbsp; The presentation will begin at 6:30 PM.&lt;/p&gt; &lt;p&gt;If you haven&amp;#39;t had an opportunity to learn much about VS2008 and what it has to offer, this will be a good chance to do so.&lt;/p&gt;&lt;img src="http://jeffbarnes.net/portal/aggbug.aspx?PostID=4018" width="1" height="1"&gt;</description><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/User+Group/default.aspx">User Group</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Birmingham/default.aspx">Birmingham</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Local+Events/default.aspx">Local Events</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Alabama/default.aspx">Alabama</category><category domain="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item></channel></rss>