<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.pluralsight.com/community/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/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"><channel><title>Pluralsight Blogs</title><link>http://www.pluralsight.com/community/blogs/</link><description>See what you can learn</description><dc:language>en-US</dc:language><generator>CommunityServer 2008 SP1 (Build: 30619.63)</generator><item><title>Null Strings in ASP.NET Declarative DataSource Updates</title><link>http://www.pluralsight.com/community/blogs/keith/archive/2008/08/29/null-strings-in-asp-net-declarative-datasource-updates.aspx</link><pubDate>Fri, 29 Aug 2008 15:42:47 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52773</guid><dc:creator>keith-brown</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I just spent about 15 minutes debugging a problem where a document was getting unexpected nulls where empty strings should have been. Indeed controls like the TextBox have code in them that allows you to set the Text property to null and the TextBox will convert that into an empty string. So it&amp;#39;s a bit counterintuitive that &lt;em&gt;the declarative data source works the opposite way by default&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;When you use a declarative data source to perform a parameterized update that contains string parameters, consider setting ConvertEmptyStringToNull=&amp;#39;false&amp;#39; on your &amp;lt;asp:Parameter&amp;gt; elements, because &lt;em&gt;it&amp;#39;s true by default&lt;/em&gt;! In other words, if a text field contains an empty string, it&amp;#39;ll be sent to your declarative data source not as string.Empty, but as null.&lt;/p&gt; &lt;p&gt;Now I don&amp;#39;t know about you, but I don&amp;#39;t like dealing with nulls if I can avoid it. Especially strings. Unless there&amp;#39;s a clear need to have a null state, I avoid them like the plague not only in my database designs but also in my XML schema designs. Hopefully this helps somebody out!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52773" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/keith/archive/tags/Geek+talk/default.aspx">Geek talk</category><category domain="http://www.pluralsight.com/community/blogs/keith/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>Screencast: Hosting WCF services in ASP.NET/IIS</title><link>http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/28/screencast-hosting-wcf-services-in-asp-net-iis.aspx</link><pubDate>Thu, 28 Aug 2008 17:06:42 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52759</guid><dc:creator>Aaron Skonnard</dc:creator><slash:comments>3</slash:comments><description>&lt;p&gt;This week&amp;#39;s screencast covers how to &lt;a href="http://channel9.msdn.com/posts/cliff.simpkins/Endpoint-Screencasts-Hosting-WCF-Services-in-IIS/"&gt;host your WCF Service in ASP.NET/IIS.&lt;/a&gt; We&amp;#39;ll start with the simple WCF service that I created in the &lt;a href="http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/21/screencast-creating-your-first-wcf-service.aspx"&gt;first screencast&lt;/a&gt;, and then I&amp;#39;ll show you how to expose the service using an svc file within an ASP.NET Web site. Next, we&amp;#39;ll walk through the process of adding endpoints to the site&amp;#39;s web.config file (for further details on configuring endpoints see &lt;a href="http://channel9.msdn.com/posts/cliff.simpkins/Endpoint-Screencasts-Configuring-Services-with-Endpoints/"&gt;this&lt;/a&gt; screencast). Then I&amp;#39;ll show you how to test it using the ASP.NET Development Web Server in Visual Studio. And finally, I&amp;#39;ll show you how to publish it within IIS.&lt;/p&gt; &lt;p style="text-align:center;"&gt;&lt;a href="http://channel9.msdn.com/posts/cliff.simpkins/Endpoint-Screencasts-Hosting-WCF-Services-in-IIS/"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="184" alt="EndpointScreenCastHostingWcfSvcIIS2008_large_ch9" src="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/aaron/EndpointScreenCastHostingWcfSvcIIS2008_5F00_large_5F00_ch9_5F00_3.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Previous Screencasts (&lt;a href="http://www.pluralsight.com/community/blogs/aaron/rss.aspx?Tags=Screencasts&amp;amp;AndTags=1"&gt;RSS for all posts in the series&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/21/screencast-creating-your-first-wcf-service.aspx"&gt;Creating your first WCF service&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/21/screencast-configuring-wcf-services-with-endpoints.aspx"&gt;Configuring services with endpoints&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52759" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/aaron/archive/tags/Screencasts/default.aspx">Screencasts</category></item><item><title>Code Cast 12 - Alan Shalloway</title><link>http://www.pluralsight.com/community/blogs/starr/archive/2008/08/27/code_2D00_cast_2D00_12_2D00_alan_2D00_shalloway.aspx</link><pubDate>Thu, 28 Aug 2008 04:34:12 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52751</guid><dc:creator>david-starr</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;&lt;img src="http://www.netobjectives.com/files/staffpics/alan_shalloway-1.jpg" align="right" alt="" /&gt;Alan Shalloway, president of &lt;a href="http://www.netobjectives.com/"&gt;NetObjectives&lt;/a&gt; and co-author of &amp;quot;&lt;a href="http://www.netobjectives.com/resources/books/design-patterns-explained"&gt;Design Patterns Explained&lt;/a&gt;&amp;quot; talks to us about Lean Softweare Development, Software Design Patterns, and the evolving discussion around Agile.&lt;/p&gt;  &lt;p&gt;This was a great discussion at the Agile 2008 conference in Toronto.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://elegantcode.com/cast/files/cast/ECC_12_AlanShalloway.mp3"&gt;Download the episode MP3&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=271207118"&gt;&lt;img alt="View in iTunes" src="http://elegantcode.com/cast/wp-content/plugins/podpress/images/button_itunes.png" border="0" /&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/elegantcodecast"&gt;&lt;img alt="Any Podcatcher" src="http://elegantcode.com/cast/wp-content/plugins/podpress/images/button_rss_podcast.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52751" width="1" height="1"&gt;</description></item><item><title>OT: Lego Metallica Video--Whiplash!</title><link>http://www.pluralsight.com/community/blogs/brian/archive/2008/08/27/ot-lego-metallica-video-whiplash.aspx</link><pubDate>Wed, 27 Aug 2008 20:12:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52742</guid><dc:creator>brian-randell</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Very OT and very funny: &lt;a href="http://www.sarahlacy.com/sarahlacy/2008/08/stop-what-you-a.html"&gt;http://www.sarahlacy.com/sarahlacy/2008/08/stop-what-you-a.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Watch it while you can!&lt;/p&gt;
&lt;p&gt;Whiplash!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52742" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/brian/archive/tags/Random-Off-Topic/default.aspx">Random-Off-Topic</category></item><item><title>Can Microsoft + Seinfeld outdo Apple's marketing?</title><link>http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/22/can-microsoft-seinfeld-outdo-apple-s-marketing.aspx</link><pubDate>Fri, 22 Aug 2008 15:54:20 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52684</guid><dc:creator>Aaron Skonnard</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;Mary Jo Foley &lt;a href="http://blogs.zdnet.com/microsoft/?p=1548"&gt;reported about this&lt;/a&gt; yesterday and now it&amp;#39;s &lt;a href="http://www.cbsnews.com/stories/2008/08/21/business/main4372097.shtml?source=RSSattr=SciTech_4372097"&gt;all over the news&lt;/a&gt;. Microsoft is gearing up to launch a $300M advertising campaign to combat the negative ads launched against them in recent years, and to rebuild the company&amp;#39;s fading image. Since the &amp;quot;Get a Mac&amp;quot; ad campaign first started, and proved &lt;em&gt;sooo&lt;/em&gt; effective, I&amp;#39;ve been dumbfounded by the fact that Microsoft has just sat back and taken it, one hit at a time. I even started to wonder if Microsoft would ever launch a counter strike.&amp;nbsp; I finally started to conclude that maybe Microsoft &lt;em&gt;isn&amp;#39;t actually able &lt;/em&gt;to orchestrate a successful counter-campaign given their historic lack of creativity with all things marketing, and maybe it was better that way. Because if they actually tried to do something, and it flopped, that would make things even worse for the company.&lt;/p&gt; &lt;p&gt;Well, it looks like the day has finally arrived like it or not.&lt;/p&gt; &lt;p&gt;The key question was always...who would they use as spokesperson? Given the Mac ads, they really need just the right guy to pull it off and resonate. Well, they&amp;#39;ve chosen Jerry Seinfeld for the spokesperson role (he gets $10M), which made me really happy when I first heard about it. &lt;/p&gt; &lt;p&gt;Since then, however, I&amp;#39;ve been poking around to see what others are saying, and many are questioning if he&amp;#39;s the right choice. Some say he&amp;#39;s out-of-date. Some point to his ineffective AMEX commercials. And some say the biggest problem with Jerry is that he &lt;em&gt;actually seems &lt;/em&gt;more like a Mac Guy. In fact, didn&amp;#39;t Jerry have a Mac in his Seinfeld set apartment all those years? Apparently, some Microsoft partners &lt;a href="http://www.msfn.org/comments.php?shownews=22751"&gt;aren&amp;#39;t completely convinced&lt;/a&gt; either. &lt;/p&gt; &lt;p&gt;Despite Microsoft&amp;#39;s latest attempts to improve Vista perception via &lt;a href="http://www.mojaveexperiment.com/?WT.srch=1"&gt;The Mojave Experiment&lt;/a&gt;, there are &lt;a href="http://www.daniweb.com/blogs/entry3007.html"&gt;some who believe&lt;/a&gt; that Microsoft&amp;#39;s fundamental problem isn&amp;#39;t lack of marketing but rather a flawed product (Vista) and that they should spend the $300M fixing that first. Some say this is just a pathetic attempt by Gates to get back at Jobs (apparently the Mac ads really ticked him off). Who knows.&lt;/p&gt; &lt;p&gt;I personally believe that Microsoft&amp;#39;s move to get more aggressive with their marketing is the right call. There&amp;#39;s simply too much negativity targeting them to withstand it sitting still. While some of the negativity may be merited, a lot of it clearly isn&amp;#39;t, and perception is king. And I&amp;#39;m glad to hear that they&amp;#39;re taking this seriously -- a $300M campaign is significant -- they need to do it right. Now they just need to nail the creative.&lt;/p&gt; &lt;p&gt;It will be very interesting, and hopefully entertaining, to watch these new ads roll out combined with the celebrity of Jerry Seinfeld. I sure hope it works...Microsoft needs a win here.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52684" width="1" height="1"&gt;</description></item><item><title>Thanks Lutz Roeder!</title><link>http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/22/thanks-lutz-roeder.aspx</link><pubDate>Fri, 22 Aug 2008 14:53:31 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52683</guid><dc:creator>Aaron Skonnard</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://blog.lutzroeder.com/"&gt;Lutz Roeder&lt;/a&gt;, creator of the ever-so-popular &lt;a href="http://www.red-gate.com/products/reflector/"&gt;.NET Reflector&lt;/a&gt;, sent out the following email today announcing a big change for his tool:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;After more than eight years of working on .NET Reflector, I have decided it is time to move on and explore some new opportunities. &lt;p&gt;I have reached an agreement to have &lt;a href="http://www.red-gate.com/"&gt;Red Gate Software&lt;/a&gt; continue the development of .NET Reflector. Red Gate has a lot of experience creating development tools for both .NET and SQL Server. They have the resources necessary to work on new features, and Reflector fits nicely with other .NET tools the company offers. &lt;p&gt;Red Gate will continue to provide the free community version and is looking for your feedback and ideas for future versions. &lt;p&gt;For news and updates on Reflector, sign up for the &lt;a href="http://reflector.red-gate.com/subscribe.aspx"&gt;.NET Developer’s Newsletter&lt;/a&gt; from Red Gate. To find out more about the agreement, see the interview on &lt;a href="http://www.simple-talk.com/the_future_of_reflector"&gt;Simple Talk&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;I&amp;#39;ve personally used .NET Reflector extensively over the years, ever since its earliest release, and it has never let me down. It&amp;#39;s come to my rescue on many occasions as I&amp;#39;ve struggled to understand different areas of the .NET Framework. My experience wouldn&amp;#39;t have been the same without it. &lt;p&gt;So I guess I just wanted to say...thanks Lutz!&amp;nbsp; &lt;p&gt;And best of luck to &lt;a href="http://www.red-gate.com/"&gt;Reg Gate&lt;/a&gt; in continuing his great work.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52683" width="1" height="1"&gt;</description></item><item><title>Screencast: Configuring WCF services with endpoints</title><link>http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/21/screencast-configuring-wcf-services-with-endpoints.aspx</link><pubDate>Thu, 21 Aug 2008 18:28:54 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52664</guid><dc:creator>Aaron Skonnard</dc:creator><slash:comments>6</slash:comments><description>&lt;p&gt;As &lt;a href="http://blogs.msdn.com/endpoint/archive/2008/08/20/screencast-configuring-services-with-endpoints.aspx"&gt;Cliff mentioned&lt;/a&gt;, the second installment in the &lt;a href="http://channel9.msdn.com/posts/cliff.simpkins/"&gt;WCF/WF Developer Screencast Series&lt;/a&gt; just went live. &lt;/p&gt; &lt;p&gt;This one is called &lt;a href="http://channel9.msdn.com/posts/cliff.simpkins/Endpoint-Screencasts-Configuring-Services-with-Endpoints/"&gt;Configuring WCF services with endpoints&lt;/a&gt;. In this screencast, I build on &lt;a href="http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/21/screencast-creating-your-first-wcf-service.aspx"&gt;the service I showed you how to create last week&lt;/a&gt; and show you to configure it with different endpoints -- you&amp;#39;ll learn about addresses, bindings, and contracts -- and you&amp;#39;ll see how to use the WCF Service Configuration Editor to create/modify different endpoint configurations.&lt;/p&gt; &lt;p style="text-align:center;"&gt;&lt;a href="http://channel9.msdn.com/posts/cliff.simpkins/Endpoint-Screencasts-Configuring-Services-with-Endpoints/"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="154" alt="Ch9-SC-002_6" src="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/aaron/Ch9SC002_5F00_6.jpg" width="204" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;em&gt;Previous Screencasts (&lt;a href="http://www.pluralsight.com/community/blogs/aaron/rss.aspx?Tags=Screencasts&amp;amp;AndTags=1"&gt;RSS for all posts in the series&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/21/screencast-creating-your-first-wcf-service.aspx"&gt;Creating your first WCF service&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52664" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/aaron/archive/tags/Screencasts/default.aspx">Screencasts</category></item><item><title>Screencast: Creating your first WCF service</title><link>http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/21/screencast-creating-your-first-wcf-service.aspx</link><pubDate>Thu, 21 Aug 2008 18:28:11 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52662</guid><dc:creator>Aaron Skonnard</dc:creator><slash:comments>6</slash:comments><description>&lt;p&gt;I &lt;a href="http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/19/pluralsight-s-wcf-wf-developer-screencast-series.aspx"&gt;announced earlier this week&lt;/a&gt; that we&amp;#39;ve joined forces with the WCF/WF teams at Microsoft to produce a &lt;a href="http://channel9.msdn.com/posts/cliff.simpkins/"&gt;weekly screencast&lt;/a&gt; on ramping-up with these .NET 3.0 technologies. This is the first installment in the &lt;a href="http://channel9.msdn.com/posts/cliff.simpkins/"&gt;series&lt;/a&gt;, entitled &lt;a href="http://channel9.msdn.com/posts/cliff.simpkins/Endpoint-Screencasts-Creating-Your-First-WCF-Service/"&gt;Creating your first WCF service in Visual Studio 2008&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;This short video guides you through how to create your first WCF Service from scratch in VS2008 - defining a data contract, a service contract, and testing/hosting the service using the new built-in WCF tools found in VS2008. &lt;/p&gt; &lt;p style="text-align:center;"&gt;&lt;a href="http://channel9.msdn.com/posts/cliff.simpkins/Endpoint-Screencasts-Creating-Your-First-WCF-Service/"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="154" alt="EndpointScreenCastCreatingFirstWcfServiceVS2008_large_ch9_3" src="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/aaron/EndpointScreenCastCreatingFirstWcfServiceVS2008_5F00_large_5F00_ch9_5F00_3_5F00_3.jpg" width="204" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Note: I want each of these screencasts to have a unique URI, hence the separate post. Apologies if you&amp;#39;ve already seen this clip.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52662" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/aaron/archive/tags/Screencasts/default.aspx">Screencasts</category></item><item><title>Announcing InhibitSS</title><link>http://www.pluralsight.com/community/blogs/craig/archive/2008/08/20/announcing-inhibitss.aspx</link><pubDate>Wed, 20 Aug 2008 15:37:16 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52630</guid><dc:creator>craig-andera</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;Short story: I wrote a little tray app that will prevent your screensaver from running. Download it &lt;a href="http://alt.pluralsight.com/wiki/default.aspx/Craig/InhibitSS.html"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Long story: I’ve been training for &lt;a href="http://www.marinemarathon.com/"&gt;a marathon&lt;/a&gt; over the last few months, but a couple of weeks ago I hurt my foot and have been unable to run consistently. While I’m recovering (and hoping I’ll be well soon enough for me to be able to race), I’ve got to do something to keep in shape. One of the things I do is to ride my bike on a stationary trainer in front of the computer. While that works well, it’s a pain to unlock the screen if the screensaver kicks in while I’m pedaling, as it sometimes does. So I wrote InhibitSS, which runs in the tray and will prevent the screensaver from running, and therefore the screen from locking. Here’s what it looks like when it starts up: &lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/craig/inhibit_2D00_ss_2D00_1.jpg" alt="" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Then, if you double-click it, it looks like this: &lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/craig/inhibit_2D00_ss_2D00_3.jpg" alt="" /&gt; &lt;/p&gt;  &lt;p&gt;The red X indicates that the screensaver is inhibited. &lt;/p&gt;  &lt;p&gt;I’m sure there are a dozen apps just like this. But this one has the feature that I had fun writing it. :) &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52630" width="1" height="1"&gt;</description></item><item><title>Tito's Tacos</title><link>http://www.pluralsight.com/community/blogs/dbox/archive/2008/08/19/tito-s-tacos.aspx</link><pubDate>Wed, 20 Aug 2008 03:34:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52616</guid><dc:creator>don-box</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://microsoftpdc.com/"&gt;PDC&lt;/a&gt; is increasingly taking up my time, so I&amp;#39;ve got LA on the brain.&lt;/p&gt;
&lt;p&gt;Having lived in LA for 39 years before joining the firm, I use PDC as an opportunity to visit my favorite haunts.&lt;/p&gt;
&lt;p&gt;My first stop will be &lt;a href="http://www.titostacos.com/"&gt;Tito&amp;#39;s Tacos&lt;/a&gt;.&amp;nbsp; Every time I go to LA (PDC or not), I go straight from LAX to Tito&amp;#39;s. &lt;/p&gt;
&lt;p&gt;For the PDC trips, I take as many people from my flight as possible.&lt;/p&gt;
&lt;p&gt;My recommendation is some combination of Tacos (with cheese) and Tostadas.&amp;nbsp;&amp;nbsp;Skip the burritos - way too much food and you don&amp;#39;t get that magical super-fresh lettuce/cheese combo happening.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52616" width="1" height="1"&gt;</description></item><item><title>Mary Jo's Codename Roundup</title><link>http://www.pluralsight.com/community/blogs/dbox/archive/2008/08/19/mary-jo-s-codename-roundup.aspx</link><pubDate>Wed, 20 Aug 2008 03:13:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52613</guid><dc:creator>don-box</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Ms. Foley has a call out for Microsoft codenames &lt;a href="http://blogs.zdnet.com/microsoft/?p=1537"&gt;over at ZDNet&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I first read this on my phone and was busy coming up with names I thought would be interesting project names. &lt;/p&gt;
&lt;p&gt;Unfortunately when I got home and read the blog, it was clear she was looking for actual names of existing projects, which I find way less interesting or fun.&lt;/p&gt;
&lt;p&gt;At the risk of incurring the wrath of MJF, let me be perfectly clear that the names I&amp;#39;m listing here have no known correlation to any existing or future projects. &lt;/p&gt;
&lt;p&gt;I just like the names.&lt;/p&gt;
&lt;p&gt;Penultimate&lt;/p&gt;
&lt;p&gt;Project Fifty Seven&lt;/p&gt;
&lt;p&gt;Neville&lt;/p&gt;
&lt;p&gt;Valhalla&lt;/p&gt;
&lt;p&gt;Folsom&lt;/p&gt;
&lt;p&gt;Cleveland&lt;/p&gt;
&lt;p&gt;Loki&lt;/p&gt;
&lt;p&gt;XK-4&lt;/p&gt;
&lt;p&gt;Maybe once Oslo is behind me I&amp;#39;ll get a chance to pick one of these up for my next gig...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52613" width="1" height="1"&gt;</description></item><item><title>Pluralsight's WCF/WF Developer Screencast Series</title><link>http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/19/pluralsight-s-wcf-wf-developer-screencast-series.aspx</link><pubDate>Tue, 19 Aug 2008 23:44:52 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52609</guid><dc:creator>Aaron Skonnard</dc:creator><slash:comments>8</slash:comments><description>&lt;p&gt;Pluralsight has joined forces with the WCF/WF teams at Microsoft to deliver a series of short videos that illustrate how to get started using WCF/WF in your applications. The videos will be &lt;a href="http://channel9.msdn.com/Media/Screencasts/"&gt;hosted on Channel9 within the Screencasts section&lt;/a&gt;, and they&amp;#39;ll be highlighted on &lt;a href="http://blogs.msdn.com/endpoint/default.aspx"&gt;The .NET Endpoint Team Blog&lt;/a&gt; and the MSDN Dev Centers for &lt;a href="http://msdn.microsoft.com/en-us/netframework/aa663324.aspx"&gt;WCF&lt;/a&gt; &amp;amp; &lt;a href="http://msdn.microsoft.com/en-us/netframework/aa663328.aspx"&gt;WF&lt;/a&gt;. These videos provide 100-200 level content intended for folks new to the technology or those looking for quick tutorials on how to perform common tasks within each framework. &lt;/p&gt; &lt;p&gt;Cliff Simpkins &lt;a href="http://blogs.msdn.com/endpoint/archive/2008/08/13/screencast-creating-your-first-wcf-service.aspx"&gt;announced the first video in the WCF series&lt;/a&gt; last week -- you can find it &lt;a href="http://channel9.msdn.com/posts/cliff.simpkins/Endpoint-Screencasts-Creating-Your-First-WCF-Service/"&gt;over here on Channel9&lt;/a&gt;. It&amp;#39;s called &lt;em&gt;Creating Your First WCF Service&lt;/em&gt;. This short video guides you through how to create your first WCF Service from scratch in VS2008 - defining a data contract, a service contract, and testing/hosting the service using the new built-in WCF tools found in VS2008. &lt;/p&gt; &lt;p&gt;A new video will be posted every week in the series...so &lt;a href="http://channel9.msdn.com/posts/cliff.simpkins/"&gt;check back on Channel9&lt;/a&gt; if you&amp;#39;re interested! And if you like what you see, you should also check out &lt;a href="http://www.pluralsight.com/main/olt/courses.aspx"&gt;Pluralsight&amp;#39;s new online training system&lt;/a&gt; that is currently in beta at the moment. You&amp;#39;ll be hearing more about this over the next few months but if you&amp;#39;re interested in participating in our early-adopter program, shoot me an email.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52609" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/aaron/archive/tags/Screencasts/default.aspx">Screencasts</category></item><item><title>Programming the MetaWeblog API in .NET/C#</title><link>http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/19/programming-the-metaweblog-api-in-net-c.aspx</link><pubDate>Tue, 19 Aug 2008 23:09:10 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52607</guid><dc:creator>Aaron Skonnard</dc:creator><slash:comments>4</slash:comments><description>&lt;p&gt;Most modern blogging engines support the MetaWeblog API, which was &lt;a href="http://msdn.microsoft.com/en-us/library/bb259702.aspx"&gt;defined by XML-RPC.com&lt;/a&gt; many years ago.&amp;nbsp; It&amp;#39;s become one of the most popular API&amp;#39;s for programmatically interacting with blogs because of its simplicity. Even Microsoft&amp;#39;s Windows Live Spaces &lt;a href="http://msdn.microsoft.com/en-us/library/bb259702.aspx"&gt;provides support for it&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;I wanted to use this API recently to interact with our &lt;a href="http://communityserver.com/"&gt;Community Server&lt;/a&gt; implementation so I started searching around for client-side implementations that would be easy to program in C#. I was surprised that I couldn&amp;#39;t find a mainstream implementation readily available. So I followed &lt;a href="http://msdn.microsoft.com/en-us/library/aa905670.aspx"&gt;the example on MSDN&lt;/a&gt; and built my own MetaWeblog library in C# on top of Cook Computing&amp;#39;s &lt;a href="http://www.xml-rpc.net/"&gt;XML-RPC.NET library&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;Here&amp;#39;s what my MetaWeblogClient class looks like (truncated for brevity):&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;MetaWeblogClient &lt;/span&gt;: &lt;span style="color:#2b91af;"&gt;XmlRpcClientProtocol
&lt;/span&gt;{
&lt;span style="color:gray;"&gt;    &lt;/span&gt;[&lt;span style="color:#2b91af;"&gt;XmlRpcMethod&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;metaWeblog.getRecentPosts&amp;quot;&lt;/span&gt;)]
    &lt;span style="color:blue;"&gt;public &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Post&lt;/span&gt;[] getRecentPosts(&lt;span style="color:blue;"&gt;string &lt;/span&gt;blogid, &lt;span style="color:blue;"&gt;string &lt;/span&gt;username, &lt;span style="color:blue;"&gt;string &lt;/span&gt;password, &lt;span style="color:blue;"&gt;int &lt;/span&gt;numberOfPosts)
    {
        &lt;span style="color:blue;"&gt;return &lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;Post&lt;/span&gt;[])&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Invoke(&lt;span style="color:#a31515;"&gt;&amp;quot;getRecentPosts&amp;quot;&lt;/span&gt;, &lt;br /&gt;            &lt;span style="color:blue;"&gt;new object&lt;/span&gt;[] { blogid, username, password, numberOfPosts });
    }

