<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Wizards of Smart &#187; Uncategorized</title>
	<atom:link href="http://wizardsofsmart.net/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://wizardsofsmart.net</link>
	<description>.NET Design Patterns</description>
	<lastBuildDate>Thu, 29 Jul 2010 16:40:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0-beta2-14896</generator>
		<item>
		<title>Wizards of Smart &#8211; Heroku, Cloud, and Iron Ruby</title>
		<link>http://wizardsofsmart.net/uncategorized/wizards-of-smart-heroku-cloud-and-iron-ruby/</link>
		<comments>http://wizardsofsmart.net/uncategorized/wizards-of-smart-heroku-cloud-and-iron-ruby/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 15:32:10 +0000</pubDate>
		<dc:creator>rookieone</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://wizardsofsmart.net/uncategorized/wizards-of-smart-heroku-cloud-and-iron-ruby/</guid>
		<description><![CDATA[Sorry for the long delay guys. Ryan and I are both in the middle of deploying applications so other things are on our minds. While we wait for me to edit the recording we did last night and we await Glenn Block’s approval on the fantastic 2 shows we did with him, we can enjoy [...]]]></description>
			<content:encoded><![CDATA[<p>Sorry for the long delay guys. Ryan and I are both in the middle of deploying applications so other things are on our minds. </p>
<p>While we wait for me to edit the recording we did last night and we await Glenn Block’s approval on the fantastic 2 shows we did with him, we can enjoy a smaller conversation Ryan and I had on Heroku, Azure, and a bit about Iron Ruby. </p>
<div><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="210" height="25" id="mp3playerlightsmallv3" align="middle"><param name="allowScriptAccess" value="sameDomain" /><param name="movie" value="http://www.podbean.com/podcast-audio-video-blog-player/mp3playerlightsmallv3.swf?audioPath=http://rookieone.podbean.com/mf/play/fd9dp8/wos_heroku_cloud.mp3&amp;autoStart=no" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><param name="wmode" value="transparent" /><embed src="http://www.podbean.com/podcast-audio-video-blog-player/mp3playerlightsmallv3.swf?audioPath=http://rookieone.podbean.com/mf/play/fd9dp8/wos_heroku_cloud.mp3&amp;autoStart=no" quality="high" width="210" height="25" name="mp3playerlightsmallv3" align="middle" allowScriptAccess="sameDomain" wmode="transparent" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> 	</object>    <br /><a style="border-bottom: medium none; padding-left: 41px; font-family: arial, helvetica, sans-serif; color: #2da274; font-size: 11px; font-weight: normal; text-decoration: none" href="http://www.podbean.com" onclick="urchinTracker('/outgoing/www.podbean.com?referer=');">Powered by Podbean.com</a> </div>
]]></content:encoded>
			<wfw:commentRss>http://wizardsofsmart.net/uncategorized/wizards-of-smart-heroku-cloud-and-iron-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wizards of Smart &#8211; Episode 6</title>
		<link>http://wizardsofsmart.net/uncategorized/wizards-of-smart-episode-6/</link>
		<comments>http://wizardsofsmart.net/uncategorized/wizards-of-smart-episode-6/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 21:43:42 +0000</pubDate>
		<dc:creator>rookieone</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://wizardsofsmart.net/uncategorized/wizards-of-smart-episode-6/</guid>
		<description><![CDATA[The general theme for this podcast is handling Complexity through Composition. But we end up talking about Entity Framework, Fubu MVC, ISP, Rails, and reach new levels of nerdness with sentence composition. Powered by Podbean.com]]></description>
			<content:encoded><![CDATA[<p>The general theme for this podcast is handling Complexity through Composition. But we end up talking about Entity Framework, Fubu MVC, ISP, Rails, and reach new levels of nerdness with sentence composition.</p>
<div><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="210" height="25" id="mp3playerlightsmallv3" align="middle"><param name="allowScriptAccess" value="sameDomain" /><param name="movie" value="http://www.podbean.com/podcast-audio-video-blog-player/mp3playerlightsmallv3.swf?audioPath=http://rookieone.podbean.com/mf/play/qrebtq/episode6.mp3&amp;autoStart=no" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><param name="wmode" value="transparent" /><embed src="http://www.podbean.com/podcast-audio-video-blog-player/mp3playerlightsmallv3.swf?audioPath=http://rookieone.podbean.com/mf/play/qrebtq/episode6.mp3&amp;autoStart=no" quality="high" width="210" height="25" name="mp3playerlightsmallv3" align="middle" allowScriptAccess="sameDomain" wmode="transparent" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> 	</object>    <br /><a style="border-bottom-style: none; padding-left: 41px; font-family: arial, helvetica, sans-serif; color: #2da274; font-size: 11px; font-weight: normal; text-decoration: none" href="http://www.podbean.com" onclick="urchinTracker('/outgoing/www.podbean.com?referer=');">Powered by Podbean.com</a> </div>
]]></content:encoded>
			<wfw:commentRss>http://wizardsofsmart.net/uncategorized/wizards-of-smart-episode-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Virtual Brown Bag &#8211; 6/3/2010</title>
		<link>http://wizardsofsmart.net/uncategorized/virtual-brown-bag-632010/</link>
		<comments>http://wizardsofsmart.net/uncategorized/virtual-brown-bag-632010/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 21:37:09 +0000</pubDate>
		<dc:creator>rookieone</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://wizardsofsmart.net/uncategorized/virtual-brown-bag-632010/</guid>
		<description><![CDATA[A rather link filled, topic filled VBB. Not many direct coding examples but lots of great information. LINQ Examples I did share how to use Sum, Select Many, and Aggregate. The code was put into my learning csharp project in my learning solution on GitHub. I plan on writing a couple of blog posts on [...]]]></description>
			<content:encoded><![CDATA[<p>A rather link filled, topic filled VBB. Not many direct coding examples but lots of great information.</p>
<h3>LINQ Examples</h3>
<p>I did share how to use Sum, Select Many, and Aggregate. The code was put into my learning csharp project in my learning solution on GitHub.</p>
<p>I plan on writing a couple of blog posts on these LINQ items so stay tuned if you want more LINQ goodness.</p>
<p><a href="http://github.com/RookieOne/Learning" onclick="urchinTracker('/outgoing/github.com/RookieOne/Learning?referer=');">http://github.com/RookieOne/Learning</a></p>
<h3>Wizards of Smart Podcast – Episode 5</h3>
<p>More rails talk on this episode. But I did share the link with the VBB. <a href="http://www.theabsentmindedcoder.com/2010/06/wizards-of-smart-episode-5_01.html" onclick="urchinTracker('/outgoing/www.theabsentmindedcoder.com/2010/06/wizards-of-smart-episode-5_01.html?referer=');">http://www.theabsentmindedcoder.com/2010/06/wizards-of-smart-episode-5_01.html</a></p>
<h3>Absent Minded Coder Posts</h3>
<p>I shared my 2 posts from the last brown bag…</p>
<h4>Structure Map 2.6 constructing the concrete type</h4>
<p><a href="http://www.theabsentmindedcoder.com/2010/05/structure-map-26-constructing-concrete.html" onclick="urchinTracker('/outgoing/www.theabsentmindedcoder.com/2010/05/structure-map-26-constructing-concrete.html?referer=');">http://www.theabsentmindedcoder.com/2010/05/structure-map-26-constructing-concrete.html</a></p>
<h4>Interface Segregation Principle</h4>
<p><a href="http://www.theabsentmindedcoder.com/2010/05/interface-segregation-principle-in.html" onclick="urchinTracker('/outgoing/www.theabsentmindedcoder.com/2010/05/interface-segregation-principle-in.html?referer=');">http://www.theabsentmindedcoder.com/2010/05/interface-segregation-principle-in.html</a></p>
<p>I also shared George’s comment on the Udi InfoQ article : <a href="http://www.infoq.com/presentations/Making-Roles-Explicit-Udi-Dahan" onclick="urchinTracker('/outgoing/www.infoq.com/presentations/Making-Roles-Explicit-Udi-Dahan?referer=');">http://www.infoq.com/presentations/Making-Roles-Explicit-Udi-Dahan</a></p>
<h3>Unlocker</h3>
<p>Claudio shared a helpful tool to get rid of an annoying Windows error. <a href="http://ccollomb.free.fr/unlocker/" onclick="urchinTracker('/outgoing/ccollomb.free.fr/unlocker/?referer=');">http://ccollomb.free.fr/unlocker/</a></p>
<h3>VS 2010 Step into .Net Framework</h3>
<p>Claudio also shared a blog post showing how to setup Visual Studio 2010 to allow stepping into .Net Framework code. <a href="http://weblogs.asp.net/rajbk/archive/2010/04/21/setting-up-visual-studio-2010-to-step-into-microsoft-net-source-code.aspx" onclick="urchinTracker('/outgoing/weblogs.asp.net/rajbk/archive/2010/04/21/setting-up-visual-studio-2010-to-step-into-microsoft-net-source-code.aspx?referer=');">http://weblogs.asp.net/rajbk/archive/2010/04/21/setting-up-visual-studio-2010-to-step-into-microsoft-net-source-code.aspx</a></p>
<h4>Why Your Code Sucks</h4>
<p>This might be my favorite link Claudio shared. The blog post talks about why your code sucks… yes he is talking to you. (and me…) <img src='http://wizardsofsmart.net/wp/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p><a href="http://www.artima.com/weblogs/viewpost.jsp?thread=71730" onclick="urchinTracker('/outgoing/www.artima.com/weblogs/viewpost.jsp?thread=71730&amp;referer=');">http://www.artima.com/weblogs/viewpost.jsp?thread=71730</a></p>
<h3>Resharper and Regions</h3>
<p>Find out how to configure Resharper to remove regions <a href="http://bit.ly/wtjK3" onclick="urchinTracker('/outgoing/bit.ly/wtjK3?referer=');"><u>http://bit.ly/wtjK3</u></a></p>
<p>You can also prevent Resharper from adding regions <a href="http://bit.ly/9QgLYe" onclick="urchinTracker('/outgoing/bit.ly/9QgLYe?referer=');"><u>http://bit.ly/9QgLYe</u></a></p>
<h3>Monads</h3>
<p>Uncle Bob uploaded a WTF is a Monad presentation : <a href="http://bit.ly/aBMIaL" onclick="urchinTracker('/outgoing/bit.ly/aBMIaL?referer=');"><u>http://bit.ly/aBMIaL</u></a> &lt;- I plan to look at this tonight ;D</p>
<h3>Revamp Your Code Review</h3>
<p>Ryan wanted me to share a blog post by Kyle Baley discussing the code review process : <a href="http://codebetter.com/blogs/kyle.baley/archive/2010/06/01/rietveld-or-how-to-revamp-your-code-review-process.aspx" onclick="urchinTracker('/outgoing/codebetter.com/blogs/kyle.baley/archive/2010/06/01/rietveld-or-how-to-revamp-your-code-review-process.aspx?referer=');">http://codebetter.com/blogs/kyle.baley/archive/2010/06/01/rietveld-or-how-to-revamp-your-code-review-process.aspx</a></p>
<h3>Nine Things ie9 is doing Right</h3>
<p>Ryan also wanted me to share : <a href="http://sixrevisions.com/web-development/five-things-ie9-is-actually-doing-right/" onclick="urchinTracker('/outgoing/sixrevisions.com/web-development/five-things-ie9-is-actually-doing-right/?referer=');">http://sixrevisions.com/web-development/five-things-ie9-is-actually-doing-right/</a></p>
<h3>RSA Animate &#8211; Drive: The surprising truth about what motivates us</h3>
<p>I think @TheCodeFoundary tweet’d this link earlier this week. It is an interesting video discussing how we are actually motivated by more than money. <img src='http://wizardsofsmart.net/wp/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p><a href="http://www.youtube.com/watch?v=u6XAPnuFjJc" onclick="urchinTracker('/outgoing/www.youtube.com/watch?v=u6XAPnuFjJc&amp;referer=');">http://www.youtube.com/watch?v=u6XAPnuFjJc</a></p>
<h3>Git + GitHub</h3>
<p>Claudio was asking about Git so I shared some links and walked through a simple workflow into how I commit locally and then push to my GitHub repository.</p>
<p>Git Extensions can be found here : <a href="http://sourceforge.net/projects/gitextensions/" onclick="urchinTracker('/outgoing/sourceforge.net/projects/gitextensions/?referer=');">http://sourceforge.net/projects/gitextensions/</a></p>
<p>We also discovered this : <a href="http://learn.github.com/" onclick="urchinTracker('/outgoing/learn.github.com/?referer=');">http://learn.github.com/</a></p>
<h3>Architecting TekPub</h3>
<p>Great article on InfoQ. In the article they itnerview James Avery and Rob Conery about their experience with TekPub going from MVC to Ruby on Rails and the reasoning why.</p>
<p><a href="http://www.infoq.com/articles/architecting-tekpub" onclick="urchinTracker('/outgoing/www.infoq.com/articles/architecting-tekpub?referer=');">http://www.infoq.com/articles/architecting-tekpub</a></p>
<h3>Future Rails Hands-On Demo?</h3>
<p>I tossed out the idea of having a rails hands on talk where as Claudio talks, I code the application in rails. The purpose is to showcase how rapidly we can build an application and deploy the application using rails.</p>
]]></content:encoded>
			<wfw:commentRss>http://wizardsofsmart.net/uncategorized/virtual-brown-bag-632010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Examining how we develop software</title>
		<link>http://wizardsofsmart.net/uncategorized/examining-how-we-develop-software/</link>
		<comments>http://wizardsofsmart.net/uncategorized/examining-how-we-develop-software/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 23:07:05 +0000</pubDate>
		<dc:creator>rookieone</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://wizardsofsmart.net/uncategorized/examining-how-we-develop-software/</guid>
		<description><![CDATA[What I am starting is a mental exercise exploring how my view on software development is changing. Since this is a basically a brain dump, treat it as such. Feel free to comment on what I say&#8230; offer advice and opinions. Maybe there is something you can sympathize with. What has started me thinking along [...]]]></description>
			<content:encoded><![CDATA[<p>What I am starting is a mental exercise exploring how my view on software development is changing. Since this is a basically a brain dump, treat it as such. Feel free to comment on what I say&#8230; offer advice and opinions. Maybe there is something you can sympathize with. </p>
<p>What has started me thinking along these lines has been my recent readings of The Toyota Way and my re-reading of The Goal. </p>
<table border="0" cellspacing="0" cellpadding="2" width="400">
<tbody>
<tr>
<td valign="top" width="200">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a href="http://www.amazon.com/Toyota-Way-Jeffrey-Liker/dp/0071392319%3FSubscriptionId%3D0JTCV5ZMHMF7ZYTXGFR2%26tag%3Dbrdicr-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0071392319" onclick="urchinTracker('/outgoing/www.amazon.com/Toyota-Way-Jeffrey-Liker/dp/0071392319_3FSubscriptionId_3D0JTCV5ZMHMF7ZYTXGFR2_26tag_3Dbrdicr-20_26linkCode_3Dxm2_26camp_3D2025_26creative_3D165953_26creativeASIN_3D0071392319?referer=');">The Toyota Way</a>                   <br /><img src="http://ecx.images-amazon.com/images/I/51UatoYrcWL._SL160_.jpg" /> </td>
</tr>
</tbody>
</table>
</td>
<td valign="top" width="200">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a href="http://www.amazon.com/Goal-Process-Ongoing-Improvement/dp/0884271781%3FSubscriptionId%3D0JTCV5ZMHMF7ZYTXGFR2%26tag%3Dbrdicr-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0884271781" onclick="urchinTracker('/outgoing/www.amazon.com/Goal-Process-Ongoing-Improvement/dp/0884271781_3FSubscriptionId_3D0JTCV5ZMHMF7ZYTXGFR2_26tag_3Dbrdicr-20_26linkCode_3Dxm2_26camp_3D2025_26creative_3D165953_26creativeASIN_3D0884271781?referer=');">The Goal: A Process of Ongoing Improvement</a>                   <br /><img src="http://ecx.images-amazon.com/images/I/51W2NXJAXHL._SL160_.jpg" /> </td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p>Both readings have me re-examining my career and software development. Asking questions like, Are we focused on the right things? </p>
<p>Anyway here are the posts:</p>
<ul>
<li><a href="http://wizardsofsmart.net/lean/jaded-net/">Jaded .Net</a> </li>
<li><a href="http://wizardsofsmart.net/lean/the-goal/">The Goal</a> </li>
<li>Estimating the Impossible </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://wizardsofsmart.net/uncategorized/examining-how-we-develop-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Named Command Decorator</title>
		<link>http://wizardsofsmart.net/uncategorized/named-command-decorator/</link>
		<comments>http://wizardsofsmart.net/uncategorized/named-command-decorator/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 22:43:49 +0000</pubDate>
		<dc:creator>rookieone</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://wizardsofsmart.net/wpf/named-command-decorator/</guid>
		<description><![CDATA[Here is the problem, we have a list of ‘commands’ we wish to show depending on what view model / entity is active. If we just had a collection of ICommands, we could show buttons but what would their content be? My solution is to use the decorator pattern to decorate commands with a Name [...]]]></description>
			<content:encoded><![CDATA[<p>Here is the problem, we have a list of ‘commands’ we wish to show depending on what view model / entity is active. If we just had a collection of ICommands, we could show buttons but what would their content be?</p>
<p>My solution is to use the decorator pattern to decorate commands with a Name that can be used as the content for the buttons.</p>
<p>My decorator looks like :</p>
<div id="codeSnippetWrapper">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> NamedCommand : ICommand{    <span style="color: #0000ff">public</span> NamedCommand(ICommand decoratedCommand, <span style="color: #0000ff">string</span> name)    {        _DecoratedCommand = decoratedCommand;        Name = name;    }

    <span style="color: #0000ff">readonly</span> ICommand _DecoratedCommand;    <span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> Name { get; set; }

    <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> Execute(<span style="color: #0000ff">object</span> parameter)    {        _DecoratedCommand.Execute(parameter);    }

    <span style="color: #0000ff">public</span> <span style="color: #0000ff">bool</span> CanExecute(<span style="color: #0000ff">object</span> parameter)    {        <span style="color: #0000ff">return</span> _DecoratedCommand.CanExecute(parameter);    }

    <span style="color: #0000ff">public</span> <span style="color: #0000ff">event</span> EventHandler CanExecuteChanged;}</pre>
<p></div>
</p>
<p>I then created an extension method on ICommand :</p>
<div id="codeSnippetWrapper">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"><span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> ICommand Name(<span style="color: #0000ff">this</span> ICommand command, <span style="color: #0000ff">string</span> name){    <span style="color: #0000ff">return</span> <span style="color: #0000ff">new</span> NamedCommand(command, name);}</pre>
<p></div>
<p>So in the code I can now do:</p>
<div id="codeSnippetWrapper">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">Commands.Add(<span style="color: #0000ff">new</span> ActionCommand(OnOpen).Name(<span style="color: #006080">&quot;Open&quot;</span>));</pre>
<p></div>
<p>For my WPF visual, I have a DataTemplate :</p>
<div id="codeSnippetWrapper">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"><span style="color: #0000ff">&lt;</span><span style="color: #800000">DataTemplate</span> <span style="color: #ff0000">DataType</span><span style="color: #0000ff">=&quot;{x:Type Commands:NamedCommand}&quot;</span> <span style="color: #0000ff">&gt;</span>    <span style="color: #0000ff">&lt;</span><span style="color: #800000">Button</span> <span style="color: #ff0000">Content</span><span style="color: #0000ff">=&quot;{Binding Name}&quot;</span>            <span style="color: #ff0000">Command</span><span style="color: #0000ff">=&quot;{Binding }&quot;</span> <span style="color: #0000ff">/&gt;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">DataTemplate</span><span style="color: #0000ff">&gt;</span></pre>
<p></div>
]]></content:encoded>
			<wfw:commentRss>http://wizardsofsmart.net/uncategorized/named-command-decorator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aop INotifyPropertyChanged StructureMap</title>
		<link>http://wizardsofsmart.net/uncategorized/aop-inotifypropertychanged-structuremap/</link>
		<comments>http://wizardsofsmart.net/uncategorized/aop-inotifypropertychanged-structuremap/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 15:53:19 +0000</pubDate>
		<dc:creator>rookieone</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://wizardsofsmart.net/uncategorized/aop-inotifypropertychanged-structuremap/</guid>
		<description><![CDATA[Anyone who has worked with INotifyPropertyChanged knows that this simple interface can be a royal pain in the ass. To try and eliminate the pain, people have created some great solutions using AOP : IL weaving (PostSharp) and using a proxy (Castle Dynamic Proxy). PostSharp has a little too much voodoo for me atm. I [...]]]></description>
			<content:encoded><![CDATA[<p>Anyone who has worked with INotifyPropertyChanged knows that this simple interface can be a royal pain in the ass.</p>
<p>To try and eliminate the pain, people have created some great solutions using AOP : IL weaving (<a href="http://www.postsharp.org/" onclick="urchinTracker('/outgoing/www.postsharp.org/?referer=');">PostSharp</a>) and using a proxy (<a href="http://serialseb.blogspot.com/2008/05/implementing-inotifypropertychanged.html" onclick="urchinTracker('/outgoing/serialseb.blogspot.com/2008/05/implementing-inotifypropertychanged.html?referer=');">Castle Dynamic Proxy</a>).</p>
<p>PostSharp has a little too much voodoo for me atm. I think I will warm up to it though and re-examine using PostSharp on my next solution. But for now, I wanted to use Castle Project’s Dynamic Proxy.</p>
<p>Naturally since Castle also has a very popular IoC container in Windsor, most examples marry Dynamic Proxy and Windsor to form an AOP INotifyPropertyChanged solution.</p>
<p>Since I am using StructureMap for this project, I endeavored to create my own solution using Dynamic Proxy.</p>
<p>My first attempt I shared at the Virtual Brown Bag look liked it worked but in reality I was constructing my objects twice. </p>
<p>Once with SM and once with the Proxy generator. </p>
<p>I had to go back to the drawing board and posted my problem at the SM google group. <a href="http://groups.google.com/group/structuremap-users/browse_thread/thread/1a6b19ce8152db1b?hl=en" onclick="urchinTracker('/outgoing/groups.google.com/group/structuremap-users/browse_thread/thread/1a6b19ce8152db1b?hl=en&amp;referer=');">http://groups.google.com/group/structuremap-users/browse_thread/thread/1a6b19ce8152db1b?hl=en</a></p>
<p>I believe the syntax given to me was an older version of SM. For the record, I am using version 2.5.3.0</p>
<p>But it did direct me to the general idea on where I should start looking. I ended up needing to create an IBuildInterceptor.</p>
<div id="codeSnippetWrapper">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> MyBuildInterceptor : IBuildInterceptor   {       <span style="color: #0000ff">public</span> MyBuildInterceptor(Type concreteType)       {           _ConcreteType = concreteType;       }

       <span style="color: #0000ff">readonly</span> Type _ConcreteType;

       <span style="color: #0000ff">public</span> <span style="color: #0000ff">object</span> Build(BuildSession buildSession, Type pluginType, Instance instance)       {           var constructorArgs = _ConcreteType               .GetConstructors()               .FirstOrDefault()               .GetParameters()               .Select(p =&gt; buildSession.CreateInstance(p.ParameterType))               .ToArray();

           var interceptors = <span style="color: #0000ff">new</span> List&lt;IInterceptor&gt;                                  {                                      <span style="color: #0000ff">new</span> NotifyInterceptor()                                  }                                  .ToArray();

           <span style="color: #0000ff">return</span> <span style="color: #0000ff">new</span> ProxyGenerator().CreateClassProxy(_ConcreteType, interceptors, constructorArgs);       }

       <span style="color: #0000ff">public</span> IBuildPolicy Clone()       {           <span style="color: #0000ff">return</span> InnerPolicy.Clone();       }

       <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> EjectAll()       {           InnerPolicy.EjectAll();       }

       <span style="color: #0000ff">public</span> IBuildPolicy InnerPolicy { get; set; }   }</pre>
<p></div>
</p>
<p>To register my ViewModels I created a convention using a TypeScanner</p>
<div id="codeSnippetWrapper">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> MyNotifyConvention : ITypeScanner{    <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> Process(Type type, PluginGraph graph)    {

        <span style="color: #0000ff">if</span> (type.GetInterface(<span style="color: #006080">&quot;IViewModel&quot;</span>) == <span style="color: #0000ff">null</span>)            <span style="color: #0000ff">return</span>;

        var interfaceType = type.GetInterfaces().FirstOrDefault(i =&gt; i.Name.Contains(<span style="color: #006080">&quot;ViewModel&quot;</span>)                                                            &amp;&amp; i.Name != <span style="color: #006080">&quot;IViewModel&quot;</span>);

        <span style="color: #0000ff">if</span> (interfaceType == <span style="color: #0000ff">null</span>)            <span style="color: #0000ff">return</span>;

        graph.Configure(r =&gt;                        r.ForRequestedType(interfaceType)                        .InterceptConstructionWith(<span style="color: #0000ff">new</span> MyBuildInterceptor(type))                        .TheDefaultIsConcreteType(type));    }}</pre>
<p></div>
</p>
<p>I then used a Dynamic Proxy Interceptor that I basically copy and pasted from Serial Seb’s <a href="http://serialseb.blogspot.com/2008/05/implementing-inotifypropertychanged.html" onclick="urchinTracker('/outgoing/serialseb.blogspot.com/2008/05/implementing-inotifypropertychanged.html?referer=');">example</a>.</p>
<div id="codeSnippetWrapper">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> NotifyInterceptor : IInterceptor{    <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> Intercept(IInvocation invocation)    {        <span style="color: #008000">// let the original call go through first, so we can notify *after*</span>        invocation.Proceed();

        <span style="color: #0000ff">if</span> (invocation.Method.Name.StartsWith(<span style="color: #006080">&quot;set_&quot;</span>))        {            <span style="color: #0000ff">string</span> propertyName = invocation.Method.Name.Substring(4);            RaisePropertyChangedEvent(invocation, propertyName, invocation.TargetType);        }    }

    <span style="color: #0000ff">void</span> RaisePropertyChangedEvent(IInvocation invocation, <span style="color: #0000ff">string</span> propertyName, Type type)    {        <span style="color: #008000">// get the field storing the delegate list that are stored by the event.</span>        var methodInfo = type.GetMethod(<span style="color: #006080">&quot;RaisePropertyChanged&quot;</span>);

        <span style="color: #0000ff">if</span> (methodInfo == <span style="color: #0000ff">null</span>)        {            <span style="color: #0000ff">if</span> (type.BaseType != <span style="color: #0000ff">null</span>)                RaisePropertyChangedEvent(invocation, propertyName, type.BaseType);        }        <span style="color: #0000ff">else</span> <span style="color: #008000">// info != null</span>        {            methodInfo.Invoke(invocation.InvocationTarget, <span style="color: #0000ff">new</span> <span style="color: #0000ff">object</span>[] {propertyName});        }    }}</pre>
<p></div>
<p>Instead of looking for the PropertyChanged Handler, I create a RaisePropertyChanged method and use that. Although I could raise the event using the field method Seb was using, WPF wasn’t updating the binding. I didn’t really bother to investigate and just rolled with this solution.</p>
<p>So that’s my solution and I’ll start using it in my current solution. Naturally I will clean up the code some more etc. Feel free to use this for any of your own projects. You can also get the solution at my GitHub:</p>
<p><a href="http://github.com/RookieOne/StructureMapAopNotify" onclick="urchinTracker('/outgoing/github.com/RookieOne/StructureMapAopNotify?referer=');">http://github.com/RookieOne/StructureMapAopNotify</a></p>
]]></content:encoded>
			<wfw:commentRss>http://wizardsofsmart.net/uncategorized/aop-inotifypropertychanged-structuremap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Monads.</title>
		<link>http://wizardsofsmart.net/uncategorized/monads/</link>
		<comments>http://wizardsofsmart.net/uncategorized/monads/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 14:04:52 +0000</pubDate>
		<dc:creator>rookieone</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://wizardsofsmart.net/monads/monads/</guid>
		<description><![CDATA[Ryan is the monad king. Ok.. well maybe not the king. But he has a big megaphone and drops a ‘monad’ bomb daily. He has been doing some fantastic work in F# and C# using monads. He shares his code and I just stare… going WTF is this! I know the basic concepts of what [...]]]></description>
			<content:encoded><![CDATA[<p>Ryan is the monad king. Ok.. well maybe not the king. But he has a big megaphone and drops a ‘monad’ bomb daily. He has been doing some fantastic work in F# and C# using monads. He shares his code and I just stare… going WTF is this!</p>
<p>I know the basic concepts of what a monad is mostly due to random discussions. I never put any solid research time into <strong>what</strong> it is… <strong>why </strong>I would use it… and <strong>where </strong>does it fit into the larger scheme of my personal development toolkit.</p>
<p>I started my adventure in learning where I normally start… wikipedia.</p>
<p><a title="http://en.wikipedia.org/wiki/Monad_%28functional_programming%29" href="http://en.wikipedia.org/wiki/Monad_%28functional_programming%29" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Monad_28functional_programming_29?referer=');">http://en.wikipedia.org/wiki/Monad_%28functional_programming%29</a></p>
<p>Whoa.. lots of new terms thrown at me. Here are some random notes and crazy thoughts I am pulling out (mostly for myself).</p>
<blockquote><p>“a <b>monad</b> is a kind of <a href="http://en.wikipedia.org/wiki/Abstract_data_type" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Abstract_data_type?referer=');">abstract data type</a> used to represent <a href="http://en.wikipedia.org/wiki/Computation" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Computation?referer=');">computations</a> (instead of data in the <a href="http://en.wikipedia.org/wiki/Domain_model" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Domain_model?referer=');">domain model</a>)”</p>
</blockquote>
<p>That sparks some ideas. Anyone who talks to me on a regular basis knows I am a huge Greg Young CQS fan. I think I’ve always been circling around these ideas but Greg’s insights just pulled away the haze and brought into focus the essence of what always bothered me.</p>
<p>For more information on Greg Young’s CQS, I would suggest <a title="http://jonathan-oliver.blogspot.com/2009/03/dddd-and-cqs-getting-started.html" href="http://jonathan-oliver.blogspot.com/2009/03/dddd-and-cqs-getting-started.html" onclick="urchinTracker('/outgoing/jonathan-oliver.blogspot.com/2009/03/dddd-and-cqs-getting-started.html?referer=');">http://jonathan-oliver.blogspot.com/2009/03/dddd-and-cqs-getting-started.html</a></p>
<p>Jonathan has compiled a great set of links to get introduced to the ideas. I am by no means an expert, but I consider myself a CQS disciple. <img src='http://wizardsofsmart.net/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Back to monads.</p>
<p>The idea of the ‘domain’ being a ‘computation’ or ‘action’ more than data makes me think there might be a connection to explore.</p>
<blockquote><p>“Monads allow the programmer to chain actions together to build a <a href="http://en.wikipedia.org/wiki/Pipeline_%28computing%29" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Pipeline_28computing_29?referer=');">pipeline</a>, in which each action is decorated with additional processing rules provided by the monad.”</p>
</blockquote>
<p>This makes me think of the ‘reconstruction’ of a domain object by processing its events. That would be a neat POC to put together.</p>
<blockquote><p>“The <i>return</i> operation puts a value from a plain type into a monadic container of type <i>M</i>. The <i>bind</i> operation performs the reverse process, extracting the original value from the container and passing it to the associated next function in the pipeline.”</p>
</blockquote>
<p>I am still unclear on the whole wrapping business. I think I will revisit this again after going to another location to learn about monads.</p>
<p>So I moved over to Channel 9 and began to watch:</p>
<p><a title="http://channel9.msdn.com/shows/Going+Deep/Brian-Beckman-The-Zen-of-Expressing-State-The-State-Monad/" href="http://channel9.msdn.com/shows/Going+Deep/Brian-Beckman-The-Zen-of-Expressing-State-The-State-Monad/" onclick="urchinTracker('/outgoing/channel9.msdn.com/shows/Going+Deep/Brian-Beckman-The-Zen-of-Expressing-State-The-State-Monad/?referer=');">http://channel9.msdn.com/shows/Going+Deep/Brian-Beckman-The-Zen-of-Expressing-State-The-State-Monad/</a></p>
<p>Here are some random notes / quotes:</p>
<blockquote><p>“Only two types of variables. A bound variable and a free variable. Bound variable is a function argument. A free variable has to be looked up somewhere else.”</p>
</blockquote>
<p><strong>State monad takes a state and spits out a state, content pair.</strong></p>
<blockquote><p>“Composition is good” <img src='http://wizardsofsmart.net/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
</blockquote>
<blockquote><p>“Mathematics is the art of abstraction and precision”</p>
</blockquote>
<p>Is functional programming and monads a disruptive technology? Although it technically isn’t that ‘new’. I think it might be. The comments around an army of OO programmers and the difficulty for learning to think functionally just resonates with the idea that functional programming is a disruptive technology (even though functional programming isn’t new). </p>
<p>Ok… That was a pretty rough first day. Lots of terms and pictures and strange code thrown my way. It’s time to process the information. I’m pretty sure I will need to watch that video about 5 times in-between coding this stuff. I plan on trying Brian’s exercises along with watching <a href="http://channel9.msdn.com/shows/Going+Deep/Brian-Beckman-Dont-fear-the-Monads/" onclick="urchinTracker('/outgoing/channel9.msdn.com/shows/Going+Deep/Brian-Beckman-Dont-fear-the-Monads/?referer=');">‘Don’t Fear the Monad’</a> (another Brian Beckman presentation).</p>
<p>Ryan already has completed the first exercise in C# and F#. I will work on my own version of the C# exercise and then look at his code. I don’t think I will dive into F# right now. I played with the language about 2 weeks ago but all I did was create ‘Hello World’. There is a <a href="http://blog.codinglight.com/2009/08/houston-f-users-group-august-27th-700.html" onclick="urchinTracker('/outgoing/blog.codinglight.com/2009/08/houston-f-users-group-august-27th-700.html?referer=');">F# user group meeting on August 27th</a> where I ‘might’ try to code these exercises.</p>
]]></content:encoded>
			<wfw:commentRss>http://wizardsofsmart.net/uncategorized/monads/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is Code Quality?</title>
		<link>http://wizardsofsmart.net/uncategorized/what-is-code-quality/</link>
		<comments>http://wizardsofsmart.net/uncategorized/what-is-code-quality/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 14:10:51 +0000</pubDate>
		<dc:creator>David Morton</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://wizardsofsmart.net/?p=207</guid>
		<description><![CDATA[Since I was young, my father has encouraged me to become a writer, so a few years ago, I entertained the idea, and bought a book by Stephen King called &#8220;On Writing&#8221;. From it, I learned several aspects of good writing. One of the most memorable was to avoid adverbs ending in -ly. The reason [...]]]></description>
			<content:encoded><![CDATA[<p>Since I was young, my father has encouraged me to become a writer, so a few years ago, I entertained the idea, and bought a book by Stephen King called &#8220;On Writing&#8221;.  From it, I learned several aspects of good writing.  One of the most memorable was to avoid adverbs ending in -ly.  The reason they should be avoided is because your verbs, nouns and adjectives should describe your intentions without the use of adverbs.  Adverbs are extra fluff, and when overused, are the mark of an immature writing style.</p>
<p>Until I read that book, I never thought about the importance of one sentence.  A good novel writer ensures that his audience is not subjected to needless modifiers that serve to support poorly written sentences.  Not only this, but he does it on a consistent basis, one sentence at a time, until the entire novel is written, all the while focusing on the overall plot of the book.  The mark of quality in a novel is it&#8217;s ability to move the plot forward while avoiding unnecessary distractions.  This hallmark is established with each and every sentence.</p>
<p>In the publishing world, there are checks and balances to ensure that before a novel is released, the quality of the novel matches up to certain standards.  After the novelist writes the novel, he sends the manuscript to the publisher, who typically suggests one or many edits that the manuscript needs before it&#8217;s ready to be published.  The novelist then edits his manuscript and repeats this process until the book is ready to publish.</p>
<p>Now, liken yourself to a novelist.  You have a novel (your code) full of sentences (lines) that you&#8217;re tasked to write.  The assumption is that you will not only focus on the purpose of the application, but will also focus on how that purpose is to be achieved, by paying attention to each and every line of code.  I&#8217;ve heard it said recently that &#8220;it only takes one line to create a dependency&#8221;.  This statement shows the power that one line of code can have.  It can make or break your application.</p>
<p>So what is code quality?  Quality code can only come from paying attention to each line you write.  As I&#8217;m writing this blog, I&#8217;m paying attention to each and every sentence I write.  I&#8217;m reviewing each one to verify they communicate my point clearly and concisely.  The reason I&#8217;m doing this is because I know there are people who will read this post.  They&#8217;ll analyze what I&#8217;m saying, and won&#8217;t want to waste their time while reading it.  They expect to learn something from every sentence.</p>
<p>So why don&#8217;t we do this as much in our code?  I think it&#8217;s because we believe that our code will never be read.  It will only be used.  This is a false assumption that needs rejecting.  Every day I read the code I&#8217;ve read in order to modify it, or in order to hunt down a bug.  The way the code is written is almost as important as what it does.  Poorly written code takes longer to maintain.  Well written code can be maintained almost effortlessly.</p>
<p>Each line of code should serve a purpose.  Each set of lines should be reviewed as it&#8217;s being written, to ensure the most clear and concise expression of the concept is found.  Each architectural construct should be reviewed for it&#8217;s flexibility and it&#8217;s contribution to the overall goal.  This should happen not in a designated refactoring <span style="font-style:italic;">session</span>, but during the moment-by-moment process of coding.</p>
<p>This takes patience, consistency and the ability to clearly adhere to and express the purpose.</p>
<p>Code quality, in my definition, is a well-assembled collection of well-expressed lines of code, none of them being taken for granted.  This is a basic concept, but one that needs reinforcing from time to time.  There are so many concepts to quality programming that it takes a lifetime to master them all (if indeed they can be mastered), but for a good start allow me to suggest <a href="http://wiki.codinglight.com/SOLID.ashx" onclick="urchinTracker('/outgoing/wiki.codinglight.com/SOLID.ashx?referer=');">SOLID principles</a> and <a href="http://wiki.codinglight.com/DesignPatterns.ashx" onclick="urchinTracker('/outgoing/wiki.codinglight.com/DesignPatterns.ashx?referer=');">design patterns</a>.  Professional programmers will learn these techniques and use them to their advantage.  Poor programmers will abuse the code and muddle it&#8217;s intentions.</p>
<p>Refactor in the small, and refactor consistently as you go.  A good place to start might be to begin reading Sean Chambers&#8217; current blog series entitled <a href="http://www.lostechies.com/blogs/sean_chambers/archive/2009/07/31/31-days-of-refactoring.aspx" target="_blank" onclick="urchinTracker('/outgoing/www.lostechies.com/blogs/sean_chambers/archive/2009/07/31/31-days-of-refactoring.aspx?referer=');">31 Days of Refactoring</a>.  Refactoring as you go can help to prevent <a href="http://wiki.codinglight.com/Technical%20Debt.ashx" onclick="urchinTracker('/outgoing/wiki.codinglight.com/Technical_20Debt.ashx?referer=');">technical debt</a>.</p>
<p>Learn these techniques and apply them as you go, not after the fact, and you&#8217;ll find at the end that your code can be as enjoyable to read as some of the world&#8217;s greatest authors, from Hemingway to King to Rowling.</p>
<p>Write code like it&#8217;s going to be read.</p>
]]></content:encoded>
			<wfw:commentRss>http://wizardsofsmart.net/uncategorized/what-is-code-quality/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Another Oxite Indeed</title>
		<link>http://wizardsofsmart.net/uncategorized/another-oxite-indeed/</link>
		<comments>http://wizardsofsmart.net/uncategorized/another-oxite-indeed/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 00:52:08 +0000</pubDate>
		<dc:creator>panesofglass</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[App Arch]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Guidance]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Patterns & Practices]]></category>

		<guid isPermaLink="false">http://wizardsofsmart.net/?p=110</guid>
		<description><![CDATA[Another Oxite, indeed. My Google Reader reported a flood of activity in the AppArch CodePlex wiki, the majority of which was updated patterns pages with &#8220;BETA &#8211; Published for Community Feedback. This page is a wiki.  Please provide your feedback in the comments below,&#8221; at the top. The Application Architecture Guide, v2 is now back [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Another Oxite?" href="http://wizardsofsmart.net/news/another-oxite">Another Oxite</a>, indeed. My Google Reader reported a flood of activity in the <a title="App Arch Application Patterns" href="http://www.codeplex.com/AppArch/Wiki/View.aspx?title=Application%20Patterns" onclick="urchinTracker('/outgoing/www.codeplex.com/AppArch/Wiki/View.aspx?title=Application_20Patterns&amp;referer=');">AppArch CodePlex wiki</a>, the majority of which was updated patterns pages with &#8220;BETA &#8211; Published for Community Feedback. This page is a wiki.  Please provide your feedback in the comments below,&#8221; at the top. The Application Architecture Guide, v2 is now back in beta status after the flood of community feedback following its <a title="App Arch Guide 2.0 Release" href="http://blogs.msdn.com/jmeier/archive/2008/12/16/application-architecture-guide-2-0-final-release.aspx" onclick="urchinTracker('/outgoing/blogs.msdn.com/jmeier/archive/2008/12/16/application-architecture-guide-2-0-final-release.aspx?referer=');">December 2008 &#8220;final&#8221; release</a>.</p>
<p>I&#8217;m glad to see Microsoft respond to the community. I find great hope in Microsoft&#8217;s future in their willingness to listen and respond. If only they would do so sooner rather than later, they would have a <em>much</em> better reputation with the community. Nevertheless, I&#8217;m pleased with their desire to dialogue with the community to improve their guidance.</p>
<p>Now, if you are an architect or developer with experience in the areas for which Microsoft is offering guidance, speak up. Help provide the response for which Microsoft is asking. This is a great opportunity for us to bridge the relationship we have with the team at Microsoft providing the tools we use daily.</p>
]]></content:encoded>
			<wfw:commentRss>http://wizardsofsmart.net/uncategorized/another-oxite-indeed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Coding, Blink, and the Smell Test</title>
		<link>http://wizardsofsmart.net/uncategorized/coding-blink-and-the-smell-test/</link>
		<comments>http://wizardsofsmart.net/uncategorized/coding-blink-and-the-smell-test/#comments</comments>
		<pubDate>Thu, 22 Jan 2009 17:27:15 +0000</pubDate>
		<dc:creator>rookieone</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://wizardsofsmart.net/uncategorized/coding-blink-and-the-smell-test</guid>
		<description><![CDATA[I&#8217;ve recently been assigned a complicated use case and have been heads down working on finishing it up. Mostly its been a great exercise in BDD requirements / story construction. I’ve stumbled, made mistakes, corrected mistakes, etc I am still excited about BDD stories. I think with DDD and BDD and insert jargon here… there [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently been assigned a complicated use case and have been heads down working on finishing it up.</p>
<p>Mostly its been a great exercise in BDD requirements / story construction. I’ve stumbled, made mistakes, corrected mistakes, etc</p>
<p>I am still excited about BDD stories. I think with DDD and BDD and insert jargon here… there is a drive to pass the infamous <em>smell test</em>.</p>
<p>There are the developers that just code. They apply a technology and just swing code around to solve a problem. Comments and best practices and solid design be damned. It works! So what’s the problem?</p>
<p>Then there are the developers that have that passion and instinct to know something is wrong. The idea is similar to Gladwell’s <a href="http://www.gladwell.com/blink/index.html" onclick="urchinTracker('/outgoing/www.gladwell.com/blink/index.html?referer=');">Blink principle</a>. These developers first just code and refactor in solo. I relate it to a ronin samurai. Maybe a Luke Skywalker before his time with Yoda. <img src='http://wizardsofsmart.net/wp/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>They then discover patterns and OMG.. the lights go on and you have an epiphany. There is a great book on font design by Robin Williams called <a href="http://www.amazon.com/Non-Designers-Design-Type-Books-Deluxe/dp/0321534050/ref=sr_11_1?ie=UTF8&amp;qid=1232644230&amp;sr=11-1" onclick="urchinTracker('/outgoing/www.amazon.com/Non-Designers-Design-Type-Books-Deluxe/dp/0321534050/ref=sr_11_1?ie=UTF8_amp_qid=1232644230_amp_sr=11-1&amp;referer=');">The Non-Designer’s Design &amp; Type Books</a>. Chapter one is called The Joshua Tree Epiphany. Here is the quick summary. She picked up a tree book and the first tree was the Joshua Tree. She said to herself, “Oh, we don’t have that kind of tree in Northern California. That is a weird-looking tree. I would know if I saw that tree, and I’ve never seen one before.” She then went outside and immediately saw that her neighbors had Joshua trees. Yet she never ‘saw’ one before because she didn’t know what they were. This principle she describes simply saying :</p>
<p>*Once you can name something, you’re conscious of it. You have power over it. You own it. You’re in control.*</p>
<p>Once developers are exposed to patterns and understand patterns, a new world is opened up to them. And beyond patterns, there are principles. I recently listened to the <a href="http://www.hanselminutes.com/default.aspx?showID=163" onclick="urchinTracker('/outgoing/www.hanselminutes.com/default.aspx?showID=163&amp;referer=');">Hansel Minutes</a> with ‘Uncle Bob’ on the SOLID principles. I found myself saying.. exactly! a lot. The principles just resonate ‘rightness’.</p>
<p>Anyway, what I am trying to say is that on the road to becoming the best developer I can be, I am at the mastering DDD / BDD / TDD stage. I know they are right because when I execute them correctly, it feels right. When I mess things up, it feels wrong. In lots of ways it feels like I am on an intellectual adventure. Maybe like Lord of the Rings. Instead of the ring weighing down Frodo the closer he got to Mount Doom… the closer I get to mastery of these concepts the better I feel about development.</p>
<p>So anyway.. those are some random thoughts I’ve been having lately. Hence the low number of blog posts. I’ve been using the time to read (because I need to catch up!) and to practice the esoteric art of BDD stories. My current reference is <a href="http://dannorth.net/whats-in-a-story" onclick="urchinTracker('/outgoing/dannorth.net/whats-in-a-story?referer=');">Dan North’s site</a>.</p>
<p>I will update Greek Fire soon with documents mostly. I want to have a readme file about setting up the database. I also want to have BDD stories to document the requirements for the domain, etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://wizardsofsmart.net/uncategorized/coding-blink-and-the-smell-test/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
