<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>ASP.NET</title>
        <link>http://mostlylucid.homeip.net/category/5.aspx</link>
        <description>ASP.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>Dumb little recursive, generic FindControl method...</title>
            <link>http://mostlylucid.homeip.net/archive/2008/05/14/dumb-little-recursive-generic-findcontrol-method.aspx</link>
            <description>&lt;p&gt;Doing some app building and I needed to use FindControl to manipulate a control in the OnItemCreated event in a Repeater...well, to save a bit of typing I came up with this extension method:&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;namespace&lt;/span&gt; Presentation&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; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ControlHelper&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;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; T FindControl&amp;lt;T&amp;gt;(&lt;span style="color: blue"&gt;this&lt;/span&gt; System.Web.UI.&lt;span style="color: #2b91af"&gt;Control&lt;/span&gt; root, &lt;span style="color: blue"&gt;string&lt;/span&gt; controlId, &lt;span style="color: blue"&gt;bool&lt;/span&gt; recursive) &lt;span style="color: blue"&gt;where&lt;/span&gt; T: System.Web.UI.&lt;span style="color: #2b91af"&gt;Control&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;(root.Controls!=&lt;span style="color: blue"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; root.Controls.Count&amp;gt;0 &amp;amp;&amp;amp; root.FindControl(controlId) != &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: blue"&gt;return&lt;/span&gt; root.FindControl(controlId) &lt;span style="color: blue"&gt;as&lt;/span&gt; T;&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;span style="color: blue"&gt;if&lt;/span&gt;(recursive)&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; FindControl&amp;lt;T&amp;gt;(root, controlId, recursive);&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;null&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;/div&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Pretty simple but it lets me do the following :&lt;/p&gt;  &lt;div style="font-size: 8pt; background: white; color: black; font-family: verdana"&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;var&lt;/span&gt; link = e.Row.FindControl&amp;lt;&lt;span style="color: #2b91af"&gt;HyperLink&lt;/span&gt;&amp;gt;(&lt;span style="color: #a31515"&gt;"MenuLink"&lt;/span&gt;, &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;if&lt;/span&gt;(link!=&lt;span style="color: blue"&gt;null&lt;/span&gt;) link.NavigateUrl=&lt;span style="color: #a31515"&gt;"http://www.mostlylucid.net"&lt;/span&gt;;&lt;/p&gt;   &lt;/div&gt;    &lt;p style="margin: 0px"&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Not a HUGE time-saver but it just makes my code a bit tidier...&lt;/p&gt;&lt;img src="http://mostlylucid.homeip.net/aggbug/1282.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.homeip.net/archive/2008/05/14/dumb-little-recursive-generic-findcontrol-method.aspx</guid>
            <pubDate>Wed, 14 May 2008 18:32:39 GMT</pubDate>
            <wfw:comment>http://mostlylucid.homeip.net/comments/1282.aspx</wfw:comment>
            <comments>http://mostlylucid.homeip.net/archive/2008/05/14/dumb-little-recursive-generic-findcontrol-method.aspx#feedback</comments>
            <wfw:commentRss>http://mostlylucid.homeip.net/comments/commentRss/1282.aspx</wfw:commentRss>
            <trackback:ping>http://mostlylucid.homeip.net/services/trackbacks/1282.aspx</trackback:ping>
        </item>
        <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>The state of the art...spelunking in the .NET Source</title>
            <link>http://mostlylucid.homeip.net/archive/2008/04/30/the-state-of-the-art.spelunking-in-the-.net-source.aspx</link>
            <description>&lt;p&gt;One of the nice things about being on the &lt;a href="http://www.asp.net" target="_blank"&gt;ASP.NET&lt;/a&gt; team is that I finally get to scratch the various itches (on that topic, &lt;a href="http://en.wikipedia.org/wiki/Poison_oak" target="_blank"&gt;Poison Oak&lt;/a&gt;...very itchy!) that have been bugging me for a few years. I finally get to play around with the source and see what effect changing various bits and bobs has on how stuff works.  I really do recommend spending some time &lt;a href="http://en.wikipedia.org/wiki/Caving" target="_blank"&gt;spelunking&lt;/a&gt; in the .NET Source code. You can actually get this source (in a very non-official and non-supported way) using &lt;a href="http://www.codeplex.com/NetMassDownloader" target="_blank"&gt;.NET Mass Downloader&lt;/a&gt;. This is just such an awesome resource...want to see how a server control like the Repeater works...look at the source! Trying to figure out why Viewstate behaves in a weird way...well, you get the idea. Right now you can get the source for these .NET 3.5 assemblies...that is a LOT of source!&lt;/p&gt; &lt;p&gt;Mscorlib.DLL &lt;br /&gt;System.DLL &lt;br /&gt;System.Data.DLL &lt;br /&gt;System.Drawing.DLL &lt;br /&gt;System.Web.DLL &lt;br /&gt;System.Web.Extensions.DLL &lt;br /&gt;System.Windows.Forms.DLL &lt;br /&gt;System.XML.DLL &lt;br /&gt;WPF (UIAutomation.DLL, System.Windows.DLL, System.Printing.DLL, System.Speech.DLL, WindowsBase.DLL, WindowsFormsIntegration.DLL, Presentation.DLL, some others) &lt;br /&gt;Microsoft.VisualBasic.DLL &lt;/p&gt;&lt;p&gt;I don't know the official word on this yet but I'd be surprised if we don't continue adding to this list in future. From my team you can of course get the &lt;a href="http://www.asp.net/mvc" target="_blank"&gt;ASP.NET MVC&lt;/a&gt; &lt;a href="http://www.codeplex.com/aspnet" target="_blank"&gt;source&lt;/a&gt;  already in &lt;a href="http://www.codeplex.com/" target="_blank"&gt;Codeplex&lt;/a&gt; and we'll be adding even more projects to this site in the very near future...in fact we now operate a 'why can't we release the source policy'...&lt;/p&gt;&lt;img src="http://mostlylucid.homeip.net/aggbug/1274.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.homeip.net/archive/2008/04/30/the-state-of-the-art.spelunking-in-the-.net-source.aspx</guid>
            <pubDate>Thu, 01 May 2008 04:08:59 GMT</pubDate>
            <wfw:comment>http://mostlylucid.homeip.net/comments/1274.aspx</wfw:comment>
            <comments>http://mostlylucid.homeip.net/archive/2008/04/30/the-state-of-the-art.spelunking-in-the-.net-source.aspx#feedback</comments>
            <wfw:commentRss>http://mostlylucid.homeip.net/comments/commentRss/1274.aspx</wfw:commentRss>
            <trackback:ping>http://mostlylucid.homeip.net/services/trackbacks/1274.aspx</trackback:ping>
        </item>
        <item>
            <title>Where should the ASP.NET team release stuff?</title>
            <link>http://mostlylucid.homeip.net/archive/2008/04/23/where-should-the-asp.net-team-release-stuff.aspx</link>
            <description>&lt;p&gt;&lt;strong&gt;What about Code Gallery? I'm changing this post slightly. The consensus right now is that Codeplex releases must have source, the ASP.NET site is the right place for release (mainstream, public stuff). What about the non-mainstream, early preview,  binary only releases? Would you prefer these to stay on Code Gallery (e.g., like &lt;/strong&gt;&lt;a href="http://code.msdn.com/dynamicdata"&gt;&lt;strong&gt;Dynamic Data&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;) and just link to the site from somewhere on ASP.NET site or should we create a 'special area' on the &lt;/strong&gt;&lt;a href="http://www.asp.net"&gt;&lt;strong&gt;ASP.NET&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; site (like 'thelab' or somesuch) and provide details and link to specific downloads...or do you prefer these stay on &lt;a href="http://connect.microsoft.com"&gt;Connect&lt;/a&gt;?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;So, dear customer I have a question for you (as apparently I've lost all perspective)...as I've written before I'm working on the releases for the ASP.NET team and one of the challenges I've been facing is *where* we should release stuff. &lt;a href="http://www.hanselman.com/blog/PuttingASPNETDynamicDataIntoContext.aspx"&gt;Scott Hanselman&lt;/a&gt; wrote about this topic at the bottom of &lt;a href="http://www.hanselman.com/blog/PuttingASPNETDynamicDataIntoContext.aspx"&gt;this post&lt;/a&gt; and it's been something which has been vexing me for a few weeks. Right now we have 4 main places where I can stick content:&lt;/p&gt;  &lt;p&gt;1. &lt;a href="http://connect.microsoft.com"&gt;Connect&lt;/a&gt;;  old and faithful (and a bit clunky to use) we use this site for giving specific group access to really early previews / documents etc...this stuff has to be covered by confidentiality and legal agreements so we have to know who gets it.&lt;/p&gt;  &lt;p&gt;2. &lt;a href="http://www.asp.net"&gt;ASP.NET main site&lt;/a&gt;; the 'main' site...I think of this as the place where you can expect to find stuff 'you can just use', more like the network tv channels, mainstream stuff.&lt;/p&gt;  &lt;p&gt;3. &lt;a href="http://www.codeplex.com/aspnet"&gt;Codeplex&lt;/a&gt;; fairly new to our team, I hae fairly strong views on this and want to keep it for mainly source code focused releases, i.e., you should expect to always be able to browse the source, download, compile and mess around with what you find there. The stuff here will be around for a while and will be updated regularly.&lt;/p&gt;  &lt;p&gt;4. &lt;a href="http://code.msdn.com"&gt;Code Gallery&lt;/a&gt;; the wild-card and partly the reason for &lt;a href="http://www.hanselman.com/blog/PuttingASPNETDynamicDataIntoContext.aspx"&gt;ScottHa's post&lt;/a&gt;. In essence this site is fairly similar to CodePlex (it shares the same code-base for the site) but it's reserved for MS internal use...in other words only Microsoft people post on there. I chose to use this site to host the &lt;a href="http://code.msdn.com/dynamicdata"&gt;Dynamic Data Preview&lt;/a&gt; over the Connect site...mainly because it's easier to use and just seems better. In addition the Dynamic Data bits are really mostly binary...and will go away once we wrap the bits into a release at some point.&lt;/p&gt;  &lt;p&gt;Here's a question for you...have I made things worse? Would you prefer that we:&lt;/p&gt;  &lt;p&gt;1. Put all mainstream stuff on the ASP.NET site and everything else on the one Codeplex site (&lt;a href="http://www.codeplex.com/aspnet"&gt;http://www.codeplex.com/aspnet&lt;/a&gt;)? Bearing in mind the Codeplex site has limited navigation and we could be talking about a lot of stuff!&lt;/p&gt;  &lt;p&gt;2. Put everything on ASP.NET with some sort of subdivision within the site for 'mainstream' and 'edgier, less stable stuff'. Possibly 'randomizing' the purpose of the ASP.NET site...&lt;/p&gt;  &lt;p&gt;3. How we have it right now (only maybe linked from the main ASP.NET site to Codeplex and Code Gallery). Lots of sites maybe not obvious where you find stuff.&lt;/p&gt;  &lt;p&gt;4. Something else I haven't thought of?&lt;/p&gt;  &lt;p&gt;This is a topic where you can make a real difference, these releases are for you (as I can no longer think like a customer...pah!), where do you want them?&lt;/p&gt;  &lt;p&gt;Should add if you don't want to comment openly you can mail me at scott.galloway_at_microsoft.com or through the contact form on this site.&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;UPDATE:&lt;/font&gt; Thanks to &lt;a href="http://www.hanselman.com"&gt;ScottHa&lt;/a&gt; for 'Twittering' this post...great responses and I WILL take the feedback seriously...watch this space!&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;UPDATE: &lt;/font&gt;And so the floodgates open...&lt;a href="http://blogs.msdn.com/brada"&gt;BradA&lt;/a&gt; has just linked to this post...looking forward to a lot more feedback!&lt;/p&gt;&lt;img src="http://mostlylucid.homeip.net/aggbug/1268.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.homeip.net/archive/2008/04/23/where-should-the-asp.net-team-release-stuff.aspx</guid>
            <pubDate>Thu, 24 Apr 2008 05:17:42 GMT</pubDate>
            <wfw:comment>http://mostlylucid.homeip.net/comments/1268.aspx</wfw:comment>
            <comments>http://mostlylucid.homeip.net/archive/2008/04/23/where-should-the-asp.net-team-release-stuff.aspx#feedback</comments>
            <slash:comments>57</slash:comments>
            <wfw:commentRss>http://mostlylucid.homeip.net/comments/commentRss/1268.aspx</wfw:commentRss>
            <trackback:ping>http://mostlylucid.homeip.net/services/trackbacks/1268.aspx</trackback:ping>
        </item>
        <item>
            <title>Work in progress, Response.RelativeRedirect</title>
            <link>http://mostlylucid.homeip.net/archive/2008/04/23/work-in-progress-response.relativeredirect.aspx</link>
            <description>&lt;p&gt;Inspired by &lt;a href="http://www.securitybughunter.com/2007/04/bypassing-arbitrary-url.html"&gt;this post&lt;/a&gt;, only covers simple cases but it's a start. Essentially this is an extended version of Response which only allows redirection to pages within the same site...so allows /default.aspx, does not allow http://www.evildomain.com/default.aspx. I've also ripped off a member of my team's excellent work on &lt;a href="http://weblogs.asp.net/infinitiesloop/archive/2007/09/25/response-redirect-into-a-new-window-with-extension-methods.aspx"&gt;Response.Redirecting to a new window&lt;/a&gt;. This method uses extension methods, to use it just drop the file in App_Code and Response gets two new members. Oh and it's incomplete because I didn't account for encoded / obfuscated URLs...I'll update when I do...&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;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.Web;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Web.UI;&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; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;EnhancedRedirect&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;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; RelativeRedirect(&lt;span style="color: blue"&gt;this&lt;/span&gt; &lt;span style="color: #2b91af"&gt;HttpResponse&lt;/span&gt; response, &lt;span style="color: blue"&gt;string&lt;/span&gt; path)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;    {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;        RelativeRedirect(response, path, &lt;span style="color: #a31515"&gt;"_self"&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;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; RelativeRedirect(&lt;span style="color: blue"&gt;this&lt;/span&gt; &lt;span style="color: #2b91af"&gt;HttpResponse&lt;/span&gt; response, &lt;span style="color: blue"&gt;string&lt;/span&gt; path, &lt;span style="color: blue"&gt;string&lt;/span&gt; target)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;    {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;        RelativeRedirect(response, path, target, &lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty);&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;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; RelativeRedirect(&lt;span style="color: blue"&gt;this&lt;/span&gt; &lt;span style="color: #2b91af"&gt;HttpResponse&lt;/span&gt; response, &lt;span style="color: blue"&gt;string&lt;/span&gt; path, &lt;span style="color: blue"&gt;string&lt;/span&gt; target, &lt;span style="color: blue"&gt;string&lt;/span&gt; windowFeatures)&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(path) &amp;amp;&amp;amp; !path.StartsWith(&lt;span style="color: #a31515"&gt;"http:"&lt;/span&gt;) &amp;amp;&amp;amp; !path.Contains(&lt;span style="color: #a31515"&gt;"//"&lt;/span&gt;))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            Redirect(response, path, target, windowFeatures);&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: blue"&gt;throw&lt;/span&gt; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;InvalidOperationException&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"Cannot redirect outside of the current site."&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;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Redirect(&lt;span style="color: blue"&gt;this&lt;/span&gt; &lt;span style="color: #2b91af"&gt;HttpResponse&lt;/span&gt; response, &lt;span style="color: blue"&gt;string&lt;/span&gt; url, &lt;span style="color: blue"&gt;string&lt;/span&gt; target, &lt;span style="color: blue"&gt;string&lt;/span&gt; windowFeatures)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;    {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;        Redirect(response, path, target, &lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty);&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;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Redirect(&lt;span style="color: blue"&gt;this&lt;/span&gt; &lt;span style="color: #2b91af"&gt;HttpResponse&lt;/span&gt; response, &lt;span style="color: blue"&gt;string&lt;/span&gt; url, &lt;span style="color: blue"&gt;string&lt;/span&gt; target, &lt;span style="color: blue"&gt;string&lt;/span&gt; windowFeatures)&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;String&lt;/span&gt;.IsNullOrEmpty(target) || target.Equals(&lt;span style="color: #a31515"&gt;"_self"&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;StringComparison&lt;/span&gt;.OrdinalIgnoreCase)) &amp;amp;&amp;amp; &lt;span style="color: #2b91af"&gt;String&lt;/span&gt;.IsNullOrEmpty(windowFeatures))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;        {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            response.Redirect(url);&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;Page&lt;/span&gt; page = (&lt;span style="color: #2b91af"&gt;Page&lt;/span&gt;)&lt;span style="color: #2b91af"&gt;HttpContext&lt;/span&gt;.Current.Handler;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            &lt;span style="color: blue"&gt;if&lt;/span&gt; (page == &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: blue"&gt;throw&lt;/span&gt; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;InvalidOperationException&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"Cannot redirect to new window outside Page context."&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            url = page.ResolveClientUrl(url);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            &lt;span style="color: blue"&gt;string&lt;/span&gt; script;&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;String&lt;/span&gt;.IsNullOrEmpty(windowFeatures))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;                script = &lt;span style="color: #a31515"&gt;@"window.open(""{0}"", ""{1}"", ""{2}"");"&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;                script = &lt;span style="color: #a31515"&gt;@"window.open(""{0}"", ""{1}"");"&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            script = &lt;span style="color: #2b91af"&gt;String&lt;/span&gt;.Format(script, url, target, windowFeatures);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;            &lt;span style="color: #2b91af"&gt;ScriptManager&lt;/span&gt;.RegisterStartupScript(page, &lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;Page&lt;/span&gt;), &lt;span style="color: #a31515"&gt;"Redirect"&lt;/span&gt;, script, &lt;span style="color: blue"&gt;true&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;/div&gt;&lt;img src="http://mostlylucid.homeip.net/aggbug/1267.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.homeip.net/archive/2008/04/23/work-in-progress-response.relativeredirect.aspx</guid>
            <pubDate>Wed, 23 Apr 2008 22:00:43 GMT</pubDate>
            <wfw:comment>http://mostlylucid.homeip.net/comments/1267.aspx</wfw:comment>
            <comments>http://mostlylucid.homeip.net/archive/2008/04/23/work-in-progress-response.relativeredirect.aspx#feedback</comments>
            <wfw:commentRss>http://mostlylucid.homeip.net/comments/commentRss/1267.aspx</wfw:commentRss>
            <trackback:ping>http://mostlylucid.homeip.net/services/trackbacks/1267.aspx</trackback:ping>
        </item>
        <item>
            <title>The boring bit at the end...</title>
            <link>http://mostlylucid.homeip.net/archive/2008/04/16/the-boring-bit-at-the-end.aspx</link>
            <description>&lt;p&gt;I've posted about this before but one of my main functions on my new team is managing all of our releases. We have a &lt;a href="http://code.msdn.microsoft.com/dynamicdata" target="_blank"&gt;large&lt;/a&gt; &lt;a href="https://www.codeplex.com/aspnet" target="_blank"&gt;number&lt;/a&gt; of these both public and private (to closed groups like &lt;a href="http://www.aspinsiders.com/" target="_blank"&gt;ASPInsiders&lt;/a&gt;). Of course I really just do the bit at the end, people like &lt;a href="http://www.haacked.com" target="_blank"&gt;Phil&lt;/a&gt;, &lt;a href="http://weblogs.asp.net/leftslipper/" target="_blank"&gt;Eilon&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/scothu/" target="_blank"&gt;Scott&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/davidebb/default.aspx" target="_blank"&gt;David&lt;/a&gt; (to name but a few) do 99.9% of the actual work. &lt;br /&gt;Anyway, I mention this by way of an opening to our &lt;a href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=aspnet&amp;amp;ReleaseId=12640" target="_blank"&gt;latest release&lt;/a&gt; of the MVC source code complete with Unit Tests, Visual Studio Templates and just some great changes which my boss&lt;sup&gt;3&lt;/sup&gt; &lt;a href="http://weblogs.asp.net/scottgu" target="_blank"&gt;Scott Guthrie&lt;/a&gt; &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/04/16/asp-net-mvc-source-refresh-preview.aspx" target="_blank"&gt;just announced&lt;/a&gt;. I spent most the day and made a grand total of &lt;a href="http://www.codeplex.com/aspnet/SourceControl/ListDownloadableCommits.aspx" target="_blank"&gt;3553 changesets&lt;/a&gt; before getting the source code uploaded correctly. The observant will have noticed that the &lt;a href="http://www.mostlylucid.net/archive/2008/04/15/why-do-single-chances-make-me-nervous.life-should-come-with.aspx" target="_blank"&gt;post yesterday&lt;/a&gt; was a little diffing tool...which I built a new source tree updater system on for our Codeplex releases; I'll release it once I clean the source up a bit...I probably wound up rewriting 3/4 of it today!&lt;br /&gt;Anyway, nice to do some coding again, but stress, Guarana, coffee and little sleep make me a bit on the frantic side...and feeling very spaced all day. Just as well that most of my colleagues were &lt;a href="http://msexchangeteam.com/archive/2004/07/12/180899.aspx" target="_blank"&gt;OOF&lt;/a&gt; at the &lt;a href="http://mvp.support.microsoft.com/gp/MVPsummit" target="_blank"&gt;MVP Summit&lt;/a&gt;. Anyway, I should now be in bed...lots to do again tomorrow (last couple of releases took longer than I'd planned so I have a backlog...hmmphh...). Oh, and of course I have to do some cleaning before my cleaner comes...yup, I know weird!&lt;/p&gt;&lt;img src="http://mostlylucid.homeip.net/aggbug/1266.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.homeip.net/archive/2008/04/16/the-boring-bit-at-the-end.aspx</guid>
            <pubDate>Thu, 17 Apr 2008 05:56:27 GMT</pubDate>
            <wfw:comment>http://mostlylucid.homeip.net/comments/1266.aspx</wfw:comment>
            <comments>http://mostlylucid.homeip.net/archive/2008/04/16/the-boring-bit-at-the-end.aspx#feedback</comments>
            <wfw:commentRss>http://mostlylucid.homeip.net/comments/commentRss/1266.aspx</wfw:commentRss>
            <trackback:ping>http://mostlylucid.homeip.net/services/trackbacks/1266.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>The ASP.NET MVC Framework Source goes live on Codeplex!</title>
            <link>http://mostlylucid.homeip.net/archive/2008/03/21/the-asp.net-mvc-framework-source-goes-live-on-codeplex.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://www.codeplex.com/aspnet" target="_blank"&gt;This&lt;/a&gt; is the first big thing I worked on in the ASP.NET team, the release of the &lt;a href="http://www.codeplex.com/aspnet" target="_blank"&gt;ASP.NET MVC Source Code&lt;/a&gt; to &lt;a href="http://www.codeplex.com/" target="_blank"&gt;Codeplex&lt;/a&gt;. &lt;a href="http://weblogs.asp.net/scottgu" target="_blank"&gt;Scott Guthrie&lt;/a&gt; &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/03/21/asp-net-mvc-source-code-now-available.aspx" target="_blank"&gt;announced this&lt;/a&gt;  a few minutes ago and as he says it's the first of a number we have planned over the next while. &lt;br /&gt;What is surprising is how much time and how many people it takes to pull a release like this together...but I really think it's the start of something really amazing and to quote a corny phrase 'you ain't seen nothing yet!' &lt;/p&gt;&lt;img src="http://mostlylucid.homeip.net/aggbug/1255.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.homeip.net/archive/2008/03/21/the-asp.net-mvc-framework-source-goes-live-on-codeplex.aspx</guid>
            <pubDate>Fri, 21 Mar 2008 14:54:33 GMT</pubDate>
            <wfw:comment>http://mostlylucid.homeip.net/comments/1255.aspx</wfw:comment>
            <comments>http://mostlylucid.homeip.net/archive/2008/03/21/the-asp.net-mvc-framework-source-goes-live-on-codeplex.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://mostlylucid.homeip.net/comments/commentRss/1255.aspx</wfw:commentRss>
            <trackback:ping>http://mostlylucid.homeip.net/services/trackbacks/1255.aspx</trackback:ping>
        </item>
        <item>
            <title>Ack Ack!</title>
            <link>http://mostlylucid.homeip.net/archive/2008/03/07/ack-ack.aspx</link>
            <description>&lt;p&gt;Well, it's the last day in my first week with the ASP.NET team (kind of, a few people are off to &lt;a href="http://visitmix.com/"&gt;MIX&lt;/a&gt;) . It's been a pretty interesting week...lots to learn etc...I'm still getting used to the team dynamic and my place in that (I think everyone else is a senior...I'm not due to some dubious career choices over the years). Still, I have lots of responsibility and a lot of work to do over the next short while...mostly focused around releases and our process for some future work (I *did* come from Project remember ;-)). It has been a blast playing with all the latest and greatest features (many of which we just &lt;a href="http://www.mostlylucid.net/archive/2008/03/05/live-for-mix-08---new-asp.net-releases.aspx"&gt;released new previews of&lt;/a&gt;) and getting a lot of insight as to where &lt;a href="http://www.asp.net"&gt;ASP.NET&lt;/a&gt; is going (and yes, having pangs for my old life where I got to use this stuff to &lt;a href="http://www.stormid.com"&gt;build applications for customers&lt;/a&gt;). Still I have a ton to learn and it's going to be an interesting journey...whish me luck!&lt;/p&gt;&lt;img src="http://mostlylucid.homeip.net/aggbug/1252.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.homeip.net/archive/2008/03/07/ack-ack.aspx</guid>
            <pubDate>Fri, 07 Mar 2008 19:18:52 GMT</pubDate>
            <wfw:comment>http://mostlylucid.homeip.net/comments/1252.aspx</wfw:comment>
            <comments>http://mostlylucid.homeip.net/archive/2008/03/07/ack-ack.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://mostlylucid.homeip.net/comments/commentRss/1252.aspx</wfw:commentRss>
            <trackback:ping>http://mostlylucid.homeip.net/services/trackbacks/1252.aspx</trackback:ping>
        </item>
        <item>
            <title>Yik yak</title>
            <link>http://mostlylucid.homeip.net/archive/2008/02/25/yik-yak.aspx</link>
            <description>&lt;p&gt;So, anyone remember my ASP.NET forums password? Umm...actually it's been so long since I've used it I think it expired (the password reminder page gets my hopes up). Anyway just signed up for a new account and answered a couple of questions.  Really can't wait to get started in my new job! &lt;br /&gt;Anyway, hope to see some of my faithful reader on the &lt;a href="http://forums.asp.net/" target="_blank"&gt;ASP.NET forum&lt;/a&gt; in future and expect to see a few posts with me making a fool of myself when getting up to speed on all the new hotness my future team is working on. I have some embryonic stuff I might wind up writing soon, number one is an XML configuration method for &lt;a href="http://www.asp.net/downloads/3.5-extensions/" target="_blank"&gt;ASP.NET MVC&lt;/a&gt;...which I have no doubt completely goes against some core philosophy of the framework but I think it'd be cool to separate the controller mapping from code into some external config file (note, I have NO idea if this already planned...ain't joined the team yet!).&lt;br /&gt;Right, off to bed...going to the dentist tomorrow to have my pizza fractured teeth fixed (as in a pizza caused one of my very british teeth to fragment...)&lt;/p&gt;&lt;img src="http://mostlylucid.homeip.net/aggbug/1245.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.homeip.net/archive/2008/02/25/yik-yak.aspx</guid>
            <pubDate>Tue, 26 Feb 2008 07:34:33 GMT</pubDate>
            <wfw:comment>http://mostlylucid.homeip.net/comments/1245.aspx</wfw:comment>
            <comments>http://mostlylucid.homeip.net/archive/2008/02/25/yik-yak.aspx#feedback</comments>
            <wfw:commentRss>http://mostlylucid.homeip.net/comments/commentRss/1245.aspx</wfw:commentRss>
            <trackback:ping>http://mostlylucid.homeip.net/services/trackbacks/1245.aspx</trackback:ping>
        </item>
    </channel>
</rss>