&lt;span style="color:gray;"&gt;    &lt;/span&gt;[&lt;span style="color:#2b91af;"&gt;XmlRpcMethod&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;metaWeblog.newPost&amp;quot;&lt;/span&gt;)]
    &lt;span style="color:blue;"&gt;public string &lt;/span&gt;newPost(&lt;span style="color:blue;"&gt;string &lt;/span&gt;blogid, &lt;span style="color:blue;"&gt;string &lt;/span&gt;username, &lt;span style="color:blue;"&gt;string &lt;/span&gt;password, &lt;span style="color:#2b91af;"&gt;Post &lt;/span&gt;content, &lt;span style="color:blue;"&gt;bool &lt;/span&gt;publish)
    {

        &lt;span style="color:blue;"&gt;return &lt;/span&gt;(&lt;span style="color:blue;"&gt;string&lt;/span&gt;)&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Invoke(&lt;span style="color:#a31515;"&gt;&amp;quot;newPost&amp;quot;&lt;/span&gt;, &lt;br /&gt;            &lt;span style="color:blue;"&gt;new object&lt;/span&gt;[] { blogid, username, password, content, publish });
    }&lt;br /&gt;    ...&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;With this class, you can simply make method calls like getRecentPosts, newPost, editPost, etc to interact with any blog that supports the MetaWeblog API. You will need to specify that URL to the MetaWeblog endpoint prior to making those method calls. Here&amp;#39;s an example:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Program
