<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>Lazycoder</title>
	
	<link>http://www.lazycoder.com/weblog</link>
	<description />
	<lastBuildDate>Thu, 07 Jan 2010 21:44:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Lazycoder" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="lazycoder" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Goals for 2010</title>
		<link>http://www.lazycoder.com/weblog/2010/01/07/goals-for-2010/</link>
		<comments>http://www.lazycoder.com/weblog/2010/01/07/goals-for-2010/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 18:29:08 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[goals]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[mvcturbine]]></category>
		<category><![CDATA[ringbinder]]></category>

		<guid isPermaLink="false">http://www.lazycoder.com/weblog/?p=1254</guid>
		<description><![CDATA[So I&#8217;ve been mulling around what I want to do, at least in terms of my development skills and community type stuff, in 2010 (The year we make contact). I figure if I blog them up here, I can refer back to them and check on my progress at the end of the year.

Help out [...]]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;ve been mulling around what I want to do, at least in terms of my development skills and community type stuff, in <a href="http://www.youtube.com/watch?v=7el-E9Wk1bQ">2010 (The year we make contact)</a>. I figure if I blog them up here, I can refer back to them and check on my progress at the end of the year.</p>
<ol>
<li>Help out with the <a href="http://mvcturbine.codeplex.com/">MVC Turbine</a> docs</li>
<li>Finish my<a href="http://github.com/skoon/ringbinder"> Ringbinder </a>project and release it</li>
<li>Write a simple little app for use at home in either Clojure or Smalltalk</li>
<li>Continue to learn Python</li>
<li>Write a small app that runs on the Google App Engine</li>
<li>Write a blog post, either here or on my <a href="http://devcentral.f5.com/weblogs/scott/Default.aspx">work blog</a>, at least once a week</li>
<li>Redesign this blog</li>
<li>Work on and launch the coderdads.info site I&#8217;ve had in mind for a while</li>
</ol>
<p>I&#8217;m sure I&#8217;ll come up with more as the year progresses and I, hopefully, finish up these tasks.</p>



Share and Enjoy:


	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2010%2F01%2F07%2Fgoals-for-2010%2F&amp;title=Goals%20for%202010&amp;notes=So%20I%27ve%20been%20mulling%20around%20what%20I%20want%20to%20do%2C%20at%20least%20in%20terms%20of%20my%20development%20skills%20and%20community%20type%20stuff%2C%20in%202010%20%28The%20year%20we%20make%20contact%29.%20I%20figure%20if%20I%20blog%20them%20up%20here%2C%20I%20can%20refer%20back%20to%20them%20and%20check%20on%20my%20progress%20at%20the%20end%20of%20t" title="del.icio.us"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2010%2F01%2F07%2Fgoals-for-2010%2F&amp;title=Goals%20for%202010" title="DotNetKicks"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/dotnetkicks.png" title="DotNetKicks" alt="DotNetKicks" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2010%2F01%2F07%2Fgoals-for-2010%2F&amp;title=Goals%20for%202010" title="DZone"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/dzone.png" title="DZone" alt="DZone" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2010%2F01%2F07%2Fgoals-for-2010%2F&amp;title=Goals%20for%202010" title="Reddit"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2010%2F01%2F07%2Fgoals-for-2010%2F&amp;title=Goals%20for%202010&amp;bodytext=So%20I%27ve%20been%20mulling%20around%20what%20I%20want%20to%20do%2C%20at%20least%20in%20terms%20of%20my%20development%20skills%20and%20community%20type%20stuff%2C%20in%202010%20%28The%20year%20we%20make%20contact%29.%20I%20figure%20if%20I%20blog%20them%20up%20here%2C%20I%20can%20refer%20back%20to%20them%20and%20check%20on%20my%20progress%20at%20the%20end%20of%20t" title="Digg"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2010%2F01%2F07%2Fgoals-for-2010%2F&amp;title=Goals%20for%202010" title="StumbleUpon"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2010%2F01%2F07%2Fgoals-for-2010%2F&amp;title=Goals%20for%202010&amp;source=Lazycoder+&amp;summary=So%20I%27ve%20been%20mulling%20around%20what%20I%20want%20to%20do%2C%20at%20least%20in%20terms%20of%20my%20development%20skills%20and%20community%20type%20stuff%2C%20in%202010%20%28The%20year%20we%20make%20contact%29.%20I%20figure%20if%20I%20blog%20them%20up%20here%2C%20I%20can%20refer%20back%20to%20them%20and%20check%20on%20my%20progress%20at%20the%20end%20of%20t" title="LinkedIn"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2010%2F01%2F07%2Fgoals-for-2010%2F&amp;t=Goals%20for%202010" title="Facebook"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.friendfeed.com/share?title=Goals%20for%202010&amp;link=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2010%2F01%2F07%2Fgoals-for-2010%2F" title="FriendFeed"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2010%2F01%2F07%2Fgoals-for-2010%2F&amp;t=Goals%20for%202010" title="HackerNews"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.netvibes.com/share?title=Goals%20for%202010&amp;url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2010%2F01%2F07%2Fgoals-for-2010%2F" title="Netvibes"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/netvibes.png" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://posterous.com/share?linkto=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2010%2F01%2F07%2Fgoals-for-2010%2F&amp;title=Goals%20for%202010&amp;selection=So%20I%27ve%20been%20mulling%20around%20what%20I%20want%20to%20do%2C%20at%20least%20in%20terms%20of%20my%20development%20skills%20and%20community%20type%20stuff%2C%20in%202010%20%28The%20year%20we%20make%20contact%29.%20I%20figure%20if%20I%20blog%20them%20up%20here%2C%20I%20can%20refer%20back%20to%20them%20and%20check%20on%20my%20progress%20at%20the%20end%20of%20t" title="Posterous"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/posterous.png" title="Posterous" alt="Posterous" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2010%2F01%2F07%2Fgoals-for-2010%2F&amp;t=Goals%20for%202010&amp;s=So%20I%27ve%20been%20mulling%20around%20what%20I%20want%20to%20do%2C%20at%20least%20in%20terms%20of%20my%20development%20skills%20and%20community%20type%20stuff%2C%20in%202010%20%28The%20year%20we%20make%20contact%29.%20I%20figure%20if%20I%20blog%20them%20up%20here%2C%20I%20can%20refer%20back%20to%20them%20and%20check%20on%20my%20progress%20at%20the%20end%20of%20t" title="Tumblr"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=Goals%20for%202010%20-%20http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2010%2F01%2F07%2Fgoals-for-2010%2F" title="Twitter"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Lazycoder?a=BsABGgoenNI:iLzfnSyfVtQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=BsABGgoenNI:iLzfnSyfVtQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=BsABGgoenNI:iLzfnSyfVtQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=BsABGgoenNI:iLzfnSyfVtQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=BsABGgoenNI:iLzfnSyfVtQ:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=BsABGgoenNI:iLzfnSyfVtQ:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=BsABGgoenNI:iLzfnSyfVtQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=BsABGgoenNI:iLzfnSyfVtQ:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.lazycoder.com/weblog/2010/01/07/goals-for-2010/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Benchmarking a simple DOM based cloning template</title>
		<link>http://www.lazycoder.com/weblog/2009/12/10/benchmarking-a-simple-dom-based-cloning-template/</link>
		<comments>http://www.lazycoder.com/weblog/2009/12/10/benchmarking-a-simple-dom-based-cloning-template/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 20:28:02 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.lazycoder.com/weblog/?p=1232</guid>
		<description><![CDATA[Sara Chipps recently posted a simple DOM based clone template method she uses in one of her apps. "Easy HTML Templating with JQuery"

My template looks like this:
PLAIN TEXT
CODE:




&#60;script id="ItemTemplate" type="text/html"


&#160; &#160; &#160; &#160; &#60;li class="item" value="&#124;rowNumber&#124;"&#62;


&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;input type=”text” id=”input&#124;rowNumber&#124;” /&#62;


&#160; &#160; &#160; &#160; &#60;/li&#62;


&#160; &#160; &#60;/script&#62; 





 
Now within [...]]]></description>
			<content:encoded><![CDATA[<p>Sara Chipps recently posted a simple <acronym title='Document Object Model'><span class='caps'>DOM</span></acronym> based clone template method she uses in one of her apps. "<a href="http://girldeveloper.com/waxing-dev/easy-html-templating-with-jquery/">Easy <acronym title='HyperText Markup Language'><span class='caps'>HTML</span></acronym> Templating with JQuery</a>"</p>
<blockquote><p>
My template looks like this:</p>
<div class="igBar"><span id="lcode-7"><a href="#" onclick="javascript:showCodeTxt('code-7'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-7">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;script id=<span style="color:#CC0000;">"ItemTemplate"</span> type=<span style="color:#CC0000;">"text/html"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &lt;li class=<span style="color:#CC0000;">"item"</span> value=<span style="color:#CC0000;">"|rowNumber|"</span>&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=”text” id=”input|rowNumber|” /&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/li&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;/script&gt; </div>
</li>
</ol>
</div>
</div>
</div>
<p> <br />
Now within my code I need to put a place holder where I want my <acronym title='HyperText Markup Language'><span class='caps'>HTML</span></acronym> to go.  I have my unordered list called url_list.</p>
<div class="igBar"><span id="lcode-8"><a href="#" onclick="javascript:showCodeTxt('code-8'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-8">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;ul id=<span style="color:#CC0000;">"url_list"</span>&gt;&lt;/ul&gt; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Now, you see that most of my items look like this “|rowNumber|” I have a variable in my code called nextUniqueItemID (I believe in extremely descriptive variable names). Here is my “addItem” function.</p>
<div class="igBar"><span id="ljavascript-9"><a href="#" onclick="javascript:showCodeTxt('javascript-9'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">JAVASCRIPT:</span>
<div id="javascript-9">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">function</span> addItem<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> list = $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'#url_list'</span><span style="color: #66cc66;">&#41;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; items = list.<span style="color: #006600;">find</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'li'</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; list.<span style="color: #006600;">append</span><span style="color: #66cc66;">&#40;</span>$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'#ItemTemplate’)</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #3366CC;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .html().replace(/<span style="color: #000099; font-weight: bold;">\|</span>rowNumber<span style="color: #000099; font-weight: bold;">\|</span>/gi, nextUniqueItemID++))</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #3366CC;">&nbsp; &nbsp; } </span></div>
</li>
</ol>
</div>
</div>
</div>
<p>
</p></blockquote>
<p>The use of global variables aside (cough,cough),I looked at it and, having used something like this myself, thought that it would work find for data sets containing a very small number of items. The problem is these kinds of clone based templates are VERY slow compared to the templating engines that are available for various JavaScript libraries.</p>
<p>I happened to read a post by Brian Landau called "<a href="http://www.viget.com/extend/benchmarking-javascript-templating-libraries/">Benchmarking Javascript Templating Libraries</a>" this morning and wondered just HOW MUCH slower is the naive template method than a good template library?</p>
<p>I grabbed the benchmarking code and modified it to run the new clone based template method.</p>
<div class="igBar"><span id="ljavascript-10"><a href="#" onclick="javascript:showCodeTxt('javascript-10'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">JAVASCRIPT:</span>
<div id="javascript-10">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">var</span> nextUniqueItemID = <span style="color: #CC0000;color:#800000;">0</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">function</span> addItem<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> list = $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'#url_list'</span><span style="color: #66cc66;">&#41;</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; items = list.<span style="color: #006600;">find</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'li'</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; list.<span style="color: #006600;">append</span><span style="color: #66cc66;">&#40;</span>$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'#ItemTemplate'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">html</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">replace</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066FF;">/\|rowNumber\|/gi</span>, nextUniqueItemID++<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; $<span style="color: #66cc66;">&#40;</span>document<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">ready</span><span style="color: #66cc66;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;&nbsp; &nbsp; &nbsp;<span style="color: #003366; font-weight: bold;">var</span> output = $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'#output'</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;&nbsp; &nbsp; &nbsp;$.<span style="color: #006600;">benchmarks</span> = <span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#125;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; $.<span style="color: #006600;">benchmarks</span>.<span style="color: #006600;">test_simple</span> = <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; addItem<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; $.<span style="color: #006600;">benchmarks</span>.<span style="color: #006600;">loop_test</span> = <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i=<span style="color: #CC0000;color:#800000;">0</span>; i &lt;<span style="color: #CC0000;color:#800000;">5</span>; i++<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; addItem<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// use these lines to run the benchmark tests in your browsers JS console</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// $.benchmark(1000, '#simple_test', $.benchmarks.test_simple);</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// $.benchmark(1000, '#loop_test', $.benchmarks.loop_test);</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Since the template Sara provided contains an input tag you get a different benchmark if you run the simple_test and the loop_test separately after refreshing your browser. You can run the tests for yourself<a href="http://lazycoder.com/code_examples/templatebenchmarks/"> here</a>, the loop test *may* cause your browser to give you a "script is running slow" message, hit continue as the loop <strong>will</strong> eventually end. You may also get different numbers if you run the tests in <acronym title='Internet Explorer'><span class='caps'>IE</span></acronym>, Chrome, and Safari.</p>
<p>results: using FF 3.5.5<br />
Simple Test: 1.71s<br />
Loop test: 31.534s</p>
<p>When you consider that the slowest loop test using a template library was just around 4.5s, you get a better idea of just how slow this method is when you have an input in your template. </p>
<p>So that's fine, but it's known that dynamically adding text inputs is slow in just about every browser and the original tests don't use inputs at all, just divs. So let's modify the template and see what the results are.</p>
<div class="igBar"><span id="lcode-11"><a href="#" onclick="javascript:showCodeTxt('code-11'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-11">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;script id=<span style="color:#CC0000;">"ItemTemplate"</span> type=<span style="color:#CC0000;">"text/html"</span>&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;div class=<span style="color:#CC0000;">"test"</span>&gt;&lt;h2&gt;This is a test of |name|&lt;/h2&gt;&lt;p&gt;The homepage is &lt;a href=<span style="color:#CC0000;">"|url|"</span>&gt;|url|&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;The sources is: |source|&lt;/p&gt;&lt;/div&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/script&gt; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>I modified the addItem function to account for the new data. n.b. The data I'm using is static, if you wanted to use a data source you would just modify this method to take in your data parameters.</p>
<div class="igBar"><span id="ljavascript-12"><a href="#" onclick="javascript:showCodeTxt('javascript-12'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">JAVASCRIPT:</span>
<div id="javascript-12">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">function</span> addItem<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> list = $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'#url_list'</span><span style="color: #66cc66;">&#41;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; items = list.<span style="color: #006600;">find</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'li'</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; list.<span style="color: #006600;">append</span><span style="color: #66cc66;">&#40;</span>$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'#ItemTemplate'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">html</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .<span style="color: #006600;">replace</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066FF;">/\|name\|/gi</span>, <span style="color: #3366CC;">"Clone template method"</span><span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .<span style="color: #006600;">replace</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066FF;">/\|source\|/gi</span>, <span style="color: #3366CC;">"http://girldeveloper.com/waxing-dev/easy-html-templating-with-jquery/"</span><span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .<span style="color: #006600;">replace</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066FF;">/\|url\|/gi</span>, <span style="color: #3366CC;">"http://girldeveloper.com/waxing-dev/easy-html-templating-with-jquery/"</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p>
results using FF 3.5.5 - refresh between each test<br />
simple test: 1.285s<br />
loop test: 3.771</p>
<p>results using ff 3.5.5 with no refresh between tests<br />
simple test: 1.434<br />
loop test: 4.227</p>
<p>So that's looking a little bit better. Not too much slower than the template libraries.</p>
<p>So what do the template libraries give you? Well the replace method works find provides your data is escaped properly. But say instead of a url in the "source" replacement, you use a file path like "file:\\foodrive\source.txt". Well it still gets replaced, but the text looks like this "file:\foodrivesource.txt". So in addition to the replacement, you have to make sure your data is properly escaped. A lot of template libraries will do this for you. Also notice that the addItem method has to do a <acronym title='Document Object Model'><span class='caps'>DOM</span></acronym> lookup on every iteration of the loop to get the template. If you have a large <acronym title='Document Object Model'><span class='caps'>DOM</span></acronym>, this could impact the performance.</p>



Share and Enjoy:


	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F10%2Fbenchmarking-a-simple-dom-based-cloning-template%2F&amp;title=Benchmarking%20a%20simple%20DOM%20based%20cloning%20template&amp;notes=Sara%20Chipps%20recently%20posted%20a%20simple%20DOM%20based%20clone%20template%20method%20she%20uses%20in%20one%20of%20her%20apps.%20%22Easy%20HTML%20Templating%20with%20JQuery%22%0D%0A%0D%0AMy%20template%20looks%20like%20this%3A%0D%0A%5Bcode%5D%0D%0A%20%20" title="del.icio.us"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F10%2Fbenchmarking-a-simple-dom-based-cloning-template%2F&amp;title=Benchmarking%20a%20simple%20DOM%20based%20cloning%20template" title="DotNetKicks"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/dotnetkicks.png" title="DotNetKicks" alt="DotNetKicks" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F10%2Fbenchmarking-a-simple-dom-based-cloning-template%2F&amp;title=Benchmarking%20a%20simple%20DOM%20based%20cloning%20template" title="DZone"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/dzone.png" title="DZone" alt="DZone" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F10%2Fbenchmarking-a-simple-dom-based-cloning-template%2F&amp;title=Benchmarking%20a%20simple%20DOM%20based%20cloning%20template" title="Reddit"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F10%2Fbenchmarking-a-simple-dom-based-cloning-template%2F&amp;title=Benchmarking%20a%20simple%20DOM%20based%20cloning%20template&amp;bodytext=Sara%20Chipps%20recently%20posted%20a%20simple%20DOM%20based%20clone%20template%20method%20she%20uses%20in%20one%20of%20her%20apps.%20%22Easy%20HTML%20Templating%20with%20JQuery%22%0D%0A%0D%0AMy%20template%20looks%20like%20this%3A%0D%0A%5Bcode%5D%0D%0A%20%20" title="Digg"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F10%2Fbenchmarking-a-simple-dom-based-cloning-template%2F&amp;title=Benchmarking%20a%20simple%20DOM%20based%20cloning%20template" title="StumbleUpon"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F10%2Fbenchmarking-a-simple-dom-based-cloning-template%2F&amp;title=Benchmarking%20a%20simple%20DOM%20based%20cloning%20template&amp;source=Lazycoder+&amp;summary=Sara%20Chipps%20recently%20posted%20a%20simple%20DOM%20based%20clone%20template%20method%20she%20uses%20in%20one%20of%20her%20apps.%20%22Easy%20HTML%20Templating%20with%20JQuery%22%0D%0A%0D%0AMy%20template%20looks%20like%20this%3A%0D%0A%5Bcode%5D%0D%0A%20%20" title="LinkedIn"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F10%2Fbenchmarking-a-simple-dom-based-cloning-template%2F&amp;t=Benchmarking%20a%20simple%20DOM%20based%20cloning%20template" title="Facebook"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.friendfeed.com/share?title=Benchmarking%20a%20simple%20DOM%20based%20cloning%20template&amp;link=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F10%2Fbenchmarking-a-simple-dom-based-cloning-template%2F" title="FriendFeed"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F10%2Fbenchmarking-a-simple-dom-based-cloning-template%2F&amp;t=Benchmarking%20a%20simple%20DOM%20based%20cloning%20template" title="HackerNews"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.netvibes.com/share?title=Benchmarking%20a%20simple%20DOM%20based%20cloning%20template&amp;url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F10%2Fbenchmarking-a-simple-dom-based-cloning-template%2F" title="Netvibes"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/netvibes.png" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://posterous.com/share?linkto=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F10%2Fbenchmarking-a-simple-dom-based-cloning-template%2F&amp;title=Benchmarking%20a%20simple%20DOM%20based%20cloning%20template&amp;selection=Sara%20Chipps%20recently%20posted%20a%20simple%20DOM%20based%20clone%20template%20method%20she%20uses%20in%20one%20of%20her%20apps.%20%22Easy%20HTML%20Templating%20with%20JQuery%22%0D%0A%0D%0AMy%20template%20looks%20like%20this%3A%0D%0A%5Bcode%5D%0D%0A%20%20" title="Posterous"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/posterous.png" title="Posterous" alt="Posterous" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F10%2Fbenchmarking-a-simple-dom-based-cloning-template%2F&amp;t=Benchmarking%20a%20simple%20DOM%20based%20cloning%20template&amp;s=Sara%20Chipps%20recently%20posted%20a%20simple%20DOM%20based%20clone%20template%20method%20she%20uses%20in%20one%20of%20her%20apps.%20%22Easy%20HTML%20Templating%20with%20JQuery%22%0D%0A%0D%0AMy%20template%20looks%20like%20this%3A%0D%0A%5Bcode%5D%0D%0A%20%20" title="Tumblr"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=Benchmarking%20a%20simple%20DOM%20based%20cloning%20template%20-%20http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F10%2Fbenchmarking-a-simple-dom-based-cloning-template%2F" title="Twitter"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Lazycoder?a=jsSYQjxb5Dw:cWypjeLCLWs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=jsSYQjxb5Dw:cWypjeLCLWs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=jsSYQjxb5Dw:cWypjeLCLWs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=jsSYQjxb5Dw:cWypjeLCLWs:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=jsSYQjxb5Dw:cWypjeLCLWs:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=jsSYQjxb5Dw:cWypjeLCLWs:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=jsSYQjxb5Dw:cWypjeLCLWs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=jsSYQjxb5Dw:cWypjeLCLWs:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.lazycoder.com/weblog/2009/12/10/benchmarking-a-simple-dom-based-cloning-template/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Can a language be abused?</title>
		<link>http://www.lazycoder.com/weblog/2009/12/02/can-a-language-be-abused/</link>
		<comments>http://www.lazycoder.com/weblog/2009/12/02/can-a-language-be-abused/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 05:36:04 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[Languages]]></category>

		<guid isPermaLink="false">http://www.lazycoder.com/weblog/?p=1230</guid>
		<description><![CDATA[K. Scott Allen has a great post showing an "abuse" of the lambda syntax in C#.
But I'm wondering, can any use of programming language really be called abuse? The language designers and creators put the ability to create the hack described above into the language. If they didn't want you to do things like that, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://odetocode.com/Blogs/scott/archive/2009/11/30/your-abomination-is-my-clever-hack.aspx">K. Scott Allen has a great post showing an "abuse" of the lambda syntax in C#</a>.</p>
<p>But I'm wondering, can any use of programming language really be called abuse? The language designers and creators put the ability to create the hack described above into the language. If they didn't want you to do things like that, why put the ability in there at all? <a href="http://support.microsoft.com/kb/199824">Using undocumented calls within the language to do strange things</a> is one thing, but simply using calls within the language itself?</p>
<p>What are some of the best "abuses" you've seen of a language?</p>



Share and Enjoy:


	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fcan-a-language-be-abused%2F&amp;title=Can%20a%20language%20be%20abused%3F&amp;notes=K.%20Scott%20Allen%20has%20a%20great%20post%20showing%20an%20%22abuse%22%20of%20the%20lambda%20syntax%20in%20C%23.%0D%0A%0D%0ABut%20I%27m%20wondering%2C%20can%20any%20use%20of%20programming%20language%20really%20be%20called%20abuse%3F%20The%20language%20designers%20and%20creators%20put%20the%20ability%20to%20create%20the%20hack%20described%20above%20in" title="del.icio.us"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fcan-a-language-be-abused%2F&amp;title=Can%20a%20language%20be%20abused%3F" title="DotNetKicks"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/dotnetkicks.png" title="DotNetKicks" alt="DotNetKicks" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fcan-a-language-be-abused%2F&amp;title=Can%20a%20language%20be%20abused%3F" title="DZone"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/dzone.png" title="DZone" alt="DZone" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fcan-a-language-be-abused%2F&amp;title=Can%20a%20language%20be%20abused%3F" title="Reddit"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fcan-a-language-be-abused%2F&amp;title=Can%20a%20language%20be%20abused%3F&amp;bodytext=K.%20Scott%20Allen%20has%20a%20great%20post%20showing%20an%20%22abuse%22%20of%20the%20lambda%20syntax%20in%20C%23.%0D%0A%0D%0ABut%20I%27m%20wondering%2C%20can%20any%20use%20of%20programming%20language%20really%20be%20called%20abuse%3F%20The%20language%20designers%20and%20creators%20put%20the%20ability%20to%20create%20the%20hack%20described%20above%20in" title="Digg"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fcan-a-language-be-abused%2F&amp;title=Can%20a%20language%20be%20abused%3F" title="StumbleUpon"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fcan-a-language-be-abused%2F&amp;title=Can%20a%20language%20be%20abused%3F&amp;source=Lazycoder+&amp;summary=K.%20Scott%20Allen%20has%20a%20great%20post%20showing%20an%20%22abuse%22%20of%20the%20lambda%20syntax%20in%20C%23.%0D%0A%0D%0ABut%20I%27m%20wondering%2C%20can%20any%20use%20of%20programming%20language%20really%20be%20called%20abuse%3F%20The%20language%20designers%20and%20creators%20put%20the%20ability%20to%20create%20the%20hack%20described%20above%20in" title="LinkedIn"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fcan-a-language-be-abused%2F&amp;t=Can%20a%20language%20be%20abused%3F" title="Facebook"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.friendfeed.com/share?title=Can%20a%20language%20be%20abused%3F&amp;link=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fcan-a-language-be-abused%2F" title="FriendFeed"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fcan-a-language-be-abused%2F&amp;t=Can%20a%20language%20be%20abused%3F" title="HackerNews"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.netvibes.com/share?title=Can%20a%20language%20be%20abused%3F&amp;url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fcan-a-language-be-abused%2F" title="Netvibes"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/netvibes.png" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://posterous.com/share?linkto=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fcan-a-language-be-abused%2F&amp;title=Can%20a%20language%20be%20abused%3F&amp;selection=K.%20Scott%20Allen%20has%20a%20great%20post%20showing%20an%20%22abuse%22%20of%20the%20lambda%20syntax%20in%20C%23.%0D%0A%0D%0ABut%20I%27m%20wondering%2C%20can%20any%20use%20of%20programming%20language%20really%20be%20called%20abuse%3F%20The%20language%20designers%20and%20creators%20put%20the%20ability%20to%20create%20the%20hack%20described%20above%20in" title="Posterous"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/posterous.png" title="Posterous" alt="Posterous" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fcan-a-language-be-abused%2F&amp;t=Can%20a%20language%20be%20abused%3F&amp;s=K.%20Scott%20Allen%20has%20a%20great%20post%20showing%20an%20%22abuse%22%20of%20the%20lambda%20syntax%20in%20C%23.%0D%0A%0D%0ABut%20I%27m%20wondering%2C%20can%20any%20use%20of%20programming%20language%20really%20be%20called%20abuse%3F%20The%20language%20designers%20and%20creators%20put%20the%20ability%20to%20create%20the%20hack%20described%20above%20in" title="Tumblr"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=Can%20a%20language%20be%20abused%3F%20-%20http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fcan-a-language-be-abused%2F" title="Twitter"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Lazycoder?a=nLASGHGXyUE:A9CSpj2Av6g:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=nLASGHGXyUE:A9CSpj2Av6g:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=nLASGHGXyUE:A9CSpj2Av6g:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=nLASGHGXyUE:A9CSpj2Av6g:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=nLASGHGXyUE:A9CSpj2Av6g:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=nLASGHGXyUE:A9CSpj2Av6g:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=nLASGHGXyUE:A9CSpj2Av6g:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=nLASGHGXyUE:A9CSpj2Av6g:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.lazycoder.com/weblog/2009/12/02/can-a-language-be-abused/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Announcing Planet ASP.NET MVC</title>
		<link>http://www.lazycoder.com/weblog/2009/12/02/announcing-planet-asp-net-mvc/</link>
		<comments>http://www.lazycoder.com/weblog/2009/12/02/announcing-planet-asp-net-mvc/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 19:33:54 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false">http://www.lazycoder.com/weblog/?p=1228</guid>
		<description><![CDATA[I’ve created a “Planet” type site that aggregates posts from different sources about the ASP.NET MVC Framework. Feel free to suggest new feeds you’d like to see on here. Content owners, I’ve made every effort to ensure proper attribution (e.g. the link here and the link in the feed point to the source of the [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve created a “Planet” type site that aggregates posts from different sources about the ASP.NET MVC Framework. Feel free to suggest new feeds you’d like to see on here. Content owners, I’ve made every effort to ensure proper attribution (e.g. the link here and the link in the feed point to the source of the post, author names are retained). However if you want your content removed from this feed, feel free to contact me with no hard feelings.</p>
<p>Mainly, it's for my personal benefit. I wanted to have a single source for my ASP.NET MVC news but Google searches pulled in a bunch of "why MVC isn't for me" type of posts, which I don't really care about. Those people are just wrong. <img src='http://www.lazycoder.com/weblog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>You can find it here. It may eventually get it's own domain and a nifty theme. </p>
<p><a href="http://lazycoder.com/planetdotnet/">Planet ASP.NET MVC</a></p>



Share and Enjoy:


	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fannouncing-planet-asp-net-mvc%2F&amp;title=Announcing%20Planet%20ASP.NET%20MVC&amp;notes=I%E2%80%99ve%20created%20a%20%E2%80%9CPlanet%E2%80%9D%20type%20site%20that%20aggregates%20posts%20from%20different%20sources%20about%20the%20ASP.NET%20MVC%20Framework.%20Feel%20free%20to%20suggest%20new%20feeds%20you%E2%80%99d%20like%20to%20see%20on%20here.%20Content%20owners%2C%20I%E2%80%99ve%20made%20every%20effort%20to%20ensure%20proper%20attribution%20%28e" title="del.icio.us"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fannouncing-planet-asp-net-mvc%2F&amp;title=Announcing%20Planet%20ASP.NET%20MVC" title="DotNetKicks"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/dotnetkicks.png" title="DotNetKicks" alt="DotNetKicks" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fannouncing-planet-asp-net-mvc%2F&amp;title=Announcing%20Planet%20ASP.NET%20MVC" title="DZone"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/dzone.png" title="DZone" alt="DZone" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fannouncing-planet-asp-net-mvc%2F&amp;title=Announcing%20Planet%20ASP.NET%20MVC" title="Reddit"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fannouncing-planet-asp-net-mvc%2F&amp;title=Announcing%20Planet%20ASP.NET%20MVC&amp;bodytext=I%E2%80%99ve%20created%20a%20%E2%80%9CPlanet%E2%80%9D%20type%20site%20that%20aggregates%20posts%20from%20different%20sources%20about%20the%20ASP.NET%20MVC%20Framework.%20Feel%20free%20to%20suggest%20new%20feeds%20you%E2%80%99d%20like%20to%20see%20on%20here.%20Content%20owners%2C%20I%E2%80%99ve%20made%20every%20effort%20to%20ensure%20proper%20attribution%20%28e" title="Digg"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fannouncing-planet-asp-net-mvc%2F&amp;title=Announcing%20Planet%20ASP.NET%20MVC" title="StumbleUpon"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fannouncing-planet-asp-net-mvc%2F&amp;title=Announcing%20Planet%20ASP.NET%20MVC&amp;source=Lazycoder+&amp;summary=I%E2%80%99ve%20created%20a%20%E2%80%9CPlanet%E2%80%9D%20type%20site%20that%20aggregates%20posts%20from%20different%20sources%20about%20the%20ASP.NET%20MVC%20Framework.%20Feel%20free%20to%20suggest%20new%20feeds%20you%E2%80%99d%20like%20to%20see%20on%20here.%20Content%20owners%2C%20I%E2%80%99ve%20made%20every%20effort%20to%20ensure%20proper%20attribution%20%28e" title="LinkedIn"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fannouncing-planet-asp-net-mvc%2F&amp;t=Announcing%20Planet%20ASP.NET%20MVC" title="Facebook"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.friendfeed.com/share?title=Announcing%20Planet%20ASP.NET%20MVC&amp;link=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fannouncing-planet-asp-net-mvc%2F" title="FriendFeed"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fannouncing-planet-asp-net-mvc%2F&amp;t=Announcing%20Planet%20ASP.NET%20MVC" title="HackerNews"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.netvibes.com/share?title=Announcing%20Planet%20ASP.NET%20MVC&amp;url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fannouncing-planet-asp-net-mvc%2F" title="Netvibes"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/netvibes.png" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://posterous.com/share?linkto=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fannouncing-planet-asp-net-mvc%2F&amp;title=Announcing%20Planet%20ASP.NET%20MVC&amp;selection=I%E2%80%99ve%20created%20a%20%E2%80%9CPlanet%E2%80%9D%20type%20site%20that%20aggregates%20posts%20from%20different%20sources%20about%20the%20ASP.NET%20MVC%20Framework.%20Feel%20free%20to%20suggest%20new%20feeds%20you%E2%80%99d%20like%20to%20see%20on%20here.%20Content%20owners%2C%20I%E2%80%99ve%20made%20every%20effort%20to%20ensure%20proper%20attribution%20%28e" title="Posterous"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/posterous.png" title="Posterous" alt="Posterous" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fannouncing-planet-asp-net-mvc%2F&amp;t=Announcing%20Planet%20ASP.NET%20MVC&amp;s=I%E2%80%99ve%20created%20a%20%E2%80%9CPlanet%E2%80%9D%20type%20site%20that%20aggregates%20posts%20from%20different%20sources%20about%20the%20ASP.NET%20MVC%20Framework.%20Feel%20free%20to%20suggest%20new%20feeds%20you%E2%80%99d%20like%20to%20see%20on%20here.%20Content%20owners%2C%20I%E2%80%99ve%20made%20every%20effort%20to%20ensure%20proper%20attribution%20%28e" title="Tumblr"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=Announcing%20Planet%20ASP.NET%20MVC%20-%20http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F12%2F02%2Fannouncing-planet-asp-net-mvc%2F" title="Twitter"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Lazycoder?a=xF4tqYH5WAg:rpmsg_Bkk_Y:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=xF4tqYH5WAg:rpmsg_Bkk_Y:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=xF4tqYH5WAg:rpmsg_Bkk_Y:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=xF4tqYH5WAg:rpmsg_Bkk_Y:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=xF4tqYH5WAg:rpmsg_Bkk_Y:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=xF4tqYH5WAg:rpmsg_Bkk_Y:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=xF4tqYH5WAg:rpmsg_Bkk_Y:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=xF4tqYH5WAg:rpmsg_Bkk_Y:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.lazycoder.com/weblog/2009/12/02/announcing-planet-asp-net-mvc/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Why should I care about Big-IP 10.1?</title>
		<link>http://devcentral.f5.com/weblogs/scott/archive/2009/11/23/why-should-i-care-about-big-ip-10.1.aspx</link>
		<comments>http://devcentral.f5.com/weblogs/scott/archive/2009/11/23/why-should-i-care-about-big-ip-10.1.aspx#comments</comments>
		<pubDate>Tue, 24 Nov 2009 00:14:59 +0000</pubDate>
		<dc:creator>Scott Koon</dc:creator>
				<category><![CDATA[DevCentral Posts]]></category>
		<category><![CDATA[CrossPostedFromDevCentral]]></category>

		<guid isPermaLink="false">http://devcentral.f5.com/weblogs/scott/archive/2009/11/23/why-should-i-care-about-big-ip-10.1.aspx</guid>
		<description><![CDATA[<p> </p>  <p>Big-IP 10.1 has been <strike>released </strike>announced. It includes a lot of new features and enhancements to some existing features.</p>  <p>You can read some of the press releases on our main news page:</p>  <h3><a href="http://www.f5.com/news-press-events/press/2009/20091116b.html">F5 Delivers Advanced Web Security Solutions to Help Customers Efficiently Address Threats to Web Applications and Enhance Business Performance</a></h3>  <h3><a href="http://www.f5.com/news-press-events/press/2009/20091116.html">F5's BIG-IP Solution Enables Service Providers to Transparently Scale and Grow Mobile Services</a></h3>  <h3><a href="http://www.f5.com/news-press-events/press/2009/20091116c.html">F5 Enhances IP Geolocation Capability through Partnership with Quova</a></h3>  <h3><a href="http://www.f5.com/news-press-events/press/2009/20091123.html">F5 Solutions Optimize Microsoft Windows 7 and Windows Server 2008 R2 Deployments</a></h3>  <p> </p>  <h2>Enhanced support for Windows 7 and Windows Server 2008 R2. </h2>  <h3>Direct Access and <strong>BranchCache</strong></h3>  <p>Microsoft DirectAccess lets Windows 7 clients create a secure connection directly to the network over IPsec rather than having to create a separate VPN connection. That means that you can still access your files securely while you are enjoying coffee and a scone at Starbuck Joe wrote a great article addressing how <a href="http://devcentral.f5.com/Default.aspx?tabid=63&#38;articleType=ArticleView&#38;articleId=2353">Big-IP 10.1 helps enable DirectAccess using Windows 7 clients with Windows Server 2008 R2 servers</a> in your enterprise. <a href="http://technet.microsoft.com/en-us/network/dd425028.aspx">BranchCache</a> is a new feature in Windows 7 and Windows Server 2008 R2 that will cache content from remote servers on local servers. You can access the file once it is cached as if you were working in the remote office, using less WAN bandwidth and wasting less of your time. BranchCache can work in one of two modes: Hosted cache mode and Distributed Cache mode. In hosted mode, a Windows Server 2008 R2 server will host the cached content. In Distributed mode the clients will host the cached content. Big-IP v10.1 will route the file requests to the correct server or client.</p>  <p> </p>  <h2>Security</h2>  <h3>DNSSEC</h3>  <p>Lori wrote a great post about what DNSSEC is and how it works, “<a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/11/18/itrsquos-dnssec-not-dnssux.aspx">It’s DNSSEC Not DNSSUX</a>”, and Jason posted an article explaining how to configure the new DNS features using both the GUI and TMSH. <a href="http://devcentral.f5.com/Default.aspx?tabid=63&#38;articleType=ArticleView&#38;articleId=2355">Configuring GTM Version 10.1's DNS Security Extensions</a></p>  <h3>Advanced bot and scanner protection</h3>  <p>Big-IP 10.1 includes support for detecting web site scraping and allows you to set thresholds for locking out IP addresses.</p>  <h3>Enhanced reporting</h3>  <p>ASM’s new Attack Expert System helps make sense of the attacks you see logged against your network. Each attack has a list of possible attack types and the types are explained. The reporting GUI has been reworked. You can either view a chart or drill down into the attacks with a few clicks. Ten-Point-One also includes a PCI compliance report.</p>  <p> </p>  <p>Look for some more information about some of these features in the coming months.</p>  <p> </p>  <p><em>(edited for clarity SCK)</em></p><img src="http://devcentral.f5.com/weblogs/scott/aggbug/6223.aspx" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p> </p>  <p>Big-IP 10.1 has been <strike>released </strike>announced. It includes a lot of new features and enhancements to some existing features.</p>  <p>You can read some of the press releases on our main news page:</p>  <h3><a href="http://www.f5.com/news-press-events/press/2009/20091116b.html">F5 Delivers Advanced Web Security Solutions to Help Customers Efficiently Address Threats to Web Applications and Enhance Business Performance</a></h3>  <h3><a href="http://www.f5.com/news-press-events/press/2009/20091116.html">F5's BIG-IP Solution Enables Service Providers to Transparently Scale and Grow Mobile Services</a></h3>  <h3><a href="http://www.f5.com/news-press-events/press/2009/20091116c.html">F5 Enhances IP Geolocation Capability through Partnership with Quova</a></h3>  <h3><a href="http://www.f5.com/news-press-events/press/2009/20091123.html">F5 Solutions Optimize Microsoft Windows 7 and Windows Server 2008 R2 Deployments</a></h3>  <p> </p>  <h2>Enhanced support for Windows 7 and Windows Server 2008 R2. </h2>  <h3>Direct Access and <strong>BranchCache</strong></h3>  <p>Microsoft DirectAccess lets Windows 7 clients create a secure connection directly to the network over IPsec rather than having to create a separate VPN connection. That means that you can still access your files securely while you are enjoying coffee and a scone at Starbuck Joe wrote a great article addressing how <a href="http://devcentral.f5.com/Default.aspx?tabid=63&amp;articleType=ArticleView&amp;articleId=2353">Big-IP 10.1 helps enable DirectAccess using Windows 7 clients with Windows Server 2008 R2 servers</a> in your enterprise. <a href="http://technet.microsoft.com/en-us/network/dd425028.aspx">BranchCache</a> is a new feature in Windows 7 and Windows Server 2008 R2 that will cache content from remote servers on local servers. You can access the file once it is cached as if you were working in the remote office, using less WAN bandwidth and wasting less of your time. BranchCache can work in one of two modes: Hosted cache mode and Distributed Cache mode. In hosted mode, a Windows Server 2008 R2 server will host the cached content. In Distributed mode the clients will host the cached content. Big-IP v10.1 will route the file requests to the correct server or client.</p>  <p> </p>  <h2>Security</h2>  <h3>DNSSEC</h3>  <p>Lori wrote a great post about what DNSSEC is and how it works, “<a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/11/18/itrsquos-dnssec-not-dnssux.aspx">It’s DNSSEC Not DNSSUX</a>”, and Jason posted an article explaining how to configure the new DNS features using both the GUI and TMSH. <a href="http://devcentral.f5.com/Default.aspx?tabid=63&amp;articleType=ArticleView&amp;articleId=2355">Configuring GTM Version 10.1's DNS Security Extensions</a></p>  <h3>Advanced bot and scanner protection</h3>  <p>Big-IP 10.1 includes support for detecting web site scraping and allows you to set thresholds for locking out IP addresses.</p>  <h3>Enhanced reporting</h3>  <p>ASM’s new Attack Expert System helps make sense of the attacks you see logged against your network. Each attack has a list of possible attack types and the types are explained. The reporting GUI has been reworked. You can either view a chart or drill down into the attacks with a few clicks. Ten-Point-One also includes a PCI compliance report.</p>  <p> </p>  <p>Look for some more information about some of these features in the coming months.</p>  <p> </p>  <p><em>(edited for clarity SCK)</em></p><img src="http://devcentral.f5.com/weblogs/scott/aggbug/6223.aspx" width="1" height="1" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Lazycoder?a=m81uT9NYQgg:x8ZwXl1766w:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=m81uT9NYQgg:x8ZwXl1766w:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=m81uT9NYQgg:x8ZwXl1766w:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=m81uT9NYQgg:x8ZwXl1766w:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=m81uT9NYQgg:x8ZwXl1766w:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=m81uT9NYQgg:x8ZwXl1766w:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=m81uT9NYQgg:x8ZwXl1766w:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=m81uT9NYQgg:x8ZwXl1766w:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://devcentral.f5.com/weblogs/scott/archive/2009/11/23/why-should-i-care-about-big-ip-10.1.aspx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pros don’t make do</title>
		<link>http://www.lazycoder.com/weblog/2009/11/23/pros-dont-make-do/</link>
		<comments>http://www.lazycoder.com/weblog/2009/11/23/pros-dont-make-do/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 17:03:00 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.lazycoder.com/weblog/2009/11/23/pros-dont-make-do/</guid>
		<description><![CDATA[I had a locksmith come out to replace a doorknob that had gone bad. It had gradually gotten hard and harder to turn and finally the bolt got stuck inside the door. Which meant the only thing keeping the door shut was the deadbolt. I had replaced doorknobs before, but this one had a non-standard [...]]]></description>
			<content:encoded><![CDATA[<p>I had a locksmith come out to replace a doorknob that had gone bad. It had gradually gotten hard and harder to turn and finally the bolt got stuck inside the door. Which meant the only thing keeping the door shut was the deadbolt. I had replaced doorknobs before, but this one had a non-standard length and strike plate so I didn't want to mess with it. The thing that struck me while watching him work is that he never had to try and force a tool to do something it wasn't designed to do. He always had the correct tool and it worked exactly the way he expected it to. <a href="http://thereifixedit.com/2009/10/30/long-term-temporary-fix/"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="mikeg-longtermfix" border="0" alt="mikeg-longtermfix" align="left" src="http://www.lazycoder.com/weblog/wp-content/uploads/2009/11/mikeglongtermfix.jpg" width="244" height="184" /></a>He never tried to screw in a Phillips head screw using a knife blade or a flat head screwdriver. He didn’t have to <a href="http://www.joelonsoftware.com/items/2009/09/23.html">duct tape</a> anything</p>
<p>I have a small battery powered Dremel rotary tool. It works for very small jobs. There have been a couple of times when I’ve had to push it way beyond it’s limit, including once when I needed to make the opening on a door jam for a strike plate a little wider. It took me forever. I had to charge the battery twice and broke a bit before I finally had enough room, but just barely enough room. Contrast that with the locksmith who had to do the exact same thing. He pulled out a much larger Dremel that plugged into the wall. Where it took me almost 45 minutes to rout out the door jam, he took about 2 minutes with his much more powerful tool. I could have stopped, went to the store, and bought a more powerful tool and gotten the job done much faster. But I thought that this tool would do the trick and going to the store would have cost me some resources, it might have taken a little longer. I’d have to learn how to use the new tool. Get a new bit. But overall, it probably would have saved me some time in the future and probably would have saved me some time on that project. I could definitely find other uses for the new tool.</p>
<p>Think about that the next time you reject a new programming tool because you think it might take too long to learn or it’s different. Instead of doing the hacky way you KNOW will work, check to see if there is a more elegant or permanent solution.&#160; Because if you aren’t careful, your cheap and easy workaround might end up sticking around in the project long enough for it to become a problem to you.</p>



Share and Enjoy:


	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F23%2Fpros-dont-make-do%2F&amp;title=Pros%20don%27t%20make%20do&amp;notes=I%20had%20a%20locksmith%20come%20out%20to%20replace%20a%20doorknob%20that%20had%20gone%20bad.%20It%20had%20gradually%20gotten%20hard%20and%20harder%20to%20turn%20and%20finally%20the%20bolt%20got%20stuck%20inside%20the%20door.%20Which%20meant%20the%20only%20thing%20keeping%20the%20door%20shut%20was%20the%20deadbolt.%20I%20had%20replaced%20door" title="del.icio.us"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F23%2Fpros-dont-make-do%2F&amp;title=Pros%20don%27t%20make%20do" title="DotNetKicks"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/dotnetkicks.png" title="DotNetKicks" alt="DotNetKicks" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F23%2Fpros-dont-make-do%2F&amp;title=Pros%20don%27t%20make%20do" title="DZone"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/dzone.png" title="DZone" alt="DZone" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F23%2Fpros-dont-make-do%2F&amp;title=Pros%20don%27t%20make%20do" title="Reddit"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F23%2Fpros-dont-make-do%2F&amp;title=Pros%20don%27t%20make%20do&amp;bodytext=I%20had%20a%20locksmith%20come%20out%20to%20replace%20a%20doorknob%20that%20had%20gone%20bad.%20It%20had%20gradually%20gotten%20hard%20and%20harder%20to%20turn%20and%20finally%20the%20bolt%20got%20stuck%20inside%20the%20door.%20Which%20meant%20the%20only%20thing%20keeping%20the%20door%20shut%20was%20the%20deadbolt.%20I%20had%20replaced%20door" title="Digg"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F23%2Fpros-dont-make-do%2F&amp;title=Pros%20don%27t%20make%20do" title="StumbleUpon"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F23%2Fpros-dont-make-do%2F&amp;title=Pros%20don%27t%20make%20do&amp;source=Lazycoder+&amp;summary=I%20had%20a%20locksmith%20come%20out%20to%20replace%20a%20doorknob%20that%20had%20gone%20bad.%20It%20had%20gradually%20gotten%20hard%20and%20harder%20to%20turn%20and%20finally%20the%20bolt%20got%20stuck%20inside%20the%20door.%20Which%20meant%20the%20only%20thing%20keeping%20the%20door%20shut%20was%20the%20deadbolt.%20I%20had%20replaced%20door" title="LinkedIn"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F23%2Fpros-dont-make-do%2F&amp;t=Pros%20don%27t%20make%20do" title="Facebook"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.friendfeed.com/share?title=Pros%20don%27t%20make%20do&amp;link=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F23%2Fpros-dont-make-do%2F" title="FriendFeed"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F23%2Fpros-dont-make-do%2F&amp;t=Pros%20don%27t%20make%20do" title="HackerNews"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.netvibes.com/share?title=Pros%20don%27t%20make%20do&amp;url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F23%2Fpros-dont-make-do%2F" title="Netvibes"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/netvibes.png" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://posterous.com/share?linkto=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F23%2Fpros-dont-make-do%2F&amp;title=Pros%20don%27t%20make%20do&amp;selection=I%20had%20a%20locksmith%20come%20out%20to%20replace%20a%20doorknob%20that%20had%20gone%20bad.%20It%20had%20gradually%20gotten%20hard%20and%20harder%20to%20turn%20and%20finally%20the%20bolt%20got%20stuck%20inside%20the%20door.%20Which%20meant%20the%20only%20thing%20keeping%20the%20door%20shut%20was%20the%20deadbolt.%20I%20had%20replaced%20door" title="Posterous"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/posterous.png" title="Posterous" alt="Posterous" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F23%2Fpros-dont-make-do%2F&amp;t=Pros%20don%27t%20make%20do&amp;s=I%20had%20a%20locksmith%20come%20out%20to%20replace%20a%20doorknob%20that%20had%20gone%20bad.%20It%20had%20gradually%20gotten%20hard%20and%20harder%20to%20turn%20and%20finally%20the%20bolt%20got%20stuck%20inside%20the%20door.%20Which%20meant%20the%20only%20thing%20keeping%20the%20door%20shut%20was%20the%20deadbolt.%20I%20had%20replaced%20door" title="Tumblr"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=Pros%20don%27t%20make%20do%20-%20http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F23%2Fpros-dont-make-do%2F" title="Twitter"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Lazycoder?a=wTUprGOP0ds:EFK3D_cyexE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=wTUprGOP0ds:EFK3D_cyexE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=wTUprGOP0ds:EFK3D_cyexE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=wTUprGOP0ds:EFK3D_cyexE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=wTUprGOP0ds:EFK3D_cyexE:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=wTUprGOP0ds:EFK3D_cyexE:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=wTUprGOP0ds:EFK3D_cyexE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=wTUprGOP0ds:EFK3D_cyexE:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.lazycoder.com/weblog/2009/11/23/pros-dont-make-do/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>We need a language for programmers</title>
		<link>http://www.lazycoder.com/weblog/2009/11/17/we-need-a-language-for-programmers/</link>
		<comments>http://www.lazycoder.com/weblog/2009/11/17/we-need-a-language-for-programmers/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 21:10:40 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Languages]]></category>

		<guid isPermaLink="false">http://www.lazycoder.com/weblog/?p=1218</guid>
		<description><![CDATA[Here is a great rant about "modern" programming languages.
And so for 20 years now these folks ---
*the* shining lights, in many ways, of "practical" programming
language, operating systems, and general systems research --- have
continued to fail to "get" the fundamental practical needs of everyday
programmers working in The Real World.  "Go" is just another language
written first [...]]]></description>
			<content:encoded><![CDATA[<p>Here is a <a href="http://www.xent.com/pipermail/fork/Week-of-Mon-20091109/054578.html">great rant about "modern" programming languages</a>.</p>
<blockquote><p>And so for 20 years now these folks ---<br />
*the* shining lights, in many ways, of "practical" programming<br />
language, operating systems, and general systems research --- have<br />
continued to fail to "get" the fundamental practical needs of everyday<br />
programmers working in The Real World.  "Go" is just another language<br />
written first for the compiler and only secondarily for the programmer<br />
--- and stuck in a 70s mindset* about the relationship of that<br />
programmer to the (digital) world within which they live and work!<br />
(But hey, it compiles fast!  Which is, of course, THE problem that<br />
really needs addressing.) </p></blockquote>
<p>He then goes on to talk about some aspects of languages that frustrate him.</p>
<blockquote><p>J.H.C, folks, it's nearly 2010.  Let's get a few things straight:</p>
<p>   - most programming involves schlepping a few but complex data types<br />
between different string representations<br />
   - programmers have become plumbers and documentation-archaeologists<br />
mostly, which is sad and uninteresting<br />
   - programming languages are for *programmers* --- not compilers and<br />
compiler-writers<br />
   - until you make the everyday, "simple" things simple, it will<br />
continue to be a dark art practiced by fewer and fewer<br />
   - any language that makes you explicitly import an IO module to<br />
read a file or stdin is fucked<br />
   - declarations are a pointless anachronism (same for explicit<br />
memory management)<br />
   - if I have to understand category theory to write a program that<br />
does IO, IT IS A NON STARTER!<br />
   - less stupid line-noise syntax and punctuation, people
</p></blockquote>
<p>I don't understand why the need to compile fast is such a big deal. If your programming language makes you write so much code that it takes more than a few seconds to compile, you should probably look at using a different language. Here are some things that I'd like to see in a programming language that is designed for programmers rather than compilers or computers.</p>
<p>1) No typing - That's not to say that I can't declare my own types, classes, objects, etc... But that calls to objects should be type independent. (e.g. messaging and dynamic dispatch)</p>
<p>2) Built in unit testing - I should be able to declare contracts on the methods and pass/fail criteria. The tests should be run as part of the compile step or interpretation (if the language is compiled or interpreted)</p>
<p>3) Jellybeans</p>
<p>4) Automatic inclusion of libraries based on path and usage. - I don't mind having to pull in a library to do file I/O or consume some other kind of data like ATOM or JSON. But at compile time, if I have referenced any of the objects contained in the library, all of the references to the library should be handled for me automatically. Any name collisions should be compiler warnings so I can specify which library to use by in my code or make the reference explicit in some other way. I like Pythons path based module convention, the language should just search the child directories for a library if the library isn't already included in the base language pack.</p>
<p>5) Anytime a design pattern emerges, it should be re-factored into the language itself.</p>
<p>6) It should be a pocket language, have a set of keywords and syntax that is small and compact but still understandable. JavaScript and C are good examples of pocket languages. It's easy to pick up the syntax.</p>
<p>I'm sure there's more that I would add. What kinds of features would you like to see in a language oriented towards programmers rather than compilers?</p>



Share and Enjoy:


	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F17%2Fwe-need-a-language-for-programmers%2F&amp;title=We%20need%20a%20language%20for%20programmers&amp;notes=Here%20is%20a%20great%20rant%20about%20%22modern%22%20programming%20languages.%0D%0A%0D%0AAnd%20so%20for%2020%20years%20now%20these%20folks%20---%20%20%0D%0A%2Athe%2A%20shining%20lights%2C%20in%20many%20ways%2C%20of%20%22practical%22%20programming%20%20%0D%0Alanguage%2C%20operating%20systems%2C%20and%20general%20systems%20research%20---%20have%20%20%0D%0Acontinued" title="del.icio.us"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F17%2Fwe-need-a-language-for-programmers%2F&amp;title=We%20need%20a%20language%20for%20programmers" title="DotNetKicks"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/dotnetkicks.png" title="DotNetKicks" alt="DotNetKicks" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F17%2Fwe-need-a-language-for-programmers%2F&amp;title=We%20need%20a%20language%20for%20programmers" title="DZone"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/dzone.png" title="DZone" alt="DZone" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F17%2Fwe-need-a-language-for-programmers%2F&amp;title=We%20need%20a%20language%20for%20programmers" title="Reddit"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F17%2Fwe-need-a-language-for-programmers%2F&amp;title=We%20need%20a%20language%20for%20programmers&amp;bodytext=Here%20is%20a%20great%20rant%20about%20%22modern%22%20programming%20languages.%0D%0A%0D%0AAnd%20so%20for%2020%20years%20now%20these%20folks%20---%20%20%0D%0A%2Athe%2A%20shining%20lights%2C%20in%20many%20ways%2C%20of%20%22practical%22%20programming%20%20%0D%0Alanguage%2C%20operating%20systems%2C%20and%20general%20systems%20research%20---%20have%20%20%0D%0Acontinued" title="Digg"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F17%2Fwe-need-a-language-for-programmers%2F&amp;title=We%20need%20a%20language%20for%20programmers" title="StumbleUpon"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F17%2Fwe-need-a-language-for-programmers%2F&amp;title=We%20need%20a%20language%20for%20programmers&amp;source=Lazycoder+&amp;summary=Here%20is%20a%20great%20rant%20about%20%22modern%22%20programming%20languages.%0D%0A%0D%0AAnd%20so%20for%2020%20years%20now%20these%20folks%20---%20%20%0D%0A%2Athe%2A%20shining%20lights%2C%20in%20many%20ways%2C%20of%20%22practical%22%20programming%20%20%0D%0Alanguage%2C%20operating%20systems%2C%20and%20general%20systems%20research%20---%20have%20%20%0D%0Acontinued" title="LinkedIn"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F17%2Fwe-need-a-language-for-programmers%2F&amp;t=We%20need%20a%20language%20for%20programmers" title="Facebook"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.friendfeed.com/share?title=We%20need%20a%20language%20for%20programmers&amp;link=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F17%2Fwe-need-a-language-for-programmers%2F" title="FriendFeed"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F17%2Fwe-need-a-language-for-programmers%2F&amp;t=We%20need%20a%20language%20for%20programmers" title="HackerNews"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.netvibes.com/share?title=We%20need%20a%20language%20for%20programmers&amp;url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F17%2Fwe-need-a-language-for-programmers%2F" title="Netvibes"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/netvibes.png" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://posterous.com/share?linkto=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F17%2Fwe-need-a-language-for-programmers%2F&amp;title=We%20need%20a%20language%20for%20programmers&amp;selection=Here%20is%20a%20great%20rant%20about%20%22modern%22%20programming%20languages.%0D%0A%0D%0AAnd%20so%20for%2020%20years%20now%20these%20folks%20---%20%20%0D%0A%2Athe%2A%20shining%20lights%2C%20in%20many%20ways%2C%20of%20%22practical%22%20programming%20%20%0D%0Alanguage%2C%20operating%20systems%2C%20and%20general%20systems%20research%20---%20have%20%20%0D%0Acontinued" title="Posterous"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/posterous.png" title="Posterous" alt="Posterous" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F17%2Fwe-need-a-language-for-programmers%2F&amp;t=We%20need%20a%20language%20for%20programmers&amp;s=Here%20is%20a%20great%20rant%20about%20%22modern%22%20programming%20languages.%0D%0A%0D%0AAnd%20so%20for%2020%20years%20now%20these%20folks%20---%20%20%0D%0A%2Athe%2A%20shining%20lights%2C%20in%20many%20ways%2C%20of%20%22practical%22%20programming%20%20%0D%0Alanguage%2C%20operating%20systems%2C%20and%20general%20systems%20research%20---%20have%20%20%0D%0Acontinued" title="Tumblr"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=We%20need%20a%20language%20for%20programmers%20-%20http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F17%2Fwe-need-a-language-for-programmers%2F" title="Twitter"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Lazycoder?a=AR1yXcdZMRk:zja54ND9em0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=AR1yXcdZMRk:zja54ND9em0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=AR1yXcdZMRk:zja54ND9em0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=AR1yXcdZMRk:zja54ND9em0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=AR1yXcdZMRk:zja54ND9em0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=AR1yXcdZMRk:zja54ND9em0:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=AR1yXcdZMRk:zja54ND9em0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=AR1yXcdZMRk:zja54ND9em0:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.lazycoder.com/weblog/2009/11/17/we-need-a-language-for-programmers/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Why should I care about the hardware?</title>
		<link>http://devcentral.f5.com/weblogs/scott/archive/2009/11/05/why-should-i-care-about-the-hardware.aspx</link>
		<comments>http://devcentral.f5.com/weblogs/scott/archive/2009/11/05/why-should-i-care-about-the-hardware.aspx#comments</comments>
		<pubDate>Thu, 05 Nov 2009 18:10:00 +0000</pubDate>
		<dc:creator>Scott Koon</dc:creator>
				<category><![CDATA[DevCentral Posts]]></category>
		<category><![CDATA[CrossPostedFromDevCentral]]></category>

		<guid isPermaLink="false">http://devcentral.f5.com/weblogs/scott/archive/2009/11/05/why-should-i-care-about-the-hardware.aspx</guid>
		<description><![CDATA[<p>I'm not a network engineer. I just build the applications, the network professionals take care of deploying my applications and making sure they stay up. Why should I care about what hardware they use?</p>  <p> </p>  <p>Because the hardware they use could influence my application architecture. </p>  <ul>   <li>If I know the IT guys are able to bring in new servers in response to increased demand, I start to think about distributed caching instead of replication maybe. I start to think that the application shouldn't store any data in a machine specific session so that the load balancer can send the user to any machine.</li>    <li>If they have access to distributed hardware caching, maybe I don't have to worry about donut caching in my pages. </li>    <li>If I know they can pull servers in and out of the clusters at will with no visible downtime to our users, I start to think about deploying more often. I can become more agile. </li>    <li>If I don’t have to worry about how much space is left where I’m storing my users uploads, I don’t have to write code to check how much space is available and present an error to my users if the space fills up.</li> </ul>  <p> </p>  <p>One of my goals with my F5 Devcentral blog is to explore ways that developers and IT professionals can cooperate more and blur the lines between them a bit more.</p><img src="http://devcentral.f5.com/weblogs/scott/aggbug/6183.aspx" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I'm not a network engineer. I just build the applications, the network professionals take care of deploying my applications and making sure they stay up. Why should I care about what hardware they use?</p>  <p> </p>  <p>Because the hardware they use could influence my application architecture. </p>  <ul>   <li>If I know the IT guys are able to bring in new servers in response to increased demand, I start to think about distributed caching instead of replication maybe. I start to think that the application shouldn't store any data in a machine specific session so that the load balancer can send the user to any machine.</li>    <li>If they have access to distributed hardware caching, maybe I don't have to worry about donut caching in my pages. </li>    <li>If I know they can pull servers in and out of the clusters at will with no visible downtime to our users, I start to think about deploying more often. I can become more agile. </li>    <li>If I don’t have to worry about how much space is left where I’m storing my users uploads, I don’t have to write code to check how much space is available and present an error to my users if the space fills up.</li> </ul>  <p> </p>  <p>One of my goals with my F5 Devcentral blog is to explore ways that developers and IT professionals can cooperate more and blur the lines between them a bit more.</p><img src="http://devcentral.f5.com/weblogs/scott/aggbug/6183.aspx" width="1" height="1" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Lazycoder?a=3jIr5NA06ZY:Y7XN-2Z4HIM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=3jIr5NA06ZY:Y7XN-2Z4HIM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=3jIr5NA06ZY:Y7XN-2Z4HIM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=3jIr5NA06ZY:Y7XN-2Z4HIM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=3jIr5NA06ZY:Y7XN-2Z4HIM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=3jIr5NA06ZY:Y7XN-2Z4HIM:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=3jIr5NA06ZY:Y7XN-2Z4HIM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=3jIr5NA06ZY:Y7XN-2Z4HIM:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://devcentral.f5.com/weblogs/scott/archive/2009/11/05/why-should-i-care-about-the-hardware.aspx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dependency Injection and Inversion of Control are not rocket surgery</title>
		<link>http://www.lazycoder.com/weblog/2009/11/03/dependency-injection-and-inversion-of-control-are-not-rocket-surgery/</link>
		<comments>http://www.lazycoder.com/weblog/2009/11/03/dependency-injection-and-inversion-of-control-are-not-rocket-surgery/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 18:46:19 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[DependencyInjection]]></category>
		<category><![CDATA[DI]]></category>
		<category><![CDATA[InversionOfControl]]></category>
		<category><![CDATA[IoC]]></category>

		<guid isPermaLink="false">http://www.lazycoder.com/weblog/?p=1204</guid>
		<description><![CDATA[I see a lot of people talking about how “advanced” techniques like dependency injection and inversion of control are and how their team won’t understand either technique.
&#160;
Folks, this isn’t hard. In fact, both of these things are so simple I simply call it “using the programming language”.
&#160;
Let’s look at dependency injection.
PLAIN TEXT
C#:




public class MyClass


&#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>I see a lot of people talking about how “advanced” techniques like dependency injection and inversion of control are and how their team won’t understand either technique.</p>
<p>&#160;</p>
<p>Folks, this isn’t hard. In fact, both of these things are so simple I simply call it “using the programming language”.</p>
<p>&#160;</p>
<p>Let’s look at dependency injection.</p>
<div class="igBar"><span id="lcsharp-17"><a href="#" onclick="javascript:showCodeTxt('csharp-17'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">C#:</span>
<div id="csharp-17">
<div class="csharp">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0600FF;">public</span> <span style="color: #FF0000;">class</span> MyClass</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000000;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">private</span> DataTableReader _reader;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">public</span> MyClass<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _reader = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> DataTableReader<span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> DataTable<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">private</span> <span style="color: #0600FF;">void</span> DoStuffWithTheReader<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">while</span> <span style="color: #000000;">&#40;</span>_reader.<span style="color: #0000FF;">Read</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008080; font-style: italic;">//do fun stuff with the reader.</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000000;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>See the reader variable? That's a dependency. You have to have it in there to do fun things later on. But we have to create it ourselves, which is one more thing that we have to do in our class constructor. In reality we also have to populate the DataTable. So what if we make the reader variable constructor parameter so that another class can do the work of creating the DataTable and the reader?</p>
<div class="igBar"><span id="lcsharp-18"><a href="#" onclick="javascript:showCodeTxt('csharp-18'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">C#:</span>
<div id="csharp-18">
<div class="csharp">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0600FF;">public</span> <span style="color: #FF0000;">class</span> MyClass</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000000;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">private</span> DataTableReader _reader;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">public</span> MyClass<span style="color: #000000;">&#40;</span>DataTableReader dataTableReader<span style="color: #000000;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _reader = dataTableReader;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">private</span> <span style="color: #0600FF;">void</span> DoStuffWithTheReader<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">while</span> <span style="color: #000000;">&#40;</span>_reader.<span style="color: #0000FF;">Read</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008080; font-style: italic;">//do fun stuff with the reader.</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000000;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>
There, that's better. Now our class doesn't have to worry about creating the reader and the DataTable. This, in a nutshell, is dependency injection. It's not very complicated is it? We've made our class construction a little simpler and if we want to unit test this, we don't have to do any complicated mocking, we can just new up our own DataTableReader instance and populate it with whatever test data we want. If you run into any funny looking data in the DoStuffWithTheReader method, you know that you don't have to look in this class at all to see where the funny data is coming from, only in whatever method is creating this class and passing in the DataTableReader.</p>
<p>Now is there anyone who thinks that developers on their team would have trouble understanding passing in a parameter? Should they really be a developer if they do?<br />
<img align="right" src="http://www.lazycoder.com/weblog/wp-content/uploads/2009/11/2250160502_21df89d710_m.jpg" alt="Honestly, it's not that hard." /></p>
<p>Ok, so let's look at inversion of control. The original <a href="http://martinfowler.com/bliki/InversionOfControl.html">definition of inversion of control</a> I read was by Martin Fowler:</p>
<blockquote><p>There's a big difference now in the flow of control between these programs - in particular the control of when the process_name and process_quest methods are called. In the command line form I control when these methods are called, but in the window example I don't. Instead I hand control over to the windowing system (with the Tk.mainloop command). It then decides when to call my methods, based on the bindings I made when creating the form. The control is inverted - it calls me rather me calling the framework. This phenomenon is Inversion of Control (also known as the Hollywood Principle - "Don't call us, we'll call you").</p></blockquote>
<p>If you look at the previous example, you'll see that we have already inverted the control a bit just by using dependency injection. But the class still has a degree of control over WHAT concrete object is created, in this case a DataTableReader. What if we need to switch over to a SqlDataReader or an OleDbDataReader? Well, we could create three other classes that all take the specific type of data reader we might want to use. But that's a bad idea, you end up with the same logic spread all over the place. Instead we can use the IDataReader interface that all three classes implement.</p>
<div class="igBar"><span id="lcsharp-19"><a href="#" onclick="javascript:showCodeTxt('csharp-19'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">C#:</span>
<div id="csharp-19">
<div class="csharp">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0600FF;">public</span> <span style="color: #FF0000;">class</span> MyClass</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000000;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">private</span> IDataReader _reader;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">public</span> MyClass<span style="color: #000000;">&#40;</span>IDataReader dataTableReader<span style="color: #000000;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _reader = dataTableReader;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">private</span> <span style="color: #0600FF;">void</span> DoStuffWithTheReader<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">while</span> <span style="color: #000000;">&#40;</span>_reader.<span style="color: #0000FF;">Read</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008080; font-style: italic;">//do fun stuff with the reader.</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000000;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>
Now our class not only doesn't have to worry about creating the DataTableReader, it doesn't even really care if it gets a DataTableReader at all. All it cares about is that the reader is referencing something that implements the IDataReader interface. This is a <a href="http://www.martinfowler.com/articles/injection.html#InversionOfControl">type of inversion of control</a>. Most of the time people get confused between inversion of control and a container that enables inversion of control and dependency injection (like <a href="http://ninject.org/">Ninject</a>, <a href="http://structuremap.sourceforge.net/">StructureMap</a> or <a href="http://www.codeplex.com/unity/">Unity</a>). You don't have to use a container to utilize these two techniques, it just makes it a little easier.</p>
<p>update:Also check out this great post "<a href="http://hadihariri.com/blogengine/post/2009/10/29/Ite28099s-all-about-the-delivery.aspx">It’s all about the delivery</a>" </p>
<p>update: I mistakingly thought it was hard to do D.I. in Python due to the <a href="http://www.network-theory.co.uk/docs/pytut/Inheritance.html">inheritance mechanism in Python</a>. Turns out, it's just as easy.</p>
<div class="igBar"><span id="lpython-20"><a href="#" onclick="javascript:showCodeTxt('python-20'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PYTHON:</span>
<div id="python-20">
<div class="python">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff7700;font-weight:bold;">class</span> MyClass<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, dataTableReader<span style="color: black;">&#41;</span>:</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">self</span>._reader = dataTableReader</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> DoStuffWithTheReader<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">while</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>._reader.<span style="color: black;">Read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">#Do Fun Stuff with the reader.</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>._reader.<span style="color: black;">item</span><span style="color: black;">&#41;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>



Share and Enjoy:


	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F03%2Fdependency-injection-and-inversion-of-control-are-not-rocket-surgery%2F&amp;title=Dependency%20Injection%20and%20Inversion%20of%20Control%20are%20not%20rocket%20surgery&amp;notes=I%20see%20a%20lot%20of%20people%20talking%20about%20how%20%E2%80%9Cadvanced%E2%80%9D%20techniques%20like%20dependency%20injection%20and%20inversion%20of%20control%20are%20and%20how%20their%20team%20won%E2%80%99t%20understand%20either%20technique.%20%20%26%23160%3B%20%20Folks%2C%20this%20isn%E2%80%99t%20hard.%20In%20fact%2C%20both%20of%20these%20things%20are%20so%20s" title="del.icio.us"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F03%2Fdependency-injection-and-inversion-of-control-are-not-rocket-surgery%2F&amp;title=Dependency%20Injection%20and%20Inversion%20of%20Control%20are%20not%20rocket%20surgery" title="DotNetKicks"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/dotnetkicks.png" title="DotNetKicks" alt="DotNetKicks" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F03%2Fdependency-injection-and-inversion-of-control-are-not-rocket-surgery%2F&amp;title=Dependency%20Injection%20and%20Inversion%20of%20Control%20are%20not%20rocket%20surgery" title="DZone"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/dzone.png" title="DZone" alt="DZone" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F03%2Fdependency-injection-and-inversion-of-control-are-not-rocket-surgery%2F&amp;title=Dependency%20Injection%20and%20Inversion%20of%20Control%20are%20not%20rocket%20surgery" title="Reddit"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F03%2Fdependency-injection-and-inversion-of-control-are-not-rocket-surgery%2F&amp;title=Dependency%20Injection%20and%20Inversion%20of%20Control%20are%20not%20rocket%20surgery&amp;bodytext=I%20see%20a%20lot%20of%20people%20talking%20about%20how%20%E2%80%9Cadvanced%E2%80%9D%20techniques%20like%20dependency%20injection%20and%20inversion%20of%20control%20are%20and%20how%20their%20team%20won%E2%80%99t%20understand%20either%20technique.%20%20%26%23160%3B%20%20Folks%2C%20this%20isn%E2%80%99t%20hard.%20In%20fact%2C%20both%20of%20these%20things%20are%20so%20s" title="Digg"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F03%2Fdependency-injection-and-inversion-of-control-are-not-rocket-surgery%2F&amp;title=Dependency%20Injection%20and%20Inversion%20of%20Control%20are%20not%20rocket%20surgery" title="StumbleUpon"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F03%2Fdependency-injection-and-inversion-of-control-are-not-rocket-surgery%2F&amp;title=Dependency%20Injection%20and%20Inversion%20of%20Control%20are%20not%20rocket%20surgery&amp;source=Lazycoder+&amp;summary=I%20see%20a%20lot%20of%20people%20talking%20about%20how%20%E2%80%9Cadvanced%E2%80%9D%20techniques%20like%20dependency%20injection%20and%20inversion%20of%20control%20are%20and%20how%20their%20team%20won%E2%80%99t%20understand%20either%20technique.%20%20%26%23160%3B%20%20Folks%2C%20this%20isn%E2%80%99t%20hard.%20In%20fact%2C%20both%20of%20these%20things%20are%20so%20s" title="LinkedIn"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F03%2Fdependency-injection-and-inversion-of-control-are-not-rocket-surgery%2F&amp;t=Dependency%20Injection%20and%20Inversion%20of%20Control%20are%20not%20rocket%20surgery" title="Facebook"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.friendfeed.com/share?title=Dependency%20Injection%20and%20Inversion%20of%20Control%20are%20not%20rocket%20surgery&amp;link=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F03%2Fdependency-injection-and-inversion-of-control-are-not-rocket-surgery%2F" title="FriendFeed"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F03%2Fdependency-injection-and-inversion-of-control-are-not-rocket-surgery%2F&amp;t=Dependency%20Injection%20and%20Inversion%20of%20Control%20are%20not%20rocket%20surgery" title="HackerNews"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.netvibes.com/share?title=Dependency%20Injection%20and%20Inversion%20of%20Control%20are%20not%20rocket%20surgery&amp;url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F03%2Fdependency-injection-and-inversion-of-control-are-not-rocket-surgery%2F" title="Netvibes"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/netvibes.png" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://posterous.com/share?linkto=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F03%2Fdependency-injection-and-inversion-of-control-are-not-rocket-surgery%2F&amp;title=Dependency%20Injection%20and%20Inversion%20of%20Control%20are%20not%20rocket%20surgery&amp;selection=I%20see%20a%20lot%20of%20people%20talking%20about%20how%20%E2%80%9Cadvanced%E2%80%9D%20techniques%20like%20dependency%20injection%20and%20inversion%20of%20control%20are%20and%20how%20their%20team%20won%E2%80%99t%20understand%20either%20technique.%20%20%26%23160%3B%20%20Folks%2C%20this%20isn%E2%80%99t%20hard.%20In%20fact%2C%20both%20of%20these%20things%20are%20so%20s" title="Posterous"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/posterous.png" title="Posterous" alt="Posterous" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F03%2Fdependency-injection-and-inversion-of-control-are-not-rocket-surgery%2F&amp;t=Dependency%20Injection%20and%20Inversion%20of%20Control%20are%20not%20rocket%20surgery&amp;s=I%20see%20a%20lot%20of%20people%20talking%20about%20how%20%E2%80%9Cadvanced%E2%80%9D%20techniques%20like%20dependency%20injection%20and%20inversion%20of%20control%20are%20and%20how%20their%20team%20won%E2%80%99t%20understand%20either%20technique.%20%20%26%23160%3B%20%20Folks%2C%20this%20isn%E2%80%99t%20hard.%20In%20fact%2C%20both%20of%20these%20things%20are%20so%20s" title="Tumblr"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=Dependency%20Injection%20and%20Inversion%20of%20Control%20are%20not%20rocket%20surgery%20-%20http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F11%2F03%2Fdependency-injection-and-inversion-of-control-are-not-rocket-surgery%2F" title="Twitter"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Lazycoder?a=-Fdq7-9V8a8:y0SDTnwggPU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=-Fdq7-9V8a8:y0SDTnwggPU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=-Fdq7-9V8a8:y0SDTnwggPU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=-Fdq7-9V8a8:y0SDTnwggPU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=-Fdq7-9V8a8:y0SDTnwggPU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=-Fdq7-9V8a8:y0SDTnwggPU:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=-Fdq7-9V8a8:y0SDTnwggPU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=-Fdq7-9V8a8:y0SDTnwggPU:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.lazycoder.com/weblog/2009/11/03/dependency-injection-and-inversion-of-control-are-not-rocket-surgery/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Agile practices do not address technical complexity</title>
		<link>http://www.lazycoder.com/weblog/2009/10/29/agile-practices-do-not-address-technical-complexity/</link>
		<comments>http://www.lazycoder.com/weblog/2009/10/29/agile-practices-do-not-address-technical-complexity/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 14:24:00 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://www.lazycoder.com/weblog/?p=1192</guid>
		<description><![CDATA[So, first go read Ted Neward “Agile is treating the symptoms, not the disease.” and Phill Haack “Software Externalities” then read the Agile Manifesto
At some point that very simple manifesto turned into a set of “must have” tools, technologies, methodologies, and processes. Which I think defeats the purpose. You have to look at each tool [...]]]></description>
			<content:encoded><![CDATA[<p>So, first go read Ted Neward “<a href="http://blogs.tedneward.com/CommentView,guid,53f9b658-3b27-4f1a-b93e-14d3a57a8ec1.aspx" target="_blank">Agile is treating the symptoms, not the disease.</a>” and Phill Haack “<a href="http://haacked.com/archive/2009/10/13/software-externalities.aspx" target="_blank">Software Externalities</a>” then read the <a href="http://agilemanifesto.org/" target="_blank">Agile Manifesto</a></p>
<p>At some point that very simple manifesto turned into a set of “must have” tools, technologies, methodologies, and processes. Which I think defeats the purpose. You have to look at each tool and methodology and think “how does this help me build better software for my user?”</p>
<p>There is a very important paragraph at the bottom.</p>
<blockquote><p>That is, while there is value in the items on the right, we value the items on the left more.</p>
<p>&#160;</p>
</blockquote>
<p>So let’s go through each line.</p>
<p>&#160;</p>
<blockquote><p><strong>Individuals and interactions</strong> over processes and tools</p>
</blockquote>
<p>These “story cards” are one way to increase the communication between individuals during their interactions. Gigantic requirement specifications don’t do anyone except other software engineers any good. The daily standup meeting that a lot of agile practioners adopt is one way to keep the team up to date and find out about possible problems as soon as possible.</p>
<p>&#160;</p>
<blockquote><p><strong>Working software</strong> over comprehensive documentation</p>
</blockquote>
<p>No matter what, you’d rather have an application that meets the users needs and helps them get stuff done easier than they could before you wrote their application. Chances are, if you need to write a lot of documentation, you’ll have to maintain it also. Most of the time documentation is only for other developers that will have to come along behind you and change the software to meet new user needs. What better way to communicate what the software is supposed to do than a bunch of executable code, e.g. unit/scenario/integration tests, that ensures the application does what it says it can do?</p>
<blockquote><p><strong>Customer collaboration</strong> over contract negotiation</p>
</blockquote>
<p> By adopting techniques and tools that allow you to change direction quickly and confidently, you don’t need to “lock down requirements” before you start developing. If the requirements change, you’re code base and tools are flexible enough to handle the change. That’s where principles like <a href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod" target="_blank">S.O.L.I.D.</a> come into play, they make your code base more flexible and responsive to change.</p>
<blockquote><p><strong>Responding to change</strong> over following a plan</p>
</blockquote>
<p>How can you ensure that, as you change your software to respond to changes in the business or requirements, your software doesn’t break? Automated testing is one method. Continuous integration builds are another. These tools aren’t used by agile practitioners&#160; because they want to feel cool, they are used to help them better respond to change. The story cards and backlog also help. You can re-prioritize your backlog to meet the businesses current needs. Since your iterations are short, and your stories are small, the overall impact to changing direction is minimized.</p>
<p>&#160;</p>
<p>The fact that software development is complex, and that there is a lot of new things to learn. That there is ALWAYS something new to learn about software development, has <strong>NOTHING</strong> to do with agile practices. You’d have exactly the same problem keeping up if you practice agile or not. You might have an internal process where you work that allows you to respond to change quickly, it may even involve Microsoft Access!</p>
<p>There was a great post that <a href="http://tirania.org/blog/" target="_blank">Miguel De Icaza</a> linked to on Twitter. “<a href="http://www.tinyrevolution.com/mt/archives/003097.html" target="_blank">Every Ideology is Right</a>”</p>
<blockquote><p>What I mean by &quot;right&quot; is that is each one is responding to a genuine problem within human existence. And their prescriptions for how to deal with that problem &quot;work,&quot; at least in the short term in limited circumstances.</p>
<p>Obviously, there are unforeseen consequences because each ideology looks at a limited aspect of reality, and then tries to apply its solution for that part of reality to ALL of reality. The important thing is to try to have your ideology &quot;look&quot; at as much of reality as possible.</p>
</blockquote>



Share and Enjoy:


	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F10%2F29%2Fagile-practices-do-not-address-technical-complexity%2F&amp;title=Agile%20practices%20do%20not%20address%20technical%20complexity&amp;notes=So%2C%20first%20go%20read%20Ted%20Neward%20%E2%80%9CAgile%20is%20treating%20the%20symptoms%2C%20not%20the%20disease.%E2%80%9D%20and%20Phill%20Haack%20%E2%80%9CSoftware%20Externalities%E2%80%9D%20then%20read%20the%20Agile%20Manifesto%20%20At%20some%20point%20that%20very%20simple%20manifesto%20turned%20into%20a%20set%20of%20%E2%80%9Cmust%20have%E2%80%9D%20tools%2C%20techn" title="del.icio.us"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F10%2F29%2Fagile-practices-do-not-address-technical-complexity%2F&amp;title=Agile%20practices%20do%20not%20address%20technical%20complexity" title="DotNetKicks"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/dotnetkicks.png" title="DotNetKicks" alt="DotNetKicks" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F10%2F29%2Fagile-practices-do-not-address-technical-complexity%2F&amp;title=Agile%20practices%20do%20not%20address%20technical%20complexity" title="DZone"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/dzone.png" title="DZone" alt="DZone" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F10%2F29%2Fagile-practices-do-not-address-technical-complexity%2F&amp;title=Agile%20practices%20do%20not%20address%20technical%20complexity" title="Reddit"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F10%2F29%2Fagile-practices-do-not-address-technical-complexity%2F&amp;title=Agile%20practices%20do%20not%20address%20technical%20complexity&amp;bodytext=So%2C%20first%20go%20read%20Ted%20Neward%20%E2%80%9CAgile%20is%20treating%20the%20symptoms%2C%20not%20the%20disease.%E2%80%9D%20and%20Phill%20Haack%20%E2%80%9CSoftware%20Externalities%E2%80%9D%20then%20read%20the%20Agile%20Manifesto%20%20At%20some%20point%20that%20very%20simple%20manifesto%20turned%20into%20a%20set%20of%20%E2%80%9Cmust%20have%E2%80%9D%20tools%2C%20techn" title="Digg"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F10%2F29%2Fagile-practices-do-not-address-technical-complexity%2F&amp;title=Agile%20practices%20do%20not%20address%20technical%20complexity" title="StumbleUpon"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F10%2F29%2Fagile-practices-do-not-address-technical-complexity%2F&amp;title=Agile%20practices%20do%20not%20address%20technical%20complexity&amp;source=Lazycoder+&amp;summary=So%2C%20first%20go%20read%20Ted%20Neward%20%E2%80%9CAgile%20is%20treating%20the%20symptoms%2C%20not%20the%20disease.%E2%80%9D%20and%20Phill%20Haack%20%E2%80%9CSoftware%20Externalities%E2%80%9D%20then%20read%20the%20Agile%20Manifesto%20%20At%20some%20point%20that%20very%20simple%20manifesto%20turned%20into%20a%20set%20of%20%E2%80%9Cmust%20have%E2%80%9D%20tools%2C%20techn" title="LinkedIn"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F10%2F29%2Fagile-practices-do-not-address-technical-complexity%2F&amp;t=Agile%20practices%20do%20not%20address%20technical%20complexity" title="Facebook"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.friendfeed.com/share?title=Agile%20practices%20do%20not%20address%20technical%20complexity&amp;link=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F10%2F29%2Fagile-practices-do-not-address-technical-complexity%2F" title="FriendFeed"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F10%2F29%2Fagile-practices-do-not-address-technical-complexity%2F&amp;t=Agile%20practices%20do%20not%20address%20technical%20complexity" title="HackerNews"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.netvibes.com/share?title=Agile%20practices%20do%20not%20address%20technical%20complexity&amp;url=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F10%2F29%2Fagile-practices-do-not-address-technical-complexity%2F" title="Netvibes"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/netvibes.png" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://posterous.com/share?linkto=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F10%2F29%2Fagile-practices-do-not-address-technical-complexity%2F&amp;title=Agile%20practices%20do%20not%20address%20technical%20complexity&amp;selection=So%2C%20first%20go%20read%20Ted%20Neward%20%E2%80%9CAgile%20is%20treating%20the%20symptoms%2C%20not%20the%20disease.%E2%80%9D%20and%20Phill%20Haack%20%E2%80%9CSoftware%20Externalities%E2%80%9D%20then%20read%20the%20Agile%20Manifesto%20%20At%20some%20point%20that%20very%20simple%20manifesto%20turned%20into%20a%20set%20of%20%E2%80%9Cmust%20have%E2%80%9D%20tools%2C%20techn" title="Posterous"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/posterous.png" title="Posterous" alt="Posterous" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F10%2F29%2Fagile-practices-do-not-address-technical-complexity%2F&amp;t=Agile%20practices%20do%20not%20address%20technical%20complexity&amp;s=So%2C%20first%20go%20read%20Ted%20Neward%20%E2%80%9CAgile%20is%20treating%20the%20symptoms%2C%20not%20the%20disease.%E2%80%9D%20and%20Phill%20Haack%20%E2%80%9CSoftware%20Externalities%E2%80%9D%20then%20read%20the%20Agile%20Manifesto%20%20At%20some%20point%20that%20very%20simple%20manifesto%20turned%20into%20a%20set%20of%20%E2%80%9Cmust%20have%E2%80%9D%20tools%2C%20techn" title="Tumblr"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=Agile%20practices%20do%20not%20address%20technical%20complexity%20-%20http%3A%2F%2Fwww.lazycoder.com%2Fweblog%2F2009%2F10%2F29%2Fagile-practices-do-not-address-technical-complexity%2F" title="Twitter"><img src="http://www.lazycoder.com/weblog/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Lazycoder?a=zn729wFDEEE:jruqMfab9z0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=zn729wFDEEE:jruqMfab9z0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=zn729wFDEEE:jruqMfab9z0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=zn729wFDEEE:jruqMfab9z0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=zn729wFDEEE:jruqMfab9z0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=zn729wFDEEE:jruqMfab9z0:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=zn729wFDEEE:jruqMfab9z0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=zn729wFDEEE:jruqMfab9z0:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.lazycoder.com/weblog/2009/10/29/agile-practices-do-not-address-technical-complexity/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
