<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Dave Mosher's Blog</title>
	<atom:link href="http://davemo.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://davemo.wordpress.com</link>
	<description>Information and Opinions on Software Development for the Web</description>
	<lastBuildDate>Mon, 16 Jan 2012 06:07:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='davemo.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Dave Mosher's Blog</title>
		<link>http://davemo.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://davemo.wordpress.com/osd.xml" title="Dave Mosher&#039;s Blog" />
	<atom:link rel='hub' href='http://davemo.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Emojii</title>
		<link>http://davemo.wordpress.com/2012/01/16/emojii-2/</link>
		<comments>http://davemo.wordpress.com/2012/01/16/emojii-2/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 06:07:02 +0000</pubDate>
		<dc:creator>davemo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://davemo.wordpress.com/?p=207</guid>
		<description><![CDATA[Emojii.m4a Listen on Posterous Rough scratch track with some ideas I&#8217;d like to expand on later in higher fidelity. Done completely with iPhone 4S and an Acoustic Guitar.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davemo.wordpress.com&amp;blog=4024899&amp;post=207&amp;subd=davemo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div class='posterous_autopost'>
<div class='p_embed p_audio_embed'> <a href="http://blog.davemo.com/emojii"><img alt="" src="http://posterous.com/images/filetypes/unknown.png" /></a>
<div class='p_embed_description'> <span class='p_id3'>Emojii.m4a</span> <a href="http://blog.davemo.com/emojii">Listen on Posterous</a> </div>
</p></div>
<p>Rough scratch track with some ideas I&#8217;d like to expand on later in higher fidelity. Done completely with iPhone 4S and an Acoustic Guitar. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
</p></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davemo.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davemo.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davemo.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davemo.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davemo.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davemo.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davemo.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davemo.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davemo.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davemo.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davemo.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davemo.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davemo.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davemo.wordpress.com/207/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davemo.wordpress.com&amp;blog=4024899&amp;post=207&amp;subd=davemo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davemo.wordpress.com/2012/01/16/emojii-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ead076bf445f9b50e3c094300e4690e9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davemo</media:title>
		</media:content>

		<media:content url="http://posterous.com/images/filetypes/unknown.png" medium="image" />
	</item>
		<item>
		<title>Emojii</title>
		<link>http://davemo.wordpress.com/2012/01/16/emojii/</link>
		<comments>http://davemo.wordpress.com/2012/01/16/emojii/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 06:06:57 +0000</pubDate>
		<dc:creator>davemo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://davemo.wordpress.com/?p=204</guid>
		<description><![CDATA[Emojii.m4a Listen on Posterous Rough scratch track with some ideas I&#8217;d like to expand on later in higher fidelity. Done completely with iPhone 4S and an Acoustic Guitar.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davemo.wordpress.com&amp;blog=4024899&amp;post=204&amp;subd=davemo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div class='posterous_autopost'>
<div class='p_embed p_audio_embed'> <a href="http://blog.davemo.com/emojii"><img alt="" src="http://posterous.com/images/filetypes/unknown.png" /></a>
<div class='p_embed_description'> <span class='p_id3'>Emojii.m4a</span> <a href="http://blog.davemo.com/emojii">Listen on Posterous</a> </div>
</p></div>
<p>Rough scratch track with some ideas I&#8217;d like to expand on later in higher fidelity. Done completely with iPhone 4S and an Acoustic Guitar. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
</p></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davemo.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davemo.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davemo.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davemo.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davemo.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davemo.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davemo.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davemo.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davemo.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davemo.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davemo.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davemo.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davemo.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davemo.wordpress.com/204/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davemo.wordpress.com&amp;blog=4024899&amp;post=204&amp;subd=davemo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davemo.wordpress.com/2012/01/16/emojii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ead076bf445f9b50e3c094300e4690e9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davemo</media:title>
		</media:content>

		<media:content url="http://posterous.com/images/filetypes/unknown.png" medium="image" />
	</item>
		<item>
		<title>The SCNA 2011 Narrative : Suitability, Capability, Anarchy and Propaganda</title>
		<link>http://davemo.wordpress.com/2011/11/21/the-scna-2011-narrative-suitability-capability-anarchy-and-propaganda/</link>
		<comments>http://davemo.wordpress.com/2011/11/21/the-scna-2011-narrative-suitability-capability-anarchy-and-propaganda/#comments</comments>
		<pubDate>Mon, 21 Nov 2011 21:27:30 +0000</pubDate>
		<dc:creator>davemo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://davemo.wordpress.com/?p=200</guid>
		<description><![CDATA[I attended Software Crafstmanship North America in Chicago this weekend and came away feeling much differently than I thought I would. I tweeted a summary of my thoughts last night: @dmosher: I find it interesting that the talks I agreed with most at #scna were predominantly against established &#8220;agile&#8221; principles &#8230; Twitter is a horrible [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davemo.wordpress.com&amp;blog=4024899&amp;post=200&amp;subd=davemo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div class='posterous_autopost'>
<p>I attended Software Crafstmanship North America in Chicago this weekend and came away feeling much differently than I thought I would.  I <a href="https://twitter.com/dmosher/status/138476620896931840">tweeted a summary</a> of my thoughts last night:</p>
<blockquote class="posterous_short_quote"><p>@dmosher: I find it interesting that the talks I agreed with most at #scna were predominantly against established &#8220;agile&#8221; principles &hellip; <img src='http://s0.wp.com/wp-includes/images/smilies/icon_neutral.gif' alt=':|' class='wp-smiley' /> </p>
</blockquote>
<p>Twitter is a horrible medium for expressing ideas that are packed with meaning; this post is intended to unpack my tweet  and experience at SCNA 2011 by focusing on the 3 talks I found the most valuable and how they formed a cohesive and powerful narrative in my mind.</p>
<h2>Suitability vs Capability</h2>
<p><a href="http://twitter.com/#!/garybernhardt">Gary Bernhardt</a> gave a wonderful talk entitled &#8220;Expansion &amp; Contraction&#8221;. I think he should have titled it &#8220;Suitability vs Capability&#8221;  but it was a brilliant talk and the one I considered the best of the conference. Here&#8217;s my best attempt at paraphrasing it:</p>
<blockquote class="posterous_medium_quote"><p>Programming Language and Technology go through a constant ebb and flow of expanding and contracting over time.  During expansion, these solutions are &#8220;Capability&#8221; solutions; that is, they are capable of solving problems but they are not yet suitable. Eventually there is a contraction that happens and &#8220;Suitability&#8221; solutions emerge.</p>
<p>Java first emerged as a Capability Solution during an expansion in the post C/C++ era. Time passed and a contraction occurred in which Java  matured into a Suitability Solution for developing software.</p>
</blockquote>
<p>A few times during his talk Gary mentioned that JavaScript and NodeJS are currently in the realm of Capability Solutions. At first this rubbed me the wrong way but I think that&#8217;s because I wasn&#8217;t really listening to what he was saying <em>objectively</em>. NodeJS is absolutely in the realm of Capability and not Suitability at the moment, but that doesn&#8217;t mean you  can&#8217;t create something useful with it.</p>
<p>Thinking more about the heart of Gary&#8217;s talk I find myself glad that it was on Day 1 because I found that it framed my thinking for the rest of the conference.</p>
<h2>Programmer Anarchy</h2>
<p>Agile best practices are often framed as things we &#8220;must do&#8221; in order to be successful but I think it would behoove us to frame them in terms of suitability and capability.</p>
<p><a href="http://twitter.com/#!/fgeorge52">Fred George</a> gave a talk in the breakout room on Day 2 entitled &#8220;Programmer Anarchy&#8221;. His ideas might seem radical to some but I think they are an appropriate response based on an evaluation of suitability/capability for his <em>specific situation</em>. It&#8217;s important to understand that the following decisions derive from a company that is continually investing in new ways to make money by building very small applications. Here&#8217;s the gist:</p>
<blockquote><p>Agile prescribes many best practices like Kanban, Scrum, XP, Pairing, Continuous Integration, Unit Testing&#8230; the list goes on.</p>
<p>In the waterfall era the power to determine <em>how</em> systems get built lies squarely with the <em>customer</em>. Up-front design docs and requirements specifications dictate how developers should build a system to achieve success. Through waterfall, systems are often built completely wrong. As a result customer trust is lower, developer happiness decreases, and success is not realized.</p>
<p>In the agile era the power to determine <em>how</em> systems get built is <em>shared</em> between the <em>customer and developers</em> but there is a gap in trust because of the past failures of waterfall. Agile is an attempt to bridge the trust gap by building things faster and with less bugs. Through agile, systems are also built wrong but they fail faster which mitigates risk and decreases the cost of change.</p>
<p>In the era of Programmer Anarchy the power to determine <em>how</em> systems are built lie directly with <em>developers.</em></p>
<ul>
<li>non-developer roles like architects, project manager, scrum-master, team lead, delivery lead, hr people and tester are completely eliminated from teams</li>
<li>developers are empowered to build software using whatever technology they choose and with whatever tools they choose</li>
<li>applications and systems are extremely small (100-300 lines of code) so unit-tests, acceptance tests, and continuous integration are eliminated entirely</li>
<li>teams are encouraged to write and re-write applications using whatever they want, including capability solutions (Clojure, NodeJS, Cassandra, Hadoop, etc..)</li>
</ul>
</blockquote>
<p>Fred talked a lot about his company and how they have a lot of trust in their developers to be able to turn ideas into money. The first thing they do on any project is write the business metrics code to be able to verify whether something they produce can be tied back to business value. This is an absolutely <em>critical point</em> that needs to be understood. Most of the time, my dissatisfaction in the work I do is related to not knowing whether something I build will <em>actually</em> have value. If I had metric and monitoring code in place that was able to tell me what I created is making money and can be considered successful my job satisfaction would increase greatly.</p>
<p>Unit tests weren&#8217;t suitable for Fred&#8217;s teams because they were writing such small applications, so they eliminated them. Traditional &#8220;Agile&#8221; roles weren&#8217;t suitable because he empowered developers to make decisions on what to use, how to use it and which developers would be best suited to building it, so they eliminated them. I think you can see the pattern.</p>
<p>I found it interesting that Fred&#8217;s teams got rid of things many in the Agile movement consider to be not only suitable but <em>essential</em> to building good software.  It was also fascinating that he actively pushed his teams to use capability solutions like Clojure, NodeJS, Cassandra and Hadoop, which proved wildly successful.</p>
<p>Whether you agree with the decisions or not is irrelevant; Fred&#8217;s team made a judgement call about the suitability of all the typical &#8220;Agile&#8221; best practices and cut away all the things that weren&#8217;t suitable. Good teams find ways to eliminate waste by evaluating whether the things they do are capable <em>and</em> suitable and eliminating things that aren&#8217;t.</p>
<h2>Propaganda, Indoctrination, Fanbois, and Education</h2>
<p>I believe there to be a significant difference between a &#8220;Big &#8216;A&#8217; Agile&#8221; and &#8220;Little &#8216;a&#8217; agile&#8221;. The religion of &#8220;Agile&#8221; is often touted as the one single way to build software. The number of roles and processes prescribed by &#8220;Agile&#8221; is excessive, however, this is due to a failure to evaluate  things in terms of whether they are suitability solutions or capability solutions for a given project/team.</p>
<p>It was probably surprising to people in the software craftsmanship movement that <a href="http://twitter.com/zedshaw">Zed Shaw</a> was invited to speak,  but his talk on &#8220;Propaganda, Indoctrination, Fanbois, and Education&#8221; was the most thought provoking talk at SCNA 2011. Here&#8217;s my translation:</p>
<blockquote><p>Anyone who tells you that they have found the &#8220;one true way&#8221; to build software is a con-artist trying to sell you something.</p>
<p>If you aren&#8217;t writing code, you aren&#8217;t a programmer. Programmers build software, everything else is just marketing spin.</p>
<p>Indoctrination happens when you&#8217;re convinced to think something is the only way. Education gives you options and lets you make choices. Don&#8217;t be indoctrinated, be educated.</p>
<p>Agile and all the related buzzwordy ideas can be boiled down to these 3 simple ideas:</p>
<ul>
<li>Make a list of stuff to do.</li>
<li>Do that stuff.&nbsp;</li>
<li>Automate the heck out of everything.</li>
</ul>
<p>(note: these things don&#8217;t have to be done in any particular order)</p>
</blockquote>
<p>While he&#8217;s abrasive and rubs a lot of people the wrong way, Zed Shaw has done a lot of good for the software craftsmanship movement. He&#8217;s trying to put the focus back on learning programming instead of &#8220;Super XP Double Pairing Kanban Scrum Sauce&#8221; and all the rest of the &#8220;Agile&#8221; marketing spin. His <a href="http://learncodethehardway.org/">&#8220;Learn Code the Hard Way&#8221;</a> series is wildly successful and is actually teaching people how to program. Somebody at the conference asked him:</p>
<blockquote class="posterous_short_quote"><p>&#8220;So what do you think about Unit Testing and Continuous Integration and all that stuff then?&#8221;</p>
</blockquote>
<p>His response was pretty down to earth:</p>
<blockquote class="posterous_medium_quote"><p>I&#8217;ve worked for big consulting companies doing every one of those things in the past. I&#8217;ve written tests, done TDD, used pivotal tracker blah-de-bloo or whatever you&#8217;re using.  Those things aren&#8217;t bad but anyone who is trying to tell you those things are the &#8220;one true way&#8221; to build software is a con-artist trying to sell you something.  If you believe that stuff you&#8217;ve got a mind-virus. You don&#8217;t want a mind-virus.</p>
</blockquote>
<p>I used to change my thinking <em>drastically</em> all the time. I&#8217;d go to conferences and experience a lot of hype and get infected with a mind-virus that led me to adopt ideas that I would later on discard. This isn&#8217;t a healthy thing to do. Nothing I experienced at SCNA 2011 was radical enough to make me change my thinking drastically, but what I did experience will help me to be much more objective about the things I let influence me going forward.</p>
<h2>Where do we go from here?</h2>
<p>It&#8217;s important to be objective. It&#8217;s important to question the value of things we do, especially when we do them because somebody has told us they will solve all our problems.</p>
<p>To me, the most important narrative of SCNA 2011, and the thoughts behind my <a href="https://twitter.com/dmosher/status/138476620896931840">tweet</a> are these:</p>
<ul>
<li>Don&#8217;t buy into all the propaganda, don&#8217;t get indoctrinated. Get educated.</li>
<li>Learn to <em>objectively</em> evaluate the tools, processes, and ideas we use in terms of <em>suitability and capability</em>.&nbsp;</li>
<li>Let go of suitability solutions if they don&#8217;t give you any value.&nbsp;</li>
<li>Embrace capability solutions because you might be surprised by their value.</li>
</ul></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davemo.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davemo.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davemo.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davemo.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davemo.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davemo.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davemo.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davemo.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davemo.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davemo.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davemo.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davemo.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davemo.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davemo.wordpress.com/200/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davemo.wordpress.com&amp;blog=4024899&amp;post=200&amp;subd=davemo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davemo.wordpress.com/2011/11/21/the-scna-2011-narrative-suitability-capability-anarchy-and-propaganda/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ead076bf445f9b50e3c094300e4690e9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davemo</media:title>
		</media:content>
	</item>
		<item>
		<title>Immersed in Agile</title>
		<link>http://davemo.wordpress.com/2011/05/27/immersed-in-agile/</link>
		<comments>http://davemo.wordpress.com/2011/05/27/immersed-in-agile/#comments</comments>
		<pubDate>Fri, 27 May 2011 17:10:51 +0000</pubDate>
		<dc:creator>davemo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I started working as an independent contractor for Pillar Technology over 6 months ago (Nov 1, 2010). At the time, I had no idea what was in store for me; looking back now I think I&#8217;ve hit a new point from which to grow in my career so it seems time to engage in a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davemo.wordpress.com&amp;blog=4024899&amp;post=197&amp;subd=davemo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div class="posterous_autopost">
<p>I started working as an independent contractor for <a href="http://www.pillartechnology.com/"><span class="s1">Pillar Technology</span></a> over 6 months ago (Nov 1, 2010). At the time, I had no idea what was in store for me; looking back now I think I&#8217;ve hit a new point from which to grow in my career so it seems time to engage in a retrospective on the last year.</p>
<p class="p2">
<p class="p1"><strong>Some History</strong></p>
<p class="p2">
<p class="p1">Prior to working with Pillar I spent just over 2 years working on a number of projects at <a href="http://www.vendasta.com/"><span class="s1">VendAsta Technologies</span></a>. I grew a lot in those 2 years but mostly in a technical capacity. Things like continuous integration, build configuration, and (briefly) unit testing were introduced to me. It was enlightening to get a taste of the technical goodness offered by those things but ultimately I felt like there was no one there who could guide me in the underlying principles that necessitate them. At the same time I was introduced to many of the core concepts of this thing people in the software development community call &#8220;Agile&#8221;. Coming out of VendAsta in 2010 I thought I knew what Agile was. I thought it was Scrum, XP, TDD, continuous integration and a whole host of other technical terms.</p>
<p class="p1">
<p class="p1">Looking back at where I&#8217;ve come in the last 7 months I don&#8217;t think I can say I know what Agile is even now, because it is an ephemeral thing that seems to be constantly evolving. What I can say is that I know a lot more about the core of what&#8217;s important in software development: delivering business value and earning the trust of those you work with.</p>
<p class="p2">
<p class="p1"><strong>Trust and Value over Working Software</strong></p>
<p class="p2">
<p class="p1">My first 6 months with Pillar were served working on a client project for <a href="http://www.gfs.com/en"><span class="s1">Gordon Food Services</span></a> out of Grand Rapids, MI. I worked remotely for those 6 months out of an office in my basement that <a href="http://www.twitter.com/littlemrsmosher"><span class="s1">Tanys</span></a> and I built the week before I started. A brief note on working remotely: it opened my eyes up to a key thing that&#8217;s required to be successful in life; self-discipline. I had my doubts about how effective I could be remotely but I decided it was worth the challenge and committed to myself that I would do what it took. Getting up at 7 am to make standup in the morning (hello, 2 hour time zone difference), pushing myself to keep lines of communication open, and pouring my heart and soul into building trust with the client; these are the things I did over those 6 months. And it paid off. I grew in my technical knowledge but also in my ability to cultivate good business relationships.</p>
<p class="p1">
<p class="p1">The people at both the client and Pillar have been great, providing much in the way of the mentoring and leadership around the principles of good software development that I had craved for such a long time. In 6 months working for GFS the team I was part of a team that produced software faster, with less defects, and with more value than any other project I&#8217;ve been on. The experience was energizing and opened my eyes to the power of building trust and constantly delivering value all while adhering to solid software craftsmanship principles.</p>
<p class="p2">
<p class="p1"><strong>Beyond TDD</strong></p>
<p class="p2">
<p class="p1">Prior to joining Pillar I thought I had a pretty good grasp on the technical concepts surrounding &#8220;Agile&#8221;. 7 months later my eyes have been opened to how much more than technicality Agile really is. At its heart, Agile is a way of thinking that promotes accountability, integrity, quality, and value oriented thinking. I used to think writing tests was something you did after writing production code to verify the behaviour you had crafted. Now I understand that &#8221;The fundamental conundrum of software development: I can code fast when I have a good design but I can&#8217;t design until I&#8217;ve coded slowly.&#8221; (<a href="http://twitoaster.com/kentbeck/the-fundamental-conundrum-of-software-development-i-can-code-fast-when-i-have-a-good-design-but-i-cant-design-until-ive-coded-slowly/"><span class="s1">Kent Beck</span></a>).</p>
<p class="p1">
<p class="p1">A good design is achieved by thinking out architecture by writing tests first. I&#8217;ve also learned that tests can act as documentation by example, so it&#8217;s important to continually curate test code so that it doesn&#8217;t grow stagnant. Most importantly of all I&#8217;ve seen the power of having a codebase with 95%+ test coverage and how that acts as a safety net to making change. This last point can&#8217;t be overstated; the freedom experienced through red/green/refactor makes change cheap and development incredibly enjoyable. At the core of my change here from 7 months ago is a paradigm shift in the way I think about developing: I don&#8217;t feel responsible writing production code until I have a failing test.</p>
<p class="p2">
<p class="p1"><strong>The Best Way To Learn</strong></p>
<p class="p2">
<p class="p1">Something I&#8217;ve always felt positive about is my ability to teach. I feel I have the heart of a teacher, which means that I can empathize with people to understand the pain they feel. (I&#8217;ve felt the pain too, which always helps). In the last 7 months I&#8217;ve been devoting myself to studying more effective ways to promote craftsmanship in front-end development. One of those ways is to teach more. This has not been easy; front-end development has historically been treated as a second class citizen. (I could write a whole other blog post about that alone, but that&#8217;s a topic for another time). Breaking down barriers between front-end and back-end developers requires a certain amount of grace and poise that I didn&#8217;t have 7 months ago. Being able to effectively communicate solid engineering principles to back-end oriented developers requires empathy, compassion, and the ability to communicate using language they understand.</p>
<p class="p1">
<p class="p1">I&#8217;ve often had to put aside my idealism and promote compromise. I&#8217;ve also had to become humble and admit that sometimes the front-end is not the place where everything should live. (But I still think there&#8217;s a whole lot of logic on the server that shouldn&#8217;t be there. Again, another topic for another post). The benefit to engaging developers across architectural boundaries and striving to teach is that I&#8217;ve been able to learn a lot. I&#8217;ve learned how to effectively test drive <a href="http://pivotal.github.com/jasmine/"><span class="s1">JavaScript</span></a> (/hattip <a href="http://twitter.com/searls"><span class="s1">@searls</span></a>), how to build scalable, object-oriented CSS/HTML, how to achieve an appropriate <a href="http://documentcloud.github.com/backbone/"><span class="s1">separation of concerns</span></a> on the front-end, and how to translate n-tier architecture principles from the server-side to my client-side code. Being at a company like Pillar has provided a rich environment in which to grow; it&#8217;s something I&#8217;m very grateful for.</p>
<p class="p2">
<p class="p1"><strong>The Path to Agility</strong></p>
<p class="p2">
<p class="p1">Many of my co-workers attended the <a href="http://twitter.com/#!/search/%23pathtoagility">#pathtoagility</a> conference in Ohio this week. I wasn&#8217;t able to attend but I think it&#8217;s fitting to end a post about my own personal &#8220;path to agility&#8221; with some forward looking thoughts that can help you (and me) to continue on that path. Software development is evolving and changing; set yourself up for success by being willing to evolve and change right along with it. Agility is more than process or technical solutions; it involves integrity, accountability and a fundamental paradigm shift in your way of thinking. Continue to look for ways you can shift your thinking. Be open-minded. Teaching is a powerful exercise in self examination and growth; try to spend time teaching those around you, it&#8217;s worth the investment.</p>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davemo.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davemo.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davemo.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davemo.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davemo.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davemo.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davemo.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davemo.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davemo.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davemo.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davemo.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davemo.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davemo.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davemo.wordpress.com/197/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davemo.wordpress.com&amp;blog=4024899&amp;post=197&amp;subd=davemo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davemo.wordpress.com/2011/05/27/immersed-in-agile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ead076bf445f9b50e3c094300e4690e9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davemo</media:title>
		</media:content>
	</item>
		<item>
		<title>Sad Country Rock Jam</title>
		<link>http://davemo.wordpress.com/2011/03/29/sad-country-rock-jam/</link>
		<comments>http://davemo.wordpress.com/2011/03/29/sad-country-rock-jam/#comments</comments>
		<pubDate>Wed, 30 Mar 2011 05:38:58 +0000</pubDate>
		<dc:creator>davemo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://davemo.wordpress.com/2011/03/29/sad-country-rock-jam/</guid>
		<description><![CDATA[SadCountryRockJam.m4a Listen on Posterous Spent some time with the Alesis DM10 Studio kit I rented from Long &#38; McQuade this past weekend. Didn&#8217;t do a whole lot of cleanup on the track (there&#8217;s some pop and hiss when recording via my X3 Live in Garageband that I can&#8217;t sort out). Anyways, this was about 90 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davemo.wordpress.com&amp;blog=4024899&amp;post=195&amp;subd=davemo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div class='posterous_autopost'>
<div class='p_embed p_audio_embed'> <a href="http://blog.davemo.com/sad-country-rock-jam"><img alt="" src="http://posterous.com/images/filetypes/unknown.png" /></a>
<div class='p_embed_description'> <span class='p_id3'>SadCountryRockJam.m4a</span> <a href="http://blog.davemo.com/sad-country-rock-jam">Listen on Posterous</a> </div>
</p></div>
</p>
<div>
<div><span>Spent some time with the Alesis DM10 Studio kit I rented from Long &amp; McQuade this past weekend. Didn&#8217;t do a whole lot of cleanup on the track (there&#8217;s some pop and hiss when recording via my X3 Live in Garageband that I can&#8217;t sort out). Anyways, this was about 90 minutes of playing around with the drum kit and my other instruments, here&#8217;s the full list of tools used:</span></div>
<div>
<ul>
<li><a href="http://line6.com/podx3live/">POD X3 Live</a></li>
<li><a href="http://www.alesis.com/dm10studiokit">Alesis DM10 Studio</a></li>
<li><a href="http://www.apple.com/macbookair/">Macbook Air</a></li>
<li><a href="http://www.apple.com/ilife/garageband/">Garageband (iLife &#8217;11)</a></li>
<li><a href="http://www.ibanez.com/BassGuitars/model-SR300M">Ibanez Soundgear SR300M 4-String Bass</a></li>
<li><a href="http://www.prsguitars.com/25thsecustom24/index.html">PRS SE Custom 24 Electric Guitar</a></li>
</ul>
<div>Hoping I can get some more time learning how to eliminate some of the pop/hiss but so far I&#8217;m pretty happy with the ability to record demo quality stuff with this setup <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </div>
<p />
<p /></div>
</p></div>
</p></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davemo.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davemo.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davemo.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davemo.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davemo.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davemo.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davemo.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davemo.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davemo.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davemo.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davemo.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davemo.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davemo.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davemo.wordpress.com/195/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davemo.wordpress.com&amp;blog=4024899&amp;post=195&amp;subd=davemo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davemo.wordpress.com/2011/03/29/sad-country-rock-jam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ead076bf445f9b50e3c094300e4690e9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davemo</media:title>
		</media:content>

		<media:content url="http://posterous.com/images/filetypes/unknown.png" medium="image" />
	</item>
		<item>
		<title>iPad vector drawing</title>
		<link>http://davemo.wordpress.com/2011/03/19/ipad-vector-drawing/</link>
		<comments>http://davemo.wordpress.com/2011/03/19/ipad-vector-drawing/#comments</comments>
		<pubDate>Sun, 20 Mar 2011 00:17:51 +0000</pubDate>
		<dc:creator>davemo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://davemo.wordpress.com/2011/03/19/ipad-vector-drawing/</guid>
		<description><![CDATA[Andy and I spent about 30 minutes collaborating on this drawing in the Ink Pad app on my iPad. He was the &#8220;creative director&#8221;. I asked him what to draw and he said &#8220;snowman!&#8221;. Then nearing completion it was determined the art direction required an icicle sword and pirate hat to complete the vision. Who [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davemo.wordpress.com&amp;blog=4024899&amp;post=191&amp;subd=davemo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div class='posterous_autopost'>Andy and I spent about 30 minutes collaborating on this drawing in the Ink Pad app on my iPad. He was the &#8220;creative director&#8221;. I asked him what to draw and he said &#8220;snowman!&#8221;. Then nearing completion it was determined the art direction required an icicle sword and pirate hat to complete the vision. Who am I to argue with the creative director! <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
<div class='p_embed p_image_embed'> <a href="http://davemo.files.wordpress.com/2011/03/drawing-png-scaled-1000.jpg"><img alt="Drawing" height="633" src="http://davemo.files.wordpress.com/2011/03/drawing-png-scaled-1000.jpg?w=500&#038;h=633" width="500" /></a> </div>
</p></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davemo.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davemo.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davemo.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davemo.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davemo.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davemo.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davemo.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davemo.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davemo.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davemo.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davemo.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davemo.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davemo.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davemo.wordpress.com/191/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davemo.wordpress.com&amp;blog=4024899&amp;post=191&amp;subd=davemo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davemo.wordpress.com/2011/03/19/ipad-vector-drawing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ead076bf445f9b50e3c094300e4690e9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davemo</media:title>
		</media:content>

		<media:content url="http://davemo.files.wordpress.com/2011/03/drawing-png-scaled-1000.jpg?w=237" medium="image">
			<media:title type="html">Drawing</media:title>
		</media:content>
	</item>
		<item>
		<title>Spacey Acoustic Groove</title>
		<link>http://davemo.wordpress.com/2011/03/11/spacey-acoustic-groove/</link>
		<comments>http://davemo.wordpress.com/2011/03/11/spacey-acoustic-groove/#comments</comments>
		<pubDate>Sat, 12 Mar 2011 03:50:38 +0000</pubDate>
		<dc:creator>davemo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://davemo.wordpress.com/2011/03/11/spacey-acoustic-groove/</guid>
		<description><![CDATA[Even though I only have a first generation iPad i can still rock it out with garage band. What a cool little app, I put this together in about an hour just playing around. Super fun<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davemo.wordpress.com&amp;blog=4024899&amp;post=189&amp;subd=davemo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div class='posterous_autopost'>Even though I only have a first generation iPad i can still rock it out with garage band. What a cool little app, I put this together in about an hour just playing around. Super fun <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />         </div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davemo.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davemo.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davemo.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davemo.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davemo.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davemo.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davemo.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davemo.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davemo.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davemo.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davemo.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davemo.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davemo.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davemo.wordpress.com/189/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davemo.wordpress.com&amp;blog=4024899&amp;post=189&amp;subd=davemo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davemo.wordpress.com/2011/03/11/spacey-acoustic-groove/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ead076bf445f9b50e3c094300e4690e9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davemo</media:title>
		</media:content>
	</item>
		<item>
		<title>Front End Web Debugging Techniques : Isolation</title>
		<link>http://davemo.wordpress.com/2010/11/05/front-end-web-debugging-techniques-isolation/</link>
		<comments>http://davemo.wordpress.com/2010/11/05/front-end-web-debugging-techniques-isolation/#comments</comments>
		<pubDate>Sat, 06 Nov 2010 04:29:49 +0000</pubDate>
		<dc:creator>davemo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://davemo.wordpress.com/2010/11/05/front-end-web-debugging-techniques-isolation/</guid>
		<description><![CDATA[The bug card you have says some buttons aren&#8217;t appearing properly in IE7 and the latest Chrome. So you dive in with your front end tweaker and start disabling styles dynamically hoping you can affect some change in the cascade that will fix the bug live in the browser right there in front of you. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davemo.wordpress.com&amp;blog=4024899&amp;post=180&amp;subd=davemo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>
<a href='http://davemo.wordpress.com/2010/11/05/front-end-web-debugging-techniques-isolation/front-end-web-debugging-techniques-isolation-2/' title='Front End Web Debugging Techniques : Isolation'><img data-attachment-id='182' data-orig-size='1000,608' data-liked='0'width="150" height="91" src="http://davemo.files.wordpress.com/2010/11/screen_shot_2010-11-05_at_10-14-39_pm-scaled10001.png?w=150&#038;h=91" class="attachment-thumbnail" alt="Front End Web Debugging Techniques : Isolation" title="Front End Web Debugging Techniques : Isolation" /></a>
<a href='http://davemo.wordpress.com/2010/11/05/front-end-web-debugging-techniques-isolation/front-end-web-debugging-techniques-isolation-3/' title='Front End Web Debugging Techniques : Isolation'><img data-attachment-id='183' data-orig-size='1000,608' data-liked='0'width="150" height="91" src="http://davemo.files.wordpress.com/2010/11/screen_shot_2010-11-05_at_10-14-39_pm-scaled1000.png?w=150&#038;h=91" class="attachment-thumbnail" alt="Front End Web Debugging Techniques : Isolation" title="Front End Web Debugging Techniques : Isolation" /></a>

<p />
<div>The bug card you have says some buttons aren&#8217;t appearing properly in IE7 and the latest Chrome. So you dive in with your front end tweaker and start disabling styles dynamically hoping you can affect some change in the cascade that will fix the bug live in the browser right there in front of you. Bam! Looks good in Firefox/Chrome and then you open IE and things go to hell. Sound familiar?</div>
<p />
<div>It&#8217;s at this point that you should really stop what you&#8217;re doing and try to isolate the problem. I&#8217;ve spent more than enough time hacking in this way to know that it&#8217;s a lost cause and infinitely frustrating to boot. The best way to fix a rendering issue in a case like this is to isolate your problem so you can control the number of variables you are testing.</div>
<p />
<div>Here&#8217;s how I like to break down my isolation debugging process:</div>
</p></div>
<p />
<div><span style="font-size:small;"><strong>1. Create a Test Case</strong></span></div>
<p />
<div style="padding-left:30px;">Open a new html file in Textmate or your favorite code editor and create a brand new HTML page. I like to keep a skeleton page so I can do this quickly. This page should have no stylesheets or scripts loaded.</div>
<div>
<p><a href="http://gist.github.com/665184">http://gist.github.com/665184</a></p>
</div>
<div>
<p />
<div><strong>2. Replicate the Environment</strong></div>
<p />
<div style="padding-left:30px;">Bring the HTML in question into your sample page as it appears in your production code. Also bring only the CSS that applies to those elements and put them in a style block in the head of your sample page.</div>
<div>
<p><a href="http://gist.github.com/665183">http://gist.github.com/665183</a></p>
</div>
<p />
<div><strong>3. Verify</strong></div>
<p />
<div style="padding-left:30px;">You probably have some assumptions about what you think the problem is, this is the step where you verify that. Open your sample page in the browsers you want to test in and see what kind of results you get. The goal here is to eliminate the thousands of lines of other CSS and JavaScript that might be altering the way your markup is displayed.</div>
<div style="padding-left:30px;"><a href='http://posterous.com/getfile/files.posterous.com/temp-2010-11-05/zgelHzqcGjdDEzxrqCqezckjuqlEidqnznxqsdJqtnxCgEBkwjiDJbszfltE/Screen_shot_2010-11-05_at_10.13.57_PM.png.scaled1000.png'><img src="http://posterous.com/getfile/files.posterous.com/temp-2010-11-05/zgelHzqcGjdDEzxrqCqezckjuqlEidqnznxqsdJqtnxCgEBkwjiDJbszfltE/Screen_shot_2010-11-05_at_10.13.57_PM.png.scaled500.png" width="500" height="270" /></a> <a href='http://davemo.files.wordpress.com/2010/11/screen_shot_2010-11-05_at_10-14-39_pm-scaled1000.png'><img src="http://davemo.files.wordpress.com/2010/11/screen_shot_2010-11-05_at_10-14-39_pm-scaled1000.png?w=500&#038;h=304" width="500" height="304" /></a> </div>
<p />
<div><strong>4. Refactor</strong></div>
<p />
<div style="padding-left:30px;">Once you&#8217;ve verified things are behaving the way you want you should probably refactor that HTML and CSS to contain less presentation in your markup. Often markup from legacy applications has been touched by many different people with varying interpretations about how to write HTML; that&#8217;s ok but given you spent the time to isolate this problem you may as well do some cleanup.</div>
<p />
<div><strong>5. Verify &#8230; Again</strong></div>
<p />
<div style="padding-left:30px;">You&#8217;ve made changes, run your test page through the browsers you are testing for again. Repeat step 4 and 5 until you&#8217;ve got a good baseline to work with. It&#8217;s also good to remember the answer to <a href="http://dowebsitesneedtolookexactlythesameineverybrowser.com">http://dowebsitesneedtolookexactlythesameineverybrowser.com</a>&nbsp;at this point. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </div>
<p />
<div><strong>6. Integrate</strong></div>
<p />
<div style="padding-left:30px;">You were able to eliminate a bunch of redundant CSS selectors and redundant markup. Great! Now it&#8217;s time to inject your newly refactored code back into the mess of 50 CSS and 40 javascript files. This can be challenging based on how many dependencies you touched in your refactoring but at least you have a baseline of what to expect now.</div>
<div style="padding-left:30px;">Integration is going to result in some more rendering anomalies but now you have a core set of solid CSS/HTML that you know will work. What you do now is go through Firebug/Webkit Inspector and start disabling styles in the cascade that also affect your elements until you get the result you are looking for.</div>
</p></div>
<p><strong><span style="font-size:large;">Conclusions</span></strong></p>
<p>You will probably still have to fiddle but at least you will have eliminated a significant amount of frustration by isolating the problem and proving out your assumptions about how the markup and css will behave in other browsers. Of course you could avoid a significant amount of this cross browser troubleshooting by using something like <a href="http://compass-style.org/docs/">Compass</a> and <a href="http://brandonmathis.com/blog/2010/09/21/fast-color-theming-with-compass-and-sass/">SASS</a>, but that&#8217;s a topic for another blog post <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>I hope this was helpful to you and I wish you luck on improving your front end debugging process and reducing the amount of frustration experienced.</p>
</p></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davemo.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davemo.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davemo.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davemo.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davemo.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davemo.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davemo.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davemo.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davemo.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davemo.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davemo.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davemo.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davemo.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davemo.wordpress.com/180/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davemo.wordpress.com&amp;blog=4024899&amp;post=180&amp;subd=davemo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davemo.wordpress.com/2010/11/05/front-end-web-debugging-techniques-isolation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ead076bf445f9b50e3c094300e4690e9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davemo</media:title>
		</media:content>

		<media:content url="http://davemo.files.wordpress.com/2010/11/screen_shot_2010-11-05_at_10-14-39_pm-scaled10001.png?w=150" medium="image">
			<media:title type="html">Front End Web Debugging Techniques : Isolation</media:title>
		</media:content>

		<media:content url="http://davemo.files.wordpress.com/2010/11/screen_shot_2010-11-05_at_10-14-39_pm-scaled1000.png?w=150" medium="image">
			<media:title type="html">Front End Web Debugging Techniques : Isolation</media:title>
		</media:content>

		<media:content url="http://posterous.com/getfile/files.posterous.com/temp-2010-11-05/zgelHzqcGjdDEzxrqCqezckjuqlEidqnznxqsdJqtnxCgEBkwjiDJbszfltE/Screen_shot_2010-11-05_at_10.13.57_PM.png.scaled500.png" medium="image" />

		<media:content url="http://davemo.files.wordpress.com/2010/11/screen_shot_2010-11-05_at_10-14-39_pm-scaled1000.png?w=300" medium="image" />
	</item>
		<item>
		<title>My first foray into Minecraft multiplayer, joined a random server and this is what I see, epic :)</title>
		<link>http://davemo.wordpress.com/2010/09/12/my-first-foray-into-minecraft-multiplayer-joined-a-random-server-and-this-is-what-i-see-epic/</link>
		<comments>http://davemo.wordpress.com/2010/09/12/my-first-foray-into-minecraft-multiplayer-joined-a-random-server-and-this-is-what-i-see-epic/#comments</comments>
		<pubDate>Mon, 13 Sep 2010 05:18:24 +0000</pubDate>
		<dc:creator>davemo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://davemo.wordpress.com/2010/09/12/my-first-foray-into-minecraft-multiplayer-joined-a-random-server-and-this-is-what-i-see-epic/</guid>
		<description><![CDATA[via Seesmic Desktop<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davemo.wordpress.com&amp;blog=4024899&amp;post=175&amp;subd=davemo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div class='posterous_autopost'>
<p><a href='http://davemo.files.wordpress.com/2010/09/screen_shot_2010-09-12_at_11-03-34_pm-scaled1000.png'><img src="http://davemo.files.wordpress.com/2010/09/screen_shot_2010-09-12_at_11-03-34_pm-scaled1000.png?w=500&#038;h=313" width="500" height="313" /></a> </p>
<div class="posterous_quote_citation">via <a href="http://desktop.seesmic.com/">Seesmic Desktop</a></div>
</p></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davemo.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davemo.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davemo.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davemo.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davemo.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davemo.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davemo.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davemo.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davemo.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davemo.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davemo.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davemo.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davemo.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davemo.wordpress.com/175/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davemo.wordpress.com&amp;blog=4024899&amp;post=175&amp;subd=davemo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davemo.wordpress.com/2010/09/12/my-first-foray-into-minecraft-multiplayer-joined-a-random-server-and-this-is-what-i-see-epic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ead076bf445f9b50e3c094300e4690e9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davemo</media:title>
		</media:content>

		<media:content url="http://davemo.files.wordpress.com/2010/09/screen_shot_2010-09-12_at_11-03-34_pm-scaled1000.png?w=300" medium="image" />
	</item>
		<item>
		<title>Focus is the Glue</title>
		<link>http://davemo.wordpress.com/2010/09/01/focus-is-the-glue/</link>
		<comments>http://davemo.wordpress.com/2010/09/01/focus-is-the-glue/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 03:40:14 +0000</pubDate>
		<dc:creator>davemo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://davemo.wordpress.com/2010/09/01/focus-is-the-glue/</guid>
		<description><![CDATA[I&#039;ve been playing a lot of basketball at work these days on lunch and coffee breaks. As a programmer who sits most of the day, it&#039;s nice to have a place to go to spend some energy. I&#039;ve been keeping track of my progress in shooting free throws and my percentage has been steadily improving. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davemo.wordpress.com&amp;blog=4024899&amp;post=171&amp;subd=davemo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div class='posterous_autopost'><a href='http://davemo.files.wordpress.com/2010/09/basketball-scaled-1000.jpg'><img src="http://davemo.files.wordpress.com/2010/09/basketball-scaled-1000.jpg?w=500&#038;h=333" width="500" height="333" /></a>
<p>I&#039;ve been playing a lot of basketball at work these days on lunch and coffee breaks. As a programmer who sits most of the day, it&#039;s nice to have a place to go to spend some energy. I&#039;ve been keeping track of my progress in shooting free throws and my percentage has been steadily improving. I think I shot 80% last week (using a general warmup and then 10 in a row as my benchmark). I had what I like to call a &quot;micro-epiphany&quot; the other day when I went out to shoot baskets.  I started thinking about what it takes to be successful at basketball and realized that there are two primary areas of skill required: <b>mechanics</b> and <b>focus</b>.</p>
<p />
<div>To succeed in putting the ball through the hoop you have to be solid in your mechanics. Your guide hand needs to support, but not influence, the weight of the ball on your shooting hand. The ball should be positioned in your shooting hand in front of your head and not above it. When you release the ball you need to have a proper follow-through that directs and puts the proper amount of spin on it. The amount of weight you put into your shot is also influenced by the usage of your legs and the proportion of force you exert with your arms. When you break it all down from a mechanics point of view there are lots of things going on in a shot. Add in other variables like juking defenders, shooting from the triple-threat position, jump-shots and you can see how the number of points of failure in the mechanics of a shot can grow exponentially. In order to combine all the elements of a successful shot you require an understanding of all these mechanics; more importantly you need to have focus.</div>
<p />
<div>Focus is like the glue that holds all the pieces together. When I was learning to shoot in high school we would do many drills that broke down each of the components of a shot into the basic parts. It&#039;s necessary to break things down when you are working with complex processes because people, by nature, develop bad habits. I haven&#039;t played ball competitively since the end of grade 12 and it was surprising to me how bad my shot had become when I first picked it up again almost 6 weeks ago. Luckily I had a solid foundation of skills and the knowledge of how to do &quot;corrective surgery&quot; on my shot techniques that I was able to improve significantly and bring my shooting percentage up. (It remains to be seen if I can still perform under the pressures of defense and actually shoot well when playing against other players). However, even if I was perfect in all of the mechanics I would fail to make my shots count if I didn&#039;t have a focus on what I was doing. It&#039;s hard to describe it accurately so I&#039;ll attempt to convey a brain dump in words of what goes on inside my head during a shot when I&#039;m attempting to focus.</div>
<p />
<div>&quot;Ok, setting up for a shot, feet are planted, <b>I know what I&#039;m going to do</b>.&quot;</div>
<div>&quot;The <b>ball is going to go in</b> the hoop, I&#039;m aiming for the back of the rim because historically that&#039;s where I hit a higher percentage of my shots&quot;</div>
<div>&quot;Good leg extension, I need to followthrough with my hand and point to the rim. <a href="http://www.wikihow.com/Be-a-Good-Basketball-Shooter">Don&#039;t forget to reach for the cookies</a>&quot;.</div>
<div>&quot;The <b>ball is going to go in</b>, I aimed for the back of the rim.&quot;</div>
<div>&quot;Release felt good, <b>that shot is going in</b>.&quot;</div>
<p />
<div>I don&#039;t know if that accurately conveys what happens in nearly a microsecond, but it&#039;s roughly what goes on in my head during a successful shot. The things I&#039;ve bolded are what I believe to be the most important parts of making that shot. Here&#039;s the breakdown as I can categorize it:</div>
<div>
<ol>
<li>Have a plan.</li>
<li>Reiterate the plan.</li>
<li>Reinforce good habits I know.</li>
<li>Express confidence in the plan. Reiterate again.</li>
<li>Celebrate victory upon execution.</li>
</ol>
<div>Having a plan is important. It helps focus my energy into a consistent framework that I know has worked in the past. Reiterating things helps me to re-focus if distractions start to creep into my mind. Talking to myself about the good habits I&#039;ve developed helps me to avoid falling into the bad ones. Expressing confidence solidifies the action I&#039;m about to take and removes any doubt in my mind that what I&#039;m about to do will be successful. And claiming victory, which may seem unimportant, is crucial to seeing that ball go through the hoop. The last few moments before the ball leaves my hand are a critical point in the timeline of the shot. Everything up to that point has been mechanics but once the ball leaves my hand I can&#039;t let down in my mental focus. It&#039;s almost as if I will the ball to go through the hoop and my mental concentration is just the final exclamation point, the stamp of approval, on the entire process.</div>
</p></div>
<p />
<div>&quot;Swish. <b>The ball went into the net. I knew it would.</b> That was a great shot!&quot;</div>
<p />
<div>Once execution is complete and I can see the results of all my hard work I find it helps to reflect on what went well and give myself a pat on the back. Positive reinforcement of this kind works much better than beating myself up over the few mistakes I may have made in the process of taking the shot.</div>
<p />
<div>I&#039;m sure there are many parallels that can be drawn between what I&#039;ve talked about here and other facets of life, but I&#039;ll leave that up to you the reader to do. </div>
<p />
<div>All I know is that it feels good to play ball again. It feels good to <b>focus</b> <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </div>
</p></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davemo.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davemo.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davemo.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davemo.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davemo.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davemo.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davemo.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davemo.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davemo.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davemo.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davemo.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davemo.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davemo.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davemo.wordpress.com/171/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davemo.wordpress.com&amp;blog=4024899&amp;post=171&amp;subd=davemo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davemo.wordpress.com/2010/09/01/focus-is-the-glue/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ead076bf445f9b50e3c094300e4690e9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davemo</media:title>
		</media:content>

		<media:content url="http://davemo.files.wordpress.com/2010/09/basketball-scaled-1000.jpg?w=300" medium="image" />
	</item>
	</channel>
</rss>