&lt;/span&gt;{
    &lt;span style="color:blue;"&gt;static void &lt;/span&gt;Main(&lt;span style="color:blue;"&gt;string&lt;/span&gt;[] args)
    {
        &lt;span style="color:#2b91af;"&gt;MetaWeblogClient &lt;/span&gt;blog = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;MetaWeblogClient&lt;/span&gt;();
        blog.Url = &lt;span style="color:#a31515;"&gt;&amp;quot;http://www.pluralsight.com/community/blogs/metablog.ashx&amp;quot;&lt;/span&gt;;

        &lt;span style="color:green;"&gt;// here&amp;#39;s how you post a new entry...
        &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Post &lt;/span&gt;newPost = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Post&lt;/span&gt;();
        newPost.dateCreated = &lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt;.Now;
        newPost.title = &lt;span style="color:#a31515;"&gt;&amp;quot;Test post from Metablog Api&amp;quot;&lt;/span&gt;;
        newPost.description = &lt;span style="color:#a31515;"&gt;&amp;quot;This is the body of the post&amp;quot;&lt;/span&gt;;
        newPost.categories = &lt;span style="color:blue;"&gt;new string&lt;/span&gt;[] { &lt;span style="color:#a31515;"&gt;&amp;quot;WCF&amp;quot;, &amp;quot;WF&amp;quot; &lt;/span&gt;};
        blog.newPost(&lt;span style="color:#a31515;"&gt;&amp;quot;blogid&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;username&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;password&amp;quot;&lt;/span&gt;, newPost, &lt;span style="color:blue;"&gt;true&lt;/span&gt;);

        &lt;span style="color:green;"&gt;// here&amp;#39;s how you retrieve the most recent entries...
        &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Post&lt;/span&gt;[] posts = blog.getRecentPosts(&lt;span style="color:#a31515;"&gt;&amp;quot;blogid&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;username&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;password&amp;quot;&lt;/span&gt;, 5);
        &lt;span style="color:blue;"&gt;foreach &lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;Post &lt;/span&gt;post &lt;span style="color:blue;"&gt;in &lt;/span&gt;posts)
            &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(post.title);
    }
}&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;The code turns out to be wonderfully simple. So if you find yourself in the same boat as me, looking for a MetaWeblog C# implementation, feel free to &lt;a href="http://alt.pluralsight.com/aaron/bits/pluralsight.metaweblog.zip"&gt;download my library here&lt;/a&gt;. Hopefully it will save you a little bit of time! &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52607" width="1" height="1"&gt;</description></item><item><title>Learning Parallel Programming --- from shared-memory multi-threading to distributed-memory multi-processing</title><link>http://www.pluralsight.com/community/blogs/drjoe/archive/2008/08/18/learning-parallel-programming-from-shared-memory-multi-threading-to-distributed-memory-multi-processing.aspx</link><pubDate>Tue, 19 Aug 2008 03:29:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52542</guid><dc:creator>joe-hummel</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;We&amp;#39;re working with Microsoft to develop several&amp;nbsp;tutorials introducing developers to high-performance computing, parallel programming, and Windows HPC Server 2008.&amp;nbsp; Our first tutorial (for experienced HPC developers, &amp;quot;Exploiting Data Parallelism with OpenMP, MPI and HPC Server 2008&amp;quot;),&amp;nbsp;is available &lt;a href="http://www.pluralsight.com/community/blogs/drjoe/archive/2008/06/19/51178.aspx"&gt;here&lt;/a&gt;.&amp;nbsp;&amp;nbsp;We&amp;nbsp;are working on our second tutorial, &amp;quot;From Sequential to Parallel Development&amp;quot;, which is nearing completion.&amp;nbsp; This is more introductory in nature, taking the traditional &amp;quot;sequential&amp;quot; developer step-by-step into the world of parallel programming.&amp;nbsp; The tutorial is extensive, currently 50 pages in length, complete with source code, lab exercises, and solutions in both VC++ and C#.&lt;/p&gt;
&lt;p&gt;We start with a GUI-based Mandelbrot application, and show various ways to parallelize the application via multi-threading --- explicitly with .NET threads, then implicitly with OpenMP and the TPL (Task Parallel Library in the upcoming PFx, or Parallel Extensions to .NET).&amp;nbsp; We then architect a client-server version of the Mandelbrot app, introduce Windows HPC Server 2008, and show how to parallelize the app across a cluster.&amp;nbsp; This includes a discussion of many topics, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Multi-threading&lt;/li&gt;
&lt;li&gt;Multi-processing&lt;/li&gt;
&lt;li&gt;BackgroundWorker and Thread classes&lt;/li&gt;
&lt;li&gt;OpenMP&lt;/li&gt;
&lt;li&gt;TPL&lt;/li&gt;
&lt;li&gt;MPI&lt;/li&gt;
&lt;li&gt;MPI.NET&lt;/li&gt;
&lt;li&gt;programming against the HPC Server 2008 API&lt;/li&gt;
&lt;li&gt;automating application deployment and job submission&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The goal is to show developers how to take a sequential, GUI-based application and parallelize this app across both multi-core and cluster-based hardware.&amp;nbsp; Here&amp;#39;s the current draft of the tutorial document:&amp;nbsp; &lt;a href="http://www.pluralsight.com/drjoe/sdk/SeqToParallelHPC.pdf"&gt;SeqToParallelHPC.pdf&lt;/a&gt;.&amp;nbsp; The current download including source code and lab exercises:&amp;nbsp; &lt;a href="http://www.pluralsight.com/drjoe/sdk/SeqToParallelHPC.zip"&gt;SeqToParallelHPC.zip&lt;/a&gt;.&amp;nbsp; Any and all feedback greatly appreciated.&amp;nbsp; Enjoy!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52542" width="1" height="1"&gt;</description></item><item><title>Serializable XmlDocument</title><link>http://www.pluralsight.com/community/blogs/keith/archive/2008/08/18/serializable-xmldocument.aspx</link><pubDate>Tue, 19 Aug 2008 02:58:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52538</guid><dc:creator>keith-brown</dc:creator><slash:comments>5</slash:comments><description>&lt;p&gt;It&amp;#39;s surprising that XmlDocument isn&amp;#39;t marked [Serializable], because it&amp;#39;s very natural to serialize one into a stream. I wanted to put an object into ASP.NET ViewState the other day, and quickly ran into this roadblock, because part of the object included an XmlDocument, which is not serializable. A quick search revealed that most people deal with this problem by storing a string instead. Indeed, that was where I started, but I quickly realized that there are multiple places in my code where I want to do this sort of thing, and I don&amp;#39;t want to have to mess with it in each data structure that contains an XmlDocument.&lt;/p&gt;
&lt;p&gt;So I put together a simple class that holds an XmlDocument and implements ISerializable and called it SerializableXmlDocument. I&amp;#39;m sharing the source code here in the hopes that&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;a) somebody will find it useful, and&lt;/p&gt;
&lt;p&gt;b) somebody smarter than I am will point out how I screwed it up and help me make it better.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;SerializableXmlDocument includes implicit conversion operators to make it easy to convert to/from an XmlDocument. It holds the actual document in a property called Value. This &amp;quot;isomorph&amp;quot; pattern is one that I picked up from &lt;a href="http://www.pluralsight.com/community/blogs/craig/default.aspx" target="_blank"&gt;Craig&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;While writing this code, I also wrote a helpful extension method for getting a byte array out of a MemoryStream that is exactly the length of the data written to the stream so far (CopyUpToSeekPointer). So don&amp;#39;t go looking in the docs for MemoryStream for this method :) This is obviously not the most efficient way to consume bytes written to a MemoryStream since it copies the data into a new byte array, but it&amp;#39;s very convenient in many scenarios.&lt;/p&gt;
&lt;p&gt;Here is SerializableXmlDocument.cs:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Runtime.Serialization;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Xml;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; Pluralsight.Samples&lt;br /&gt;{&lt;br /&gt;    [Serializable]&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; SerializableXmlDocument : ISerializable&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; SerializableXmlDocument() { }&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; SerializableXmlDocument(XmlDocument &lt;span class="kwrd"&gt;value&lt;/span&gt;)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.Value = &lt;span class="kwrd"&gt;value&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; XmlDocument Value { get; set; }&lt;br /&gt;&lt;br /&gt;        &lt;span class="preproc"&gt;#region&lt;/span&gt; ISerializable implementation&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; SerializableXmlDocument(SerializationInfo info,&lt;br /&gt;                                       StreamingContext context)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] serializedData = (&lt;span class="kwrd"&gt;byte&lt;/span&gt;[])info.GetValue(&lt;span class="str"&gt;&amp;quot;doc&amp;quot;&lt;/span&gt;,&lt;br /&gt;                &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;byte&lt;/span&gt;[]));&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;null&lt;/span&gt; != serializedData)&lt;br /&gt;                &lt;span class="kwrd"&gt;this&lt;/span&gt;.Value = Deserialize(serializedData);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetObjectData(SerializationInfo info,&lt;br /&gt;                                  StreamingContext context)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] serializedData = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;null&lt;/span&gt; != Value)&lt;br /&gt;                serializedData = Serialize(Value);&lt;br /&gt;            info.AddValue(&lt;span class="str"&gt;&amp;quot;doc&amp;quot;&lt;/span&gt;, serializedData);&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="preproc"&gt;#endregion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class="preproc"&gt;#region&lt;/span&gt; &lt;span class="kwrd"&gt;implicit&lt;/span&gt; conversion to/from XmlDocument&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;implicit&lt;/span&gt; &lt;span class="kwrd"&gt;operator&lt;/span&gt; SerializableXmlDocument(&lt;br /&gt;            XmlDocument doc)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; SerializableXmlDocument(doc);&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;implicit&lt;/span&gt; &lt;span class="kwrd"&gt;operator&lt;/span&gt; XmlDocument(&lt;br /&gt;            SerializableXmlDocument sdoc)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; sdoc.Value;&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="preproc"&gt;#endregion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class="preproc"&gt;#region&lt;/span&gt; Xml serialization helper methods&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] Serialize(XmlDocument doc)&lt;br /&gt;        {&lt;br /&gt;            MemoryStream stream = &lt;span class="kwrd"&gt;new&lt;/span&gt; MemoryStream();&lt;br /&gt;            doc.Save(stream);&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; stream.CopyUpToSeekPointer();&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; XmlDocument Deserialize(&lt;span class="kwrd"&gt;byte&lt;/span&gt;[] serializedData)&lt;br /&gt;        {&lt;br /&gt;            XmlDocument doc = &lt;span class="kwrd"&gt;new&lt;/span&gt; XmlDocument();&lt;br /&gt;            doc.Load(&lt;span class="kwrd"&gt;new&lt;/span&gt; MemoryStream(serializedData, &lt;span class="kwrd"&gt;false&lt;/span&gt;));&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; doc;&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="preproc"&gt;#endregion&lt;/span&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;
&lt;p&gt;...and here&amp;#39;s the CopyUpToSeekPointer extension method for MemoryStream:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; Pluralsight.Samples&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; MemoryStreamExtensionMethods&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] CopyUpToSeekPointer(&lt;br /&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt; MemoryStream stream)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="rem"&gt;// copy only the part of the buffer&lt;/span&gt;&lt;br /&gt;            &lt;span class="rem"&gt;// that contains the serialized document&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;long&lt;/span&gt; length = stream.Position;&lt;br /&gt;            &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] buffer = stream.GetBuffer();&lt;br /&gt;            &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] result = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[length];&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; length; ++i)&lt;br /&gt;                result[i] = buffer[i];&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; result;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;
&lt;p&gt;...and here&amp;#39;s a sample object that uses SerializableXmlDocument:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; Pluralsight.Samples&lt;br /&gt;{&lt;br /&gt;    [Serializable]&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Item&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Name { get; set; }&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; SerializableXmlDocument Data { get; set; }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Print()&lt;br /&gt;        {&lt;br /&gt;            Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Name: {0}&amp;quot;&lt;/span&gt;, Name);&lt;br /&gt;            Console.WriteLine(Data.Value.OuterXml);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;
&lt;p&gt;...and here&amp;#39;s a sample program that creates an instance of Item, serializes it, then deserializes it, printing diagnostics along the way to show that it&amp;#39;s working properly.&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Xml;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Runtime.Serialization.Formatters.Binary;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; Pluralsight.Samples;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; DemoProgram&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;    {&lt;br /&gt;        XmlDocument doc = &lt;span class="kwrd"&gt;new&lt;/span&gt; XmlDocument();&lt;br /&gt;        doc.LoadXml(&lt;span class="str"&gt;&amp;quot;&amp;lt;root&amp;gt;&amp;lt;child&amp;gt;text&amp;lt;/child&amp;gt;&amp;lt;/root&amp;gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;        Item item = &lt;span class="kwrd"&gt;new&lt;/span&gt; Item&lt;br /&gt;        {&lt;br /&gt;            Name = &lt;span class="str"&gt;&amp;quot;Testing 123&amp;quot;&lt;/span&gt;,&lt;br /&gt;            Data = doc,&lt;br /&gt;        };&lt;br /&gt;&lt;br /&gt;        &lt;span class="rem"&gt;// print object before serialization&lt;/span&gt;&lt;br /&gt;        item.Print();&lt;br /&gt;&lt;br /&gt;        BinaryFormatter formatter = &lt;span class="kwrd"&gt;new&lt;/span&gt; BinaryFormatter();&lt;br /&gt;        MemoryStream stream = &lt;span class="kwrd"&gt;new&lt;/span&gt; MemoryStream();&lt;br /&gt;        formatter.Serialize(stream, item);&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] serializedItem = stream.CopyUpToSeekPointer();&lt;br /&gt;&lt;br /&gt;        Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Serialized data (base64): {0}&amp;quot;&lt;/span&gt;,&lt;br /&gt;            Convert.ToBase64String(serializedItem));&lt;br /&gt;&lt;br /&gt;        item = (Item)formatter.Deserialize(&lt;br /&gt;            &lt;span class="kwrd"&gt;new&lt;/span&gt; MemoryStream(serializedItem, &lt;span class="kwrd"&gt;false&lt;/span&gt;));&lt;br /&gt;&lt;br /&gt;        &lt;span class="rem"&gt;// print object after deserialization&lt;/span&gt;&lt;br /&gt;        item.Print();&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;
&lt;p&gt;Here&amp;#39;s the output of the previous sample program:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/keith/sample_2D00_output_5F00_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" alt="sample-output" src="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/keith/sample_2D00_output_5F00_thumb.jpg" width="422" border="0" height="214" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Flame away!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52538" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/keith/archive/tags/Geek+talk/default.aspx">Geek talk</category><category domain="http://www.pluralsight.com/community/blogs/keith/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>Impromptu Vacation</title><link>http://www.pluralsight.com/community/blogs/dbox/archive/2008/08/15/impromptu-vacation.aspx</link><pubDate>Sat, 16 Aug 2008 05:37:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52516</guid><dc:creator>don-box</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;For the first time ever, I&amp;nbsp;took a completely spontaneous vacation by booking a flight Wednesday to head out to Martha&amp;#39;s Vineyard to hang out with my wife &amp;amp; kids (and Sara Spalding&amp;#39;s husband and kid).&lt;/p&gt;
&lt;p&gt;I really like Martha&amp;#39;s Vineyard - I also really like not having to make any plans.&lt;/p&gt;
&lt;p&gt;Swimming in the Atlantic is also pretty cool - I forgot how much I like the ocean after 6+ years living near Lake Washington.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52516" width="1" height="1"&gt;</description></item><item><title>Two-way formatted data binding in ASP.NET</title><link>http://www.pluralsight.com/community/blogs/keith/archive/2008/08/15/two-way-formatted-data-binding-in-asp-net.aspx</link><pubDate>Fri, 15 Aug 2008 20:22:37 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52504</guid><dc:creator>keith-brown</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Two way data binding in ASP.NET is easy, just use the Bind expression and data will flow between your web controls and your data source flawlessly. Until that is, you try to use a format string:&lt;/p&gt; &lt;p&gt;Bind(&amp;quot;AmountCharged&amp;quot;, &amp;quot;{0:C}&amp;quot;)&lt;/p&gt; &lt;p&gt;While this displays just as you&amp;#39;d expect (e.g., $200), it doesn&amp;#39;t do so well when you submit an edit that includes the same value ($200):&lt;/p&gt; &lt;p&gt;&lt;span style="font-weight:normal;font-size:14pt;color:maroon;font-family:&amp;#39;Verdana&amp;#39;;"&gt;&lt;i&gt;Input string was not in a correct format.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;I searched around and didn&amp;#39;t find much in the way of a clean solution, but I did solve the problem with just a few lines of code. The trick is to handle the data-bound control&amp;#39;s Updating event. Since I was working with a GridView, my solution looked a bit like this:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:GridView&lt;/span&gt; &lt;span class="attr"&gt;DataSourceID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;#39;myDataSource&amp;#39;&lt;/span&gt;
              &lt;span class="attr"&gt;OnRowUpdating&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;#39;FixFormatting&amp;#39;&lt;/span&gt;
              &lt;span class="attr"&gt;AutoGenerateColumns&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;#39;false&amp;#39;&lt;/span&gt;
              &lt;span class="attr"&gt;CellPadding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;3&amp;quot; ...&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Notice the OnRowUpdating handler that I&amp;#39;ve installed in my grid view. That code looks like this:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; FixFormatting(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, GridViewUpdateEventArgs args)
{
    &lt;span class="kwrd"&gt;decimal&lt;/span&gt; amountPaid = ParseDecimal((&lt;span class="kwrd"&gt;string&lt;/span&gt;)args.NewValues[&lt;span class="str"&gt;&amp;quot;AmountPaid&amp;quot;&lt;/span&gt;]);
    args.NewValues[&lt;span class="str"&gt;&amp;quot;AmountPaid&amp;quot;&lt;/span&gt;] = amountPaid;
}&lt;/pre&gt;
&lt;p&gt;When you handle this event, you&amp;#39;re given a dictionary of old and new values, which appear to come directly from the controls (in my case, a TextBox was used to gather the updated data AmountPaid, so the type of object that I found in NewValues[&amp;quot;AmountPaid&amp;quot;] was a string. I wrote a little helper method called ParseDecimal that parses a string into a decimal value, allowing currency characters, decimal points, and thousands separators. I also allowed a blank value to indicate zero:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;decimal&lt;/span&gt; ParseDecimal(&lt;span class="kwrd"&gt;string&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;)
{
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(&lt;span class="kwrd"&gt;value&lt;/span&gt;))
        &lt;span class="kwrd"&gt;return&lt;/span&gt; 0;
    &lt;span class="kwrd"&gt;return&lt;/span&gt; Decimal.Parse(&lt;span class="kwrd"&gt;value&lt;/span&gt;,
        NumberStyles.AllowThousands |
        NumberStyles.AllowDecimalPoint |
        NumberStyles.AllowCurrencySymbol,
        CultureInfo.InstalledUICulture);
}
&lt;/pre&gt;
&lt;p&gt;This solved the problem quite nicely. Now two-way binding works with formatted data.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52504" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/keith/archive/tags/Geek+talk/default.aspx">Geek talk</category><category domain="http://www.pluralsight.com/community/blogs/keith/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>Musculosenioritis</title><link>http://www.pluralsight.com/community/blogs/mike/archive/2008/08/13/musculosenioritis.aspx</link><pubDate>Wed, 13 Aug 2008 15:40:21 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52467</guid><dc:creator>mike-woodring</dc:creator><slash:comments>3</slash:comments><description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;[muhs-kyuh-loh-seen-yawr-eye-tis]&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;-noun &lt;em&gt;Pathology&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;soreness and weakness of the muscles, generally following athletic physical exertions reminiscent of the sufferer’s younger days; typically accompanied by the onset of stiffness and reduced ambulatory mobility during the 24-72 hours following the cessation of athletic activities.&lt;/p&gt;    &lt;p&gt;[origin: August 4-13, 2008; &lt;a href="http://dictionary.reference.com/search?r=2&amp;amp;q=musculo-"&gt;musculo&lt;/a&gt;- + &lt;a href="http://en.wikipedia.org/wiki/Old_age"&gt;senior&lt;/a&gt; + &lt;a href="http://en.wikipedia.org/wiki/-itis"&gt;-itis&lt;/a&gt;]&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I finally have a diagnosis.&amp;#160; Over the past few years, I’ve periodically suffered from a near-debilitating condition that results in great difficulty walking as well as moving from a sitting to a standing position; especially following prolonged periods of programming involving only the movement of my fingers and eyes.&amp;#160; Until today, nobody could tell me what it was I was suffering from.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This condition generally sets in after I compete in athletic events (soccer, in my case), where I run, jump, and otherwise exert myself as if I were still a strong, fit athlete younger than 24 years of age.&amp;#160; Alas, it has become increasingly apparent to me that this is no longer the case.&amp;#160; In my case, the breakthrough diagnosis came last night after the adult, co-ed soccer team I’m a member of completed our run at this year’s trophy.&amp;#160; We competed in 4 matches over a 4 day period last week, had the weekend off to ice and medicate our aches and pains, and then kicked off this week by competing in 2 more matches over the past 2 days.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;As I sat on the sidelines after our loss last night, physically depleted and sapped of every last scrap of energy within me, I wondered what had brought me to this low point in my life.&amp;#160; What malady was it that I could feel setting in even as I sat there limp with fatigue?&amp;#160; What was it that caused such foreboding of what was to come this morning – a condition that I knew would worsen over the next few days as I sat here at my computer, typing lambda expressions and disassembling the contents of memory pointed to be the EIP register?&amp;#160; What was it that could cause such physical pain merely attempting to rise from my chair and walk upstairs to refill my coffee cup?&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;And then it came to me - a word that so perfectly describes the condition suffered by myself and so many other over-the-hill athletes around the world: &lt;em&gt;&lt;strong&gt;musculosenioritis&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Yes, I finally have a name for my tormentor.&amp;#160; Like so many other afflictions, there is no known cure.&amp;#160; Some would point to studies that indicate the condition can be ameliorated by abstaining from athletic competition clearly suited to younger, more physically fit personnel.&amp;#160; But abstinance is no cure – it’s avoidance.&amp;#160; And I will always choose to face my challenges head on; without quitting.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;And so I will take what comfort I can just knowing that my affliction now bears a name, and that I am not alone in my suffering.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52467" width="1" height="1"&gt;</description></item><item><title>Visual Studio SP1 and The Metification of REST</title><link>http://www.pluralsight.com/community/blogs/scottallen/archive/2008/08/11/visual-studio-sp1-and-the-metification-of-rest.aspx</link><pubDate>Tue, 12 Aug 2008 02:39:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52475</guid><dc:creator>scott-allen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;strong&gt;Metification&lt;/strong&gt; – verb&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;The act of adding metadata to a web service in order to facilitate tooling and discovery. &lt;/li&gt;    &lt;li&gt;The act of adding complexity to a web service in order to achieve tight coupling. &lt;/li&gt; &lt;/ol&gt;  &lt;blockquote&gt;   &lt;p&gt;Pick one. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Service Pack 1 for Visual Studio 2008 has just arrived with new features, including version 1.0 of &lt;a href="http://astoria.mslivelabs.com/" target="_blank"&gt;ADO.NET Data Services&lt;/a&gt; (a.k.a Astoria). From the description (highlighting is mine):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;ADO.NET Data Services … consists of a combination of patterns and libraries that enables any data store to be exposed as a flexible data service, naturally integrating with the Web, that can be consumed by Web clients within a corporate network or across the Internet. ADO.NET Data Services uses URIs to point to pieces of data and &lt;strong&gt;simple, well-known formats&lt;/strong&gt; to represent that data, such as JSON and ATOM/APP. This results in data being exposed to Web clients as a &lt;strong&gt;REST-style resource collection&lt;/strong&gt;, &lt;strong&gt;addressable with URIs that agents can interact with using standard HTTP verbs such as GET, POST, or DELETE&lt;/strong&gt;. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Compared to the traditional SOAP approach, the &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=REST" target="_blank"&gt;REST&lt;/a&gt;-style is a different model for exposing functionality over a web service. Instead of defining messages and exposing operations that act on those messages, you expose resources and act on the resources using common HTTP verbs. I’ve lately been thinking of SOAP based web services as “verb oriented” (exposing GetOrder and UpdateCustomer), while REST style web services are “noun oriented” (exposing Orders and Customers). Both models have advantages and disadvantages, but I’ve felt that REST partners well with rich, Internet applications that need to retrieve a variety of resources&amp;#160; using the same filtering and paging parameters. Modeling a heap of GetThisByThat operations using SOAP is tedious.&amp;#160; &lt;/p&gt;  &lt;p&gt;Noun and verbs aren’t the only difference between REST and SOAP. One of the primary strengths of REST is its inherent simplicity. The simplicity not only facilitates broad interoperability, but encourages an acceptance of REST from many who feel overwhelmed by the complexities of &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=ws+death+star" target="_blank"&gt;WS-*&lt;/a&gt;. There are no tools required for REST - all you need is the ability to send an HTTP request and read the response. WS-*, on the other hand, is great when you need a digitally signed message including double-secret user credentials routed through an asynchronous and distributed, two-phase commit transaction with an extended buyer protection. Not everyone needs that flexibility, but you still pay the price for the flexibility when using the tooling and the API, and when configuring the service. &lt;/p&gt;  &lt;p&gt;Although we could continue talking about differences in REST and SOAP, I wanted to talk about metadata, and Astoria. &lt;/p&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h3&gt;Metafication&lt;/h3&gt;  &lt;p&gt;REST proponents, as a rule of thumb, shun metadata – but not all forms of metadata. Metadata in prose or written documentation is fine. Metadata in a self-describing response format is fine. However, metadata for tooling is seen by many as pure evil. Part of the complexity in WS-* is in the quirky and convoluted folds of metadata formats like WSDL and XML Schema. REST has seen some attempts at standardized metadata (&lt;a href="http://www.25hoursaday.com/weblog/2007/06/04/WhatsWrongWithWADL.aspx" target="_blank"&gt;WADL&lt;/a&gt;, WSDL 2.0, XSD), but still resists all attempts for the most part.&amp;#160; &lt;/p&gt;  &lt;p&gt;I like metadata. Maybe I’ve been in the .NET ecosystem for so long that I expect tooling, but I still remember the first time I tried to write a program for the &lt;a href="http://www.flickr.com/services/api/" target="_blank"&gt;Flickr web service&lt;/a&gt; (which is technically just POX). I was shocked when I coudn’t find a WSDL file. Then I was surprised at how easy it was to craft the correct URL for an HTTP request, and shred apart the XML response to find photographs. It was so easy that ... well, it was just too easy. It reminded me of writing data access code from scratch. Data access code is so predictable and repetitive that we have tools, frameworks, and code generators to take care of the job. But those tools, frameworks, and code generators rely on metadata defined by a database schema, so their job is relatively straightforward. REST is a bit different, unless you are working with Astoria on the server and a CLR client. &lt;/p&gt;  &lt;p&gt;Let’s say you have some DTOs for employees, orders, and other objects you want to send over the wire. You’ll need to decorate them with enough information for the service to understand the primary key.&lt;/p&gt;  &lt;pre class="code"&gt;[&lt;span style="color:#2b91af;"&gt;DataServiceKey&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;ID&amp;quot;&lt;/span&gt;)]
&lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Employee
&lt;/span&gt;{
   
    &lt;span style="color:blue;"&gt;public int &lt;/span&gt;ID { &lt;span style="color:blue;"&gt;get&lt;/span&gt;; &lt;span style="color:blue;"&gt;set&lt;/span&gt;; }
    &lt;span style="color:blue;"&gt;public string &lt;/span&gt;Name { &lt;span style="color:blue;"&gt;get&lt;/span&gt;; &lt;span style="color:blue;"&gt;set&lt;/span&gt;; }
}
[&lt;span style="color:#2b91af;"&gt;DataServiceKey&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;ID&amp;quot;&lt;/span&gt;)]
&lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Order
&lt;/span&gt;{
    // …
}&lt;/pre&gt;

