<?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>D!sruptive The0ry</title>
	
	<link>http://disruptivetheory.com</link>
	<description>If there is no struggle, there is no progress.</description>
	<lastBuildDate>Thu, 23 Feb 2012 16:26:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/LeeBrandt" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="leebrandt" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Just Decompile Goes Official</title>
		<link>http://disruptivetheory.com/2012/02/23/just-decompile-goes-official/</link>
		<comments>http://disruptivetheory.com/2012/02/23/just-decompile-goes-official/#comments</comments>
		<pubDate>Thu, 23 Feb 2012 16:20:01 +0000</pubDate>
		<dc:creator>leebrandt</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://disruptivetheory.com/?p=153</guid>
		<description><![CDATA[With the official release of JustDecompile on February 15, Telerik introduces a completely rebuilt and greatly improved decompilation engine. The new engine is faster and more accurate than ever. Try it for yourself and download JustDecompile now. What makes JustDecompile different from other decompilers? * Simple to Use &#8211; JustDecompile is simple to use and [...]]]></description>
			<content:encoded><![CDATA[<p>With the official release of JustDecompile on February 15, Telerik introduces a completely rebuilt and greatly improved decompilation engine. The new engine is faster and more accurate than ever. Try it for yourself and <a href="http://www.telerik.com/download-trial-file.aspx?pid=845" target="_blank">download JustDecompile now</a>.</p>
<p>What makes JustDecompile different from other decompilers?</p>
<p>* Simple to Use &#8211; JustDecompile is simple to use and the UI is highly intuitive. So you can decompile and browse .NET assemblies with a single click.</p>
<p>* Creates Visual Studio Projects &#8211; JustDecompile can create a Visual Studio project from a decompiled assembly. So you&#8217;ll never lose another project.</p>
<p>* Easy Assembly Management &#8211; JustDecompile quickly loads the core framework assemblies for .NET 2, .NET3.5, .NET 4, and Silverlight, so loading the assemblies you want to browse is simple.</p>
<p>* Searchability &#8211; JustDecompile&#8217;s robust search method, quickly pinpoints problems. With the addition of Full Text Search in the Q1 release version, the search is even more comprehensive.</p>
<p>* Visual Studio Inline Decompilation &#8211; JustDecompile is part of the powerful Visual Studio productivity add-in <a href="http://www.telerik.com/products/justcode.aspx" target="_blank">JustCode</a>. This integration allows you to decompile your project references directly inside Visual Studio.</p>
<p>* Multi-language Support &#8211; JustDecompile can decompile .NET assemblies to VB.NET, C# and MSIL.</p>
<p>* User Feedback: &#8211; JustDecompile users can suggest features on <a href="http://justdecompile.uservoice.com/forums/113277-justdecompile-feature-suggestions" target="_blank">User Voice</a> or directly within the product interface. Since JustDecompile was introduced last April, user feedback was instrumental in shaping each and every version JustDecompile.</p>
<p>* Industry leading support &#8211; JustDecompile comes with Telerik&#8217;s legendary support, so your enquires are answered within 72 hours.</p>
<p>* Free and it always will be<br />
JustDecompiled T-shirt Giveaway</p>
<p>In celebration of the JustDecompile official release, Telerik is giving away JustDecompile limited edition T-shirts. The T-shirts were highly requested by JustDecompile fans after our team was spotted wearing at a recent tech. event! Everyone who successfully installs JustDecompille between now and February 29, 2012 will enter a daily drawing to win one of fifty Deco-Paks. Each Deco-Pak includes a limited edition JustDecompile t-shirt, along with a bottle-opener, stress-ball and more.</p>
<p>The drawing will be held every day now through February 29, and winners will be announced on Twitter and Facebook. To enter, <a href="http://www.telerik.com/download-trial-file.aspx?pid=845" target="_blank">install JustDecompile now</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://disruptivetheory.com/2012/02/23/just-decompile-goes-official/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>You Are In Charge Of Your Dysfunction</title>
		<link>http://disruptivetheory.com/2011/12/15/you-are-in-charge-of-your-dysfunction/</link>
		<comments>http://disruptivetheory.com/2011/12/15/you-are-in-charge-of-your-dysfunction/#comments</comments>
		<pubDate>Thu, 15 Dec 2011 22:29:55 +0000</pubDate>
		<dc:creator>leebrandt</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://disruptivetheory.com/2011/12/15/you-are-in-charge-of-your-dysfunction/</guid>
		<description><![CDATA[I see organizations all the time who are dealing with obvious, serious dysfunction in their organization. They seem to treat it as if, &#8220;that&#8217;s just the way IT works&#8221;. What they seem to forget is that it is their company, their department, their IT. They decide how it works. If it takes your organization three [...]]]></description>
			<content:encoded><![CDATA[<p>I see organizations all the time who are dealing with obvious, serious dysfunction in their organization. They seem to treat it as if, &#8220;that&#8217;s just the way IT works&#8221;. What they seem to forget is that it is <em>their</em> company, <em>their</em> department, <em>their</em> IT. They decide how it works. If it takes your organization three days to push a five minute change, then you have the power to change that. There is not some panel of IT Gods that will smite you from on high if you don&#8217;t make it complicated. Sorry, just a quick rant.</p>
]]></content:encoded>
			<wfw:commentRss>http://disruptivetheory.com/2011/12/15/you-are-in-charge-of-your-dysfunction/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Stuck In Insert Mode on Mac Book Pro in Visual Studio</title>
		<link>http://disruptivetheory.com/2011/11/12/stuck-in-insert-mode-on-mac-book-pro-in-visual-studio/</link>
		<comments>http://disruptivetheory.com/2011/11/12/stuck-in-insert-mode-on-mac-book-pro-in-visual-studio/#comments</comments>
		<pubDate>Sat, 12 Nov 2011 23:44:05 +0000</pubDate>
		<dc:creator>leebrandt</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://disruptivetheory.com/2011/11/12/stuck-in-insert-mode-on-mac-book-pro-in-visual-studio/</guid>
		<description><![CDATA[This sucked about an hour of my life tonight. Hopefully it can help someone else (or me when I forget how I got out).I was coding along in Visual Studio 2010 on am MVC3 project, when I accidentally hit some key chord that put me into insert mode. I spent the better part of an [...]]]></description>
			<content:encoded><![CDATA[<p>This sucked about an hour of my life tonight. Hopefully it can help someone else (or me when I forget how I got out).<span id="more-145"></span>I was coding along in Visual Studio 2010 on am MVC3 project, when I accidentally hit some key chord that put me into insert mode. I spent the better part of an hour trying to get out, so I thought I would post how I did it so it might help someone else.</p>
<blockquote><p>
fn+enter/return
</p></blockquote>
<p>Hope this helps. This will also serve as a reminder to myself when I get stuck again!</p>
]]></content:encoded>
			<wfw:commentRss>http://disruptivetheory.com/2011/11/12/stuck-in-insert-mode-on-mac-book-pro-in-visual-studio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happy White Day!</title>
		<link>http://disruptivetheory.com/2011/11/11/happy-white-day/</link>
		<comments>http://disruptivetheory.com/2011/11/11/happy-white-day/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 18:09:14 +0000</pubDate>
		<dc:creator>leebrandt</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://disruptivetheory.com/?p=140</guid>
		<description><![CDATA[DateTime: 11/11/11 11:11:11 Converted to Decimal: 4095 Converted to Hex: FFF For CSS: #FFF == white. Happy White Day! Go ahead and snicker for the inside joke, too. Even if you&#8217;re not inside. :0)]]></description>
			<content:encoded><![CDATA[<p>DateTime: 11/11/11 11:11:11</p>
<p>Converted to Decimal: 4095</p>
<p>Converted to Hex: FFF</p>
<p>For CSS: #FFF == white.</p>
<p>Happy White Day!</p>
<p>Go ahead and snicker for the inside joke, too. Even if you&#8217;re not inside. :0)</p>
]]></content:encoded>
			<wfw:commentRss>http://disruptivetheory.com/2011/11/11/happy-white-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Great Telerik Learning Resource</title>
		<link>http://disruptivetheory.com/2011/11/08/telerik-learning-resources/</link>
		<comments>http://disruptivetheory.com/2011/11/08/telerik-learning-resources/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 15:33:04 +0000</pubDate>
		<dc:creator>leebrandt</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://disruptivetheory.com/2011/11/08/telerik-learning-resources/</guid>
		<description><![CDATA[For quite a few years now I have been involved with Telerik, first as a customer, and over the last couple of years as a Telerik Insider. I have used Telerik&#8217;s RadControls extensively in Web Forms projects and have recently started to dig into their controls for MVC applications.Recently, they released some learning resources on [...]]]></description>
			<content:encoded><![CDATA[<p>For quite a few years now I have been involved with Telerik, first as a customer, and over the last couple of years as a Telerik Insider. I have used Telerik&#8217;s RadControls extensively in Web Forms projects and have recently started to dig into their controls for MVC applications.<span id="more-133"></span>Recently, they released some <a href="http://www.telerik.com/products/aspnet-ajax/getting-started/webinars.aspx" target="_blank">learning resources</a> on the topic of using the <a href="http://www.telerik.com/products/aspnet-ajax.aspx" target="_blank">ASP.NET AJAX controls</a> (their RadControls for Web Forms) with modern technologies like jQuery, oData, HTML5, azure, etc. It is a simple three-hour recorded webinar that walks you through creating a Web Forms application using the Telerik ASP.NET AJAX controls and these new technologies. It is a real-world, e-commerce site developed from set-up to completion by <a href="http://twitter.com/#!/carlbergenhem">Carl Bergenhem</a>, a Solutions Consultant at Telerik and a hell of a nice guy.</p>
<p>If you&#8217;re in a shop that uses Web Forms, I highly recommend checking out the webinar series.</p>
<p>As an added bonus, the folks at Telerik are offering a prize to one of you: a FREE developer license for RadControls for ASP.NET AJAX (worth $799)! To participate in the draw for this prize, you need to help us spread the news about this learning resource by simply:<br />
1. Tweeting this blog post (title and URL)<br />
2. Use the following hashtag in the tweet: #AJAXWebinars</p>
<p>The deadline for retweeting is November 15, when I will announce the winner as a comment to the post and via Twitter.</p>
<p>Something like this: Great Telerik Learning Resource: http://goo.gl/KhMTB #AJAXWebinars</p>
<p>Good luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://disruptivetheory.com/2011/11/08/telerik-learning-resources/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learning to Blog Again</title>
		<link>http://disruptivetheory.com/2011/11/05/learning-to-blog-again/</link>
		<comments>http://disruptivetheory.com/2011/11/05/learning-to-blog-again/#comments</comments>
		<pubDate>Sat, 05 Nov 2011 18:54:26 +0000</pubDate>
		<dc:creator>leebrandt</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://disruptivetheory.com/2011/11/05/learning-to-blog-again/</guid>
		<description><![CDATA[I have recently switched my main development laptop from a windows machine to a Mac Book Pro. Let me start by saying this is not my first experience with Macs.I have recently switched my main development laptop from a windows machine to a Mac Book Pro. Let me start by saying this is not my [...]]]></description>
			<content:encoded><![CDATA[<p>I have recently switched my main development laptop from a windows machine to a Mac Book Pro. Let me start by saying this is not my first experience with Macs.<span id="more-130"></span>I have recently switched my main development laptop from a windows machine to a Mac Book Pro. Let me start by saying this is not my first experience with Macs. My father was a network engineer for the government when I was a kid and he loved having a mac at home for dialing in to test and fix connectivity problems. So I grew up with Macs as my computer for most of my childhood. This is however, my first experience trying to do all he stuff I do normally in windows in the OSX ecosystem.</p>
<p>One of the things I did in Windows was using Windows Live Writer for blogging. Windows Live Writer is a singularly satisfying experience for blogging, no matter what your blog engine. I will continue to use WLW for blogging using Parallels just the way I use Visual Studio from OSX. But there will be times when I wish to post a quick entry, but don&#8217;t wish to boot up my windows VM.</p>
<p>I went in search of a WLW replacement for the OSX side, but there just isn&#8217;t one. None have the ease of use and intuitiveness of Windows Live Writer. While there are some that have similar functionality, none deliver like WLW. So I just went in search of something that I could USE. Then I cam across <a href="http://screencasts.textmate.org/blogging_take_two.mov">this screencast</a> while looking for some <a href="http://macromates.com/">TextMate</a> help.</p>
<p>So I am writing my first blog post from TextMate following these instructions. Brilliant!</p>
<p>I will continue to post entries about other new mac tools I find for Windows developers.</p>
]]></content:encoded>
			<wfw:commentRss>http://disruptivetheory.com/2011/11/05/learning-to-blog-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://screencasts.textmate.org/blogging_take_two.mov" length="31736069" type="video/quicktime" />
		</item>
		<item>
		<title>Dropping The “I” From Interfaces</title>
		<link>http://disruptivetheory.com/2011/04/28/dropping-the-i-from-interfaces/</link>
		<comments>http://disruptivetheory.com/2011/04/28/dropping-the-i-from-interfaces/#comments</comments>
		<pubDate>Thu, 28 Apr 2011 08:30:10 +0000</pubDate>
		<dc:creator>leebrandt</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://disruptivetheory.com/2011/04/28/dropping-the-i-from-interfaces/</guid>
		<description><![CDATA[Image via Wikipedia This is not really disruptive. It’s not even a new idea. This has been blogged about before. But one thing that I think seems to get missed is the fact that that “I” maybe keeping developers from understanding the real power of interfaces. The way that interfaces generally get used is the [...]]]></description>
			<content:encoded><![CDATA[<div class="zemanta-img" style="margin: 1em; width: 209px; display: block; float: right; height: 295px;"><a href="http://en.wikipedia.org/wiki/File:Blanket_man.jpg"><img style="display: block;" src="http://upload.wikimedia.org/wikipedia/en/thumb/5/5d/Blanket_man.jpg/300px-Blanket_man.jpg" alt="Blanket man" width="199" height="270" /></a></p>
<div class="zemanta-img-attribution" style="font-size: 0.8em;">Image via <a href="http://en.wikipedia.org/wiki/File:Blanket_man.jpg">Wikipedia</a></div>
</div>
<div>This is not really disruptive. It’s not even a new idea. <a href="http://www.caffeinatedcoder.com/should-we-change-the-way-we-name-interfaces-in-net/" target="_blank">This</a> has been <a href="http://codebetter.com/jeremymiller/2006/04/27/im-an-irecividist/" target="_blank">blogged about</a> <a href="http://weblogs.asp.net/sfeldman/archive/2007/12/13/interface-naming-notation-to-quot-i-quot-or-not-to-quot-i-quot-part-2.aspx" target="_blank">before</a>. But one thing that I think seems to get missed is the fact that that “I” maybe keeping developers from understanding the real power of interfaces.</div>
<div>The way that interfaces generally get used is the “I to a type” convention. So I might have an IAuthenticationService and an AuthenticationService, or IUserRepository and UserRepository. Unfortunately, the implementation class doesn’t tell us anything about what makes him an implementation, let alone what sort of implementation. Developers begin to lose sight of the fact that the interface is the contract that everyone agrees on, and the class is an implementation of that contract. Now lots of developers know this theoretically, because it’s been beaten into their heads. It’s memorization. And you might be okay all you life just memorizing that. But I think it’s better to crystalize in your head what interfaces bring to the game. There are two suggestions floating around about what to do with the “I” in interfaces:</div>
<h3>Use It</h3>
<div>Some folks suggest using it as a proper noun followed by a verb to almost make a declaration of what this contract you’re about to build is for. For instance, if you are making a service that reads files from the file system, you might call your interface IReadFiles, or a calendaring service might be called ISetAppointments. This is fine, but I think it feels uncomfortable to name implementations. The IReadFiles is implemented by the FileSystemReadFiles class or it is completely removed with FileSystemFileReader class.</div>
<h3>Lose It</h3>
<div>The other school of thought, and the one I favor and have been practicing whenever I can for the last two years or so, is to remove the “I” completely. So my IAuthenticationService becomes AuthenticationService. This has three distinct advantages: I am now forced to name my implementation something meaningful like FormsAuthenticationService. When I am using the interface in my consuming code, it has no inkling from the name that this is an interface (which is the way you <em>should</em> use interfaces. Finally, it can become very clear to programmers what the Interface brings to the game. The Interface is a Generic AuthenticationService it does certain things <em>somehow</em>. The implementation(s) are actually more clearly defined and help developers understand how and when to use different implementations of an interface. Sometimes, just understanding that you can <em>have</em> multiple implementations is a breakthrough for some programmers.</div>
<div>I know this is the programmers last Hungarian Notation Woobee and developers don’t want to let go. But on your next small project, try dropping the “I” from your interfaces and naming your implementations with meaningful names and see how it feels. In the words of <a class="zem_slink" title="Tony! Toni! Toné!" rel="wikipedia" href="http://en.wikipedia.org/wiki/Tony%21_Toni%21_Ton%C3%A9%21">Tony Toni Tone</a>, it “sure feels good to me”.</div>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><img class="zemanta-pixie-img" style="float: right; border-style: none;" src="http://img.zemanta.com/pixy.gif?x-id=c77a0be2-e50e-4c4f-a3c5-b98fd0c18574" alt="" /></div>
]]></content:encoded>
			<wfw:commentRss>http://disruptivetheory.com/2011/04/28/dropping-the-i-from-interfaces/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Do Software Solutions Put People Out Of Work?</title>
		<link>http://disruptivetheory.com/2011/02/24/do-software-solutions-put-people-out-of-work/</link>
		<comments>http://disruptivetheory.com/2011/02/24/do-software-solutions-put-people-out-of-work/#comments</comments>
		<pubDate>Fri, 25 Feb 2011 03:22:15 +0000</pubDate>
		<dc:creator>leebrandt</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://disruptivetheory.com/2011/02/24/do-software-solutions-put-people-out-of-work/</guid>
		<description><![CDATA[Image via Wikipedia I’ve heard, on more than one occasion, that [department X] thinks that the software I am building to automate several painful, manual processes that they are responsible for, is going to put them out of work. They whisper at the water cooler, and they may even secretly (maybe even unintentionally) try and [...]]]></description>
			<content:encoded><![CDATA[<div style="margin: 1em; width: 310px; display: block; float: right" class="zemanta-img"><a href="http://commons.wikipedia.org/wiki/File:Robot_jockey_army.jpg"><img style="border-bottom: medium none; border-left: medium none; display: block; border-top: medium none; border-right: medium none" alt="Take me to your leader!" src="http://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Robot_jockey_army.jpg/300px-Robot_jockey_army.jpg" width="300" height="225" /></a>
<p style="font-size: 0.8em" class="zemanta-img-attribution">Image via <a href="http://commons.wikipedia.org/wiki/File:Robot_jockey_army.jpg">Wikipedia</a></p>
</p></div>
<p>I’ve heard, on more than one occasion, that [department X] thinks that the software I am building to automate several painful, manual processes that they are responsible for, is going to put them out of work. They whisper at the water cooler, and they may even secretly (maybe even unintentionally) try and sabotage the project. The fallacy in the thinking comes from most people innate pessimism. They think that if I automate their job, they’ll be “downsized”. Well think again my paranoid little scuttle-butt saboteurs.</p>
<h5>Twice As Much, Not Half As Many</h5>
<p>First of all, unless your job is brain dead simple (get this item, put it in this machine, push that button), and that is all you do; then you cannot be replaced. Software cannot automate humans (not yet, anyway). There comes a point in writing software to explain a complex business process where all languages fall short. There is some decision that must be made that needs a human brain to rationalize. Why do you think most software has a <em>User Interface</em>? So (human) users can interact with it.</p>
<p>What software CAN do, is make the mundane, routine work go away, and leave only the exceptional work to deal with. Only those circumstances where the human needs to make the call. Only the cases where the business rules must be bent. The case-by-case… cases. This leaves the people doing that job supremely capable of doing twice as much volume (or more) with the same amount of effort. This is NEVER a bad thing.</p>
<p>So, instead of the company needing half as many people to service the same number of customers; what you get is the company becomes able to handle twice (or more) as many customers with the <em>same</em> number of people. First of all, how many companies do you know that aspire to not add any new customer? None companies is my bet. Companies <em>always</em> want to add more customers. What do you suppose would happen if they were suddenly able to service twice as many customers with the same staff. They might be able to afford to give that staff a substantial raise. Maybe purchase new equipment that the department has been clamoring for for years. Maybe both!</p>
<h5>If I DO Automate You Out Of A Job, You’re Probably Better Off</h5>
<p>If by some chance, your job really IS mundane and routine enough for software to completely automate without the need for any human interaction, don’t you think you’d be better off? Eventually, they’re going to get a monkey to do it anyway. Why not start training for a new (and exciting) career in typewriter maintenance <em>now</em>.</p>
<p>Seriously, how long do you think you’d be able to do that job? If the boredom doesn’t end up making you want to lean on something sharp first, eventually there will be no way for you to get raises. It wouldn’t make good business sense to pay you $20/hour to do something they can get a kid to do for “work experience” and ramen money. Replacement is inevitable. Get out now.</p>
<p>So don’t fear that software is going to run people out of work. Software can only do what human beings tell it to do (for now). The Matrix, however, is inevitable…. Mr. Anderson…</p>
<div style="margin-top: 10px; height: 15px" class="zemanta-pixie"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img style="border-bottom-style: none; margin: 5px; border-left-style: none; border-top-style: none; float: right; border-right-style: none" class="zemanta-pixie-img" alt="Enhanced by Zemanta" src="http://img.zemanta.com/zemified_e.png?x-id=bfb3e46b-e1e4-4f79-b1d9-3129f915dcf7" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://disruptivetheory.com/2011/02/24/do-software-solutions-put-people-out-of-work/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Fake It Easy On Yourself</title>
		<link>http://disruptivetheory.com/2011/01/13/fake-it-easy-on-yourself/</link>
		<comments>http://disruptivetheory.com/2011/01/13/fake-it-easy-on-yourself/#comments</comments>
		<pubDate>Fri, 14 Jan 2011 04:58:48 +0000</pubDate>
		<dc:creator>leebrandt</dc:creator>
				<category><![CDATA[Learning]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://geekswithblogs.net/leesblog/archive/2011/01/13/fake-it-easy-on-yourself.aspx</guid>
		<description><![CDATA[I have been using Rhino.Mocks pretty much since I started being a mockist-type tester. I have been very happy with it for the most part, but a year or so ago, I got a glimpse of some tests using Moq. I thought the little bit I saw was very compelling. For a long time, I [...]]]></description>
			<content:encoded><![CDATA[<p>I have been using <a href="http://www.ayende.com/projects/rhino-mocks.aspx" target="_blank">Rhino.Mocks</a> pretty much since I started being a <a href="http://martinfowler.com/articles/mocksArentStubs.html" target="_blank">mockist-type tester</a>. I have been very happy with it for the most part, but a year or so ago, I got a glimpse of some tests using <a href="http://code.google.com/p/moq/" target="_blank">Moq</a>. I thought the little bit I saw was very compelling. For a long time, I had been using:</p>
<div id="codeSnippetWrapper">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum1" style="color: #606060;">   1:</span> var _repository = MockRepository.GenerateMock&lt;IRepository&gt;();</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum2" style="color: #606060;">   2:</span> _repository.Expect(repo=&gt;repo.SomeCall()).Return(SomeValue);</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum3" style="color: #606060;">   3:</span> var _controller = <span style="color: #0000ff;">new</span> SomeKindaController(_repository);</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum4" style="color: #606060;">   4:</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum5" style="color: #606060;">   5:</span> ... some exercising code</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum6" style="color: #606060;">   6:</span> _repository.AssertWasCalled(repo =&gt; repo.SomeCall());</pre>
<p><!--CRLF--></p>
</div>
</div>
<p>I was happy with that syntax. I didn’t go looking for something else, but what I saw was:</p>
<div id="codeSnippetWrapper">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum1" style="color: #606060;">   1:</span> var _repository = <span style="color: #0000ff;">new</span> Mock();</pre>
<p><!--CRLF--></p>
</div>
</div>
<p>And I thought, “That looks really nice!” The code was very expressive and easier to read that the <a href="http://www.ayende.com/projects/rhino-mocks.aspx" target="_blank">Rhino.Mocks</a> syntax. I have gotten so used to the <a href="http://www.ayende.com/projects/rhino-mocks.aspx" target="_blank">Rhino.Mocks</a> syntax that it made complete sense to me, but to developers I was mentoring in mocking, it was sometimes to obtuse.</p>
<p>SO I thought I would write some tests using <a href="http://code.google.com/p/moq/" target="_blank">Moq</a> as my mocking tool. But I discovered something ugly once I got into it. The way Mocks are created makes <a href="http://code.google.com/p/moq/" target="_blank">Moq</a> very easy to read, but that only gives you a <a href="http://en.wikipedia.org/wiki/Mock_object" target="_blank">Mock</a> not the object itself, which is what you’ll need to pass to the exercising code. So this is what it ends up looking like:</p>
<div id="codeSnippetWrapper">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum1" style="color: #606060;">   1:</span> var _repository = <span style="color: #0000ff;">new</span> Mock&lt;IRepository&gt;();</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum2" style="color: #606060;">   2:</span> _repository.SetUp(repo=&gt;repo.SomeCall).Returns(SomeValue);</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum3" style="color: #606060;">   3:</span> var _controller = <span style="color: #0000ff;">new</span> SomeKindaController(_repository.Object);</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum4" style="color: #606060;">   4:</span> .. some exercizing code</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum5" style="color: #606060;">   5:</span> _repository.Verify(repo =&gt; repo.SomeCall());</pre>
<p><!--CRLF--></p>
</div>
</div>
<p>Two things jump out at me: 1) when I set up my mocked calls, do I set it on the Mock or the Mock’s “object”? and 2) What am I verifying on SomeCall? Just that it was called? that it is available to call? Dealing with 2 objects, a “Mock” and an “Object” made me have to consider naming conventions. Should I always call the mock _repositoryMock and the object _repository? So I went back to <a href="http://www.ayende.com/projects/rhino-mocks.aspx" target="_blank">Rhino.Mocks</a>. It is the most widely used framework, and show other how to use it is easier because there is one natural object to use, the _repository.</p>
<p>Then I came across a blog post from <a href="http://ondevelopment.blogspot.com/" target="_blank">Patrik Hägne</a>, and that led me to a post about <a href="http://code.google.com/p/fakeiteasy/" target="_blank">FakeItEasy</a>. I went to the Google Code site and when I saw the syntax, I got very excited. Then I read the wiki page where <a href="http://stackoverflow.com/users/46187/patrik-hagne" target="_blank">Patrik</a> stated why he wrote <a href="http://code.google.com/p/fakeiteasy/" target="_blank">FakeItEasy</a>, and it mirrored my own experience. So I began to play with it a bit. So far, I am sold. the syntax is VERY easy to read and the fluent interface is super discoverable. It basically looks like this:</p>
<div id="codeSnippetWrapper">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum1" style="color: #606060;">   1:</span> var _repository = A.Fake&lt;IRepository&gt;();</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum2" style="color: #606060;">   2:</span> a.CallTo(repo=&gt;repo.SomeMethod()).Returns(SomeValue);</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum3" style="color: #606060;">   3:</span> var _controller = <span style="color: #0000ff;">new</span> SomeKindaController(_repository);</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum4" style="color: #606060;">   4:</span> ... some exercising code</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum5" style="color: #606060;">   5:</span> A.CallTo(() =&gt; _repository.SOmeMethod()).MustHaveHappened();</pre>
<p><!--CRLF--></p>
</div>
</div>
<p>Very nice. But is it mature? It’s only been around a couple of years, so will I be giving up some thing that I use a lot because it hasn’t been implemented yet? I doesn’t seem so. As I read more examples and posts from <a href="http://ondevelopment.blogspot.com/" target="_blank">Patrik</a>, he has some pretty complex scenarios. He even has support for VB.NET!</p>
<p>So if you are looking for a mocking framework that looks and feels very natural, try out <a href="http://code.google.com/p/fakeiteasy/" target="_blank">FakeItEasy</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://disruptivetheory.com/2011/01/13/fake-it-easy-on-yourself/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What I Expect From Myself This Year</title>
		<link>http://disruptivetheory.com/2011/01/11/what-i-expect-from-myself-this-year/</link>
		<comments>http://disruptivetheory.com/2011/01/11/what-i-expect-from-myself-this-year/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 03:17:48 +0000</pubDate>
		<dc:creator>leebrandt</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://geekswithblogs.net/leesblog/archive/2011/01/11/what-i-expect-from-myself-this-year.aspx</guid>
		<description><![CDATA[I am making it a point not to call them resolutions, because the word has become an institution and is beginning to have no meaning. That&#8217;s why I end up not keeping my resolutions, I think. So in the spirit of holding myself to my own commitments, I will make a plan and some realistic [...]]]></description>
			<content:encoded><![CDATA[<p>I am making it a point not to call them resolutions, because the word has become an institution and is beginning to have no meaning. That&#8217;s why I end up not keeping my resolutions, I think.<br />
So in the spirit of holding myself to my own commitments, I will make a plan and some realistic goals.</p>
<p>1.) Lose weight. Everyone has this on their list, but I am going to be conservative and specific. I currently weigh 393lbs. (yeah, I know). So I want to plan to lose 10lbs per month, that&#8217;s 1lb. every three days, that shouldn&#8217;t be difficult if I stick to my diet and exercise plan.<br />
- How do I do this?<br />
- Diet: vegetarian. Since I already know I have high blood pressure and borderline high cholesterol, a meat-free diet is in order. I was vegan for a little over 2 years in 2006-2008, I think I can handle vegetarian.<br />
- Exercise: at least 3 times (preferably every day) a week for 30 minutes. It has to be something that gets my heart rate up, or burns in my muscles. I can walk for cardio to start and mild calisthenics (girly push-ups, crunches, etc.).<br />
- Move: I spend all my time behind the computer. I have recently started to use a slight variation of the Pomodoro Technique (my Pomodoros are 50 minutes instead of 25). During my 10 minutes every hour to answer emails, chats, etc., I will take a few minutes to stretch.<br />
2.) Get my wife pregnant. We&#8217;ve been talking about it for years. Now that she is done with graduate school and I have a great job, now&#8217;s the time. We&#8217;ll be the oldest parents in the PTA most likely, but I don&#8217;t care.<br />
3.) Blog More. Another favorite among bloggers, but I do have about six drafts for blog posts started. The topics are there all I need to do is flesh out the post. This can be the first hour of any computer time I have after work. As soon as I am done exercising, shower and post.<br />
4.) Speak less. Most people want to speak more. I want to concentrate on the places that I enjoy and that can really use the speakers (like local code camps), rather than trying to be some national speaker. I love speaking at conferences, but I need to spend some more time at home if we&#8217;re going to get pregnant.<br />
5.) Read more. I got a <a href="http://www.amazon.com/gp/product/B002Y27P3M?ie=UTF8&amp;tag=thecodbuc-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B002Y27P3M">Kindle</a><img style="margin: 0px; border-style: none !important;" src="http://www.assoc-amazon.com/e/ir?t=thecodbuc-20&amp;l=as2&amp;o=1&amp;a=B002Y27P3M" border="0" alt="alt" width="1" height="1" /> for Christmas and I am loving it so far. I have almost finished <a href="http://www.amazon.com/gp/product/B000JML7EC?ie=UTF8&amp;tag=thecodbuc-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B000JML7EC">Treasure Island</a><img style="margin: 0px; border-style: none !important;" src="http://www.assoc-amazon.com/e/ir?t=thecodbuc-20&amp;l=as2&amp;o=1&amp;a=B000JML7EC" border="0" alt="alt" width="1" height="1" />, and am getting ready to pick my next book. I will probably read a lot of classics for 2 reasons: (1) they teach deep lessons and (2) most are free for the <a href="http://www.amazon.com/gp/product/B002Y27P3M?ie=UTF8&amp;tag=thecodbuc-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B002Y27P3M">Kindle</a><img style="margin: 0px; border-style: none !important;" src="http://www.assoc-amazon.com/e/ir?t=thecodbuc-20&amp;l=as2&amp;o=1&amp;a=B002Y27P3M" border="0" alt="alt" width="1" height="1" />.<br />
6.) Find my religion. I was raised Southern Baptist, but I want to find my own way. I&#8217;ve been wanting to go to the local Unitarian Church, so I will make a point to go before the end of March. I also want to add a few religious books to my reading list. My boss bought me a copy of Lee Strobel&#8217;s <a href="http://www.amazon.com/gp/product/0310209307?ie=UTF8&amp;tag=thecodbuc-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0310209307">The Case for Christ: A Journalist&#8217;s Personal Investigation of the Evidence for Jesus</a><img style="margin: 0px; border-style: none !important;" src="http://www.assoc-amazon.com/e/ir?t=thecodbuc-20&amp;l=as2&amp;o=1&amp;a=0310209307" border="0" alt="alt" width="1" height="1" /> , and I have a copy of Bruce Feiler&#8217;s <a href="http://www.amazon.com/gp/product/0060838663?ie=UTF8&amp;tag=thecodbuc-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0060838663">Abraham: A Journey to the Heart of Three Faiths (P.S.)</a><img style="margin: 0px; border-style: none !important;" src="http://www.assoc-amazon.com/e/ir?t=thecodbuc-20&amp;l=as2&amp;o=1&amp;a=0060838663" border="0" alt="alt" width="1" height="1" /> . I will start there.</p>
<p>Seems like a lot now that I spell it out like this. But these are only starters. I am forty years old. I cannot keep living like I am twenty anymore.</p>
<p>So here we go, 2011.</p>
<p><img src="http://geekswithblogs.net/leesblog/aggbug/143443.aspx" alt="" width="1" height="1" /></p>
]]></content:encoded>
			<wfw:commentRss>http://disruptivetheory.com/2011/01/11/what-i-expect-from-myself-this-year/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

