<?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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Situated Geekery</title>
	
	<link>http://anarchycreek.com</link>
	<description>Towards a Way of Excellence</description>
	<lastBuildDate>Fri, 23 Dec 2011 11:31:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/SituatedGeekery" /><feedburner:info uri="situatedgeekery" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>DoubleDawgDare 8: One Giant Step</title>
		<link>http://feedproxy.google.com/~r/SituatedGeekery/~3/0enJxB_RBPg/</link>
		<comments>http://anarchycreek.com/2011/07/23/doubledawgdare-8-one-giant-step/#comments</comments>
		<pubDate>Sat, 23 Jul 2011 19:51:01 +0000</pubDate>
		<dc:creator>GeePawHill</dc:creator>
				<category><![CDATA[Situated Geekery]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[geek joy]]></category>
		<category><![CDATA[Hardcore]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Legacy]]></category>
		<category><![CDATA[Refactoring]]></category>
		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://anarchycreek.com/?p=1894</guid>
		<description><![CDATA[In this latest in the DoubleDawg series, we take a big step forward, even though the refactoring is simple! Previous DoubleDawgDare &#160; &#160;]]></description>
			<content:encoded><![CDATA[<div>
<p>In this latest in the <a href="http://anarchycreek.com/2009/06/02/the-double-dawg-dare">DoubleDawg</a> series, we take a big step forward, even though the refactoring is simple!</p>
<a class="downloadlink" href="http://anarchycreek.com/wp-content/plugins/download-monitor/download.php?id=11" title=" downloaded 408 times" >Code After Step 7 (408)</a>
<p><img src="http://anarchycreek.com/wp-content/plugins/flash-video-player/default_video_player.gif" /></p>
<a class="downloadlink" href="http://anarchycreek.com/wp-content/plugins/download-monitor/download.php?id=12" title=" downloaded 153 times" >The After Code For Step 8 (153)</a>
<p><a href="http://anarchycreek.com/2010/03/30/doubledawgdare-7-one-spike-no-buffy/">Previous DoubleDawgDare</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
</div>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fanarchycreek.com%2F2011%2F07%2F23%2Fdoubledawgdare-8-one-giant-step%2F&amp;title=DoubleDawgDare%208%3A%20One%20Giant%20Step" id="wpa2a_2"><img src="http://anarchycreek.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/SituatedGeekery/~4/0enJxB_RBPg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://anarchycreek.com/2011/07/23/doubledawgdare-8-one-giant-step/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://anarchycreek.com/2011/07/23/doubledawgdare-8-one-giant-step/</feedburner:origLink></item>
		<item>
		<title>How TDD Works Its Magic(6): Side-Stepping Mismatches</title>
		<link>http://feedproxy.google.com/~r/SituatedGeekery/~3/7Pkjdh-YaS0/</link>
		<comments>http://anarchycreek.com/2011/01/12/how-tdd-works-its-magic6-side-stepping-mismatches/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 19:03:40 +0000</pubDate>
		<dc:creator>GeePawHill</dc:creator>
				<category><![CDATA[Situated Geekery]]></category>

		<guid isPermaLink="false">http://anarchycreek.com/?p=1853</guid>
		<description><![CDATA[(This series starts here.) Take a look at this sweet little snippet: public void longFunction(int index) { int currentMaxIndex; // ... some tricky preparation stuff before we // can even de-ref index // among other things, setting currentMaxIndex to a // positive integer. if(index < 0 &#038;&#038; index > currentMaxIndex) { // ... log the [...]]]></description>
			<content:encoded><![CDATA[<h5 style="text-align: right;"><a href="http://anarchycreek.com/2010/12/08/how-tdd-works-its-magic-reducing-mental-scope/">(This series  starts here.)</a></h5>
<p>Take a look at this sweet little snippet:</p>
<pre lang="java">public void longFunction(int index)
{
	int currentMaxIndex;
	// ... some tricky preparation stuff before we
	//     can even de-ref index
	//     among other things, setting currentMaxIndex to a
	//     positive integer.
	if(index < 0 &#038;&#038; index > currentMaxIndex)
	{
		// ... log the condition
		// ... undo all the prep
		// ... get outta here
		return;
	}
	// ... otherwise do cool things with the
	//     de-reffed index
}</pre>
<h3 style="text-align: center;"><em><span style="color: #0000ff;">That There, Kids, Is A Bug. They&#8217;re Good Eatin&#8217;</span></em></h3>
<p>But we can say a little more than just that:</p>
<p><strong>It&#8217;s not a typo:</strong> the majority of typos are caught by a compiler because they&#8217;re mis-spellings, but this one creates a legal word. In fact, it&#8217;s a legal word even in this very narrow context.</p>
<p><strong>It&#8217;s not a misunderstood requirement:</strong> I think we can say with some confidence that the product owner has not told the developer to implement &#8220;an un-enterable state of computation&#8221;.</p>
<p><strong>It&#8217;s not a noob issue:</strong> by the time one gets around to learning &amp;&amp;, one has pretty much also learned ||. They kinda go together.</p>
<p><strong>It&#8217;s not a brilliant bug caused by the staggering complexity of this high-performance multi-threaded rocket-science domain</strong>: which is what my victim teams always claim are the only kind of bugs they get, so microtests won&#8217;t help them. (Sorry, do I sound bitter?)</p>
<h3 style="text-align: center;"><em><span style="color: #0000ff;">Code/Coder Mismatches</span></em></h3>
<p>That bug is a simple code/coder mismatch. I call these babies &#8216;mismatches&#8217; for short:</p>
<p style="text-align: center;"><em>The coder thought the typing said one thing, </em></p>
<p style="text-align: center;"><em>but the code thought the typing said another.</em></p>
<p>The code is trivially wrong. That&#8217;s actually a requirement for mismatches. If it&#8217;s not obviously the wrong thing, then we&#8217;re moving into the rocket science excuse. (After all, there are no defects that aren&#8217;t caused by the code and the programmer disagreeing about what the code does.)</p>
<p>The overwhelming majority of fielded defects are mismatches like these. Off-by-one errors, inverted logic, wrong order of parameters, forgotten conditionals, and so on.</p>
<h3 style="text-align: center;"><em><span style="color: #0000ff;">Driven Code Can&#8217;t Mismatch</span></em></h3>
<p>In the TDD world, huge swathes of mismatches are caught instantly, before they even approach QA, let alone the actual field.</p>
<p>The only reason the branch displayed above exists at all, in TDD terms, is because some microtest forced it to be created.</p>
<p>See, it is interesting to us if some chunk of code has behavior that&#8217;s different in one combination of parameters than it is in another. In this case, the complexity of the failure case lends even more interest to us.</p>
<p>And what would that microtest do? It would pass a -1 index. The branch would not get exercised, and the assertions in the microtest would fail.</p>
<h3 style="text-align: center;"><span style="color: #0000ff;"><em>A Part Of TDD&#8217;s Magic Is That</em></span></h3>
<h3 style="text-align: center;"><span style="color: #0000ff;"><em>TDD Sidesteps Mismatch Bugs</em></span></h3>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fanarchycreek.com%2F2011%2F01%2F12%2Fhow-tdd-works-its-magic6-side-stepping-mismatches%2F&amp;title=How%20TDD%20Works%20Its%20Magic%286%29%3A%20Side-Stepping%20Mismatches" id="wpa2a_4"><img src="http://anarchycreek.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/SituatedGeekery/~4/7Pkjdh-YaS0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://anarchycreek.com/2011/01/12/how-tdd-works-its-magic6-side-stepping-mismatches/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://anarchycreek.com/2011/01/12/how-tdd-works-its-magic6-side-stepping-mismatches/</feedburner:origLink></item>
		<item>
		<title>How TDD Works Its Magic(5): Beating A Rhythm</title>
		<link>http://feedproxy.google.com/~r/SituatedGeekery/~3/L45rjwF1E9E/</link>
		<comments>http://anarchycreek.com/2011/01/06/how-tdd-works-its-magic5-beating-a-rhythm/#comments</comments>
		<pubDate>Thu, 06 Jan 2011 09:44:00 +0000</pubDate>
		<dc:creator>GeePawHill</dc:creator>
				<category><![CDATA[Situated Geekery]]></category>

		<guid isPermaLink="false">http://anarchycreek.com/?p=1834</guid>
		<description><![CDATA[(This series starts here.) Thump Thump Thump Thump. Red Green Refactor Integrate. Those of you who&#8217;ve experienced the Industrial Logic eLearning series have even heard me intone those words, with appropriate gravitas, as a voice-over. (It was my debut screencast, you know. Shouts out to my IL peeps!) The Four-Beat Cycle The microtesting cycle is absolutely [...]]]></description>
			<content:encoded><![CDATA[<h5 style="text-align: right;"><a href="http://anarchycreek.com/2010/12/08/how-tdd-works-its-magic-reducing-mental-scope/">(This series  starts here.)</a></h5>
<p>Thump Thump Thump Thump. Red Green Refactor Integrate.</p>
<p>Those of you who&#8217;ve experienced the <a href="http://industriallogic.com/">Industrial Logic eLearning</a> series have even heard me intone those words, with appropriate gravitas, as a voice-over. (It was my debut screencast, you know. Shouts out to my IL peeps!)</p>
<h3 style="text-align: center;"><em><span style="color: #0000ff;">The Four-Beat Cycle</span></em></h3>
<p>The microtesting cycle is absolutely fundamental, so much so I&#8217;m going to repeat the four parts, even though I&#8217;m sure everyone who&#8217;s reading this blog already knows them:</p>
<ul>
<li>RED: We write a microtest that fails because the code isn&#8217;t (yet) there to make it pass.</li>
<li>GREEN: We put the code in that makes it pass.</li>
<li>REFACTOR: We change the design until it is as simple and clear as we can make it.</li>
<li>INTEGRATE: We commit our changes, including the new microtest(s), to the source vault.</li>
</ul>
<h3 style="text-align: center;"><em><span style="color: #0000ff;">Is Four Beats Enough?</span></em></h3>
<p>No. And also, yes.</p>
<p>The four beats are an overarching structure. That structure can contain a thousand thousand variations.</p>
<p>In the clip below, the rather gifted jack of all trades, <a href="http://en.wikipedia.org/wiki/Rub%C3%A9n_Blades">Ruben Blades</a>, sings the lovely song <em>Patria</em>, which has a very fine lyric. The video is just a standard &#8220;pretend it&#8217;s fair use mp3 by having a video&#8221; video. Just close your eyes and listen to the rhythms. High quality sound system recommended.</p>
<p><span style="font-size: 9.02778px;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/cdPlaNK0vsM?fs=1&amp;hl=en_US" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/cdPlaNK0vsM?fs=1&amp;hl=en_US" allowscriptaccess="always" allowfullscreen="true"></embed></object></span></p>
<h3 style="text-align: center;"><em><span style="color: #0000ff;">So Why Does Rhythm Matter?</span></em></h3>
<p>I don&#8217;t know. It just does.</p>
<p>The interwebs is a very large collection of tubes, and you can browse for days before you run out of either definitions of rhythm or explanations of its significance. I got tired.</p>
<p>Anyway, my best explanation is in the sounds above.</p>
<p />
<p style="text-align: center;">
<h3 style="text-align: center;"><em><span style="color: #0000ff;"><strong>A Part Of TDD&#8217;s Magic Is That It Beats A Rhythm</strong></span></em></h3>
</p>
<p style="text-align: right;"><em><span style="color: #339966;">(Extra credit: How does today&#8217;s magic, rhythm, relate<br />
to yesterday&#8217;s magic, profluence. Show your work.)</span></em></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fanarchycreek.com%2F2011%2F01%2F06%2Fhow-tdd-works-its-magic5-beating-a-rhythm%2F&amp;title=How%20TDD%20Works%20Its%20Magic%285%29%3A%20Beating%20A%20Rhythm" id="wpa2a_6"><img src="http://anarchycreek.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/SituatedGeekery/~4/L45rjwF1E9E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://anarchycreek.com/2011/01/06/how-tdd-works-its-magic5-beating-a-rhythm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://anarchycreek.com/2011/01/06/how-tdd-works-its-magic5-beating-a-rhythm/</feedburner:origLink></item>
		<item>
		<title>How TDD Does Its Magic (4): Building Profluence</title>
		<link>http://feedproxy.google.com/~r/SituatedGeekery/~3/K6SxFuU-e3Y/</link>
		<comments>http://anarchycreek.com/2011/01/03/how-tdd-does-its-magic-4-building-profluence/#comments</comments>
		<pubDate>Mon, 03 Jan 2011 19:49:36 +0000</pubDate>
		<dc:creator>GeePawHill</dc:creator>
				<category><![CDATA[Situated Geekery]]></category>

		<guid isPermaLink="false">http://anarchycreek.com/?p=1814</guid>
		<description><![CDATA[(The first article in the series is here.) When Harvard Business School conducted its massive diary-collating research, the somewhat startling conclusion was that workers like it when their work is part of a progress. &#8220;Part of a progression&#8221; has another name: profluence. In literary circles, it means the stuff that flows forward in a literary [...]]]></description>
			<content:encoded><![CDATA[<p>(The first article in the series is <a href="http://anarchycreek.com/2010/12/08/how-tdd-works-its-magic-reducing-mental-scope/">here</a>.)</p>
<p>When Harvard Business School conducted its <a href="http://hbr.org/2010/01/the-hbr-list-breakthrough-ideas-for-2010/ar/1">massive diary-collating research</a>, the somewhat startling conclusion was that <strong><em>workers like it when their work is part of a progress.</em></strong></p>
<p>&#8220;Part of a progression&#8221; has another name: <em>profluence.</em> In literary circles, it means the stuff that flows forward in a literary work.</p>
<h3 style="text-align: center;"><em><span style="color: #0000ff;">Flowing Forward</span></em></h3>
<p>I don&#8217;t know what the last great novel-you-read is. I trust you had one. (If you don&#8217;t have one, stop reading blogs and geek-books and go find a great work of fiction.)</p>
<p>Do you remember the sense of excitement that came with it? The anticipation? The intense need to know what came next?</p>
<p>Profluence. Forward flowing.</p>
<h3 style="text-align: center;"><em><span style="color: #0000ff;">Microtests Advance Development</span></em></h3>
<p>Here, the case is subtle. After all, most <em>everything </em>a developer does is meant to advance development, hence the name.</p>
<p>But development here means progress.</p>
<p>When a geek runs a red-green-refactor-integrate cycle, things move forward. That movement, profluence, is a significant motivator for humans. I spoze if traditional processes are working for someone, they already supply it, but in weeks or months.</p>
<p>The TDD discipline creates profluence every single day, several times a day, for any number of days in a row.</p>
<h3 style="text-align: center;"><em><span style="color: #0000ff;">A Part of TDD’s Magic: Building Profluence</span></em></h3>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fanarchycreek.com%2F2011%2F01%2F03%2Fhow-tdd-does-its-magic-4-building-profluence%2F&amp;title=How%20TDD%20Does%20Its%20Magic%20%284%29%3A%20Building%20Profluence" id="wpa2a_8"><img src="http://anarchycreek.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/SituatedGeekery/~4/K6SxFuU-e3Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://anarchycreek.com/2011/01/03/how-tdd-does-its-magic-4-building-profluence/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://anarchycreek.com/2011/01/03/how-tdd-does-its-magic-4-building-profluence/</feedburner:origLink></item>
		<item>
		<title>How TDD Works Its Magic (3): Directing Debugs</title>
		<link>http://feedproxy.google.com/~r/SituatedGeekery/~3/5NElMN4m9l0/</link>
		<comments>http://anarchycreek.com/2010/12/31/how-tdd-works-its-magic-3-directing-debugs/#comments</comments>
		<pubDate>Fri, 31 Dec 2010 19:02:36 +0000</pubDate>
		<dc:creator>GeePawHill</dc:creator>
				<category><![CDATA[Situated Geekery]]></category>

		<guid isPermaLink="false">http://anarchycreek.com/?p=1812</guid>
		<description><![CDATA[We&#8217;ve seen the first two ways that TDD does its bizarre trick of increasing production by adding more code: TDD reduces mental scope, and it multiplies developer intention. I struggled for a while to come up with the right words for this one. Of all the magic, this is the one that almost everyone can [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve seen the first two ways that TDD does its bizarre trick of<em> <strong>increasing production by adding more code</strong>: </em>TDD<a href="http://anarchycreek.com/2010/12/08/how-tdd-works-its-magic-reducing-mental-scope/"> reduces mental scope</a>, and it <a href="http://anarchycreek.com/2010/12/20/how-tdd-works-its-magic-2-multiplying-intent/">multiplies developer intention</a>.</p>
<p>I struggled for a while to come up with the right words for this one. Of all the magic, this is the one that almost everyone can understand, and almost everyone can at the same time underestimate its importance.</p>
<h3 style="text-align: center;"><em><span style="color: #0000ff;">What Does &#8220;I Programmed All Day&#8221; Mean?</span></em></h3>
<p>I asked that question <a href="http://anarchycreek.com/2009/05/26/how-tdd-and-pairing-increase-production/">here</a>, and my answer looked more or less like this: I &#8230;</p>
<ul>
<li>typed in some code;</li>
<li>drew some pictures;</li>
<li>rigged up the debugger;</li>
<li>ran the debugger;</li>
<li>waited for the debugger;</li>
<li>figured out how to set the breakpoint so I got the failure case;</li>
<li>debugged an execution path for a while that wasn&#8217;t actually broken;</li>
<li>accidentally stepped over the line of code instead of into it, *nine* times;</li>
<li>read 50 times more code than I wrote;</li>
<li>asked peers to look at a problem;</li>
<li>got asked by peers to look at a problem;</li>
<li>stared into space;</li>
<li>threw some kind of something at other people;</li>
<li>surfed the web looking for answers;</li>
<li>surfed the web looking for cool pictures;</li>
<li>and so on…</li>
</ul>
<p>Do you see those six sentences in the middle that mention debugging? Uh-huh.</p>
<h3 style="text-align: center;"><span style="color: #0000ff;"><em><span style="color: #0000ff;">Debugging Is Expensive</span></em></span></h3>
<p>It doesn&#8217;t really matter whether you are debugging via the most sophisticated of hardware board-testers, or you&#8217;re just using printf statements. (Oh, I should add &#8220;put print statements in a bunch of weird places to see if I was even triggering the execution path I thought I was.&#8221; I do that a lot. Don&#8217;t lie to me.)</p>
<p>Either way, it&#8217;s a tremendous amount of time spent on not doing the right stuff<em>, </em>I mean the stuff to exercise the bug, find it, and fix it.</p>
<h3 style="text-align: center;"><em><span style="color: #0000ff;">Microtests Short-Circuit The Old Debugging Process</span></em></h3>
<p>Microtests change debugging, in two different ways.</p>
<p>First, some of them go red when you thought what you were doing was safe/right. Having a bunch of microtests is like having a debugger that&#8217;s always on.</p>
<p>Second, they are a great way to capture the repeatability of a bug. If you find a defect, and you&#8217;re doing TDD, the first thing you do is write a microtest that exercises the defect. From that point forward, you&#8217;ll know exactly what to do to exercise the problem: run your tests.</p>
<p>Together, these two changes will soon enough have you making the TDD pledge: &#8220;I will feel mildly guilty about launching the debugger when I was programming.&#8221;</p>
<h3 style="text-align: center;"><em><span style="color: #0000ff;">Part of TDD’s Magic Is That<br />
TDD Directs Debugs</span></em></h3>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fanarchycreek.com%2F2010%2F12%2F31%2Fhow-tdd-works-its-magic-3-directing-debugs%2F&amp;title=How%20TDD%20Works%20Its%20Magic%20%283%29%3A%20Directing%20Debugs" id="wpa2a_10"><img src="http://anarchycreek.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/SituatedGeekery/~4/5NElMN4m9l0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://anarchycreek.com/2010/12/31/how-tdd-works-its-magic-3-directing-debugs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://anarchycreek.com/2010/12/31/how-tdd-works-its-magic-3-directing-debugs/</feedburner:origLink></item>
		<item>
		<title>How TDD Works Its Magic (2): Multiplying Intent</title>
		<link>http://feedproxy.google.com/~r/SituatedGeekery/~3/KCEVBc5qpNc/</link>
		<comments>http://anarchycreek.com/2010/12/20/how-tdd-works-its-magic-2-multiplying-intent/#comments</comments>
		<pubDate>Mon, 20 Dec 2010 19:38:41 +0000</pubDate>
		<dc:creator>GeePawHill</dc:creator>
				<category><![CDATA[Situated Geekery]]></category>

		<guid isPermaLink="false">http://anarchycreek.com/?p=1803</guid>
		<description><![CDATA[Did you ever see a half-dozen lines of code, stare at it fixedly, and say &#8220;What the hell is this about?&#8221; If not,  does your Mommy know you&#8217;re up late reading blogs by grandfatherly computer geeks? Do You Turn On The Fritzenjammer First? A particular case of this comes with operations that were intended to [...]]]></description>
			<content:encoded><![CDATA[<p>Did you ever see a half-dozen lines of code, stare at it fixedly, and say <strong><em>&#8220;What the hell is </em>this <em>about?&#8221;</em></strong></p>
<p>If not,  does your Mommy know you&#8217;re up late reading blogs by grandfatherly computer geeks?</p>
<h3 style="text-align: center;"><em><span style="color: #0000ff;">Do You Turn On The Fritzenjammer First?</span></em></h3>
<p>A particular case of this comes with operations that were intended to be used in a certain order that you don&#8217;t know.</p>
<p>Does GyrateFritzenjammer() come <em>before</em> you isolate the GranfalloonMeter, or after?</p>
<p>Never mind that the design might have been better in the first place. The first place was occupied by some grandfatherly computer geek who cashed in bigtime on Y2K and now lives on a mountain somewhere in Peru <em>that he owns</em>.</p>
<p>(Though, as a general rule, those guys go everywhere with a T3. If you could find the e-mail you could get in touch. He will regale you with the tales of when he worked on the Mercury launch, and repeat the astonishing, but now quite old, trope about the Apollo mission having less total computing power than a modern shower-head. Oh, plus, also, they always talk about the old forgotten languages, like Java and Cobol. Or worse, it&#8217;s a fat old grandfatherly <em>Smalltalk </em>geek, wearing that unique armor composed of equal parts righteousness, purity, and a smugness to light the winter sky. Why I never play paladins, yo.)</p>
<h3 style="text-align: center;"><em><span style="color: #0000ff;">That&#8217;s Not The Worst Of It</span></em></h3>
<p>The worst of it is when you first have that experience while reading the code you yourself wrote just two short weeks ago.</p>
<p>So, what is missing from that half-dozen line code fragment?</p>
<p>What&#8217;s missing is a sense of what the author wanted when that code was entered. It lacks information about what the coder meant the code to do. <em><strong>It lacks intent.</strong></em></p>
<p>Even, comically, when that author was you.</p>
<p>Everyone, especially solo geeks, writes code that does not reveal the intent with which it was written. <em><strong>Everyone.</strong></em></p>
<h3 style="text-align: center;"><em><span style="color: #0000ff;">TDD Multiplies Intent</span></em></h3>
<p>When you&#8217;re TDD&#8217;ing, you are writing not just the code, but also the code that exercises the code.</p>
<p>And of course, if I want to know whether it&#8217;s Fritzenjammer before Granfalloon or Granfalloon before Fritzenjammer or whether it&#8217;s both because the coder was in a generous mood, or whether it&#8217;s even never because you&#8217;re only supposed to do one or the other before proceeding, the microtests will reveal the coder&#8217;s intention.</p>
<p>Now, I&#8217;m not sure whether writing microtests must, of necessity, render pre-existing code intelligible, though that&#8217;s my belief.</p>
<p>I am sure, tho, that <em><strong>test-driving your development will shape new code into intention-revealing code.</strong></em></p>
<p>The real TDD, I mean: writing microtests one at a time to force your code to change, will reveal your intent, sometimes, in spite of your intent.</p>
<h3 style="text-align: center;"><em><span style="color: #0000ff;">Part of TDD&#8217;s Magic Is That</span></em><br />
<span style="color: #0000ff;"><em> It Multiplies Intent</em></span></h3>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fanarchycreek.com%2F2010%2F12%2F20%2Fhow-tdd-works-its-magic-2-multiplying-intent%2F&amp;title=How%20TDD%20Works%20Its%20Magic%20%282%29%3A%20Multiplying%20Intent" id="wpa2a_12"><img src="http://anarchycreek.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/SituatedGeekery/~4/KCEVBc5qpNc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://anarchycreek.com/2010/12/20/how-tdd-works-its-magic-2-multiplying-intent/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://anarchycreek.com/2010/12/20/how-tdd-works-its-magic-2-multiplying-intent/</feedburner:origLink></item>
		<item>
		<title>How TDD Works Its Magic: Reducing Mental Scope</title>
		<link>http://feedproxy.google.com/~r/SituatedGeekery/~3/iniAQGiWfLc/</link>
		<comments>http://anarchycreek.com/2010/12/08/how-tdd-works-its-magic-reducing-mental-scope/#comments</comments>
		<pubDate>Wed, 08 Dec 2010 17:25:46 +0000</pubDate>
		<dc:creator>GeePawHill</dc:creator>
				<category><![CDATA[Situated Geekery]]></category>

		<guid isPermaLink="false">http://anarchycreek.com/?p=1785</guid>
		<description><![CDATA[TDD  changes everything. I&#8217;m reasonably comfortable you&#8217;ve already heard me write this, or imply it. So it&#8217;s perfectly natural to wonder &#8212; well, you know &#8212; How does TDD manage to change everything? The answer is really the answers, because TDD, like most valuable techniques doesn&#8217;t actually work in just one single way. TDD is multifarious. [...]]]></description>
			<content:encoded><![CDATA[<p>TDD  changes everything. I&#8217;m reasonably comfortable you&#8217;ve already heard me write this, or imply it. So it&#8217;s perfectly natural to wonder &#8212; well, you know &#8212; <em><strong>How does TDD manage to change everything? </strong></em></p>
<p>The answer is really the <em>answers, </em>because TDD, like most valuable techniques doesn&#8217;t actually <em><strong>work in just one single way</strong></em>. TDD is multifarious.</p>
<p>Here, then, is the first way: TDD <em><strong>reduces the mental scope</strong></em> of the developer.</p>
<h3 style="text-align: center;"><em><span style="color: #0000ff;">Juggling Ideas For Fun And Profit<img class="alignright size-full wp-image-1786" title="George Miller, Father of The Magic Number and the Princeton Word Net" src="http://anarchycreek.com/wp-content/uploads/2010/12/georgeAMiller.jpg" alt="" width="120" height="165" /><br />
</em></span></h3>
<p>It&#8217;s been fifty-plus years since the famous paper by <a href="http://en.wikipedia.org/wiki/George_Armitage_Miller">George Miller</a> entitled <a href="The Magical Number Seven, Plus or Minus Two: Some Limits on our Capacity for Processing Information">The Magical Number Seven, Plus or Minus Two: Some Limits on our Capacity for Processing Information</a>.</p>
<p>He identifies a first approximation of the bandwidth of human intellect. He says it&#8217;s about two and a half bits, i.e. somewhere between 5 and 9. By this number he means to refer to the number of independent concepts or symbols that a person can hold simultaneously. In fifty years, researchers have amplified and altered Miller&#8217;s actual number, but the long and the short of it is that we still think he was either outright correct or at least correct-ish. Five-to-nine works pretty well, actually.</p>
<p>I like to think of this five-to-nine with a juggling metaphor: some people can keep five ideas in the air at one time, and others can keep nine ideas in the air at one time, and most of us in between.</p>
<h3 style="text-align: center;"><em><span style="color: #0000ff;">TDD Focuses The Mind</span></em></h3>
<p>When I say that TDD reduces mental scope, I mean that it allows the developer to focus tightly on a single problem.</p>
<p>The experienced TDD-ist works one small problem at a time.</p>
<p>Working on just one problem <em>works, </em>because it obviates the need for thinking of the two other kinds of problem.</p>
<ol>
<li>Problems you (or a teammate) already solved.</li>
<li>Problems you anticipate in the future.</li>
</ol>
<p>Free&#8217;d by TDD to focus <em>tightly, </em>the developer is able to keep a problem to something involving less than our natural mental limits.</p>
<h3 style="text-align: center;"><span style="color: #0000ff;"><em>(Part of) TDD&#8217;s Magic: Reducing Scope</em></span></h3>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fanarchycreek.com%2F2010%2F12%2F08%2Fhow-tdd-works-its-magic-reducing-mental-scope%2F&amp;title=How%20TDD%20Works%20Its%20Magic%3A%20Reducing%20Mental%20Scope" id="wpa2a_14"><img src="http://anarchycreek.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/SituatedGeekery/~4/iniAQGiWfLc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://anarchycreek.com/2010/12/08/how-tdd-works-its-magic-reducing-mental-scope/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://anarchycreek.com/2010/12/08/how-tdd-works-its-magic-reducing-mental-scope/</feedburner:origLink></item>
		<item>
		<title>Planning Theater: Just Wasted Time</title>
		<link>http://feedproxy.google.com/~r/SituatedGeekery/~3/Nb9D1AF2zrw/</link>
		<comments>http://anarchycreek.com/2010/10/21/planning-theater/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 16:37:28 +0000</pubDate>
		<dc:creator>GeePawHill</dc:creator>
				<category><![CDATA[Situated Geekery]]></category>

		<guid isPermaLink="false">http://anarchycreek.com/?p=1763</guid>
		<description><![CDATA[Does your shop do planning theater?1 Planning theater is when we spend time pretending to plan, by: Starting with both ship day and the work list; Impressing the plebes with the severity of the deadline; Requiring reduced estimates without reduced work; Agreeing with a scheme that will never happen; There is usually only one reason [...]]]></description>
			<content:encoded><![CDATA[<p>Does your shop do planning theater?<sup><span style="font-size: 10px;">1</span></sup></p>
<p><span style="font-size: 13.1944px;"><em>Planning theater</em> is when we spend time pretending to plan, by:</span></p>
<ul>
<li>Starting with both ship day and the work list;</li>
<li>Impressing the plebes with the severity of the deadline;</li>
<li>Requiring reduced estimates without reduced work;</li>
<li>Agreeing with a scheme that will never happen;</li>
</ul>
<p>There is usually only one reason for a team to choose planning theater over plain old planning: someone powerful wishes the team to bless some ridiculous assessment that they&#8217;re now committed to.</p>
<p>Here&#8217;s the thing. The next time you start a session of planning theater, why not just cut to the chase?  Print out the centered text below and affix your team&#8217;s signature to it. After all, rushing through a planning theatre session will work exactly as well as leisurely strolling through one: Not at all.</p>
<h3 style="text-align: center;"><em><span style="color: #0000ff;">Since No One Cares About</span></em></h3>
<h3 style="text-align: center;"><em><span style="color: #0000ff;">The Correlation Of This Plan</span></em></h3>
<h3 style="text-align: center;"><em><span style="color: #0000ff;">To Reality</span></em></h3>
<h3 style="text-align: center;"><em><span style="color: #0000ff;">We The Undersigned Hereby Bless It</span></em></h3>
<p><span style="font-size: 10px;"><br />
[1] I am indebted to <a href="http://www.sethgodin.com/sg/">Seth Godin</a> for a number of things, but just now I want to highlight one: his coinage of the phrase <em>security theater</em> to highlight the impressive-but-useless process of boarding an airplane. <strong>[Ed: Apparently, I'm not indebted to Godin as much as I thought.  :) Bruce Schneier <a href="http://www.schneier.com/">http://www.schneier.com/</a> is the rightful coiner of the phrase "security theater".]</strong></span></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fanarchycreek.com%2F2010%2F10%2F21%2Fplanning-theater%2F&amp;title=Planning%20Theater%3A%20Just%20Wasted%20Time" id="wpa2a_16"><img src="http://anarchycreek.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/SituatedGeekery/~4/Nb9D1AF2zrw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://anarchycreek.com/2010/10/21/planning-theater/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://anarchycreek.com/2010/10/21/planning-theater/</feedburner:origLink></item>
		<item>
		<title>Does Code Want?</title>
		<link>http://feedproxy.google.com/~r/SituatedGeekery/~3/zteq3RG3rH0/</link>
		<comments>http://anarchycreek.com/2010/10/20/does-code-want/#comments</comments>
		<pubDate>Wed, 20 Oct 2010 14:56:46 +0000</pubDate>
		<dc:creator>GeePawHill</dc:creator>
				<category><![CDATA[Situated Geekery]]></category>

		<guid isPermaLink="false">http://anarchycreek.com/?p=1765</guid>
		<description><![CDATA[I find myself poking and prodding geeks from time to time. I say something like: &#8220;maybe the code doesn&#8217;t want to be structured like that,&#8221; or &#8220;this code wants to be something else.&#8221; This is not some faux-eastern wisdom stirred into my usually rather more earthy mix of insight and obscenity. What I&#8217;m getting at [...]]]></description>
			<content:encoded><![CDATA[<p>I find myself poking and prodding geeks from time to time. I say something like: &#8220;maybe the code doesn&#8217;t want to be structured like that,&#8221; or &#8220;this code wants to be something else.&#8221;</p>
<p>This is not some faux-eastern wisdom stirred into my usually rather more earthy mix of insight and obscenity.</p>
<p>What I&#8217;m getting at when I say &#8220;the code wants&#8221; is that there may be another form of the solution available than the one my respondent is using.</p>
<p>It is <em>ridiculously easy</em> to bind yourself to an approach before you&#8217;ve discovered that it&#8217;s right. Code written like this has a kind of forced-fit ugliness to it.</p>
<p>Finding yourself with:</p>
<ul>
<li>Lots of little if-statements?</li>
<li>5 or more passed-in parameters?</li>
<li>commented &#8216;paragraphs&#8217; of code?</li>
</ul>
<p>All these things, and many others, besides, are the code&#8217;s way of wanting to be different.</p>
<h3 style="text-align: center;"><em><span style="color: #0000ff;">Don&#8217;t Let Your Planned Solution</span></em></h3>
<h3 style="text-align: center;"><span style="color: #0000ff;"><em>Block Your Discovered Solution</em></span></h3>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fanarchycreek.com%2F2010%2F10%2F20%2Fdoes-code-want%2F&amp;title=Does%20Code%20Want%3F" id="wpa2a_18"><img src="http://anarchycreek.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/SituatedGeekery/~4/zteq3RG3rH0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://anarchycreek.com/2010/10/20/does-code-want/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://anarchycreek.com/2010/10/20/does-code-want/</feedburner:origLink></item>
		<item>
		<title>Thrownness 2: Consider The Blind Spot</title>
		<link>http://feedproxy.google.com/~r/SituatedGeekery/~3/awI2E-PKYSo/</link>
		<comments>http://anarchycreek.com/2010/10/18/thrownness-2-consider-the-blind-spot/#comments</comments>
		<pubDate>Mon, 18 Oct 2010 15:17:45 +0000</pubDate>
		<dc:creator>GeePawHill</dc:creator>
				<category><![CDATA[Situated Geekery]]></category>

		<guid isPermaLink="false">http://anarchycreek.com/?p=1724</guid>
		<description><![CDATA[The human eye has two interesting properties, one the consequence of the other. Imagine that you were installing solar panels on the roof.  The rig is a big frame, and a bunch of 6&#215;6 solar-panel-ettes. On these, one side is flat and polished, and the other side has a long wire coming right out of [...]]]></description>
			<content:encoded><![CDATA[<p>The human eye has two interesting properties, one the consequence of the other.</p>
<p>Imagine that you were installing solar panels on the roof.  The rig is a big frame, and a bunch of 6&#215;6 solar-panel-ettes. On these, one side is flat and polished, and the other side has a long wire coming right out of the center. Skipping the installation instructions, as you do, presents no major difficulty. You put each little panel-ette in so it faces the same direction: the flat polished side goes to the front of the frame, toward the sun, and the dark center-wired part goes to the back.</p>
<p>When it comes to the wires coming out the back, we wire them together left to right, and we use wire-ties to gather them into a single ever-bigger cable, kinda like so:</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1736" title="wiring" src="http://anarchycreek.com/wp-content/uploads/2010/10/wiring.gif" alt="" width="300" height="127" /></p>
<p style="text-align: left;">Sweet, like a charm. But when you hook it up the output power seems low. In a random debugging impulse, you decide to glance at the installation manual. <em><strong>And it shows everything you did, except exactly backwards.</strong></em> The side that faces the sun is the side that has the wires coming out of it. The side that&#8217;s hidden to the sun is the flat polished side.</p>
<p style="text-align: left;">Imagine the sputtering you&#8217;ll emit.</p>
<h3 style="text-align: center;"><em><span style="color: #0000ff;">What A Horrible Design!</span></em></h3>
<p style="text-align: left;">Well, that&#8217;s the first interesting property.<em><strong> The wiring in your eye, receptors on one side, wires on the other, is exactly the design you just dissed. </strong></em>The most sensitive parts of the receptors &#8212; rods and cones &#8212; is the part that faces towards your brain, where, truth to tell, there is no light. The part that faces the light is the part with the wires coming out of it. The wires &#8212; nerves &#8212; come out the front.</p>
<p style="text-align: left;">Eh? Come out of the front?? That&#8217;s ridiculous! If that were true, looking at your diagram, there&#8217;d be a big hole in my vision, the place where that really fat cable runs out into my brain!</p>
<p style="text-align: left;">Yes.</p>
<h3 style="text-align: center;"><span style="color: #0000ff;"><em>A Hole In Your Vision</em></span></h3>
<p style="text-align: left;">That&#8217;s the second interesting thing. If you have a big fat cable (of nerves) that comes out from the front of the receptors, then there must be a big fat hole where it comes out of the eye and back to the brain. And that would mean that you have a spot somewhere in your visual field where there&#8217;s a <em>hole.</em></p>
<p style="text-align: left;">I originally was gonna explain the blind spot to you. This article would be approximately 17 pages longer. Instead, I want you to go play <a href="http://faculty.washington.edu/chudler/chvision.html">here</a>, and when you&#8217;re done, come on back. I&#8217;m glad I was able to skip that part.</p>
<h3 style="text-align: center;"><em><span style="color: #0000ff;">Your Brain Is A Scoundrel</span></em></h3>
<p>I don&#8217;t wish to put too fine a point on it, but your brain lies to you. All the time. About a lot.</p>
<p>We like to think of ourselves as neutral receivers of data from the environment. Thinking that is what mad Tom Kuhn called living in a paradigm. But it just ain&#8217;t so. Every thing you perceive, as this example suggests, is already <em>cooked</em>. Processed. Not raw. Fiddled with. Unreliable. In many cases, <em><strong>wildly unreliable</strong></em><em>.</em></p>
<h3 style="text-align: center;"><span style="color: #0000ff;"><em>A Corner Case? An Optical Illusion?</em></span></h3>
<p>&#8220;Sure, sometimes, my perceptions are fooled by clever pixel-manipulators, but they&#8217;re generally straight-up, correct, pixelated, and raw.&#8221;</p>
<p>No, actually, they&#8217;re not.  Over the last thirty years, neurologists and biologists have demonstrated time and again just how cooked our experience really is. It&#8217;s not just visual. It&#8217;s aural, it&#8217;s proprioceptive, it&#8217;s feel, it&#8217;s taste, it&#8217;s smell. Most shockingly of all, at least to me, is that the same stricture applies <em>inside the brain. </em> <em><strong>It&#8217;s ego, it&#8217;s dreams, it&#8217;s memory, it&#8217;s reasoning, it&#8217;s logic.</strong></em> It is everywhere.</p>
<p>I&#8217;m willing to prove that the extent of the cooking is tremendous, touching every thread of your experience, but not today.</p>
<p>Today, I want to trick you into asking yourself a question:</p>
<h3 style="text-align: center;"><span style="color: #0000ff;"><em>If I Don&#8217;t Trust My Brain, What Will I Trust?</em></span></h3>
<p>It&#8217;s a silly question, for all practical purposes. It admits of a great many possible answers: read western philosophy for a host of them, from Descartes forward, all written very poorly.</p>
<p>The bottom line here is that we have no choice. Our experience is cooked heavily by <em><strong>complex systems that broadly and systematically compromise its reliability</strong></em>.  But, hey, what else can we do?</p>
<h2>
<p style="text-align: center;"><span style="color: #0000ff;"><em><strong><br />
We Rely On The Unreliable<br />
</strong></em></span></p>
</h2>
<h2>
<p style="text-align: center;"><span style="color: #0000ff;"><em><strong>Everywhere.  Always.*<br />
</strong></em></span></p>
</h2>
<p>* If you want a corner case, the corner case is the rough-and-ready reliability of science. I&#8217;m just going to say that and leave it there.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fanarchycreek.com%2F2010%2F10%2F18%2Fthrownness-2-consider-the-blind-spot%2F&amp;title=Thrownness%202%3A%20Consider%20The%20Blind%20Spot" id="wpa2a_20"><img src="http://anarchycreek.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/SituatedGeekery/~4/awI2E-PKYSo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://anarchycreek.com/2010/10/18/thrownness-2-consider-the-blind-spot/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://anarchycreek.com/2010/10/18/thrownness-2-consider-the-blind-spot/</feedburner:origLink></item>
	</channel>
</rss>