&lt;p&gt;Next, define a class with public IQueryable&amp;lt;T&amp;gt; properties for each “entity set” (Employees and Orders). IQueryable&amp;lt;T&amp;gt; is easy to conjure up, and the class below represents a read-only data source with some fake in-memory data. If you need create, update, and delete functionality the class will need to implement IUpdateable, too. Sean Wildermuth has a &lt;a href="http://wildermuth.com/2008/07/01/Implementing_IUpdatable_(Part_1)" target="_blank"&gt;three series blog post&lt;/a&gt; about IUpdateable that he wrote when implementing IUpdateable for the NHibernate LINQ project. &lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;AcmeData &lt;/span&gt;&lt;span style="color:green;"&gt;
&lt;/span&gt;{
    public &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;IQueryable&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Employee&lt;/span&gt;&amp;gt; Employees
    {
        &lt;span style="color:blue;"&gt;get 
        &lt;/span&gt;{   &lt;span style="color:blue;"&gt;return new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Employee&lt;/span&gt;&amp;gt;
            {
                &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Employee&lt;/span&gt;() &lt;span style="color:green;"&gt;/* ... */&lt;/span&gt;,
                &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Employee&lt;/span&gt;() &lt;span style="color:green;"&gt;/* ... */&lt;/span&gt;,
                &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Employee&lt;/span&gt;() &lt;span style="color:green;"&gt;/* ... */
                // ...
            &lt;/span&gt;}.AsQueryable();        
        }
    }

&lt;span style="color:blue;"&gt;    public &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;IQueryable&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Order&lt;/span&gt;&amp;gt; Orders
    {
        &lt;span style="color:green;"&gt;// ...
    &lt;/span&gt;}
    &lt;span style="color:green;"&gt;// ...
&lt;/span&gt;}&lt;/pre&gt;

