<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>.NET</title>
        <link>http://mostlylucid.homeip.net/category/2.aspx</link>
        <description>.NET</description>
        <language>en-US</language>
        <copyright>Scott Galloway</copyright>
        <managingEditor>blogcomments@mostlylucid.co.uk</managingEditor>
        <generator>Subtext Version 2.0.0.0</generator>
        <item>
            <title>My secret project....NET 3.5 SP1 Beta (well, the release bit)</title>
            <link>http://mostlylucid.homeip.net/archive/2008/05/12/my-secret-project.net-3.5-sp1-beta-well-the-release-bit.aspx</link>
            <description>&lt;p&gt;I should have made this a better post but anyway. &lt;a href="http://blogs.msdn.com/brada"&gt;Brad Abrams&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#comments"&gt;just posted about the .NET 3.5 SP1 Beta release&lt;/a&gt; .     &lt;br /&gt;We've also posted a bunch of &lt;a href="http://www.asp.net/downloads/3.5-extensions/"&gt;new Screencasts&lt;/a&gt; covering the new features for ASP.NET in this release, as well as a &lt;a href="http://www.asp.net/downloads/3.5-extensions/Readme/"&gt;readme&lt;/a&gt; which has some getting started and upgrade information for migrating from the previous release...&lt;/p&gt;&lt;img src="http://mostlylucid.homeip.net/aggbug/1279.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.homeip.net/archive/2008/05/12/my-secret-project.net-3.5-sp1-beta-well-the-release-bit.aspx</guid>
            <pubDate>Mon, 12 May 2008 16:53:33 GMT</pubDate>
            <wfw:comment>http://mostlylucid.homeip.net/comments/1279.aspx</wfw:comment>
            <comments>http://mostlylucid.homeip.net/archive/2008/05/12/my-secret-project.net-3.5-sp1-beta-well-the-release-bit.aspx#feedback</comments>
            <wfw:commentRss>http://mostlylucid.homeip.net/comments/commentRss/1279.aspx</wfw:commentRss>
            <trackback:ping>http://mostlylucid.homeip.net/services/trackbacks/1279.aspx</trackback:ping>
        </item>
        <item>
            <title>Grrr...poor use of singletons and a very cool Generic Singleton pattern!</title>
            <link>http://mostlylucid.homeip.net/archive/2008/04/30/grrr.poor-use-of-singletons-and-a-very-cool-generic-singleton.aspx</link>
            <description>&lt;p&gt;I &lt;a href="http://www.mostlylucid.net/archive/2008/04/30/changes-afoot.change-to-blogengine.net.aspx"&gt;posted earlier&lt;/a&gt; that I'm switching to &lt;a href="http://www.dotnetblogengine.net/"&gt;blogengine.net&lt;/a&gt;, as part of this I've been fiddling around with the code (as is my way..I'll contribute back to the source when I've finished). One of my major pet hates is poor use of the &lt;a href="http://en.wikipedia.org/wiki/Singleton_pattern"&gt;singleton pattern&lt;/a&gt;, especially as there's a definitive &lt;a href="http://www.yoda.arachsys.com/csharp/singleton.html"&gt;article on the pattern in .NET&lt;/a&gt; and how to do it well. It's actually likely that this pattern is overkill in this case and a &lt;a href="http://www.bluebytesoftware.com/blog/PermaLink,guid,c4ea3d6d-190a-48f8-a677-44a438d8386b.aspx"&gt;ReaderWriterLockSlim&lt;/a&gt; could be better (though it has it's &lt;a href="http://weblogs.asp.net/leftslipper/archive/2008/03/31/mvc-locking-the-routecollection.aspx"&gt;own problems&lt;/a&gt;) . Anyway, on the assumption that a Singleton is the best choice here, let's look at the current code:&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="font-size: 8pt; background: white; color: black; font-family: verdana"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af"&gt;BlogSettings&lt;/span&gt; Instance&lt;/p&gt;    &lt;p style="margin: 0px"&gt;        {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            &lt;span style="color: blue"&gt;get&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            {  &lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: blue"&gt;if&lt;/span&gt; (blogSettingsSingleton == &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    blogSettingsSingleton = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;BlogSettings&lt;/span&gt;();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: blue"&gt;return&lt;/span&gt; blogSettingsSingleton;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;        }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;If you look at the article I &lt;a href="http://www.yoda.arachsys.com/csharp/singleton.html"&gt;mentioned above&lt;/a&gt; you'll see that this is the version which is specifically called out as follows:&lt;/p&gt;  &lt;p&gt;"&lt;em&gt;the above is not thread-safe. Two different threads could both have evaluated the test &lt;code&gt;if (instance==null)&lt;/code&gt; and found it to be true, then both create instances, which violates the singleton pattern. Note that in fact the instance may already have been created before the expression is evaluated, but the memory model doesn't guarantee that the new value of instance will be seen by other threads unless suitable memory barriers have been passed.&lt;/em&gt;'&lt;/p&gt;  &lt;p&gt;The common 'best' singleton pattern (well, it's debatable...but generally the best...) is a lot more wordy (see version 5 in that article) so I was please to find &lt;a href="http://blog.falafel.com/2008/01/26/AGenericSingleton.aspx"&gt;this post&lt;/a&gt; on a Generic Singleton (actually this &lt;a href="http://www.codeproject.com/KB/cs/genericsingleton.aspx"&gt;was posted a while ago on Codeproject&lt;/a&gt;)...really nice. In the Utils class I added this:&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="font-size: 8pt; background: white; color: black; font-family: verdana"&gt;   &lt;p style="margin: 0px"&gt;    &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;        &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; Provides a Singleton implementation using Generics.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;        &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;        &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;typeparam name="T"&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;Type of singleton instance&lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/typeparam&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;        &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;sealed&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Singleton&lt;/span&gt;&amp;lt;T&amp;gt; &lt;span style="color: blue"&gt;where&lt;/span&gt; T : &lt;span style="color: blue"&gt;new&lt;/span&gt;()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;        {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            Singleton() { }&lt;/p&gt;    &lt;p style="margin: 0px"&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;            &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; T Instance&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: blue"&gt;get&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Nested&lt;/span&gt;.instance;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            }&lt;/p&gt;    &lt;p style="margin: 0px"&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;            &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Nested&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: green"&gt;// Explicit static constructor to tell C# compiler&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: green"&gt;// not to mark type as beforefieldinit&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: blue"&gt;static&lt;/span&gt; Nested() { }&lt;/p&gt;    &lt;p style="margin: 0px"&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: blue"&gt;internal&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;readonly&lt;/span&gt; T instance = &lt;span style="color: blue"&gt;new&lt;/span&gt; T();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;        }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;The code for returning the instance then becomes:&lt;/p&gt;  &lt;div style="font-size: 8pt; background: white; color: black; font-family: verdana"&gt;   &lt;p style="margin: 0px"&gt;        &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af"&gt;BlogSettings&lt;/span&gt; Instance&lt;/p&gt;    &lt;p style="margin: 0px"&gt;        {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            &lt;span style="color: blue"&gt;get&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Utils&lt;/span&gt;.&lt;span style="color: #2b91af"&gt;Singleton&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;BlogSettings&lt;/span&gt;&amp;gt;.Instance;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;        }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;You have to also change the constructor for BlogSettings to public to allow this this to work which does let devs shoot themselves in the foot (by ignoring the singleton)  and you of course have to balance the benefit agains that risk...&lt;/p&gt;&lt;img src="http://mostlylucid.homeip.net/aggbug/1276.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.homeip.net/archive/2008/04/30/grrr.poor-use-of-singletons-and-a-very-cool-generic-singleton.aspx</guid>
            <pubDate>Thu, 01 May 2008 05:42:20 GMT</pubDate>
            <wfw:comment>http://mostlylucid.homeip.net/comments/1276.aspx</wfw:comment>
            <comments>http://mostlylucid.homeip.net/archive/2008/04/30/grrr.poor-use-of-singletons-and-a-very-cool-generic-singleton.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://mostlylucid.homeip.net/comments/commentRss/1276.aspx</wfw:commentRss>
            <trackback:ping>http://mostlylucid.homeip.net/services/trackbacks/1276.aspx</trackback:ping>
        </item>
        <item>
            <title>Why do single chances make me nervous...life should come with an undo function...</title>
            <link>http://mostlylucid.homeip.net/archive/2008/04/15/why-do-single-chances-make-me-nervous.life-should-come-with.aspx</link>
            <description>&lt;p&gt;Spent most of the day not doing what I should've been doing. I have a number of balls in the air at the moment and it feels like I've just added a spinning plate act at the same time...noisy disaster may ensue. Right now I'm working on another &lt;a href="http://www.codeplex.com/aspnet"&gt;Codeplex&lt;/a&gt; release, working on a private build of some beta bits for the &lt;a href="www.aspinsiders.com"&gt;Insiders&lt;/a&gt;, getting our bugs migrated to the right place so we can get cracking on ASP.NET v.Next, getting the notes together for the last meeting (before the next one happens!) as well as getting the Hands-On-Labs ready for &lt;a href="http://www.microsoft.com/events/teched2008/default.mspx"&gt;this thing&lt;/a&gt;...All of which are pretty  much due right now...oh and I just got out of a multi-month relationship with my now ex-girlfriend...so let's say my time is now exactly my own right now. (Ideally I'd be sitting in a little boat in the Caribbean for a couple of weeks but alas...). Anyway in the heart of this perfect storm I managed to do a bit of fiddling with code...Essentially I'm putting a method together to help us make quicker, less onerous Codeplex releases (we want to get as much stuff there as often as possible). I've been writing (and I've written about it before) a little directory comparer tool which I'm about to expand into adding changed items into TFS (for Codeplex pushes)...for various reasons the current way TFS makes us do this is a bit problematic for us...which meant we were using a python based tool which was 1. a bit flaky (poor errors) and 2. unmaintainable since of all the languages used in my team, Python ain't one...&lt;/p&gt;  &lt;p&gt;Well, here's some code for the most recent incarnation (solution for follow)...it's getting a few add-ons like the ability to ignore certain directories / file extensions, multi-part configuration system and just a few general performance fixes. &lt;/p&gt;  &lt;p&gt;Oh, and next week I plan to take a deep dive into the ASP.NET Page framework, giving an overly detailed guided tour of how it does it's stuff... &lt;/p&gt;  &lt;div style="font-size: 8pt; background: white; color: black; font-family: verdana"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Collections;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Collections.Specialized;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Text;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.IO;&lt;/p&gt;    &lt;p style="margin: 0px"&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt; MergeDirs&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;    &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Program&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;    {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;        #region&lt;/span&gt; Sample Config&lt;/p&gt;    &lt;p style="margin: 0px"&gt;        &lt;span style="color: green"&gt;/* Sample code for default config creation        &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: green"&gt;        * {           ConfigurationGroup cg = new ConfigurationGroup();&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: green"&gt;            cg.ConfigurationItems.Add( new Config() { SourceDirectory = "source1", DestinationDirectory = "dest1", ClearDestination = true, ExtensionsToExclude = new List&amp;lt;string&amp;gt;(new string[] { "vssscc", "dll", "pdb", "vspscc" }), DirectoriesToExclude = new List&amp;lt;string&amp;gt;(new string[] { "bin" }) });&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: green"&gt;            cg.ConfigurationItems.Add(new Config() { SourceDirectory = "source2", DestinationDirectory = "dest2", ClearDestination = true, ExtensionsToExclude = new List&amp;lt;string&amp;gt;(new string[] { "vssscc", "dll", "pdb", "vspscc" }), DirectoriesToExclude = new List&amp;lt;string&amp;gt;(new string[] { "bin" }) });&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: green"&gt;            cg.Serialize(@"C:\TestConfig\ConfigGroup.xml");&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: green"&gt;            return;*/&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;        #endregion&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;        &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ConfigurationGroup&lt;/span&gt; Cfg { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;        &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; ConfigFile = &lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;        &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue"&gt;string&lt;/span&gt;[] args)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;        {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            &lt;span style="color: #2b91af"&gt;Program&lt;/span&gt; pgm = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Program&lt;/span&gt;();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            pgm.Run(args);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;        }&lt;/p&gt;    &lt;p style="margin: 0px"&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;        &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Run(&lt;span style="color: blue"&gt;string&lt;/span&gt;[] args)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;        {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            Cfg = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ConfigurationGroup&lt;/span&gt;();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            &lt;span style="color: blue"&gt;if&lt;/span&gt; (args.Length &amp;gt; 0)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;string&lt;/span&gt; argument &lt;span style="color: blue"&gt;in&lt;/span&gt; args)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    &lt;span style="color: blue"&gt;string&lt;/span&gt; tokenName = argument.Substring(1, 1);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    &lt;span style="color: blue"&gt;switch&lt;/span&gt; (tokenName)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                        &lt;span style="color: blue"&gt;case&lt;/span&gt; (&lt;span style="color: #a31515"&gt;"f"&lt;/span&gt;):&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                            ConfigFile = args[0].Substring(3).Trim();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                            &lt;span style="color: blue"&gt;break&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                }&lt;/p&gt;    &lt;p style="margin: 0px"&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;            }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            Cfg.Deserialize(ConfigFile);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            &lt;span style="color: blue"&gt;if&lt;/span&gt; (Cfg == &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"No config file at "&lt;/span&gt; + ConfigFile + &lt;span style="color: #a31515"&gt;" and no arguments...I can't guess!"&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.ReadLine();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: blue"&gt;return&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;Config&lt;/span&gt; cfg &lt;span style="color: blue"&gt;in&lt;/span&gt; Cfg.ConfigurationItems)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: blue"&gt;if&lt;/span&gt; (!&lt;span style="color: blue"&gt;string&lt;/span&gt;.IsNullOrEmpty(cfg.SourceDirectory) &amp;amp;&amp;amp; !&lt;span style="color: blue"&gt;string&lt;/span&gt;.IsNullOrEmpty(cfg.DestinationDirectory))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    &lt;span style="color: blue"&gt;if&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;Directory&lt;/span&gt;.Exists(cfg.SourceDirectory))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    {&lt;/p&gt;    &lt;p style="margin: 0px"&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;                        &lt;span style="color: blue"&gt;if&lt;/span&gt; (!&lt;span style="color: #2b91af"&gt;Directory&lt;/span&gt;.Exists(cfg.DestinationDirectory))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                            &lt;span style="color: #2b91af"&gt;Directory&lt;/span&gt;.CreateDirectory(cfg.DestinationDirectory);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                        &lt;span style="color: blue"&gt;if&lt;/span&gt; (!&lt;span style="color: #2b91af"&gt;Directory&lt;/span&gt;.Exists(cfg.DestinationDirectory))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                            &lt;span style="color: blue"&gt;throw&lt;/span&gt; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IOException&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"Failed to create directory:"&lt;/span&gt; + cfg.DestinationDirectory);&lt;/p&gt;    &lt;p style="margin: 0px"&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;                        CompareDirs(cfg.SourceDirectory, cfg.DestinationDirectory, cfg.ClearDestination, cfg.ExtensionsToExclude, cfg.DirectoriesToExclude, cfg.ExtensionsToLeave);&lt;/p&gt;    &lt;p style="margin: 0px"&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    &lt;span style="color: blue"&gt;else&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                        &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"Both source and destination directories must already exist!!"&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: blue"&gt;else&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"You must specify both source and destination directories!"&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"Finished!"&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;#if&lt;/span&gt; DEBUG&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.ReadLine();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;#endif&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;        }&lt;/p&gt;    &lt;p style="margin: 0px"&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;        &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; CompareDirs(&lt;span style="color: blue"&gt;string&lt;/span&gt; sourceDir, &lt;span style="color: blue"&gt;string&lt;/span&gt; destDir, &lt;span style="color: blue"&gt;bool&lt;/span&gt; clearRight, &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; extensionsToExclude, &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; directoriesToExclude, &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; extensionsToLeave)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;        {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; srcFileNames = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt;(GetFSItems(&lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;DirectoryInfo&lt;/span&gt;(sourceDir).GetFiles()));&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; dstFileNames = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt;(GetFSItems(&lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;DirectoryInfo&lt;/span&gt;(destDir).GetFiles()));&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;string&lt;/span&gt; fileName &lt;span style="color: blue"&gt;in&lt;/span&gt; srcFileNames)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: green"&gt;//Console.WriteLine(string.Format("Comparing:{0} and {1}", Path.Combine(sourceDir, fileName), Path.Combine(destDir, fileName)));&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: blue"&gt;bool&lt;/span&gt; excludeFile = &lt;span style="color: blue"&gt;false&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;string&lt;/span&gt; excludeExt &lt;span style="color: blue"&gt;in&lt;/span&gt; extensionsToExclude)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    &lt;span style="color: blue"&gt;if&lt;/span&gt; (fileName.EndsWith(&lt;span style="color: #a31515"&gt;"."&lt;/span&gt; + excludeExt))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                        excludeFile = &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                        &lt;span style="color: blue"&gt;break&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: blue"&gt;if&lt;/span&gt; (excludeFile)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    &lt;span style="color: blue"&gt;continue&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: blue"&gt;if&lt;/span&gt; (!dstFileNames.Contains(fileName))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    &lt;span style="color: #2b91af"&gt;File&lt;/span&gt;.Copy(&lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.Combine(sourceDir, fileName), &lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.Combine(destDir, fileName));&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"Adding:"&lt;/span&gt; + &lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.Combine(destDir, fileName));&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: blue"&gt;else&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    &lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt; srcInf = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;FileInfo&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.Combine(sourceDir, fileName)).LastWriteTime;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    &lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt; dstInf = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;FileInfo&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.Combine(destDir, fileName)).LastWriteTime;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    &lt;span style="color: blue"&gt;if&lt;/span&gt; (dstInf != srcInf)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                        &lt;span style="color: #2b91af"&gt;File&lt;/span&gt;.Copy(&lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.Combine(sourceDir, fileName), &lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.Combine(destDir, fileName), &lt;span style="color: blue"&gt;true&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                        &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"Overwriting:"&lt;/span&gt; + &lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.Combine(destDir, fileName));&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;string&lt;/span&gt; fileName &lt;span style="color: blue"&gt;in&lt;/span&gt; dstFileNames)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: blue"&gt;string&lt;/span&gt; extension = fileName.Substring(fileName.LastIndexOf(&lt;span style="color: #a31515"&gt;'.'&lt;/span&gt;) + 1);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: blue"&gt;if&lt;/span&gt; (!srcFileNames.Contains(fileName) || extensionsToExclude.Contains(extension))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    &lt;span style="color: blue"&gt;if&lt;/span&gt; (extensionsToLeave.Contains(extension))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                        &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"Leaving:"&lt;/span&gt; + fileName);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                        &lt;span style="color: blue"&gt;continue&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    &lt;span style="color: blue"&gt;else&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                        &lt;span style="color: #2b91af"&gt;File&lt;/span&gt;.Delete(&lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.Combine(destDir, fileName));&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                        &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"Deleteing:"&lt;/span&gt; + fileName);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; sourceNames = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt;(GetFSItems(&lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;DirectoryInfo&lt;/span&gt;(sourceDir).GetDirectories()));&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; destNames = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt;(GetFSItems(&lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;DirectoryInfo&lt;/span&gt;(destDir).GetDirectories()));&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;string&lt;/span&gt; dirName &lt;span style="color: blue"&gt;in&lt;/span&gt; sourceNames)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: blue"&gt;if&lt;/span&gt; (directoriesToExclude.Contains(dirName))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"Skipping: "&lt;/span&gt; + dirName);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    &lt;span style="color: blue"&gt;continue&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: green"&gt;//Console.WriteLine(string.Format("Comparing:{0} and {1}", Path.Combine(sourceDir, dirName), Path.Combine(destDir, dirName)));&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: blue"&gt;if&lt;/span&gt; (!destNames.Contains(dirName))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    &lt;span style="color: blue"&gt;string&lt;/span&gt; newDestDir = &lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.Combine(destDir, dirName);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    &lt;span style="color: #2b91af"&gt;Directory&lt;/span&gt;.CreateDirectory(newDestDir);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"Adding:"&lt;/span&gt; + &lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.Combine(destDir, dirName));&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    CompareDirs(&lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.Combine(sourceDir, dirName), newDestDir, clearRight, extensionsToExclude, directoriesToExclude, extensionsToLeave);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: blue"&gt;else&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    CompareDirs(&lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.Combine(sourceDir, dirName), &lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.Combine(destDir, dirName), clearRight, extensionsToExclude, directoriesToExclude, extensionsToLeave);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            }&lt;/p&gt;    &lt;p style="margin: 0px"&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;            &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;string&lt;/span&gt; dirName &lt;span style="color: blue"&gt;in&lt;/span&gt; destNames)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: blue"&gt;if&lt;/span&gt; (!sourceNames.Contains(dirName) || directoriesToExclude.Contains(dirName))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    &lt;span style="color: #2b91af"&gt;Directory&lt;/span&gt;.Delete(&lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.Combine(destDir, dirName), &lt;span style="color: blue"&gt;true&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                    &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"Deleteing:"&lt;/span&gt; + &lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.Combine(destDir, dirName));&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;false&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;        }&lt;/p&gt;    &lt;p style="margin: 0px"&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;        &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; GetFSItems(&lt;span style="color: #2b91af"&gt;FileSystemInfo&lt;/span&gt;[] dirInfos)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;        {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;FileSystemInfo&lt;/span&gt; dinf &lt;span style="color: blue"&gt;in&lt;/span&gt; dirInfos)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                &lt;span style="color: blue"&gt;yield&lt;/span&gt; &lt;span style="color: blue"&gt;return&lt;/span&gt; dinf.Name;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;        }&lt;/p&gt;    &lt;p style="margin: 0px"&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;    }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt; &lt;/div&gt;&lt;img src="http://mostlylucid.homeip.net/aggbug/1265.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.homeip.net/archive/2008/04/15/why-do-single-chances-make-me-nervous.life-should-come-with.aspx</guid>
            <pubDate>Wed, 16 Apr 2008 05:01:34 GMT</pubDate>
            <wfw:comment>http://mostlylucid.homeip.net/comments/1265.aspx</wfw:comment>
            <comments>http://mostlylucid.homeip.net/archive/2008/04/15/why-do-single-chances-make-me-nervous.life-should-come-with.aspx#feedback</comments>
            <wfw:commentRss>http://mostlylucid.homeip.net/comments/commentRss/1265.aspx</wfw:commentRss>
            <trackback:ping>http://mostlylucid.homeip.net/services/trackbacks/1265.aspx</trackback:ping>
        </item>
        <item>
            <title>Obsessive Coding, optimal string Reverse...</title>
            <link>http://mostlylucid.homeip.net/archive/2008/02/04/obsessive-coding-optimal-string-reverse.aspx</link>
            <description>I love this type of thing, a whole post on &lt;a href="http://weblogs.asp.net/justin_rogers/archive/2004/06/10/153175.aspx"&gt;optimal string reverse algorithms&lt;/a&gt;. I always love this sort of thing, learning huge amounts of detail about fundamental operations (sort of, umm when do you ever reverse strings?). Actually looking at &lt;a href="http://weblogs.asp.net/justin_rogers/"&gt;Justin Rogers' blog&lt;/a&gt; he has &lt;a href="http://weblogs.asp.net/justin_rogers/archive/tags/Performance/default.aspx"&gt;lots of great performance posts&lt;/a&gt;...&lt;img src="http://mostlylucid.homeip.net/aggbug/1239.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.homeip.net/archive/2008/02/04/obsessive-coding-optimal-string-reverse.aspx</guid>
            <pubDate>Mon, 04 Feb 2008 17:00:41 GMT</pubDate>
            <wfw:comment>http://mostlylucid.homeip.net/comments/1239.aspx</wfw:comment>
            <comments>http://mostlylucid.homeip.net/archive/2008/02/04/obsessive-coding-optimal-string-reverse.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://mostlylucid.homeip.net/comments/commentRss/1239.aspx</wfw:commentRss>
            <trackback:ping>http://mostlylucid.homeip.net/services/trackbacks/1239.aspx</trackback:ping>
        </item>
        <item>
            <title>Why do so many people mess up Singletons?</title>
            <link>http://mostlylucid.homeip.net/archive/2008/01/27/why-do-so-many-people-mess-up-singletons.aspx</link>
            <description>&lt;p&gt;I've written about this a few times now (use the search thingy to find where) but I'm still surprised how many people mess up the Singleton pattern.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;For instance take:&lt;/p&gt;  &lt;p&gt;if (blogSettingsSingleton == null)   &lt;br /&gt;                {    &lt;br /&gt;                    blogSettingsSingleton = new BlogSettings();    &lt;br /&gt;                }    &lt;br /&gt;                return blogSettingsSingleton;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Looks ok, right? But this is a classic poor pattern when dealing with multi-threaded apps. Why? Look at the initial 'if' statement, and think what happens if multiple treads hit this at the same time...one thread could be in the process of creating this object whilst the others are evaluating the condition...&lt;/p&gt;  &lt;p&gt;If you're using &lt;a href="http://en.wikipedia.org/wiki/Singleton_pattern"&gt;Singletons&lt;/a&gt; PLEASE read &lt;a href="http://www.yoda.arachsys.com/csharp/singleton.html"&gt;this article&lt;/a&gt;. The singleton pattern article from Wikipedia has the following excellent implementation of a singleton:&lt;/p&gt;  &lt;pre class="code"&gt;/// &amp;lt;summary&amp;gt;
/// Class implements singleton pattern.
/// &amp;lt;/summary&amp;gt;
public class Singleton
{
        // Private constructor to avoid other instantiation
        // This must be present otherwise the compiler provide 
        // a default public constructor
        private Singleton()
        {
        }
 
        /// &amp;lt;summary&amp;gt;
        /// Return an instance of &amp;lt;see cref="Singleton"/&amp;gt;
        /// &amp;lt;/summary&amp;gt;
        public static Singleton Instance
        {
            get
            {
                /// An instance of Singleton wont be created until the very first 
                /// call to the sealed class. This a CLR optimization that ensure that
                /// we have properly lazy-loading singleton. 
                return SingletonCreator.CreatorInstance;
            }
        }
 
        /// &amp;lt;summary&amp;gt;
        /// Sealed class to avoid any heritage from this helper class
        /// &amp;lt;/summary&amp;gt;
        private sealed class SingletonCreator
        {
          // Retrieve a single instance of a Singleton
          private static readonly Singleton _instance = new Singleton();
 
          /// &amp;lt;summary&amp;gt;
          /// Return an instance of the class &amp;lt;see cref="Singleton"/&amp;gt;
          /// &amp;lt;/summary&amp;gt;
          public static Singleton CreatorInstance
          {
            get { return _instance; }
          }
        }
}
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/pre&gt;

&lt;p&gt;This is a lazy-initializing, thread safe singleton...does sacrifice *some* performance (see the &lt;a href="http://www.yoda.arachsys.com/csharp/singleton.html"&gt;earlier article&lt;/a&gt; for details of this) but it is FAR safer than the original I showed...&lt;/p&gt;

&lt;p&gt;Oh, and one last thing...are you REALLY sure you need a Singleton? One horrible pattern I've seen is code is using Singletons to access database connections...this is VERY RARELY required and sacrifices a lot of the benefits which modern databases offer for concurrent access.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;&lt;font color="#ff0000"&gt;UPDATE:&lt;/font&gt; Umm...realized that I don't explain what a 'Singleton' is...essentially it's a pattern which limits the access of an object to a single caller at a time. Common uses for Singletons could be accessing files on a file-system where you really want to make sure that only one thread has access at one time. Oh, and to make things even more complicated you'd more commonly want to use a &lt;a href="http://msdn2.microsoft.com/en-us/library/system.threading.readerwriterlock(VS.71).aspx"&gt;ReaderWriterLock&lt;/a&gt; in this scenario to allow many readers or a single writer...only &lt;a href="http://msdn.microsoft.com/msdnmag/issues/06/06/ConcurrentAffairs/"&gt;of course you wouldn't&lt;/a&gt;...told you it was complicated! Oh, and to further complicate matters in VS2008 and above you'd probably want &lt;a href="http://www.bluebytesoftware.com/blog/PermaLink,guid,c4ea3d6d-190a-48f8-a677-44a438d8386b.aspx"&gt;ReaderWriterLockSlim&lt;/a&gt;!&lt;/p&gt;&lt;img src="http://mostlylucid.homeip.net/aggbug/1238.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.homeip.net/archive/2008/01/27/why-do-so-many-people-mess-up-singletons.aspx</guid>
            <pubDate>Mon, 28 Jan 2008 00:47:55 GMT</pubDate>
            <wfw:comment>http://mostlylucid.homeip.net/comments/1238.aspx</wfw:comment>
            <comments>http://mostlylucid.homeip.net/archive/2008/01/27/why-do-so-many-people-mess-up-singletons.aspx#feedback</comments>
            <wfw:commentRss>http://mostlylucid.homeip.net/comments/commentRss/1238.aspx</wfw:commentRss>
            <trackback:ping>http://mostlylucid.homeip.net/services/trackbacks/1238.aspx</trackback:ping>
        </item>
        <item>
            <title>C# null Coalescing operator</title>
            <link>http://mostlylucid.homeip.net/archive/2007/11/03/c-null-coalescing-operator.aspx</link>
            <description>&lt;p&gt;Just because I always forget this...the &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/09/20/the-new-c-null-coalescing-operator-and-using-it-with-linq.aspx"&gt;C# null Coalescing operator&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;Sample below shamelessly stolen &lt;a href="http://www.sturmnet.org/blog/archives/2005/06/15/doublequestionmark/"&gt;from here&lt;/a&gt;...&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;MyClass anObject;&lt;br /&gt;
...&lt;br /&gt;
// Variant 1: Using a full if/else clause&lt;br /&gt;
MyClass anotherObject;&lt;br /&gt;
if (anObject != null)&lt;br /&gt;
  anotherObject = anObject;&lt;br /&gt;
else&lt;br /&gt;
  anotherObject = new MyClass();&lt;br /&gt;
 &lt;br /&gt;
// Variant 2: Using the ?/: conditional operator&lt;br /&gt;
MyClass anotherObject = anObject != null ? anObject : new MyClass();&lt;br /&gt;
 &lt;br /&gt;
// Variant 3: Using the ?? operator&lt;br /&gt;
MyClass anotherObject = anObject ?? new MyClass();&lt;/font&gt;&lt;/p&gt;&lt;img src="http://mostlylucid.homeip.net/aggbug/1233.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.homeip.net/archive/2007/11/03/c-null-coalescing-operator.aspx</guid>
            <pubDate>Sun, 04 Nov 2007 01:07:42 GMT</pubDate>
            <wfw:comment>http://mostlylucid.homeip.net/comments/1233.aspx</wfw:comment>
            <comments>http://mostlylucid.homeip.net/archive/2007/11/03/c-null-coalescing-operator.aspx#feedback</comments>
            <wfw:commentRss>http://mostlylucid.homeip.net/comments/commentRss/1233.aspx</wfw:commentRss>
            <trackback:ping>http://mostlylucid.homeip.net/services/trackbacks/1233.aspx</trackback:ping>
        </item>
        <item>
            <title>MasterPages</title>
            <link>http://mostlylucid.homeip.net/archive/2003/07/14/masterpages.aspx</link>
            <description>&lt;p&gt;As I've written about a hundred times now. I'm currently rebuilding this site - don't stop reading, I really am this time!&lt;br /&gt;
So, I'm in the process of defining an architecture - rebuilding the site is more about my playing with some new technologies rather than actually making a site thats' for anything. The architecture I choose will have many of the features I'd expect to see in ASP.NET 2.0 - with a view to converting once I get the bits.&lt;br /&gt;
The way it is currently going is to use a version of &lt;a href="http://www.asp.net/ControlGallery/ControlDetail.aspx?control=385&amp;amp;tabindex=2"&gt;MasterPages&lt;/a&gt; , maybe taking a few pointers from &lt;a href="http://aspalliance.com/PaulWilson/Articles/?id=13"&gt;Paul Wilsons articles &lt;/a&gt;on the subject. In addition I want to have some sort of MVC type implementation, where I can control the flow and navigational logic from a central location - there's an approach I've used before in Java where the Controller is responsible for filling the page Context with the information which the page needs to render, the page then just has to access Context to populate itself, might see if this is easy in ASP.NET.&lt;br /&gt;
Of course, I'm going to be heavily using the &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daab-rm.asp"&gt;MS Application Blocks&lt;/a&gt;  - I can't emphasise enough how fantastic these things are when building applications!&lt;br /&gt;
One thing I really dislike about the current BlogX - the blogging engine currently powering this site - is that it doesn't use SQL Server- this essentially means my information is stored on the server in plain XML - it's hard to index (no search!), if some other format comes along, it'll mean writing a hideous XSLT to do the transform and I can't load balance the site (OK, not a problem any time soon, but the Architect in me objects). Plan will be to replace BlogX with another engine (with a better architecture), this will be based on SQL Server, have built in support for encryption and &lt;a href="http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx"&gt;compression&lt;/a&gt; -I hate the fact that right now, big old chunks of unencrypted XML contain the config settings for my site and regularly fly through the ether - this is NOT secure in the slightest. In addition, front-end caching (even more necessary with the shift to SQL Server) - I may even have a look at caching each blog entry as an entity and then just assembling them as the page renders...hmm...&lt;br /&gt;
&lt;/p&gt;&lt;img src="http://mostlylucid.homeip.net/aggbug/473.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.homeip.net/archive/2003/07/14/masterpages.aspx</guid>
            <pubDate>Mon, 14 Jul 2003 17:04:00 GMT</pubDate>
            <wfw:comment>http://mostlylucid.homeip.net/comments/473.aspx</wfw:comment>
            <comments>http://mostlylucid.homeip.net/archive/2003/07/14/masterpages.aspx#feedback</comments>
            <wfw:commentRss>http://mostlylucid.homeip.net/comments/commentRss/473.aspx</wfw:commentRss>
            <trackback:ping>http://mostlylucid.homeip.net/services/trackbacks/473.aspx</trackback:ping>
        </item>
        <item>
            <title>Dynamically added controls...</title>
            <link>http://mostlylucid.homeip.net/archive/2003/06/04/dynamically-added-controls.aspx</link>
            <description>One of the most frequent queries about dynamically added controls is how to get their values after postback... This is not as easy as it sounds if the value of these controls has a direct impact on the next set of controls bound to the page. There are various methods to do this  - persisting the controls in Session state and reloading on init being one I've used in the past, there's also more code-intensive methods involving intercepting the postback event and reinding there. One of the most elegant methods I've encountered is Denis Bauers' Dynamic Controls placeholder » &lt;a href="http://www.denisbauer.com/ASPNETControls/DynamicControlsPlaceholder.aspx"&gt;link&lt;/a&gt; , its' not perfect but it is a really good solution to this all too frequent problem.&lt;img src="http://mostlylucid.homeip.net/aggbug/446.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.homeip.net/archive/2003/06/04/dynamically-added-controls.aspx</guid>
            <pubDate>Wed, 04 Jun 2003 13:35:00 GMT</pubDate>
            <wfw:comment>http://mostlylucid.homeip.net/comments/446.aspx</wfw:comment>
            <comments>http://mostlylucid.homeip.net/archive/2003/06/04/dynamically-added-controls.aspx#feedback</comments>
            <wfw:commentRss>http://mostlylucid.homeip.net/comments/commentRss/446.aspx</wfw:commentRss>
            <trackback:ping>http://mostlylucid.homeip.net/services/trackbacks/446.aspx</trackback:ping>
        </item>
        <item>
            <title>My little compression helper...improved version</title>
            <link>http://mostlylucid.homeip.net/archive/2004/04/06/my-little-compression-helper.improved-version.aspx</link>
            <description>&lt;p&gt;I posted my compression helper class before and realised almost instantly that it suffered from 'legacy lag' - so it'd been changed so much over the months that it was really bad! &lt;br /&gt;
Anyway, presented below is a modified version of that class (which I've also tried out my new formatting scheme on) as a reminder, it's just a simple wrapper around &lt;a href="http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx"&gt;SharpZipLib&lt;/a&gt;.&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: Verdana"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt; System;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: Verdana"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt; System.Text;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: Verdana"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt; System.IO;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: Verdana"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt; ICSharpCode.SharpZipLib;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: Verdana"&gt;namespace&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt; SerializableJob.Compression&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 1"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;enum&lt;/span&gt; CompressionType&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 1"&gt;            &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 2"&gt;                        &lt;/span&gt;GZip,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 2"&gt;                        &lt;/span&gt;BZip2,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 2"&gt;                        &lt;/span&gt;Zip&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 1"&gt;            &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 1"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; Compression&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 1"&gt;            &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 2"&gt;                        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; CompressionType CompressionProvider = CompressionType.GZip;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 2"&gt;                        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; Stream OutputStream(Stream inputStream)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 2"&gt;                        &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;switch&lt;/span&gt;(CompressionProvider)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 4"&gt;                                                &lt;/span&gt;&lt;span style="COLOR: blue"&gt;case&lt;/span&gt; CompressionType.BZip2:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 5"&gt;                                                            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream(inputStream);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 4"&gt;                                                &lt;/span&gt;&lt;span style="COLOR: blue"&gt;case&lt;/span&gt; CompressionType.GZip:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 5"&gt;                                                            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; ICSharpCode.SharpZipLib.GZip.GZipOutputStream(inputStream);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 4"&gt;                                                &lt;/span&gt;&lt;span style="COLOR: blue"&gt;case&lt;/span&gt; CompressionType.Zip:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 5"&gt;                                                            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; ICSharpCode.SharpZipLib.Zip.ZipOutputStream(inputStream);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 4"&gt;                                                &lt;/span&gt;&lt;span style="COLOR: blue"&gt;default&lt;/span&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 5"&gt;                                                            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; ICSharpCode.SharpZipLib.GZip.GZipOutputStream(inputStream);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 4"&gt;                                                &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 2"&gt;                        &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 2"&gt;                        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; Stream InputStream(Stream inputStream)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 2"&gt;                        &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;switch&lt;/span&gt;(CompressionProvider)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 4"&gt;                                                &lt;/span&gt;&lt;span style="COLOR: blue"&gt;case&lt;/span&gt; CompressionType.BZip2:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 5"&gt;                                                            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; ICSharpCode.SharpZipLib.BZip2.BZip2InputStream(inputStream);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 4"&gt;                                                &lt;/span&gt;&lt;span style="COLOR: blue"&gt;case&lt;/span&gt; CompressionType.GZip:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 5"&gt;                                                            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; ICSharpCode.SharpZipLib.GZip.GZipInputStream(inputStream);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 4"&gt;                                                &lt;/span&gt;&lt;span style="COLOR: blue"&gt;case&lt;/span&gt; CompressionType.Zip:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 5"&gt;                                                            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; ICSharpCode.SharpZipLib.Zip.ZipInputStream(inputStream);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 4"&gt;                                                &lt;/span&gt;&lt;span style="COLOR: blue"&gt;default&lt;/span&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 5"&gt;                                                            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; ICSharpCode.SharpZipLib.GZip.GZipInputStream(inputStream);&lt;span style="mso-tab-count: 1"&gt;            &lt;/span&gt;&lt;span style="mso-tab-count: 5"&gt;                                                            &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 2"&gt;                        &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 1"&gt;            &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 2"&gt;                        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;byte&lt;/span&gt;[] Compress(&lt;span style="COLOR: blue"&gt;byte&lt;/span&gt;[] bytesToCompress)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 2"&gt;                        &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;MemoryStream ms = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; MemoryStream();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;Stream s = OutputStream(ms);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;s.Write(bytesToCompress,0, bytesToCompress.Length);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;s.Close();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;ms.ToArray();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 2"&gt;                        &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 2"&gt;                        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; Compress(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; stringToCompress)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 2"&gt;                        &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;byte&lt;/span&gt;[] compressedData = CompressToByte(stringToCompress);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; strOut = Convert.ToBase64String(compressedData);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; strOut;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 2"&gt;                        &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 2"&gt;                        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;span style="COLOR: blue"&gt;byte&lt;/span&gt;[] CompressToByte(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; stringToCompress)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 2"&gt;                        &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;byte&lt;/span&gt;[] bytData = Encoding.Unicode.GetBytes(stringToCompress);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; Compress(bytData);;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 2"&gt;                        &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 2"&gt;                        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; DeCompress(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; stringToDecompress)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 2"&gt;                        &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; outString = &lt;span style="COLOR: blue"&gt;string&lt;/span&gt;.Empty;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (stringToDecompress == &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 4"&gt;                                                &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 5"&gt;                                                            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;throw&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; ArgumentNullException(&lt;span style="COLOR: maroon"&gt;"stringToDecompress"&lt;/span&gt;,&lt;span style="COLOR: maroon"&gt;"You tried to use an empty string"&lt;/span&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 4"&gt;                                                &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;try&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 4"&gt;                                                &lt;/span&gt;&lt;span style="COLOR: blue"&gt;byte&lt;/span&gt;[] inArr = Convert.FromBase64String(stringToDecompress.Trim());&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 4"&gt;                                                &lt;/span&gt;outString = System.Text.Encoding.Unicode.GetString(DeCompress(inArr));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;catch&lt;/span&gt; (NullReferenceException&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;nEx)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 4"&gt;                                                &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; nEx.Message;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; outString;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 2"&gt;                        &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 2"&gt;                        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;span style="COLOR: blue"&gt;byte&lt;/span&gt;[]&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;DeCompress(&lt;span style="COLOR: blue"&gt;byte&lt;/span&gt;[] bytesToDecompress)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 2"&gt;                        &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;byte&lt;/span&gt;[] writeData = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: blue"&gt;byte&lt;/span&gt;[4096];&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;Stream s2 = InputStream(&lt;span style="COLOR: blue"&gt;new&lt;/span&gt; MemoryStream(bytesToDecompress));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;MemoryStream outStream = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; MemoryStream();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;while&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;true&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 4"&gt;                                                &lt;/span&gt;&lt;span style="COLOR: blue"&gt;int&lt;/span&gt; size = s2.Read(writeData,0,writeData.Length);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 4"&gt;                                                &lt;/span&gt;&lt;span style="COLOR: blue"&gt;if&lt;/span&gt;(size&amp;gt;0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 4"&gt;                                                &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 5"&gt;                                                            &lt;/span&gt;outStream.Write(writeData,0,size);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 4"&gt;                                                &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 4"&gt;                                                &lt;/span&gt;&lt;span style="COLOR: blue"&gt;else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 4"&gt;                                                &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 5"&gt;                                                            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;break&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 4"&gt;                                                &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;s2.Close();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;byte&lt;/span&gt;[] outArr = outStream.ToArray();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;outStream.Close();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 3"&gt;                                    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; outArr;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 2"&gt;                        &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;span style="mso-tab-count: 1"&gt;            &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;/div&gt;
?&amp;gt;&lt;img src="http://mostlylucid.homeip.net/aggbug/797.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.homeip.net/archive/2004/04/06/my-little-compression-helper.improved-version.aspx</guid>
            <pubDate>Tue, 06 Apr 2004 18:31:00 GMT</pubDate>
            <wfw:comment>http://mostlylucid.homeip.net/comments/797.aspx</wfw:comment>
            <comments>http://mostlylucid.homeip.net/archive/2004/04/06/my-little-compression-helper.improved-version.aspx#feedback</comments>
            <wfw:commentRss>http://mostlylucid.homeip.net/comments/commentRss/797.aspx</wfw:commentRss>
            <trackback:ping>http://mostlylucid.homeip.net/services/trackbacks/797.aspx</trackback:ping>
        </item>
        <item>
            <title>Crazy busy at work, back soon!</title>
            <link>http://mostlylucid.homeip.net/archive/2007/10/17/crazy-busy-at-work-back-soon.aspx</link>
            <description>&lt;p&gt;Things have been insane at work over the past few days...back to this soon! Plan to get a nice 'Amazon book suggestion' tool on the site; going to let readers suggest books on various topics by entering an &lt;a href="http://en.wikipedia.org/wiki/ISBN"&gt;ISBN&lt;/a&gt; and then provide the country appropriate URL to buy that book. Still fiddling with the new Amazon web services bits but it's nearly there...&lt;/p&gt;  &lt;p&gt;See you at the weekend (probably!)&lt;/p&gt;&lt;img src="http://mostlylucid.homeip.net/aggbug/1226.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.homeip.net/archive/2007/10/17/crazy-busy-at-work-back-soon.aspx</guid>
            <pubDate>Wed, 17 Oct 2007 20:44:05 GMT</pubDate>
            <wfw:comment>http://mostlylucid.homeip.net/comments/1226.aspx</wfw:comment>
            <comments>http://mostlylucid.homeip.net/archive/2007/10/17/crazy-busy-at-work-back-soon.aspx#feedback</comments>
            <wfw:commentRss>http://mostlylucid.homeip.net/comments/commentRss/1226.aspx</wfw:commentRss>
            <trackback:ping>http://mostlylucid.homeip.net/services/trackbacks/1226.aspx</trackback:ping>
        </item>
    </channel>
</rss>