<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://mbrownchicago.spaces.live.com/mmm2008-07-24_12.50/rsspretty.aspx?rssquery=en-US;http%3a%2f%2fmbrownchicago.spaces.live.com%2fblog%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Brownie Points: Blog</title><description /><link>http://mbrownchicago.spaces.live.com/blog</link><language>en-US</language><pubDate>Fri, 05 Sep 2008 20:42:24 GMT</pubDate><lastBuildDate>Fri, 05 Sep 2008 20:42:24 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><cf:parentRSS>http://mbrownchicago.spaces.live.com/feed.rss</cf:parentRSS><live:type>blog</live:type><live:identity><live:id>2459489012663404964</live:id><live:alias>mbrownchicago</live:alias></live:identity><image><title>Brownie Points: Blog</title><url>http://blufiles.storage.live.com/y1pSHtrknD16T8WaQmMIeMOctQiMhwkMhhOf1PlveDjzQj21sujEylyahdnmja9xnax</url><link>http://mbrownchicago.spaces.live.com/blog</link></image><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>What I'm Working On</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!918.entry</link><description>&lt;p&gt;Here's a screen shot/teaser of &amp;quot;Flow&amp;quot;, a pet project of mine. &lt;p&gt;&lt;a href="http://5rlkhw.blu.livefilestore.com/y1pscspuw82IzJwv-Ill6mXFHb63EQEBjGMHvvyalDKN-gGvgYLIibjJ1Q-PJAceidOMvqwhd7wtA5I1JqNCd7--A?PARTNER=WRITER"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=389 alt=image src="http://5rlkhw.blu.livefilestore.com/y1pRhnaILJLtiWdcY43A9XbDQ_kWpZrXuOo1y0x5RbSCrTFQJoTTgkdOMNJQMZM5YtHa3dO0hrgrfk94M8U1_5WCw?PARTNER=WRITER" width=644 border=0&gt;&lt;/a&gt;  &lt;p&gt;It may not look like much, but it's deceptive. Seeing it in action is a totally different experience. I'm not quite ready to show that to you though :P&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+What+I'm+Working+On&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!918.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!918.entry</guid><pubDate>Sat, 30 Aug 2008 21:38:34 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!918/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!918.entry#comment</wfw:comment><dcterms:modified>2008-08-30T21:38:34Z</dcterms:modified></item><item><title>PnP Design for Operations</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!909.entry</link><description>&lt;p&gt;So while I was testing out &amp;quot;Flow&amp;quot;, I came across a link to a Patterns and Practices project that I hadn't seen before called &lt;a href="http://www.codeplex.com/dfo" target="_blank"&gt;Design for Operations&lt;/a&gt;. Basically, this project provides guidance and tools for placing instrumentation and management hooks into your application so that it can work with System Center and other management tools. There have been a number of times where I thought it would be nice to add this kind of functionality into an enterprise app and leverage the capabilities of SCOM (formerly MOM) to provide rich management and metrics; but I didn't have a clue where to start. This package looks like it would give a huge jumpstart into doing just that. &lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+PnP+Design+for+Operations&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!909.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!909.entry</guid><pubDate>Wed, 27 Aug 2008 06:04:29 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!909/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!909.entry#comment</wfw:comment><dcterms:modified>2008-08-27T06:04:29Z</dcterms:modified></item><item><title>Turn Off Vista Autotuning</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!908.entry</link><description>&lt;p&gt;If you have an older router, Vista's network auto tuning feature will cause it to get confused. Some suggest turning off Stateful Packet Inspection (or SPI) on the router will fix the issue. Others say updating the firmware will work. If your router does not have an option to turn off SPI or you do not want to do so, or if your router manufacturer no longer provides firmware updates, the last option is to turn off autotuning. &lt;p&gt;Here's the magic command line to do so: &lt;div&gt; &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none"&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none"&gt;c:\&lt;span style="color:#006080"&gt;&amp;gt;&lt;/span&gt;netsh interface tcp set global autotuninglevel=disabled &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;I recently rebuilt a laptop and had a hard time finding this solution again. Now it's documented in a well known place for me (and you as well).&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+Turn+Off+Vista+Autotuning&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!908.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!908.entry</guid><pubDate>Tue, 26 Aug 2008 17:27:34 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!908/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!908.entry#comment</wfw:comment><dcterms:modified>2008-08-26T17:27:34Z</dcterms:modified></item><item><title>LiveID SDK</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!832.entry</link><description>I&amp;amp;apos;m trying out the sample app in the Windows Live ID SDK.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+LiveID+SDK&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!832.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!832.entry</guid><pubDate>Fri, 22 Aug 2008 17:45:29 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!832/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!832.entry#comment</wfw:comment><dcterms:modified>2008-08-22T17:45:29Z</dcterms:modified></item><item><title>NDepend</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!804.entry</link><description>&lt;p&gt;Recently, &lt;a href="http://codebetter.com/blogs/patricksmacchia/default.aspx" target="_blank"&gt;Patrick Smacchia&lt;/a&gt; dropped by and left a note showing how he &lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2008/08/13/net-3-5-sp1-changes-overview.aspx" target="_blank"&gt;used NDepend&lt;/a&gt; to see numerically what has changed between 3.5 and 3.5 SP! This prompted me to look a little closer at the tool. If you want to capture metrics on your .NET code, NDepend does a great job at doing it. &lt;p&gt;Similar to the capabilities that TestDriven.NET gives to the lower entries in the Visual Studio product line in the arena of Unit Testing, NDepend provides code metrics for those who aren't using Team System. I would argue it goes a bit beyond the built-in Team System code metrics tools. NDepend has a query language called CQL that allows you to specify what metrics are important to you and what your alert levels are for those metrics. &lt;p&gt;There is a lot to explore in this area, especially when looking at continuous integration and build verification. Before I even spend my time looking at code for a review, I can have NDepend look over the code and tell me what's missing. Once I've made the queries, NDepend will consistently catch code that breaks my rules. Giving me more time to focus on building another O/RM.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+NDepend&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!804.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!804.entry</guid><pubDate>Thu, 14 Aug 2008 13:58:02 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!804/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!804.entry#comment</wfw:comment><dcterms:modified>2008-08-14T13:58:02Z</dcterms:modified></item><item><title>VS2008/.NET Framework 3.5 SP1 Coming Soon</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!798.entry</link><description>&lt;p&gt;According to this blurb on MSDN Subscriber Downloads &lt;p&gt;&lt;a href="http://5rlkhw.blu.livefilestore.com/y1phoFh3vW7kp3PwNIPk8uj1-wWaE9_SKntJX2peZNbKT-eiCc804JwgVNSJpN1Y0UunRjgVS80cKM?PARTNER=WRITER"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" border=0 alt=image src="http://5rlkhw.blu.livefilestore.com/y1p4jSmOZNs5OPd-bie-QtmSHXdC7f98QOFUQKZbXQbpVdBpMrv2KhRDO3vdqL6Wjnvhr6WkzozUvhgPYK12AaFBQ?PARTNER=WRITER" width=724 height=92&gt;&lt;/a&gt;  &lt;p&gt;the VS2008/.NET 3.5 SP1 download will be available on the 11th. Some people have noticed that SQL Server 08 installs .NET 3.5 SP1. So it's almost here. I played around with the SP1 beta and liked what I saw. So it's going to a tough weekend for me.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+VS2008%2f.NET+Framework+3.5+SP1+Coming+Soon&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!798.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!798.entry</guid><pubDate>Fri, 08 Aug 2008 14:18:39 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!798/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!798.entry#comment</wfw:comment><dcterms:modified>2008-08-08T14:18:39Z</dcterms:modified></item><item><title>SQL Server 08 Get It While It's Hot</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!793.entry</link><description>&lt;p&gt;The final piece of the 2008 Launch, SQL Server 2008 (formerly known as Katmai), has finally gone Gold. For those with an MSDN subscription, you can download the bits now on subscriber downloads. &lt;p&gt;I'm not the person to ask for a full-blown tour of Katmai, but some of the features that have had my radar pinging include: &lt;ol&gt; &lt;li&gt;&lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/spatial-data.aspx" target="_blank"&gt;Spatial Data&lt;/a&gt;: With native support for geographic data, SQL 2008 provides a powerful platform for storing and retrieving your data based on location. &lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/News/3253/" target="_blank"&gt;Separate Date and Time Data Types&lt;/a&gt;: If you're only concerned about a date, you no longer have to store it as August 6, 2008 12:00:00.00 AM. Likewise if you're only concerned about a given time (for instance if you want a recurring appointment to happen every day at 10:00 AM), you no longer are burdened with specifying a date in addition. &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/2007/12/02/sql-server-2008-table-valued-parameters.aspx" target="_blank"&gt;Table Value Parameters&lt;/a&gt;: Table value parameters allow you to pass a table of data into a stored procedure. While you could emulate the same effect using XML in SQL Server 2005, native support for passing in tabular data means your stored procedures do not have to deal with parsing XML or complicated XQuery. &lt;li&gt;&lt;a href="http://blogs.msdn.com/manisblog/archive/2007/08/17/sql-server-2008-hierarchyid.aspx" target="_blank"&gt;HierarchyID&lt;/a&gt;: This is an interesting beast. It is a system defined SQL-CLR data type that can be used as a column type in your table. Basically the HierarchyID allows you to store a hierarchical relationship between rows in your table. (Look for an update to the Employees tables in the Northwind samples to demonstrate how to take advantage of this new feature).&lt;/ol&gt; &lt;p&gt;There are a number of other new features in SQL Server 2008 and we haven't even left the realm of the database engine itself. Reporting Services (including a server that does not rely on IIS), Analysis Services, and Integration Services have all received significant upgrades.  &lt;p&gt;I guess this gives me a nice toy to play with while waiting for the release of .NET 3.5/VS 2008 SP1.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+SQL+Server+08+Get+It+While+It's+Hot&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><category>Microsoft Development</category><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!793.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!793.entry</guid><pubDate>Thu, 07 Aug 2008 06:18:00 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!793/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!793.entry#comment</wfw:comment><dcterms:modified>2008-08-07T06:18:00Z</dcterms:modified></item><item><title>Fixing WPF Command Routing</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!784.entry</link><description>&lt;p&gt;&lt;a href="http://wekempf.spaces.live.com/default.aspx" target="_blank"&gt;Bill Kempf&lt;/a&gt;, a fellow &lt;a href="http://wpfdisciples.wordpress.com/" target="_blank"&gt;WPF Disciple&lt;/a&gt;, was lamenting the fact that by default a CommandBinding can only refer to a handler defined in the code behind of the Window/Page/UserControl in which it's defined. He wished that a syntax similar to the following was possible &lt;p&gt;  &lt;div&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none"&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;Window&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;Window.CommandBindings&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;CommandBinding&lt;/span&gt; &lt;span style="color:#ff0000"&gt;Command&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&amp;quot;foo:MyCommands.FooCommand&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;Executed&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&amp;quot;{Event Target={StaticResource MyPresenter}, Handler=OnFooCommand}&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000"&gt;Window.CommandBindings&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000"&gt;Window&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;I took that scenario as my starting point. The first issue I saw was that I needed a markup extension that let's you specify a Target Object and the name of a handler on that Target returning a ExecutedRoutedEventHandler. So I made one. 
&lt;p&gt;The Markup Extension exposes two properties: Target (of type object) and Handler of Type String. The ProvideValue override (shown below) uses reflection to get a handle on the function and creates a lambda that invokes it for the result. (I love lambdas as much as I loved anon functions before them.)
&lt;div&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none"&gt;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff"&gt;object&lt;/span&gt; ProvideValue(IServiceProvider serviceProvider)
{
    ExecutedRoutedEventHandler retval=&lt;span style="color:#0000ff"&gt;null&lt;/span&gt;;
    &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (Target == &lt;span style="color:#0000ff"&gt;null&lt;/span&gt;)
    {
        &lt;span style="color:#0000ff"&gt;throw&lt;/span&gt; &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; Exception(&lt;span style="color:#006080"&gt;&amp;quot;Target cannot be Null.&amp;quot;&lt;/span&gt;);
    }
    var type = Target.GetType();
    var function = type.GetMethod( Handler, &lt;span style="color:#0000ff"&gt;new&lt;/span&gt;[]{&lt;span style="color:#0000ff"&gt;typeof&lt;/span&gt; (Object),&lt;span style="color:#0000ff"&gt;typeof&lt;/span&gt; (ExecutedRoutedEventArgs)});
    &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (function != &lt;span style="color:#0000ff"&gt;null&lt;/span&gt;)
    {
        retval = ((obj, args) =&amp;gt; function.Invoke(Target, &lt;span style="color:#0000ff"&gt;new&lt;/span&gt;[] {obj, args}));
    }
    &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; retval;
}&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;So I plug my new markup extension into a sample window, anticipating some good command routing lovin'. Of course it's never as easy as it looks at first. The Executed property on CommandBinding, although an event, expects a string in markup (the XAML compiler does some trickery to turn the string into an event handler). Well I know, I'll create an Attached Property to do my magic...
&lt;p&gt;(To be continued...)&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+Fixing+WPF+Command+Routing&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!784.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!784.entry</guid><pubDate>Sat, 26 Jul 2008 03:58:27 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!784/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!784.entry#comment</wfw:comment><dcterms:modified>2008-07-26T03:58:27Z</dcterms:modified></item><item><title>Generic Extension Methods</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!777.entry</link><description>&lt;p&gt;I've discovered that if an extension method is generic and the generic type is used as the &amp;quot;this&amp;quot; parameter, you do not have to write out the generic discriminator. The compiler is smart enough to infer it for you. For example, the &lt;a href="http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!748.entry" target="_blank"&gt;range validation function&lt;/a&gt; I shared a few weeks ago can be called like so: &lt;div&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none"&gt;&lt;span style="color:#0000ff"&gt;int&lt;/span&gt; myInt=5;
myInt.ValidateRange(2,20);&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Jeff would be happy.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+Generic+Extension+Methods&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!777.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!777.entry</guid><pubDate>Sun, 20 Jul 2008 12:35:28 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!777/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!777.entry#comment</wfw:comment><dcterms:modified>2008-07-20T12:35:28Z</dcterms:modified></item><item><title>Frameworks! Frameworks! Frameworks!</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!776.entry</link><description>&lt;p&gt;If I haven't blogged about t before, I meant to but have been extremely busy. The first release of Prism or &lt;a href="http://blogs.msdn.com/gblock/archive/2008/07/03/composite-application-guidance-is-live.aspx" target="_blank"&gt;Composite App Guidance for WPF&lt;/a&gt; is available. Oh wait...I've &lt;a href="http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!743.entry" target="_blank"&gt;blogged about it already&lt;/a&gt; (Did I mention how much I love Live Writer?). If you're looking at WPF for enterprise &amp;quot;Line of Business&amp;quot; applications, you should really look at it, not just for the framework but for the guidance assets themselves. I participated in the advisory board for the guidance and had a blast giving feedback to the PnP team and seeing that feedback integrated into the package. I even got my name on the &lt;a href="http://msdn.microsoft.com/en-us/library/cc707819.aspx" target="_blank"&gt;MSDN page for the package&lt;/a&gt; &lt;p&gt;&lt;a href="http://gs7x7a.blu.livefilestore.com/y1pAF_u2qgvbkD43u9hJgfoZ2Ao3bG_MwVzRbUtiRacRPlipwi5Md0yb3PeVDf-hyQ2ladzVR3wJBI?PARTNER=WRITER"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px" border=0 alt=fameandfortune src="http://gs7x7a.blu.livefilestore.com/y1pJdd3YDPSiS3zEhuLO_ECk-qYpYY0cZy3cqm7BikZEjo6fQBdsvLDxfUoCUrD_9JwdDoeQLg042usJyp_PA8UQQ?PARTNER=WRITER" width=734 height=255&gt;&lt;/a&gt;  &lt;p&gt;It's the little things that make me smile :P &lt;p&gt;Anyway, this post isn't about me. It's about some cool announcements coming from Microsoft. (Slow down guys or there won't be much left to announce by the time PDC arrives.) First up is the &lt;a href="http://blogs.msdn.com/kcwalina/archive/2008/04/25/MEF.aspx" target="_blank"&gt;Managed Extensibility Framework&lt;/a&gt; or MEF for short. The short explanation for it is native Dependency Injection in the .NET Framework. There is a CTP available for it, which I'm downloading as we speak. &lt;p&gt;Next on the list is the upcoming &lt;a href="http://www.amazon.com/Framework-Design-Guidelines-Conventions-Development/dp/0321545613/ref=pd_bbs_sr_2?ie=UTF8&amp;amp;s=books&amp;amp;qid=1216270694&amp;amp;sr=8-2" target="_blank"&gt;second edition&lt;/a&gt; of &lt;a href="http://www.amazon.com/Framework-Design-Guidelines-Conventions-Development/dp/0321246756/ref=pd_bxgy_b_img_b" target="_blank"&gt;Framework Design Guidelines&lt;/a&gt;. The first edition is a book that I recommend that anyone doing significant .NET development have on their shelf...within easy reach. &lt;a href="http://blogs.msdn.com/kcwalina/default.aspx"&gt;Krzysztof Cwalina&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/brada" target="_blank"&gt;Brad Abrams&lt;/a&gt;, and others on the Framework team have continued to provide addenda for the book. But there has been a major release of the framework since the first edition was published, and there is enough new stuff to talk about to merit a new edition. I've already got it pre-ordered. &lt;p&gt;Speaking of the MEF and the PnP team, Glenn Block recently announced his move from PM for PnP to PM on the MEF team. I can't think of a better person to provide leadership for this initiative.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+Frameworks!+Frameworks!+Frameworks!&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!776.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!776.entry</guid><pubDate>Fri, 18 Jul 2008 18:36:56 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!776/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!776.entry#comment</wfw:comment><dcterms:modified>2008-07-18T18:36:56Z</dcterms:modified></item><item><title>I'm Going to PDC</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!773.entry</link><description>&lt;p&gt;&lt;a href="http://www.microsoftpdc.com/"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;margin:0px 10px 0px 0px;border-right-width:0px" border=0 alt=PDCBling1 align=left src="http://blufiles.storage.msn.com/y1pqKlZxAyiiaHRaEy_HEgXG3aX1vikXgTWwn5wiXNj9YCGk9Xhdauj9kFA0sqSYzIR?PARTNER=WRITER" width=134 height=184&gt;&lt;/a&gt;I'm all set. My hotel is booked, flight is selected, and registration is done. Now all I have to do is wait and speculate. This will be my first PDC, so I'm pretty excited about it. Although &lt;a href="http://www.microsoftpdc.com/Agenda/Sessions.aspx" target="_blank"&gt;Microsoft has revealed&lt;/a&gt; some of the topics to be discussed, the fun part is guessing what they aren't telling us yet: &lt;p&gt;With guaranteed coverage of &amp;quot;Rosario&amp;quot;, I'm pretty sure they'll be talking about .NET 4.0 (and hopefully Acropolis). The initial previews were very promising. To have it become a native part of the .NET framework is exciting. &lt;p&gt;I'm also hoping to get a sneak peek at Windows 7. Server 2008 and Vista are major advances in the Windows platform. I know there is a lot of groaning about the UAC, and drivers, and blah, blah, blah. Personally I like Vista a lot (and love Server 2008 even more). I can't wait to see what's in the pipe for the next revision. &lt;p&gt;I definitely want to see what's in store for Team Edition for Architects and the new TFS/Team Explorer functionality. Full UML support will be huge for me. Hierarchical work items is a plus as well. &lt;p&gt;&lt;a href="http://www.mesh.com" target="_blank"&gt;Live Mesh&lt;/a&gt; looks very captivating to me, and I can't wait to get my hands on some programmable bits. &lt;p&gt;I'm also looking forward to meeting some of the names that I know in the .NET community. And of course watching Charles Petzold's presentation at the pre-conference. What are you excited about?&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+I'm+Going+to+PDC&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!773.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!773.entry</guid><pubDate>Thu, 17 Jul 2008 13:01:37 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!773/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!773.entry#comment</wfw:comment><dcterms:modified>2008-07-17T13:01:37Z</dcterms:modified></item><item><title>Shadow Copies Saved My Life</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!761.entry</link><description>&lt;p&gt;I'm a control freak...when I delete something, I want it gone like now. I don't want it to go to a recycle bin so I can retrieve it later. Get off my computer...NOW. So when I delete a file, I always use Shift+Delete to bypass the &amp;quot;send to recycle bin&amp;quot; phase. That has bitten me in the butt a few times in the past. Thanks to Vista's shadow copy service, I have been able to recover from over zealous deletion twice now. Once with a source tree with changes I hadn't committed to source control yet. And just now with the entire contents of my downloads folder. &lt;p&gt;I may sound like one of those commercials that you see where people give &amp;quot;real&amp;quot; testimonials about how good a product is. But believe me, if you've ever wished you could undo a delete, shadow copies are the next best thing to having a rewind button for life.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+Shadow+Copies+Saved+My+Life&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!761.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!761.entry</guid><pubDate>Tue, 08 Jul 2008 16:13:09 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!761/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!761.entry#comment</wfw:comment><dcterms:modified>2008-07-17T13:02:14Z</dcterms:modified></item><item><title>Returning to the Motherland</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!748.entry</link><description>&lt;p&gt;As I mentioned before (I think), my focus on UI development has been a recent phenomenon in my career. Prior to that, the majority of my efforts has been in back-end frameworks and integration. Even looking at what I've done in the WPF arena, most of my attention has been on creating utilities that do a lot of behind the scenes work: MVPoo, Commands, Attached Properties, and all that fun stuff. I guess it's only natural that I land back in the arena of back-end and framework development. I've got a few interesting classes and utilities to share from my recent excursions in the area. Hopefully, someone will find these useful. &lt;p&gt;First up are a couple of extension methods for range validation. Right now, they only work on IComparable&amp;lt;T&amp;gt; (which all value types derive from). Being extension methods, they only work with .NET 3.5 but it is an easy exercise to change them to standard static utility methods. The interesting bit I discovered writing these is that extension methods can be Generic. The unfortunate part is the redundancy required here...something that Jeff Atwood would probably &lt;a href="http://www.codinghorror.com/blog/archives/001136.html" target="_blank"&gt;frown upon&lt;/a&gt;. Here is how the method would be used: &lt;div&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none"&gt;&lt;span style="color:#0000ff"&gt;int&lt;/span&gt; tmpInt=45;
&lt;span style="color:#0000ff"&gt;bool&lt;/span&gt; isValid=tmpInt.ValidateRange&amp;lt;&lt;span style="color:#0000ff"&gt;int&lt;/span&gt;&amp;gt;(25,50);&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The ValidateRange methods (I overloaded the function so that a caller can specify whether the range should be inclusive) take the type of the object being validated as a type parameter so that it can pass it to IComparable&amp;lt;T&amp;gt; and strongly type the min and max parameters. I guess I could just use the non-generic IComparable interface instead of IComparable&amp;lt;T&amp;gt;, but then you'd lose the compile time verification.
&lt;p&gt;Anyway, the code is attached below. Let me know what you think.
&lt;p&gt;&lt;iframe style="border-right:#dde5e9 1px solid;padding-right:0px;border-top:#dde5e9 1px solid;padding-left:0px;padding-bottom:0px;margin:3px;border-left:#dde5e9 1px solid;width:240px;padding-top:0px;border-bottom:#dde5e9 1px solid;height:26px;background-color:#ffffff" marginwidth=0 marginheight=0 src="http://cid-2221dc39e0c749a4.skydrive.live.com/embedrow.aspx/Code Samples/Validation.cs" frameborder=0 scrolling=no&gt;&lt;/iframe&gt;
&lt;div style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Extension Methods" rel=tag&gt;Extension Methods&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Validation" rel=tag&gt;Validation&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Range Validation" rel=tag&gt;Range Validation&lt;/a&gt;,&lt;a href="http://technorati.com/tags/C#" rel=tag&gt;C#&lt;/a&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+Returning+to+the+Motherland&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!748.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!748.entry</guid><pubDate>Tue, 24 Jun 2008 16:44:23 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!748/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!748.entry#comment</wfw:comment><dcterms:modified>2008-06-24T16:44:23Z</dcterms:modified></item><item><title>Prism Becomes Composite Application Guidance for WPF</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!743.entry</link><description>&lt;p&gt;Or CAPPG for short. I had the pleasure of participating on the advisory board over the past few months. I think the biggest boost to my ego came when I saw the &lt;a href="http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!596.entry" target="_blank"&gt;Delegating Command&lt;/a&gt; captured as a &lt;a href="http://www.codeplex.com/CompositeWPF/SourceControl/FileView.aspx?itemId=235564&amp;amp;changeSetId=12511" target="_blank"&gt;best practice&lt;/a&gt; by the PnP team.  &lt;p&gt;Prism (there was an acronym there but I forgot what it is) is a new guidance framework, in the vein of the CAB, SCSF , and WCSF, that captures best practices from the pioneers in the wild west of WPF development. (Remember WPF is still considered to be in the early-adopter phase.)A lot of the writings of Josh Smith, Dr. WPF, Dan Crevier , and others has been captured in this framework (which is still, according to the team, a work in progress). I have my own work that is soon to be in progress and will use Prism to take it through its paces. &lt;p&gt;If you will be doing any significant WPF development in the near future, it couldn't hurt to evaluate Prism. &lt;a href="http://www.codeplex.com/CompositeWPF" target="_blank"&gt;Here's the link&lt;/a&gt;.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+Prism+Becomes+Composite+Application+Guidance+for+WPF&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!743.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!743.entry</guid><pubDate>Fri, 20 Jun 2008 05:50:39 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!743/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!743.entry#comment</wfw:comment><dcterms:modified>2008-06-20T05:50:39Z</dcterms:modified></item><item><title>The Best Part of Blogging</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!729.entry</link><description>&lt;p&gt;You get to look back at your old posts in astonishment at how far you've come from back then. Take Paul Stovell for example. &lt;p&gt;In March of 2006 he gave a presentation called &lt;a href="http://www.paulstovell.com/blog/why-i-hate-data-binding-slides-and-links" target="_blank"&gt;&amp;quot;Why I hate Data Binding&amp;quot;&lt;/a&gt; &lt;p&gt;In July of 2007 he gave a presentation called &lt;a href="http://www.paulstovell.net/blog/index.php/sdnug-binding-oriented-programming-notes-and-links/" target="_blank"&gt;&amp;quot;Binding Oriented Programming&amp;quot;&lt;/a&gt; &lt;p&gt;Talk about an about face! I don't have any drastic examples like that in my blog. But it's still fun to read through some of my old posts.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+The+Best+Part+of+Blogging&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!729.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!729.entry</guid><pubDate>Mon, 02 Jun 2008 17:16:39 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!729/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!729.entry#comment</wfw:comment><dcterms:modified>2008-06-02T17:16:39Z</dcterms:modified></item><item><title>You ARE in the Software Business</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!711.entry</link><description>&lt;p&gt;I've spoken a lot about the potential that Team Foundation Server provides as a framework for creating very powerful software development process tools. I've also spoken a lot about supporting your software development department with a dedicated development team. These two ideas go hand in hand. Let me expand on that here. &lt;p&gt;When a company wants to support their business processes with software, they have two choices: buy a product off the shelf; or build a custom software solution. Actually, there are three choices, but the third is a hybrid of the first two: customize an off the shelf product.  &lt;p&gt;The software your company creates for the sprocket order fulfillment system is an electronic manifestation of your company's business processes. You have significant amounts of money set aside every year to improve that software so that it better captures your business processes. You know that COTS software won't be an exact fit for what you are doing, your processes are what give you an edge over the sprocket factory down the road. &lt;p&gt;Why is it that companies are so quick to segregate software development from the rest of their business? &amp;quot;IT supports the business, it's not a core business process.&amp;quot; &amp;quot;We're not in the software business, we're in the sprocket business.&amp;quot; &lt;p&gt;Stop it! It's time to come to terms with reality that if you are spending money to develop your own software or to customize off the shelf software, YOU ARE IN THE SOFTWARE BUSINESS. Even if the only consumer of your software is you. Once you've accepted that fact, you'll realize that software development is a core business process. Do you see where I'm going here? We take it for granted that an off the shelf product is good enough for developers. You don't know how many times I've heard people complain &amp;quot;if only visual studio did this&amp;quot; or &amp;quot;I wish TFS was easier to work with.&amp;quot; Sound familiar to the same complaints you hear about the CRM tool your company just bought? The big difference is that code gets written to address the shortcomings of the CRM solution. Whereas Visual Studio and TFS get to stay as they are and development teams are trained to &amp;quot;work with the system.&amp;quot; When was the last time you've heard of a company (other than a software vendor) having a project dedicated to creating tools that improve the software development lifecycle? &lt;p&gt;Why spend so much money creating software that captures all of your business processes except the one that makes the rest possible? And if you don't think that improving your software development process isn't as important as your &amp;quot;core business&amp;quot;, you'll quickly be left behind when that sprocket factory down the road figures it out.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+You+ARE+in+the+Software+Business&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!711.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!711.entry</guid><pubDate>Thu, 08 May 2008 12:25:18 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!711/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!711.entry#comment</wfw:comment><dcterms:modified>2008-05-08T12:25:18Z</dcterms:modified></item><item><title>Attached Properties for Max Column Width</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!707.entry</link><description>&lt;p&gt;Laurent Bugnion (a fellow &lt;a href="http://wpfdisciples.wordpress.com/" target="_blank"&gt;WPF Disciple&lt;/a&gt;) just &lt;a href="http://blog.galasoft.ch/archive/2008/05/06/wpf-listviewgridview-minimum-and-maximum-width-for-a-column.aspx" target="_blank"&gt;wrote a post&lt;/a&gt; showing one way to add MaxWidth capabilities to the WPF GridView. &lt;a href="http://wekempf.spaces.live.com/" target="_blank"&gt;William Kempf&lt;/a&gt; (another disciple whom I had the pleasure of meeting when I gave my presentation at &lt;a href="http://www.indycodecamp.com/"&gt;Indy Code Camp&lt;/a&gt;), suggested that Laurent use an attached property to allow the feature to be XAMLized. 
&lt;p&gt;I thought it would be a good idea. So I fired up VS and wrote a little bit of code. If you've read my posts on using the remora pattern then you know the gist of the setup (if not go see them &lt;a href="http://mbrownchicago.spaces.live.com/?_c11_BlogPart_pagedir=Next&amp;amp;_c11_BlogPart_handle=cns!2221DC39E0C749A4!356&amp;amp;_c11_BlogPart_BlogPart=blogview&amp;amp;_c=BlogPart" target="_blank"&gt;here&lt;/a&gt;). Laurent jumped through a few hoops to hook into the drag event of the GridViewColumnHeader resize thumb control. I found out that GridViewColumn implements INotifyPropertyChanged so on a whim decided to check if I can catch a Property changed event when the Width is changed. Lo and behold I could. So I checked if I could do a poor man's CoerceValue and surely enough I was able to do that as well. I couldn't think of a better place to put it, so I checked the code into the WPF Toolbelt (along with a few other changes). This makes the first check-in since September of last year. I just reorganized some namespaces and stuff...it took me a while to get reacquainted with the code. But I will be performing more work on it in a while. Download the code from Skydrive (only have the MaxWidth attached property now...MinWidth isn't much harder though). 
&lt;p&gt;&lt;iframe style="border-right:#dde5e9 1px solid;padding-right:0px;border-top:#dde5e9 1px solid;padding-left:0px;padding-bottom:0px;margin:3px;border-left:#dde5e9 1px solid;width:240px;padding-top:0px;border-bottom:#dde5e9 1px solid;height:66px;background-color:#ffffff" marginwidth=0 marginheight=0 src="http://cid-2221dc39e0c749a4.skydrive.live.com/embedrowdetail.aspx/WPF Samples/GridViewHelper.cs" frameborder=0 scrolling=no&gt;&lt;/iframe&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+Attached+Properties+for+Max+Column+Width&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!707.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!707.entry</guid><pubDate>Tue, 06 May 2008 22:31:26 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!707/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!707.entry#comment</wfw:comment><dcterms:modified>2008-06-15T17:45:05Z</dcterms:modified></item><item><title>You'll Grow Out of It</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!697.entry</link><description>&lt;p&gt;&lt;a href="http://blufiles.storage.msn.com/y1p8EpAlDbvGPle65MTjfWl7xpRhkjiQl6OoGnvNDnP_8qH1R4Ox_DbvemlPp2WO0EMgjQDJRy1_hw?PARTNER=WRITER"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px" height=244 alt=albumcover src="http://blufiles.storage.msn.com/y1p8EpAlDbvGPnYlQSW9lj0RICo-nr6_kqRHsahMsRNrZtNG368GhkeqLSPDTdduxAedprfpMQFuis?PARTNER=WRITER" width=244 align=left border=0&gt;&lt;/a&gt; I followed the instructions for an &lt;a href="http://jrients.blogspot.com/2008/01/concept-album-meme.html" target="_blank"&gt;interesting meme&lt;/a&gt; that I found on &lt;a href="http://manicprogrammer.com/cs/blogs/willeke/archive/2008/01/28/my-new-band.aspx" target="_blank"&gt;Eric's blog&lt;/a&gt; and came up with the album cover you see to the left. Here are the original links if you're interested: 
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/358/2314662240/" target="_blank"&gt;The Picture&lt;/a&gt; 
&lt;p&gt;&lt;a href="http://www.quotationspage.com/quote/27617.html" target="_blank"&gt;The Quote&lt;/a&gt; 
&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Wyoming_County,_West_Virginia" target="_blank"&gt;The Article&lt;/a&gt; 
&lt;p&gt;I took artistic license and named my band just Wyoming County, but it the recipe works pretty well. The funny thing is...the title is somewhat appropriate. I think I have grown out of my current space and have already taken up residence in a &lt;a href="http://blog.planetwpf.com/" target="_blank"&gt;new environment&lt;/a&gt;. I will begin moving my old content over (someone remind me to keep local copies of my blog posts for the next time I want to do this), and adding new content to the main domain. In the interim, it will just host Brownie points. So what are you waiting for? My latest post is waiting for you &lt;a href="http://blog.planetwpf.com/post/2008/03/Hello-World.aspx" target="_blank"&gt;right here&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+You'll+Grow+Out+of+It&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!697.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!697.entry</guid><pubDate>Wed, 12 Mar 2008 05:55:19 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!697/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!697.entry#comment</wfw:comment><dcterms:modified>2008-03-12T06:00:39Z</dcterms:modified></item><item><title>The Problem as I See It</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!678.entry</link><description>&lt;p&gt;I remember helping a developer who was attempting to transition from C to C++. Because valid C is valid C++, it was difficult to get the point across to him that -- even though it worked -- it wasn't necessarily the best way to do things. It takes a concentrated effort for someone to unlearn bad habits. &lt;p&gt;For an example look at Winforms programming. It is dead simple to drag a few controls onto a form and wire it up to perform business logic on a button click. I must confess I've done this myself, even as recently as last year (oh wait it's 2008 now make that the year before last). It took me struggling with WPF to realize that even though it &amp;quot;worked&amp;quot; that was not the best way to wire up my UI (in all but the simplest of cases). I decided to explore the benefits of the Model-View-Controller Pattern (or MVC for short) for my application development. I knew of this design pattern's existence but had never bothered to implement it explicitly in my development. As I got my feet wet with using MVC for my WPF UIs, I started noticing a lot of benefits.  &lt;p&gt;Actually let me correct myself. I didn't consciously decide when I first started coding in this manner that I was going to use the MVC pattern. I just decided to remove the logic of deciding what controls were enabled, how to initialize the UI, and how to validate the data entered into the form (among other concerns) away from the Window/UserControl and into a helper class that worked with the UI while shielding it from the intricacies of how the system works. &lt;p&gt;Once I looked at what I had done, I finally realized that I had implemented a variation on the MVC pattern. I had read some of Dan Crevier's blog postings regarding what he called the Model - View - ViewModel, or MVVM, pattern (itself a refinement of the MVP pattern) prior to this so I guess it had laid dormant in my subconscious until I needed it. &lt;p&gt;I have come to realize that going from basic &amp;quot;Forms and Controls&amp;quot; (as Martin Fowler &lt;a href="http://martinfowler.com/eaaDev/uiArchs.html" target="_blank"&gt;calls it&lt;/a&gt;) UI development to MVC is a paradigm shift on the magnitude of going from procedural development to object-oriented development (e.g. C to C++). Although the same development techniques that make Winforms (and VB before it) development so approachable still &amp;quot;work&amp;quot; with WPF, the framework really shines when you move to an MVC architecture for your UI. Once you grok this concept, you'll find that you'll hesitate to write even simple applications without using it.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+The+Problem+as+I+See+It&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!678.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!678.entry</guid><pubDate>Wed, 23 Jan 2008 00:45:41 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!678/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!678.entry#comment</wfw:comment><dcterms:modified>2008-01-23T00:45:41Z</dcterms:modified></item><item><title>Dynamic Dependency Properties</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!668.entry</link><description>   &lt;p&gt;First things first. I'd like to wish everyone a Happy New Year. Here's hoping that 2008 brings with it happiness, excitement, joy, and wonder! &lt;p&gt;Recently I came across a &lt;a href="http://www.madprops.org/cs/blogs/mabster/archive/2007/09/14/customtypedescriptors-and-wpf.aspx" target="_blank"&gt;blog post&lt;/a&gt; that discussed the use of Custom Type Descriptors to dynamically add properties to an object. We currently use this technique in our application, however there is a lot of hocus pocus going on behind the scenes that makes working with that particular piece of code precarious. &lt;p&gt;I was curious if it would be possible to dynamically declare dependency properties and bind to them using the WPF Binding system. The short answer is yes. The long answer is HELL YES! Believe me using dependency properties to dynamically add properties to your objects is orders of magnitude easier than using custom type descriptors. Something tells me that DPs are just an abstraction of custom type descriptors. Does that make me lazy? Probably. Then again, the less code I have to write to accomplish a task, the less likely I am to introduce bugs, and the quicker I can get to the next task. And as we all know, &amp;quot;programming  is fun, but shipping is our job.&amp;quot; Besides, you want to trust me on this one...programming Custom Type Descriptors is not fun. &lt;p&gt;Of course you, my dear readers, are probably wondering, &amp;quot;Why would I want to dynamically register dependency properties?&amp;quot; Isn't the whole point of a dependency property to allow you to bind to it at design time? Well not only does Mabsterama give a great scenario with the role provider, but there is a well known data modeling pattern known as &lt;a href="http://en.wikipedia.org/wiki/Entity-Attribute-Value_model" target="_blank"&gt;Entity Attribute Value&lt;/a&gt;. I just ran into a &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2622970&amp;amp;SiteID=1" target="_blank"&gt;post in the forums&lt;/a&gt; (which are finally working properly again) where the poster appears to be in need of a similar solution. This encouraged me to finish this post. &lt;p&gt;My solution relies on a simple class that I call the DependencyPropertyRegistry. The DependencyPropertyRegistry is responsible for dynamically registering dependency properties against a DependencyObject descendant and keeping track of the properties so they can be manipulated. The second part of the solution is a class that wants to dynamically expose properties for binding. The final piece of the puzzle is a control that knows how to properly configure the bindings and display them. &lt;p&gt;This is easiest explained through code, but I have to do some scrubbing before I can share it with you guys. I promise it will be worth the wait.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+Dynamic+Dependency+Properties&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!668.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!668.entry</guid><pubDate>Thu, 03 Jan 2008 01:36:01 GMT</pubDate><slash:comments>5</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!668/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!668.entry#comment</wfw:comment><dcterms:modified>2008-01-03T01:36:01Z</dcterms:modified></item><item><title>How "Cider" Saved the Day</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!662.entry</link><description>&lt;p&gt;Or &amp;quot;My New Favorite Feature of the WPF Designer&amp;quot; &lt;p&gt;So I'm giving a quick presentation of my favorite new feature in VS 2008 at the Wisconsin .NET User Group Installfest, and because I hadn't actually prepared for the presentation in advance, Murphy's Law is in full effect. My normally snappy computer is crawling through the simplest of tasks (because I'm on battery power save mode). I'm floundering here and want to hurry and finish the demonstration (the &amp;quot;Cider&amp;quot; WPF designer). So now I'm standing in a pool of my sweat, I can't even see because the saline is dripping into my eyes. And I have to remember the syntax for importing a CLR namespace. I look to a familiar face &amp;quot;Quick what's the syntax for importing an assembly for reference in XAML?&amp;quot; Travis looks back at me with a blank stare. So I start typing hoping that something will pop in my head when I see: &lt;p&gt;&lt;a href="http://gs7x7a.blu.livefilestore.com/y1pCQfY1MZcUVfX8XTAQUFhB2Tec0VkKbXqjPGLOSOFaqbIWQqjm2hXLVdL8KnLxx6JUjl4qIFZdlQah0EEd3a-gg?PARTNER=WRITER"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px" height=404 alt=image src="http://gs7x7a.blu.livefilestore.com/y1pDpMhT_wGsW4hcpwh_MzrIH0jUxIB192fhxTnd6g7SuvAFj-2YDqdNMnQZuCV2aUosUVRhLir7w3-yTR_Y8fWadYleT2RPAZf?PARTNER=WRITER" width=644 border=0&gt;&lt;/a&gt;  &lt;p&gt;At that very moment, I felt that Team Cider had put this feature in there for this very situation. I stated emphatically...well there you have my new favorite feature! &lt;p&gt;Overall the meeting was great. The turnout was HUGE. We had an assembly hall filled with people ready to install VS2008 (Professional this time as opposed to the 2005 launch when they gave out Standard). I forgot my full camera and for some reason, I can't email the pictures from my phone so I'll refer you to &lt;a href="http://larryclarkin.com/" target="_blank"&gt;Larry Clarkin&lt;/a&gt;.  &lt;p&gt;Hands down the best mini demo in my eyes was the demonstration of the code metrics capabilities of the VS 2008 Team Editions, the presenter of that feature won a copy of SceneIT! for the Xbox 360. &lt;a href="http://brennan.offwhite.net/blog/" target="_blank"&gt;Brennan&lt;/a&gt; won an 8 GB Zune for his presentation. There were a ton of toys donated in exchange for a raffle ticket. The winner got an Xbox 360 Elite with Halo 3 Limited Edition (not Legendary). And the food spread was fantastic. Especially the nacho toppings...chili and queso dip poured over tortillas is delicious! Overall, it looks like everyone enjoyed themselves. At the very least they got a free copy of VS 2008 Pro.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+How+%22Cider%22+Saved+the+Day&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><category>Programming WPF</category><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!662.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!662.entry</guid><pubDate>Wed, 19 Dec 2007 21:18:03 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!662/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!662.entry#comment</wfw:comment><dcterms:modified>2007-12-19T21:18:03Z</dcterms:modified></item><item><title>You Like Me...You Really Like Me!</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!654.entry</link><description>&lt;p&gt;Today I got a special package in the mail. It was pretty heavy. At first I wondered what it could be. Then I remembered receiving an email a few weeks back from Microsoft asking me to make sure my connect profile was complete for a special gift. &lt;p&gt;&lt;a href="http://gs7x7a.blu.livefilestore.com/y1pCQfY1MZcUVcq0I-r-Y1OywDaiG5g00Yn0fd54UZGqvSuiZROgRA1Yxv50Mbe16I0EfGaD9gg_2-zDgGK7xnsog?PARTNER=WRITER"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=184 alt="VS2008 Thank You" src="http://blu1.storage.msn.com/y1p9pYXb0ILVOcsjlbWyhnZ8fz4aitvg8r8DBMfd4kLBRDgX0mWk1_KuCPx5pBEbHo7NEHAmuXptxbY1vPs67u6mNVSA5URgXpi?PARTNER=WRITER" width=244 border=0&gt;&lt;/a&gt; &lt;a href="http://gs7x7a.blu.livefilestore.com/y1pDpMhT_wGsW7TWQHIEbhjWWUCQA_2KcjEd4Yp9tDE7UtymVNClr3bilkbezOTaivbzx6CSJKgsqN0EBQe7P6kFzSlUgGMCEK5?PARTNER=WRITER"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=184 alt="VS2008 Thank You_00" src="http://blu1.storage.msn.com/y1p9pYXb0ILVOdXGDyW0ejHVBaf0OsxNbQq7pwiL5fRsqiqnFP6NVfnpT-40f_fBrUDU1HZ9zkiMMFom0voMh6O5szmM7A-ZO8r?PARTNER=WRITER" width=244 border=0&gt;&lt;a href="http://blu1.storage.msn.com/y1p9pYXb0ILVOc4Gqb7O6UkThe_iF4KLyGvjWfsi3j8Lj19lps6o5Ke0hZvFtCvjn4VFGBIydsGNg012GmHNVZSBxUbvz9aza2K?PARTNER=WRITER"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=230 alt=Thankyounotezoom src="http://blu1.storage.msn.com/y1p9pYXb0ILVOcmjQYeECkQMg1n66DjTWT4dTNyHdo5w2OtI_ucCbYUbNOtnALZI5xtvzCtBGGxq6EUNbfqUMzNMjjoTxGm3hj5?PARTNER=WRITER" width=244 border=0&gt;&lt;/a&gt;&lt;/a&gt; &lt;p&gt;What a nice note! Here's the text: &lt;blockquote&gt; &lt;p&gt;Visual Studio 2008 and .NET Framework 3.5 are joining the ranks of the best releases we have ever shipped. I am incredibly proud to be a part of the team that is truly advancing the state of developer tools. We could not have done this alone and I wish to thank you for the valuable feedback you provided. &lt;p&gt;The importance of the community and early adopters in providing feedback as we built Visual Studio 2008 and .NET Framework 3.5 cannot be understated. You made the product better, working closely with us through the product development phase by submitting bugs, providing feedback on what features deliver value, and making sure we are building the right products for our customers. It is always our goal to enable you to be outstanding developers by bringing you the best quality product with the features you need. Community contribution is invaluable in helping us to achieve that goal and deliver these great products. &lt;p&gt;To show our appreciation, please accept our thank you gift. Thank you again for helping us deliver an amazing Microsoft Visual Studio 2008 and .NET Framework 3.5 &lt;p&gt;All the best,&lt;br&gt;S. Somasegar&lt;br&gt;Corporate Vice President,&lt;br&gt;Microsoft Developer Division&lt;/blockquote&gt; &lt;p&gt;  &lt;a href="http://gs7x7a.blu.livefilestore.com/y1pDpMhT_wGsW6EYPoEbZHC7ETgszgQ6Tk8Zw7fbhwVvtT95-lH83OI3QtexxzXoIhgVQVOq4QAd3wN_08_yCP4-dqQWWEjedXu?PARTNER=WRITER"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=184 alt="VS2008 Thank You_01" src="http://blu1.storage.msn.com/y1p9pYXb0ILVOchJkPoH0uH6riosuBBipA1_pn5Cmwr40pKKbxZHSabV8RNOgPTkJN7oFY0BOlZ7abZUwKvae_msSH2VjhI9lpd?PARTNER=WRITER" width=244 border=0&gt;&lt;/a&gt; &lt;a href="http://gs7x7a.blu.livefilestore.com/y1pDpMhT_wGsW5s4AZb0KO7amjzRGvtLxJyOVxodmrKuEZqad_t3n7p-Q8vPuiHyISSH8Za0YGxYCdEowM6FVIJoP1LTM2K6Q2o?PARTNER=WRITER"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=184 alt="VS2008 Thank You_02" src="http://blu1.storage.msn.com/y1p9pYXb0ILVOd3fFwpGRU1qWB6tx4VLpBmgcEjUEr-nHsJMNS1qiu9p1uDj0mb90huj3WS8_mt4JSG6MNA5DhuH24Y_bmmwIXy?PARTNER=WRITER" width=244 border=0&gt;&lt;/a&gt; &lt;a href="http://gs7x7a.blu.livefilestore.com/y1pDpMhT_wGsW4c4f93446XYPyJlv1alj9KXjbD5UHLIkEDsFRLrAGt23u2ppJ_DZZLlrvuUqGbuwkFgSH6E0qH2ifcINazSbXL?PARTNER=WRITER"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=184 alt="VS2008 Thank You_03" src="http://blu1.storage.msn.com/y1p9pYXb0ILVOe5meycqcWxC_SwZmb49IBHuQm9kj6R97MFjLOzCMMcG2iqpqRy1LOUlWLvRkKwf8piUBhG694w_isXP3uzDaqh?PARTNER=WRITER" width=244 border=0&gt;&lt;/a&gt;  &lt;p&gt;The cube is one of those Laser Etched paperweights with the Visual Studio 2008 and .NET Framework Branding and a quick &amp;quot;Thank you for the lasting contribution you made to Microsoft Visual Studio&amp;quot; S. Somasegar. All of that for submitting a few bug reports. No, Soma, thank you, for making a geek feel important.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+You+Like+Me...You+Really+Like+Me!&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><category>Fun Stuff</category><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!654.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!654.entry</guid><pubDate>Thu, 13 Dec 2007 03:07:49 GMT</pubDate><slash:comments>3</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!654/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!654.entry#comment</wfw:comment><dcterms:modified>2007-12-13T03:07:49Z</dcterms:modified></item><item><title>Snoop, Woodstock, and Mole</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!640.entry</link><description>&lt;p&gt;Once again, I've been assuming that everyone in the WPF community already knows what I know. Funny thing is, I haven't seen heavy coverage for Woodstock and Mole. Put simply, if you are developing in WPF, you owe it yourself to go right now and download &lt;a href="http://karlshifflett.wordpress.com/mole-visual-studio-visualizer-for-wpf/" target="_blank"&gt;Mole&lt;/a&gt;. For a little background, Mole is the successor of Woodstock, which is the spiritual successor to Snoop. For an understanding of Snoop, think UISpy or Spy++ for WPF. Now take Snoop and turn it into a Visual Studio debugger visualizer so you can drill into your visual tree on a breakpoint, and you have Woodstock. &lt;p&gt;Now take Woodstock and put it on steroids, and you have Mole. Like I said, you owe it to yourself to get it NOW.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+Snoop%2c+Woodstock%2c+and+Mole&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!640.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!640.entry</guid><pubDate>Wed, 12 Dec 2007 02:15:40 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!640/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!640.entry#comment</wfw:comment><dcterms:modified>2007-12-12T02:15:40Z</dcterms:modified></item><item><title>What's Cool About VS2008: Extension Methods</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!639.entry</link><description>   &lt;h1&gt;&lt;/h1&gt; &lt;h1&gt;What Are Extension Methods&lt;/h1&gt; &lt;p&gt;Extension Methods are a new feature in C# 3 and VB 9. To put it concisely, an extension method is a static helper function that can be invoked as if it were declared on any object that has a type matching that of its first parameter. It's pure syntactic sugar. Extension methods basically allow you to change this:&lt;pre&gt;List&amp;lt;String&amp;gt; injuredSecondary = &lt;span&gt;new&lt;/span&gt; List&amp;lt;String&amp;gt;
{
  &lt;span&gt;&amp;quot;Mike Brown&amp;quot;&lt;/span&gt;,
  &lt;span&gt;&amp;quot;Nathan Vasher&amp;quot;&lt;/span&gt;,
  &lt;span&gt;&amp;quot;Charles Tillman&amp;quot;&lt;/span&gt;
};
&lt;span&gt;//Note that select is a static method on the System.Linq.Enumerable class&lt;/span&gt;
IEnumerable&amp;lt;String&amp;gt; namesake = Enumerable.Select(injuredSecondary, x =&amp;gt; x == &lt;span&gt;&amp;quot;Mike Brown&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;p&gt;To this:&lt;pre&gt;List&amp;lt;String&amp;gt; injuredSecondary = &lt;span&gt;new&lt;/span&gt; List&amp;lt;String&amp;gt;
{
  &lt;span&gt;&amp;quot;Mike Brown&amp;quot;&lt;/span&gt;,
  &lt;span&gt;&amp;quot;Nathan Vasher&amp;quot;&lt;/span&gt;,
  &lt;span&gt;&amp;quot;Charles Tillman&amp;quot;&lt;/span&gt;
};
&lt;span&gt;//Note that we are calling select as if it were a method defined on the injuredSecondary object.&lt;/span&gt;
IEnumerable&amp;lt;String&amp;gt; namesake = injuredSecondary.Select(x =&amp;gt; x == &lt;span&gt;&amp;quot;Mike Brown&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;p&gt;As the code shows, the Select function is defined on a class called Enumerable (in the System.Linq namespace). However the C# compiler lets you reference it as if it were declared on IEnumerable itself. The methods appear to extend IEnumerable without requiring a new IEnumerable interface to be created.
&lt;h1&gt;Digging Deeper&lt;/h1&gt;
&lt;p&gt;The previous statement should give a big hint as to why extension methods even exist. Let's say you've made a framework or library that is intended for use by other developers. The library has been a huge success, with millions of developers using it. Lets also say that there is an interface within your library that is used practically everywhere within your framework as well as by those millions of developers. Finally, let's say that you want to add new functionality to that interface in your new library release. You have four options (in order of desirability):
&lt;ol&gt;
&lt;li&gt;Add the new functionality to the interface directly. This immediately breaks the existing implementations (because as you know interfaces are purely virtual, they can only declare method signatures, and cannot provide implementation). 
&lt;li&gt;Extend the interface, this doesn't break existing implementations, but users of your library can't automatically benefit from the new features. 
&lt;li&gt;Implement your extensions as helper functions allowing users of your library to access the new functionality if they want, or ignore it if they don't OR: 
&lt;li&gt;In addition to 3, if you also control the spec for the languages that leverage your framework, enhance the language to provide a syntax whereby static helper methods can be invoked as if they were declared directly on the object.&lt;/ol&gt;
&lt;p&gt;By adding the extension method syntax to C# 3 and Visual Basic 9, &lt;strong&gt;Microsoft was able to extend IEnumerable without breaking IEnumerable&lt;/strong&gt;. Quite a feat if I must say so myself. The great thing is that we get the same power in our hands so without further ado. Let's look at a sample.
&lt;h1&gt;Intersecting Rectangles&lt;/h1&gt;
&lt;p&gt;Let's say we have two rectangles defined by the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.rect.aspx" target="_blank"&gt;System.Windows.Rect&lt;/a&gt; structure; and we want to determine if they overlap or not. We could write the code that does it inline, or we could refactor it out to a helper method that takes two rectangles and compares them. Even nicer would be if we could add a convenience method to Rect that does the check for us. Of course the problem is that extending Rect means that it can no longer be a structure. Extension methods to the rescue. Here is the definition of an extension method that does what we want. (Code not optimized for clarity's sake).&lt;pre&gt;    &lt;span&gt;public&lt;/span&gt; &lt;span&gt;static&lt;/span&gt; &lt;span&gt;class&lt;/span&gt; Extensions
    {
        &lt;span&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
        &lt;span&gt;/// Determines if two &amp;lt;see cref=&amp;quot;Rect&amp;quot;/&amp;gt;s overlap each other&lt;/span&gt;
        &lt;span&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
        &lt;span&gt;/// &amp;lt;remarks&amp;gt;&lt;/span&gt;
        &lt;span&gt;/// The order of subject and target do not matter.&lt;/span&gt;
        &lt;span&gt;/// &amp;lt;/remarks&amp;gt;&lt;/span&gt;
        &lt;span&gt;/// &amp;lt;returns&amp;gt;True if the Rectangles overlap, false otherwise.&amp;lt;/returns&amp;gt;&lt;/span&gt;
        &lt;span&gt;public&lt;/span&gt; &lt;span&gt;static&lt;/span&gt; &lt;span&gt;bool&lt;/span&gt; Overlaps(&lt;span&gt;this&lt;/span&gt; Rect target, Rect subject)
        {
            Double innerRight = Math.Min(target.Right, subject.Right);
            Double innerLeft = Math.Max(target.Left, subject.Left);
            Double innerBottom = Math.Min(target.Bottom, subject.Bottom);
            Double innerTop = Math.Max(target.Top, subject.Top);
            &lt;span&gt;return&lt;/span&gt; innerRight &amp;gt; innerLeft &amp;amp;&amp;amp; innerBottom &amp;gt; innerTop;
        }

    }&lt;/pre&gt;
&lt;p&gt;There are a few things to note here. First you'll notice the 'this' keyword being used in the signature for overlaps. In this case 'this' tells the compiler that the function can be used as an extension method on any variable of type Rect. Slightly less out of place, but still significant is the fact that the Extensions class is declared static itself. Extension methods can only be declared in static classes. Below is the unit test for the Overlaps function. What it doesn't show is one final point: to use an extension method, you must import the namespace in which the method is declared.&lt;pre&gt;        &lt;span&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
        &lt;span&gt;///A test for Overlaps&lt;/span&gt;
        &lt;span&gt;///&amp;lt;/summary&amp;gt;&lt;/span&gt;
        [TestMethod()]
        &lt;span&gt;public&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; OverlapsTest()
        {
            &lt;span&gt;//A rectangle overlaps itself&lt;/span&gt;
            Rect target = &lt;span&gt;new&lt;/span&gt; Rect
            {
                Location = &lt;span&gt;new&lt;/span&gt; Point { X = 0, Y = 0 },
                Size = &lt;span&gt;new&lt;/span&gt; Size { Height = 20, Width = 40 }
            }; 
            Assert.IsTrue(target.Overlaps(target),&lt;span&gt;&amp;quot;A rectangle overlaps itself&amp;quot;&lt;/span&gt;);
            Rect subject = &lt;span&gt;new&lt;/span&gt; Rect
            {
                Location = &lt;span&gt;new&lt;/span&gt; Point { X = 40, Y = 0 },
                Size = &lt;span&gt;new&lt;/span&gt; Size { Height = 20, Width = 40 }
            };
            &lt;span&gt;//Rectangles that share an edge do not overlap.&lt;/span&gt;
            Assert.IsFalse(
                target.Overlaps(subject),
                &lt;span&gt;&amp;quot;Rectangles that share an edge do not overlap.&amp;quot;&lt;/span&gt;);
            Assert.AreEqual&amp;lt;&lt;span&gt;bool&lt;/span&gt;&amp;gt;(
                target.Overlaps(subject), 
                subject.Overlaps(target),&lt;span&gt;&amp;quot;Overlaps is Symmetric&amp;quot;&lt;/span&gt;,subject,target);

            subject.Location = &lt;span&gt;new&lt;/span&gt; Point { X = 10, Y = 5 };
            subject.Size = &lt;span&gt;new&lt;/span&gt; Size { Height = 10, Width = 20 };
            &lt;span&gt;//Rectangles overlap when one is entirely inside the other.&lt;/span&gt;
            Assert.IsTrue(
                target.Overlaps(subject),
                &lt;span&gt;&amp;quot;Rectangles overlap when one is entirely inside the other.&amp;quot;&lt;/span&gt;);
            Assert.AreEqual&amp;lt;&lt;span&gt;bool&lt;/span&gt;&amp;gt;(
                target.Overlaps(subject), 
                subject.Overlaps(target), 
                &lt;span&gt;&amp;quot;Overlaps is Symmetric&amp;quot;&lt;/span&gt;, subject, target);
            
            subject.Location = &lt;span&gt;new&lt;/span&gt; Point { X = 30, Y = 15 };
            &lt;span&gt;//Rectangles overlap when one is partially inside of the other.&lt;/span&gt;
            Assert.IsTrue(
                target.Overlaps(subject), 
                &lt;span&gt;&amp;quot;Rectangles overlap when one is partially inside of the other.&amp;quot;&lt;/span&gt;);
            Assert.AreEqual&amp;lt;&lt;span&gt;bool&lt;/span&gt;&amp;gt;(
                target.Overlaps(subject), 
                subject.Overlaps(target), &lt;span&gt;&amp;quot;Overlaps is Symmetric&amp;quot;&lt;/span&gt;, subject, target);

            subject.Location = &lt;span&gt;new&lt;/span&gt; Point { X = 100, Y = 500 };
            &lt;span&gt;//Rectangles do not overlap when they share no points in common.&lt;/span&gt;
            Assert.IsFalse(
                target.Overlaps(subject), 
                &lt;span&gt;&amp;quot;Rectangles do not overlap when they share no points in common.&amp;quot;&lt;/span&gt;);
            Assert.AreEqual&amp;lt;&lt;span&gt;bool&lt;/span&gt;&amp;gt;(
                target.Overlaps(subject), 
                subject.Overlaps(target), &lt;span&gt;&amp;quot;Overlaps is Symmetric&amp;quot;&lt;/span&gt;, subject, target);
        }&lt;/pre&gt;
&lt;h1&gt;Nutritious AND Delicious.&lt;/h1&gt;
&lt;p&gt;Extension methods are a powerful tool for your arsenal. If you're doing framework/systems coding, I'd recommend that you definitely look at using extension methods rather than derivation when possible when targeting a .NET Framework class (like Rect). In the case of Rect, you get the added benefit of keeping it as a structure rather than requiring it to be a class. In general, it allows users of your framework to take advantage of its capabilities without changing their object model hierarchy.
&lt;p&gt;For those wondering, no I'm not leaving the WPF trail. This was just a tangent that I decided to talk about while writing something else about WPF. More of the usual will be headed your way soon.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+What's+Cool+About+VS2008%3a+Extension+Methods&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><category>C#</category><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!639.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!639.entry</guid><pubDate>Tue, 11 Dec 2007 08:06:50 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!639/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!639.entry#comment</wfw:comment><dcterms:modified>2007-12-11T08:06:50Z</dcterms:modified></item><item><title>Silverlight 2.0 AKA Heaven on Earth</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!635.entry</link><description>&lt;p&gt;From &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/11/29/net-web-product-roadmap-asp-net-silverlight-iis7.aspx" target="_blank"&gt;Scott Guthrie's announcement&lt;/a&gt;: &lt;blockquote&gt; &lt;p&gt;&lt;u&gt;WPF UI Framework&lt;/u&gt;: The current Silverlight Alpha release only includes basic controls support and a managed API for UI drawing.  The next public Silverlight preview will add support for the higher level features of the WPF UI framework.  These include: the extensible control framework model, layout manager support, two-way data-binding support, and control template and skinning support.  The WPF UI Framework features in Silverlight will be a compatible subset of the WPF UI Framework features in last week's .NET Framework 3.5 release.&lt;/blockquote&gt; &lt;p&gt;I figured that Silverlight would get better by the time of release, so this doesn't surprise me much. But I see more bullet points that attract my eye. Reading further: &lt;blockquote&gt; &lt;p&gt;&lt;u&gt;Rich Controls&lt;/u&gt;: Silverlight will deliver a rich set of controls that make building Rich Internet Applications much easier.  The next Silverlight preview release will add support for core form controls (textbox, checkbox, radiobutton, etc), built-in layout management controls (StackPanel, Grid, etc), common functionality controls (TabControl, Slider, ScrollViewer, ProgressBar, etc) and data manipulation controls (DataGrid, etc).&lt;/blockquote&gt; &lt;p&gt;I'll refrain from sullying your screen with the filth that spewed out of my mouth when I read this (ESPECIALLY the bit about the built in DataGrid); but it was pretty much a recreation of the scene in &lt;a href="http://www.imdb.com/title/tt0144117/" target="_blank"&gt;Boondock Saints&lt;/a&gt; when Roc discovered that the McManus brothers had killed a room full of Russian Mafiosi (just discovered that word is the plural of Mafioso thanks to Live Writer). Back on subject, this is nothing short of amazing news! Let's not forget the fact that this release will run on Macs and Linux. Add in the networking APIs and BCL support (including LINQ) and you have a compelling development platform. Excluding the WPF 3D library, Silverlight 2.0 will essentially live up to the original Silverlight codename and be WPF Everywhere. &lt;p&gt;Oh here was the killer! Silverlight 2.0 will go into Beta soon with Go Live license! &lt;p&gt;Scott's post has some stuff in there about ASP.NET and Ajax and stuff...but I wasn't really listening to all that. It sounds good and all but not half as thrilling as the Silverlight news. Adobe who?&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+Silverlight+2.0+AKA+Heaven+on+Earth&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><category>Programming WPF</category><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!635.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!635.entry</guid><pubDate>Fri, 30 Nov 2007 02:33:37 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!635/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!635.entry#comment</wfw:comment><dcterms:modified>2007-11-30T02:33:37Z</dcterms:modified></item><item><title>Just a Note</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!631.entry</link><description>&lt;div&gt;MSDN Subscriber downloads has slowed to a crawl today. That can only mean one thing...if anyone is sucessful in logging in and verifying, let me know.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Edit: no confirmation needed. &lt;a href="http://msdn2.microsoft.com/en-us/vstudio/default.aspx"&gt;http://msdn2.microsoft.com/en-us/vstudio/default.aspx&lt;/a&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+Just+a+Note&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!631.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!631.entry</guid><pubDate>Mon, 19 Nov 2007 20:46:10 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!631/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!631.entry#comment</wfw:comment><dcterms:modified>2007-11-19T20:47:09Z</dcterms:modified></item><item><title>Acropolis No More Soon to Be in .NET Framework Core</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!618.entry</link><description>&lt;p&gt;So my powers of observation are proven right again...I'm not sure if I actually blogged it, but I did mention to a few people who can verify that I believed &amp;quot;Acropolis&amp;quot; would become a part of .NET Framework proper. After a bit of silence, &lt;a href="http://blogs.msdn.com/acropolis/archive/2007/10/29/An-Acropolis-Update.aspx" target="_blank"&gt;Microsoft has finally announced the plans for &amp;quot;Acropolis&amp;quot;&lt;/a&gt;. Basically, a future version of the .NET framework will indeed include a smart client equivalent of the ASP.NET MVC framework. Once again, I implore the kind people of Microsoft to consider providing a unified framework for application composition. &lt;p&gt;In other great news, MSFT will be enhancing the existing PNP Guidance to fill the void between now and the release of &amp;quot;Acropolis&amp;quot; (which will have no further preview releases) within a future version of the .NET Framework (fingers crossed hoping that it makes 4.0).&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+Acropolis+No+More+Soon+to+Be+in+.NET+Framework+Core&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!618.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!618.entry</guid><pubDate>Tue, 30 Oct 2007 04:14:55 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!618/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!618.entry#comment</wfw:comment><dcterms:modified>2007-10-30T04:14:55Z</dcterms:modified></item><item><title>Supporting Input Binding for the Delegating Command</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!609.entry</link><description>&lt;p&gt;So after some research, I discovered what it takes to support Input Binding (E.G. key gestures) for the &lt;a href="http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!596.entry" target="_blank"&gt;Delegating Command&lt;/a&gt;: absolutely nothing. Although you can configure a Routed Command's Input Bindings using the Command Manager, you can also do it in XAML using UIElement.InputBindings like so: &lt;p&gt;&amp;lt;Window.InputBindings&amp;gt; &lt;br&gt;  &amp;lt;KeyBinding Key=&amp;quot;B&amp;quot; Modifiers=&amp;quot;Control&amp;quot; Command=&amp;quot;ApplicationCommands.Open&amp;quot; /&amp;gt; &lt;br&gt;&amp;lt;/Window.InputBindings&amp;gt; &lt;p&gt;Here's the really fun part. You can configure Input Bindings for any ICommand (like a Delegating Command exposed as a property on your View Model (or Acropolis Part)). In all honesty, I'm seeing less and less use for Routed Commands. I for one won't be using them going forward. &lt;p&gt;It's time for us to begin sailing the 4C's again. I've just dusted off Part Two of Code Climber Custom Controls and it's going to be a doozy just like &lt;a href="http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!277.entry" target="_blank"&gt;it's predecessor&lt;/a&gt;. It just needs one more evening/morning writing cycle to complete.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+Supporting+Input+Binding+for+the+Delegating+Command&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><category>Learning WPF</category><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!609.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!609.entry</guid><pubDate>Thu, 18 Oct 2007 12:00:05 GMT</pubDate><slash:comments>3</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!609/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!609.entry#comment</wfw:comment><dcterms:modified>2007-10-18T12:00:39Z</dcterms:modified></item><item><title>Brownies and Cookies</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!601.entry</link><description>&lt;p&gt;Dr. WPF suggested in a &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2255271&amp;amp;SiteID=1" target="_blank"&gt;WPF forum thread&lt;/a&gt; that I hand out Brownies as awards. I haven't made a badge for the recipients to display on their Web sites yet, but I think these awards are overdue. So here comes the first batch of Brownies for those individuals (sorry no companies) who have made significant contributions or discoveries within the WPF community (or in some cases did something that just make you go Wow!). They are in no particular order. &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.drwpf.com/blog" target="_blank"&gt;Dr. WPF&lt;/a&gt; as of right now he is the lead answerer in the WPF Forum over the past 30 days with 116 answers. This also makes him one of the top 10 answerers in ALL of the MSDN forums. This is even more significant when you consider he is the ONLY person in the top 10 who is not a moderator (moderators can mark their replies to a question as an answer). So there you've got a Brownie, hope you're happy now.&lt;img alt="smile_wink" src="http://spaces.live.com/rte/emoticons/smile_wink.gif"&gt;  &lt;li&gt;&lt;a href="http://www.brains-n-brawn.com/wpfaugreal" target="_blank"&gt;Casey Chesnut&lt;/a&gt; for WPF Augmented Reality...that just rocks on so many levels.  &lt;li&gt;&lt;a href="http://joshsmithonwpf.wordpress.com" target="_blank"&gt;Josh Smith&lt;/a&gt; for writing about 5000 WPF articles on Codeproject.com &lt;li&gt;&lt;a href="http://jmorrill.hjtcentral.com/Home/tabid/428/BlogID/14/Default.aspx" target="_blank"&gt;Jeremiah Morrill&lt;/a&gt; for taking &lt;a href="http://www.codeplex.com/WPFWin32Renderer" target="_blank"&gt;WPF/Win32 interop&lt;/a&gt; to a &lt;a href="http://www.youtube.com/watch?v=RkJhsQZk3U8" target="_blank"&gt;HOLE NUVA LEVEL&lt;/a&gt;!&lt;/ul&gt; &lt;p&gt;That's it for right now. Don't feel slighted because I didn't get you this time around. There are others that I want to name but I don't want to make the list too long. On another note, I mentioned that in addition to Brownies, I would be handing out cookies for people who could be nicknamed captain obvious. &lt;p&gt;The first recipient of this dubious honor is none other than me. I made a big deal about the &lt;a href="http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!596.entry" target="_blank"&gt;Delegating Command&lt;/a&gt;  when a similar solution had already been blogged and talked about extensively. This will be the first and last Cookie handed out by me. &lt;p&gt;Congratulations to the first batch of Brownies, I will get your badges to you in short order.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+Brownies+and+Cookies&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><category>Fun Stuff</category><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!601.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!601.entry</guid><pubDate>Wed, 17 Oct 2007 18:53:35 GMT</pubDate><slash:comments>5</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!601/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!601.entry#comment</wfw:comment><dcterms:modified>2007-10-17T18:53:35Z</dcterms:modified></item><item><title>The Delegating Command</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!596.entry</link><description>&lt;p&gt;The RoutedCommand doesn't quite make sense to me in the M-V-VM pattern. Why go through the effort of creating command bindings when you are holding an instance of the Command within your controller (or ViewModel). Just trust me when I say it's convoluted. &lt;p&gt;At the other extreme, you would have to create a new class for each and every Command that your application provides. While there is a benefit to this scenario in some cases, in most instances it's overkill. A happy medium is having a class that implements ICommand and exposes events for CanExecute and Execute. Hence I give you the DelegatingCommand.&lt;pre&gt;&lt;span&gt;using&lt;/span&gt; System;
&lt;span&gt;using&lt;/span&gt; System.Collections.Generic;
&lt;span&gt;using&lt;/span&gt; System.Linq;
&lt;span&gt;using&lt;/span&gt; System.Text;
&lt;span&gt;using&lt;/span&gt; System.Windows.Input;

&lt;span&gt;namespace&lt;/span&gt; YourNamespaceHere
{
    &lt;span&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
    &lt;span&gt;/// Delegate for adding logic for determining if a &lt;/span&gt;
    &lt;span&gt;/// &amp;lt;see cref=&amp;quot;DelegatingCommand&amp;quot;/&amp;gt; can be executed&lt;/span&gt;
    &lt;span&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
    &lt;span&gt;/// &amp;lt;param name=&amp;quot;parameter&amp;quot;&amp;gt;&lt;/span&gt;
    &lt;span&gt;/// The parameter being passed to the command (can be null)&lt;/span&gt;
    &lt;span&gt;/// &amp;lt;/param&amp;gt;&lt;/span&gt;
    &lt;span&gt;/// &amp;lt;returns&amp;gt;&lt;/span&gt;
    &lt;span&gt;/// True if the command can be executed with the given parameter&lt;/span&gt;
    &lt;span&gt;/// &amp;lt;/returns&amp;gt;&lt;/span&gt;
    &lt;span&gt;public&lt;/span&gt; &lt;span&gt;delegate&lt;/span&gt; &lt;span&gt;bool&lt;/span&gt; CanExecuteHandler(&lt;span&gt;object&lt;/span&gt; parameter);

    &lt;span&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
    &lt;span&gt;/// Delegate for adding logic to execute a &amp;lt;see cref=&amp;quot;DelegatingCommand&amp;quot;/&amp;gt;&lt;/span&gt;
    &lt;span&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
    &lt;span&gt;/// &amp;lt;param name=&amp;quot;parameter&amp;quot;&amp;gt;&lt;/span&gt;
    &lt;span&gt;/// The parameter being passed to the command (can be null)&lt;/span&gt;
    &lt;span&gt;/// &amp;lt;/param&amp;gt;&lt;/span&gt;
    &lt;span&gt;public&lt;/span&gt; &lt;span&gt;delegate&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; ExecuteHandler(&lt;span&gt;object&lt;/span&gt; parameter);

    &lt;span&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
    &lt;span&gt;/// The DelegatingCommand provides an implementation of &amp;lt;see cref=&amp;quot;ICommand&amp;quot;/&amp;gt;&lt;/span&gt;
    &lt;span&gt;/// that can delegate CanExecute and Execute calls to listeners. As opposed&lt;/span&gt;
    &lt;span&gt;/// to the RoutedCommand, it does not require any custom wiring to the UI,&lt;/span&gt;
    &lt;span&gt;/// just bind an instance to any &amp;lt;see cref=&amp;quot;ICommand&amp;quot;/&amp;gt; (e.g.&lt;/span&gt;
    &lt;span&gt;/// &amp;lt;see cref=&amp;quot;Button&amp;quot;/&amp;gt; or &amp;lt;see cref=&amp;quot;MenuItem&amp;quot;/&amp;gt;) using XAML. This is &lt;/span&gt;
    &lt;span&gt;/// useful when implementing the MVC pattern within WPF. The Controller can&lt;/span&gt;
    &lt;span&gt;/// expose a DelegatingCommand as a property and the View can bind to it.&lt;/span&gt;
    &lt;span&gt;/// Anyone aware of the instance can handle the CanExecuteRequested and/or&lt;/span&gt;
    &lt;span&gt;/// ExecuteRequested events.&lt;/span&gt;
    &lt;span&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
    &lt;span&gt;public&lt;/span&gt; &lt;span&gt;class&lt;/span&gt; DelegatingCommand : ICommand
    {
        &lt;span&gt;public&lt;/span&gt; &lt;span&gt;event&lt;/span&gt; CanExecuteHandler CanExecuteRequested;
        &lt;span&gt;public&lt;/span&gt; &lt;span&gt;event&lt;/span&gt; ExecuteHandler ExecuteRequested;

        &lt;span&gt;public&lt;/span&gt; &lt;span&gt;bool&lt;/span&gt; CanExecute(&lt;span&gt;object&lt;/span&gt; parameter)
        {
            &lt;span&gt;if&lt;/span&gt; (CanExecuteRequested != &lt;span&gt;null&lt;/span&gt;)
                &lt;span&gt;return&lt;/span&gt; CanExecuteRequested(parameter);
            &lt;span&gt;return&lt;/span&gt; &lt;span&gt;true&lt;/span&gt;;
        }

        &lt;span&gt;private&lt;/span&gt; Object _Owner;
        &lt;span&gt;public&lt;/span&gt; Object Owner
        {
            get { &lt;span&gt;return&lt;/span&gt; _Owner; }
            set { _Owner = &lt;span&gt;value&lt;/span&gt;; }
        }

        &lt;span&gt;public&lt;/span&gt; &lt;span&gt;event&lt;/span&gt; EventHandler CanExecuteChanged;

        &lt;span&gt;public&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; Execute(&lt;span&gt;object&lt;/span&gt; parameter)
        {
            &lt;span&gt;if&lt;/span&gt; (ExecuteRequested != &lt;span&gt;null&lt;/span&gt;)
                ExecuteRequested(parameter);
        }

    }

}&lt;/pre&gt;
&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+The+Delegating+Command&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!596.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!596.entry</guid><pubDate>Tue, 16 Oct 2007 20:25:50 GMT</pubDate><slash:comments>7</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!596/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!596.entry#comment</wfw:comment><dcterms:modified>2007-10-16T20:25:50Z</dcterms:modified></item><item><title>Never Ceasing To Amaze</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!591.entry</link><description>&lt;p&gt;I'm finally convinced that we're looking to the wrong country for off-shoring. The .NET developers down in Australia keep doing things that just make me go WOW! For instance, take &lt;a href="http://www.paulstovell.net/introducingsynclinq.wmv" target="_blank"&gt;Paul Stovell's new SyncLINQ demonstration&lt;/a&gt;. It adds ObservableCollection capabilities to a LINQ query. But wait there's more! You can also tell SyncLINQ that you want your query run in the background (allowing your UI to update as Items come in). Finally you can tell SyncLINQ to rerun your query in the background on a given interval, also updating the UI automatically. I've already got a few ideas for which I can put SyncLINQ to good use.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+Never+Ceasing+To+Amaze&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!591.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!591.entry</guid><pubDate>Mon, 15 Oct 2007 12:47:40 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!591/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!591.entry#comment</wfw:comment><dcterms:modified>2007-10-15T12:47:40Z</dcterms:modified></item><item><title>12th Most Important Mike Brown</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!585.entry</link><description>&lt;p&gt;So, I finally committed the ultimate act of vanity and &lt;a href="http://www.google.com/search?q=mike+brown" target="_blank"&gt;googled myself&lt;/a&gt;. I was pleasantly surprised to find that my blog is ranked number 12 (just missing the first page of Mike Browns). Here's the kicker...this is the only post in my blog that has the words Mike Brown in it. Lot's of Brownies, no Mike Brown. I got to number 12 (actually higher there are some dups ahead of me) on nothing but the strength of incoming links. &lt;p&gt;While that's cool and all, what sucks is that if I leave spaces like I intended to, I have to start all over. Oh by the way if you're looking for info on WPF from a guy named Mike Brown, &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=mike+brown+WPF" target="_blank"&gt;google says I'm number 1&lt;/a&gt; (even above Chad Brown who mentions Mike Swanson in his blog. Take that Mike Brown Solutions dot com! By the way I'm way ahead of Mike Brown dot com and Mike Brown dot us. Even ahead of Mike Brown sucks dot com (boy did that get tiring when I lived in Cincinnati). &lt;p&gt;Considering that the former head of FEMA was one of the biggest pieces of news not too long ago and the others have the advantage of having ... I don't know their name on their pages (or in their domain name). And the sheer number of Mike Browns in the world...I'm happy with being #12. &lt;p&gt;Where do you end up when you google yourself?&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+12th+Most+Important+Mike+Brown&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><category>Fun Stuff</category><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!585.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!585.entry</guid><pubDate>Fri, 12 Oct 2007 06:28:13 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!585/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!585.entry#comment</wfw:comment><dcterms:modified>2007-10-12T06:28:13Z</dcterms:modified></item><item><title>Call To Arms</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!580.entry</link><description>&lt;p&gt;&lt;em&gt;(Cross posted on the front page of the WPF Toolbelt)&lt;/em&gt; &lt;p&gt;I had some lofty dreams when I first started this project (during beta 2 of .NET Framework 3.0. Now the 3.5 Framework is in Beta 2 and this project has stagnated because I've lacked the bandwidth to properly contribute to it. I've had some ideas for how to get things rolling again, but I just haven't had the time to properly dedicate to this. There are commercial libraries that address the same space as the toolbelt. And I can't hope to match a team of paid developers as a single developer working in my spare time. I've had the occassional volunteer join me, however because I can't provide the bandwidth to properly lead this effort, they tend to lose steam and move on to other things.  &lt;p&gt;I've seen a lot of visits to the project and a lot of downloads but very little feedback. Hopefully, the project has helped someone learn more about WPF. There are some nice examples of custom control creation in there...especially how to do lookless controls. The PowerGrid is fully stylable from the cell up. Of course I wouldn't recommend that you create a data grid as a custom control like I did. Instead I would recommend wrapping the ListView/GridView into a control that turns it into a data grid, or even using attached properties to decorate a standard listview with data grid functionality.  &lt;p&gt;Going forward, I cannot maintain this project alone...especially if I'm going to do what I know I want to do with it. So I ask the people who have volunteered if they would re-invest in the vision of the project. I ask one of the 2000 downloaders if they could invest some time to make this a tool that they could really use. I ask anyone involved in the WPF community that if you want to accelerate adoption of the framework, we need something like this. I ask the heads of other projects similar to the toolbelt, let's come together and pool our efforts to make something better than any of our projects can be alone. I'm willing to put my ego aside because running a project alone is no fun.  &lt;p&gt;Let's get together and make something amazing!&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+Call+To+Arms&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><category>WPF Toolbelt</category><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!580.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!580.entry</guid><pubDate>Thu, 11 Oct 2007 13:51:18 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!580/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!580.entry#comment</wfw:comment><dcterms:modified>2007-10-11T15:04:43Z</dcterms:modified></item><item><title>Slightly Dorky Nerd King</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!579.entry</link><description>&lt;p&gt;I just got my nerd certification. &lt;p&gt;&lt;a href="http://www.nerdtests.com/nt2ref.html"&gt;&lt;img alt="NerdTests.com says I'm a Slightly Dorky Nerd King.  What are you?  Click here!" src="http://www.nerdtests.com/images/badge/nt2/19ae9b02e54bcfe2.jpg"&gt; &lt;/a&gt; &lt;p&gt;I added my South Park avatar to seal the deal. I appeared to have failed my dumb/dork/awkward section...not by much though. BTW one disturbing statistic from the site is that 58% of the test takers would pick the Internet over sex if forced to choose one sacrificing the other permanently.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+Slightly+Dorky+Nerd+King&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!579.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!579.entry</guid><pubDate>Thu, 11 Oct 2007 02:10:28 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!579/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!579.entry#comment</wfw:comment><dcterms:modified>2007-10-11T02:10:28Z</dcterms:modified></item><item><title>Popfly Invites</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!574.entry</link><description>&lt;p&gt;So I logged into &lt;a href="http://www.popfly.ms/" target="_blank"&gt;Popfly&lt;/a&gt; to see what's new when lo and behold, I learn that I have invites. 5 to be exact. I'm reserving three of them for colleagues to have right of first refusal. I want to give two out here. (If my colleagues turn them down, I might have more.) So, what do you think would be a fair way to hand these guys out? If this doesn't get the lurkers to start posting comments, I don't know what will...well I do, but this is a family blog.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+Popfly+Invites&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!574.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!574.entry</guid><pubDate>Wed, 10 Oct 2007 06:31:01 GMT</pubDate><slash:comments>6</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!574/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!574.entry#comment</wfw:comment><dcterms:modified>2007-10-10T06:31:01Z</dcterms:modified></item><item><title>3D Programming for Windows</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!573.entry</link><description>&lt;p&gt;About a month or so ago, I got a special package in the mail that has a few of my colleagues turning green. Charles Petzold sent a signed copy of his book &lt;a href="http://www.amazon.com/3D-Programming-Windows-Pro-Developer/dp/0735623945/ref=pd_bbs_sr_1/104-8116654-8341536?ie=UTF8&amp;amp;s=books&amp;amp;qid=1189007532&amp;amp;sr=8-1" target="_blank"&gt;3D Programming for Windows&lt;/a&gt;. The fact that I got a personalized copy from the guy who wrote the book on Programming Windows (literally) may bias my opinion of this book. Therefore, in the interest of full disclosure, I have revealed this fact. We don't want another scandal like what happened when Microsoft sent the decked out Acer Ferraris to key members of the blogosphere ;). &lt;p&gt;&lt;strong&gt;First Impressions&lt;/strong&gt; &lt;p&gt;&lt;u&gt;3D Programming for Windows&lt;/u&gt; comes in at just over 430 pages cover to cover. This makes it much less daunting at first glance than &lt;a href="http://www.amazon.com/Applications-Code-Markup-Presentation-Foundation/dp/0735619573/ref=pd_bbs_2/104-8116654-8341536?ie=UTF8&amp;amp;s=books&amp;amp;qid=1189007532&amp;amp;sr=8-2" target="_blank"&gt;Applications=Code+Markup&lt;/a&gt; (slightly over 1000 pages cover to cover). And it makes sense. Petzold's book on the entire WPF framework has a lot more ground to cover than a book that is specific to WPF 3D. It's interesting to note that this book is the same size as WPF Unleash which includes coverage of WPF 3D within its pages. &lt;p&gt;&lt;strong&gt;From Wax On Wax Off to Beating Cobra Kai&lt;/strong&gt; &lt;p&gt;If you've read the original Programming Windows, you know that Charles has a very strong grasp of Windows Graphic programming. He shows you how to create a full-featured word processor, using raw GDI calls. There was no MFC to be found there. For a person who has an interest in 3D programming but has never written a line of 3D code in his life, I found that Charles' foundational writing style made the topic very approachable for me. He begins with introducing you to the basic concepts that you will deal with on a day to day basis in 3D programming (polygons, lights, cameras). He then moves on to more involved concepts that will help you do cool things with those basic elements for example using transforms and animation to manipulate your models, or applying textures and materials to make them prettier. &lt;p&gt;For the more adventurous souls, Charles goes into how to extend the WPF 3D engine with custom transforms, even providing an example transform that he feels was missing from the framework. &lt;p&gt;Overall, I would say that Charles' book on WPF 3D is a great starting point for anyone who has been interested in using 3D but has been reluctant to because of the steep learning curve that Direct 3D has presented. With the simplified 3D library that WPF provides and Charles on your side, you'll be a 3D wiz in no time.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+3D+Programming+for+Windows&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!573.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!573.entry</guid><pubDate>Tue, 09 Oct 2007 17:40:37 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!573/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!573.entry#comment</wfw:comment><dcterms:modified>2007-10-09T17:40:37Z</dcterms:modified></item><item><title>Hey You've Got Your WPF in My Augmented Reality</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!571.entry</link><description>&lt;p&gt;Okay this one is cooler than words can express. &lt;a href="http://www.brains-n-brawn.com/" target="_blank"&gt;Mr. Cool Tech himself&lt;/a&gt; has gone and done it again. This time he has taken WPF 3D and made an augmented reality demo. A simple example of augmented reality is the games for the Sony eyetoy where you manipulate the game not with the controller but by motions in the real world. Coming soon is the Eye of Judgement game. A playing card game that you play using the PS3, the Eyetoy and real physical cards. &lt;p&gt;Casey decided to do something similar himself using WPF 3D and a webcam (and here we have again another LEGITIMATE reason why we need better DirectShow integration with WPF). Anyway, there's not much more I can say make the jump and prepare to be &lt;a href="http://www.brains-n-brawn.com/wpfAugReal/" target="_blank"&gt;wowed&lt;/a&gt;!&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+Hey+You've+Got+Your+WPF+in+My+Augmented+Reality&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!571.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!571.entry</guid><pubDate>Mon, 08 Oct 2007 13:31:46 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://mbrownchicago.spaces.live.com/blog/cns!2221DC39E0C749A4!571/comments/feed.rss</wfw:commentRss><wfw:comment>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!571.entry#comment</wfw:comment><dcterms:modified>2007-10-08T13:31:46Z</dcterms:modified></item><item><title>International Phenomenon...Sort of</title><link>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!569.entry</link><description>&lt;p&gt;Let's talk about the big elephant in the corner...Live Spaces leaves a lot to be desired in the realm of visitor tracking. You might have noticed that my main page now includes an amung.us tracker. Unfortunately, I can't find a way to get the tracker on all the pages of my blog (most of my visits are to individual posts not to the main page), so the data isn't as rich as it could be. But it looks like I'm getting hits across the US, with a few clusters in Europe. The hits from Australia I assume are from my friends at Readify (Paul and Joseph). I even have a few visits from the Middle East, South America, Russia, and Northern Africa (is that Morocco?). Spaces tells me that I get about 1000 hits a week (they don't provide the data over time, just for the current week). Unfortunately the count includes hits to the RSS feed. So take the 1000 and cut it in half for a conservative estimate of actual visits.  I only get the rich hit data for the past day or so. And to top it off, you have to type a whole bunch of characters to get to my blog. &lt;p&gt;SO...although Spaces has been great to me. I will be setting up shop at a new (as yet undisclosed) domain. I'm putting the final touches on the site. And like this blog it will revolve around WPF. Hopefully, the new site will be more conducive to what I want to do here. &lt;p&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px" height=304 alt=image src="http://blufiles.storage.msn.com/y1p8EpAlDbvGPkxUOm2vI571lkPkmTqMlEYOlhzjdydAtFAVGzOAwR7mm7owIlSgY-JNDrkI4Do0XU?PARTNER=WRITER" width=644 border=0&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2459489012663404964&amp;page=RSS%3a+International+Phenomenon...Sort+of&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=mbrownchicago.spaces.live.com&amp;amp;GT1=mbrownchicago"&gt;</description><comments>http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!569.entry#comment</comments><guid isPermaLink="true">http://mbrownchicago.spaces.live.com/Blog/cns!2221DC39E0C749A4!569.entry</guid><pubDate>Sun, 07 Oct 2007 06:02:03 