&lt;p&gt;Then you need an .svc file…&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;%&lt;span style="color:#a31515;"&gt;@ &lt;/span&gt;&lt;span style="color:red;"&gt;ServiceHost Language&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;C#&lt;/span&gt;&amp;quot; 
    &lt;span style="color:red;"&gt;Factory&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;System.Data.Services.DataServiceHostFactory, 
             System.Data.Services, 
             Version=3.5.0.0, Culture=neutral, 
             PublicKeyToken=b77a5c561934e089&lt;/span&gt;&amp;quot; 
    &lt;span style="color:red;"&gt;Service&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;AcmeDataService&lt;/span&gt;&amp;quot; %&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;… and you’ll also need a code-behind file for the .svc (which is all setup for you using an ADO.NET data service template, you just add some configuration):&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;AcmeDataService &lt;/span&gt;: &lt;span style="color:#2b91af;"&gt;DataService&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;AcmeData&lt;/span&gt;&amp;gt;
{        
    &lt;span style="color:blue;"&gt;public static void &lt;/span&gt;InitializeService(&lt;span style="color:#2b91af;"&gt;IDataServiceConfiguration &lt;/span&gt;config)
    {
        config.SetEntitySetAccessRule(&lt;span style="color:#a31515;"&gt;&amp;quot;Employees&amp;quot;&lt;/span&gt;, &lt;span style="color:#2b91af;"&gt;EntitySetRights&lt;/span&gt;.AllRead);
        &lt;span style="color:green;"&gt;// ... more rules
    &lt;/span&gt;}
}&lt;/pre&gt;

&lt;p&gt;At this point you can start testing the service using a web browser and looking at, for example, http://localhost/AcmeDataService.svc/Employees. What is more interesting is looking at http://localhost/AcmeDataService.svc/$metadata, because there you’ll find service metadata, which is where the magic starts. &lt;/p&gt;

&lt;p&gt;To consume the service, right-click on a project in Visual Studio and select “Add Service Reference…”. Yes – the same “Add Service Reference” command you might have seen in the hit motion picture “SOAP and WSDL – an XML Love Story”. This feature blurs the lines between REST and WS-*. Enter the root URL to the service and Visual Studio will generate a proxy – but not the type of proxy you receive when using SOAP based web services. This proxy will derive from DataServiceContext class and you can use it like so:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;var &lt;/span&gt;employees = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;AcmeData&lt;/span&gt;(serviceRoot)
                    .Employees
                    .Where(e =&amp;gt; e.Name == &lt;span style="color:#a31515;"&gt;&amp;quot;Scott&amp;quot;&lt;/span&gt;)
                    .OrderBy(e =&amp;gt; e.Name)
                    .Skip(2)
                    .Take(2)                      
                    .ToList();&lt;/pre&gt;

&lt;p&gt;DataServiceContext does a little bit of magic to turn the LINQ query into the following HTTP request. It’s LINQ to REST:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre&gt;GET /AcmeDataService.svc/Employees()&lt;br /&gt;    ?$filter=Name%20eq%20&amp;#39;Scott&amp;#39;&amp;amp;$orderby=Name&amp;amp;$skip=2&amp;amp;$top=2 HTTP/1.1&lt;br /&gt;User-Agent: Microsoft ADO.NET Data Services&lt;br /&gt;Accept: application/atom+xml,application/xml&lt;br /&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;The data service will respond with some XML that the data context uses to create objects that look just like the server side DTOs. &lt;/p&gt;

&lt;p&gt;I’m sure some are horrified at this metification of REST, but for scenarios when you need to talk between two CLR appdomains (think ASP.NET and Silverlight), this approach gives you the advantages of thinking about nouns in a RESTful model without writing all the glue code to wire up an endpoints and parse XML. Beauty! &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52475" width="1" height="1"&gt;</description></item><item><title>Visual Studio 2008 SP1 and Team Foundation Server 2008 SP1 available now</title><link>http://www.pluralsight.com/community/blogs/brian/archive/2008/08/11/visual-studio-2008-sp1-and-team-foundation-server-2008-sp1-available-now.aspx</link><pubDate>Mon, 11 Aug 2008 18:05:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52439</guid><dc:creator>brian-randell</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;On &lt;a href="http://msdn.microsoft.com/en-us/subscriptions/default.aspx"&gt;MSDN Subscriber downloads&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration:line-through;"&gt;A quick look at the Microsoft.com downloads site and I don&amp;#39;t see it yet for the .NET Framework 3.5 but I imagine soon.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update: &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;.NET Framework SP1 is &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=AB99342F-5D1A-413D-8319-81DA479AB0D7&amp;amp;displaylang=en"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;VS is &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=fbee1648-7106-44a7-9649-6d9f6d58056e&amp;amp;DisplayLang=en"&gt;here&lt;/a&gt;&amp;nbsp;.&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a href="http://blogs.msdn.com/pblog/archive/2008/08/11/visual-studio-2008-sp1-and-net-framework-3-5-sp1-released.aspx"&gt;Paolo Barone&lt;/a&gt; for the links.&lt;/p&gt;
&lt;p&gt;And now TFS is showing up too &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9e40a5b6-da41-43a2-a06d-3cee196bfe3d&amp;amp;DisplayLang=en"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52439" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/brian/archive/tags/VSTS/default.aspx">VSTS</category></item><item><title>DasKeyboard Enabled</title><link>http://www.pluralsight.com/community/blogs/fritz/archive/2008/08/08/daskeyboard-enabled.aspx</link><pubDate>Fri, 08 Aug 2008 16:58:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52404</guid><dc:creator>fritz-onion</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;After reading Scott Hanselman&amp;#39;s &lt;a href="http://www.hanselman.com/blog/DasKeyboardTheNextGeneration.aspx"&gt;review&lt;/a&gt; of &lt;a href="http://www.daskeyboard.com/"&gt;DasKeyboard&lt;/a&gt;, I knew one was in my future. I&amp;#39;m very finicky about how my keyboard feels, and for the past several years have been using a &lt;a href="http://www.pcuniverse.com/Lenovo-ThinkPad-USB-Keyboard-with-UltraNav-Keyboard-USB-UltraNav/41N5673/pd/p4034971&amp;amp;m_id=32&amp;amp;utm_source=google&amp;amp;utm_medium=ps"&gt;Thinkpad keyboard&lt;/a&gt; for my desktop which I quite like, it&amp;#39;s exactly like typing on my Thinkpad laptop. But when I read how this keyboard clicked like the old IBM 101s (which I loved) and had mechanical key switches, I was sure I&amp;#39;d love it.&lt;/p&gt; &lt;p&gt;Well, it arrived today, and it is by far the best keyboard I&amp;#39;ve ever typed on. It&amp;#39;s very satisfying to type on - especially if you can type fast, you get this nice clickety-clackety sound going that makes you want to keep typing faster. An in case you&amp;#39;re wondering, yes, I got the &lt;em&gt;ultimate&lt;/em&gt; version with 100% blank keys. It appealed to me as a classical guitarist (my non-tech hobby) where you have to have an innate feel for where each fret is because there are no visual indicators on the fretboard to help you. Having no symbols on the keys means you have to &amp;#39;just know&amp;#39; - no hunting and pecking allowed. Like the guitar, it takes some getting used to, but in the end it changes the way you interact with the computer. There are two raised bars on the &amp;#39;f&amp;#39; and &amp;#39;j&amp;#39; keys to help your hands get to home position. &lt;a href="http://www.pluralsight.com/main/instructor.aspx?name=keith-brown"&gt;Keith&lt;/a&gt; told me I should file them off - only then would I truly be at one with the keyboard :)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52404" width="1" height="1"&gt;</description></item><item><title>Value Stream Mapping</title><link>http://www.pluralsight.com/community/blogs/starr/archive/2008/08/06/value-stream-mapping.aspx</link><pubDate>Wed, 06 Aug 2008 21:01:44 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52380</guid><dc:creator>david-starr</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Alan just finished recording an Elegant Code Cast with me that will be published later.&lt;/p&gt;  &lt;p&gt;I attended &lt;a href="http://www.netobjectives.com/bio-alan-shalloway" target="_blank"&gt;Alan Shalloway&lt;/a&gt;’s session at &lt;a href="http://www.agile2008.org/" target="_blank"&gt;Agile 2008&lt;/a&gt; on &lt;a href="http://en.wikipedia.org/wiki/Value_Stream_Mapping" target="_blank"&gt;Value Stream Mapping&lt;/a&gt;. I have been wanting to pick up the skill of creating value stream maps for some time and this is a great introduction to the idea. Value Stream Mapping is essentially modeling a problem in terms of Lean and looking for opportunities to optimize your organization in terms of Lean.&lt;/p&gt;  &lt;p&gt;Frankly, this looks like typical &lt;a href="http://en.wikipedia.org/wiki/Business_process_modeling" target="_blank"&gt;Business Process Modeling&lt;/a&gt; with the added dimension of the value you are trying to optimize for. It also looks similar &lt;a href="http://en.wikipedia.org/wiki/Root_cause_analysis" target="_blank"&gt;Root Cause Analysis&lt;/a&gt;. I will definitely try this in the real word to see how effective a communication device this model can be.&lt;/p&gt;  &lt;p&gt;Here are the steps of creating a value stream map. &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Identify Actions Performed in the Value Stream      &lt;ol&gt;       &lt;li&gt;Identify the stream of work between idea conceptualization and delivery to a customer &lt;/li&gt;        &lt;li&gt;Model the major process and gates involved in creation and delivery &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;Determine Calendar Time      &lt;ol&gt;       &lt;li&gt;How long does it take to get from conceptualization to delivery &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;Calculate Time Actually Worked on the Action      &lt;ol&gt;       &lt;li&gt;Measure time per person &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;Identify Times Between Actions      &lt;ol&gt;       &lt;li&gt;How long do you pause in between actions? &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;Identify Loop Backs Required      &lt;ol&gt;       &lt;li&gt;How much rework is occurring? &lt;/li&gt;        &lt;li&gt;How many pieces of work are being rejected for defects? &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;Identify how many items are waiting in any queues in the system.      &lt;ol&gt;       &lt;li&gt;Are there any queues occurring before actions in the process? &lt;/li&gt;        &lt;li&gt;How large are they? Don’t go overboard here, just look for big or little. &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;Compute Process Cycle Efficiency      &lt;ol&gt;       &lt;li&gt;Process Cycle Efficiency = Tome Worked/Total Cycle Time          &lt;ul&gt;           &lt;li&gt;This is pretty self evident and pretty cool. How many of us actually look at this? &lt;/li&gt;            &lt;li&gt;509 hrs/3433 hrs = 14.9% efficiency &lt;/li&gt;            &lt;li&gt;This is worth shock value, but it the key is to raise the % by reducing the denominator &lt;/li&gt;            &lt;li&gt;If you can approach 50% in software development, you are cooking well. Most teams run between .01% and 8%. Agile teams typically run around 30%. &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;Other Notes&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Single Piece Flow is always a theme with Alan and today was no exception. Single piece flow is a technique of optimizing the whole and reducing time to market by focusing on one thing at a time.&lt;/li&gt;    &lt;li&gt;Determine the prime metric of value before you begin. Are you measuring time, cost, quality, or what?&lt;/li&gt;    &lt;li&gt;Focus on delays and loop backs for optimizations &lt;/li&gt;    &lt;li&gt;Value streams may be created on a feature by feature basis &lt;/li&gt;    &lt;li&gt;“Metrics as they are applied today are almost always counterproductive.” &lt;/li&gt;    &lt;li&gt;“The best metric I know is end-to-end cycle time.” &lt;/li&gt;    &lt;li&gt;“Measuring the efficiency of a single step is extremely counterproductive.” &lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52380" width="1" height="1"&gt;</description></item><item><title>My Life in a Bush of Legacy Code – Michael Feathers</title><link>http://www.pluralsight.com/community/blogs/starr/archive/2008/08/06/my-life-in-a-bush-of-legacy-code-michael-feathers.aspx</link><pubDate>Wed, 06 Aug 2008 20:56:04 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52378</guid><dc:creator>david-starr</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;I am attending this session from the &lt;a href="http://www.michaelfeathers.com/" target="_blank"&gt;godfather of legacy code&lt;/a&gt;. How could I pass it up?&lt;/p&gt;  &lt;p&gt;Michael’s core assertion is that a code base reflects the business climate of the organization that created it. &lt;/p&gt;  &lt;h3&gt;Session Quotes&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;The result of my book has been the opportunity for me to see some of the worst code you can imagine. &lt;/li&gt;    &lt;li&gt;Two things we deal with: Laziness and ignorance. Ignorance is forgivable and correctable. &lt;/li&gt;    &lt;li&gt;Code is alive and it has its own defenses. A big one is the code’s complexity increases in order to keep you from messing with it. Like a garden getting out of control.      &lt;ul&gt;       &lt;li&gt;&lt;em&gt;Personal Note:&lt;/em&gt; I like to think about this as “trending to entropy”. Organic systems (like a code base or a human) ill trend to entropy without constant attention to its health. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Organic systems go through periods of recession and recovery.      &lt;ul&gt;       &lt;li&gt;Like breaking down muscles to get stronger. &lt;/li&gt;        &lt;li&gt;Like the U.S. economy today. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;If an organization has no competition, code will atrophy &lt;/li&gt;    &lt;li&gt;TCO of a code base increases due to complexity, not its size. &lt;/li&gt;    &lt;li&gt;The way of the magpie is to chase shiny things. Magpie’s create sticky balls of mud. Don’t be a magpie. &lt;/li&gt;    &lt;li&gt;Emergence works. Put a small group of people together and let them own a problem. They will almost always succeed. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Dunbar&amp;#39;s_number" target="_blank"&gt;Dunbar’s Number&lt;/a&gt;. Look it up, this is cool. Group sizes larger than this require restrictive rules, laws, and policies in order to maintain stability. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;My question: “Do you have some prescriptive guidance for an individual team member who would like to evolve the the team and reclaim a code base that has trended toward entropy?”&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Have someone on the team who can do green field TDD. Someone on the team needs to understand what to strive for. &lt;/li&gt;    &lt;li&gt;Set standards for quality and team behavior and hold people accountable to those standards. &lt;/li&gt;    &lt;li&gt;Find the area of code that everyone is scared of. Attack that one first. The team will feel better having relieved its pain and realized initial success.      &lt;ul&gt;       &lt;li&gt;Note: This one reminds me of Mary Poppendieck’s saying, “Find the thing that is hard to do, and do it more often.” &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52378" width="1" height="1"&gt;</description></item><item><title>Where to get Password Minder</title><link>http://www.pluralsight.com/community/blogs/keith/archive/2008/08/05/where-to-get-password-minder.aspx</link><pubDate>Tue, 05 Aug 2008 17:00:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52369</guid><dc:creator>keith-brown</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;We recently updated our website and some links have broken as a result. Here&amp;#39;s the place you should go to get the latest version of Password Minder:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://mercury.pluralsight.com/tools.aspx"&gt;http://mercury.pluralsight.com/tools.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Sorry for any inconvenience!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52369" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/keith/archive/tags/Security/default.aspx">Security</category><category domain="http://www.pluralsight.com/community/blogs/keith/archive/tags/Geek+talk/default.aspx">Geek talk</category><category domain="http://www.pluralsight.com/community/blogs/keith/archive/tags/Identity/default.aspx">Identity</category></item><item><title>Welcome Sahil!</title><link>http://www.pluralsight.com/community/blogs/fritz/archive/2008/08/04/welcome-sahil.aspx</link><pubDate>Mon, 04 Aug 2008 14:45:46 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52353</guid><dc:creator>fritz-onion</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;It is with great pleasure that I introduce &lt;a href="http://www.winsmarts.com/"&gt;Sahil Malik&lt;/a&gt; as a Pluralsight instructor. Sahil comes to us with plenty of real-world experience working with clients deploying SharePoint solutions, as well as years of instructional experience - a perfect match for our expectations here at Pluralsight. He will be joining &lt;a href="http://www.pluralsight.com/main/instructor.aspx?name=brian-randell"&gt;Brian Randell&lt;/a&gt; to round out our SharePoint curriculum, focusing his efforts on &lt;a href="http://office.microsoft.com/en-us/sharepointserver/FX100492001033.aspx"&gt;MOSS&lt;/a&gt;. Welcome Sahil - I&amp;#39;m sure you will find the &lt;a href="http://blah.winsmarts.com/2008-8-pluralsight_Assimilate_SahilMalik.aspx"&gt;assimilation&lt;/a&gt; painless ;)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52353" width="1" height="1"&gt;</description></item></channel></rss>