<?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>silk and spinach &#187; design</title>
	<atom:link href="http://silkandspinach.net/category/design/feed/" rel="self" type="application/rss+xml" />
	<link>http://silkandspinach.net</link>
	<description>development, by example</description>
	<lastBuildDate>Wed, 08 Feb 2012 19:09:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='silkandspinach.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>silk and spinach &#187; design</title>
		<link>http://silkandspinach.net</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://silkandspinach.net/osd.xml" title="silk and spinach" />
	<atom:link rel='hub' href='http://silkandspinach.net/?pushpress=hub'/>
		<item>
		<title>Simple Design with Design Patterns</title>
		<link>http://silkandspinach.net/2011/10/28/1315/</link>
		<comments>http://silkandspinach.net/2011/10/28/1315/#comments</comments>
		<pubDate>Fri, 28 Oct 2011 08:01:42 +0000</pubDate>
		<dc:creator>Kevin Rutherford</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[pattern]]></category>

		<guid isPermaLink="false">http://silkandspinach.net/?p=1315</guid>
		<description><![CDATA[In the blog post Simple Design with Design Patterns, Cory Foy runs a thought experiment in which he explores the use of patterns in solving the Game of Life kata. Cory&#8217;s starting point is the intention behind the GoF patterns, coupled with the XP rules of Simple Design and Uncle Bob&#8217;s SOLID principles. Cory stops his analysis [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silkandspinach.net&amp;blog=1064186&amp;post=1315&amp;subd=silkandspinach&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In the blog post <a href="http://blog.coryfoy.com/2011/10/simple-design-with-design-patterns/">Simple Design with Design Patterns</a>, Cory Foy runs a thought experiment in which he explores the use of patterns in solving the <a href="http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life">Game of Life</a> kata. Cory&#8217;s starting point is the <em>intention</em> behind the <a href="http://en.wikipedia.org/wiki/Design_Patterns">GoF</a> patterns, coupled with the XP rules of <a href="http://c2.com/cgi/wiki?XpSimplicityRules">Simple Design</a> and Uncle Bob&#8217;s <a href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod">SOLID</a> principles.</p>
<p>Cory stops his analysis when he has the following model:</p>
<pre>|Cell| &lt;------- |Status|
           |Alive|    |Dead|</pre>
<p>At this point Cory says</p>
<blockquote><p>&#8220;Certainly if we implemented a Cell with a Status object with an AliveStatus class and a DeadStatus class someone, somewhere, should slap us upside the head.&#8221;</p></blockquote>
<p>However, I&#8217;d like to carry on from that point just a little further&#8230;</p>
<p>I like to teach the use of CRC for exploring design, and so I naturally looked at Cory&#8217;s objects from the point of view of their behaviours and responsibilities. Thus it struck me that if we <em>don&#8217;t</em> make the split suggested by Cory, we&#8217;d have a Cell that knows about its position/neighbours <strong>and</strong> knows what change to make when the clock ticks. That would violate the Single Responsibility Principle. So the above split into Cell and Status makes sense from the point of view of responsibilities, if we give the Status object the job of deciding how the Cell should change.</p>
<p>With those responsibilities in mind, a little mental CRC session suggests that, when the clock ticks, the Cell would tell its Status object how many neighbours it had, and ask for a new Status object in return.</p>
<p><pre class="brush: ruby;">
class Cell
  def change
    @status = @status.update_based_on(@number_of_neighbours)
  end
end</pre></p>
<p>The Status objects become Strategy/Policy objects, and thus don&#8217;t seem to need any instance state. All of which means that the Status objects could be <a href="http://c2.com/cgi/wiki?FlyweightPattern">Flyweights</a>, with only one extant instance of each type, referenced by every Cell that happens to be in the corresponding state.</p>
<p>I think this approach could well be worth a punt during the upcoming <a href="http://coderetreat.ning.com/events/event/listByDate?date=2011-12-03">Global Day of Coderetreats</a>&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/silkandspinach.wordpress.com/1315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/silkandspinach.wordpress.com/1315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/silkandspinach.wordpress.com/1315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/silkandspinach.wordpress.com/1315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/silkandspinach.wordpress.com/1315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/silkandspinach.wordpress.com/1315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/silkandspinach.wordpress.com/1315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/silkandspinach.wordpress.com/1315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/silkandspinach.wordpress.com/1315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/silkandspinach.wordpress.com/1315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/silkandspinach.wordpress.com/1315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/silkandspinach.wordpress.com/1315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/silkandspinach.wordpress.com/1315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/silkandspinach.wordpress.com/1315/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silkandspinach.net&amp;blog=1064186&amp;post=1315&amp;subd=silkandspinach&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://silkandspinach.net/2011/10/28/1315/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9c39ead2d025bde14f3f39b20ff7d113?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kevinrutherford</media:title>
		</media:content>
	</item>
		<item>
		<title>too much TemplateMethod</title>
		<link>http://silkandspinach.net/2009/01/04/too-much-templatemethod/</link>
		<comments>http://silkandspinach.net/2009/01/04/too-much-templatemethod/#comments</comments>
		<pubDate>Sun, 04 Jan 2009 11:20:15 +0000</pubDate>
		<dc:creator>Kevin Rutherford</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[reek]]></category>
		<category><![CDATA[refactoring]]></category>

		<guid isPermaLink="false">http://silkandspinach.net/?p=915</guid>
		<description><![CDATA[I&#8217;ve been refactoring a lot during the festive break, and I&#8217;ve noticed that in many cases it was more difficult than I would have liked. Today I think I figured out the reason for that: I use the TemplateMethod pattern too much. When I see a duplicated algorithm, it seems that my natural tendency is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silkandspinach.net&amp;blog=1064186&amp;post=915&amp;subd=silkandspinach&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been refactoring a lot during the festive break, and I&#8217;ve noticed that in many cases it was more difficult than I would have liked. Today I think I figured out the reason for that: I use the TemplateMethod pattern too much.</p>
<p>When I see a duplicated algorithm, it seems that my natural tendency is to push up the skeleton into a superclass. This creates an inheritance relationship within the algorithm, which in turn makes it harder to change. Later, when I do need to change the algorithm, I have to change the superclass and all of the subclasses at the same time. For example, one particular superclass in <a href="http://reek.rubyforge.org/" target="blank">reek</a> contained three or four template methods, which made the subclasses look quite odd; and each little complex of template-plus-overrides significantly hampered design change in each of the others.</p>
<p>Looking back over my programming career I see that I&#8217;ve always had this tendency &#8212; I can see it in my old C++, Java and Ruby code. I wonder why? Is it the cost of extra classes, or my mathematical background, or coding habits ingrained before the rise of object-oriented languages? Who knows (and who cares).</p>
<p>So, note to self: Break out State/Strategy objects (and in Ruby this includes Procs) instead of always relying on TemplateMethod.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/silkandspinach.wordpress.com/915/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/silkandspinach.wordpress.com/915/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/silkandspinach.wordpress.com/915/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/silkandspinach.wordpress.com/915/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/silkandspinach.wordpress.com/915/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/silkandspinach.wordpress.com/915/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/silkandspinach.wordpress.com/915/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/silkandspinach.wordpress.com/915/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/silkandspinach.wordpress.com/915/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/silkandspinach.wordpress.com/915/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/silkandspinach.wordpress.com/915/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/silkandspinach.wordpress.com/915/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/silkandspinach.wordpress.com/915/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/silkandspinach.wordpress.com/915/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silkandspinach.net&amp;blog=1064186&amp;post=915&amp;subd=silkandspinach&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://silkandspinach.net/2009/01/04/too-much-templatemethod/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9c39ead2d025bde14f3f39b20ff7d113?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kevinrutherford</media:title>
		</media:content>
	</item>
		<item>
		<title>better after using Rails?</title>
		<link>http://silkandspinach.net/2008/09/29/better-after-using-rails/</link>
		<comments>http://silkandspinach.net/2008/09/29/better-after-using-rails/#comments</comments>
		<pubDate>Mon, 29 Sep 2008 06:50:11 +0000</pubDate>
		<dc:creator>Kevin Rutherford</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[refactoring]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[programming quality rails]]></category>

		<guid isPermaLink="false">http://silkandspinach.wordpress.com/?p=849</guid>
		<description><![CDATA[My good friend Clarke Ching asks an interesting question: Could most programmers become better programmers (considerably more productive) by working with Ruby on Rails for a while? I&#8217;m not a huge fan of Rails, and I&#8217;ll post more of an answer here later, when I have a little time. In the meantime, what do you [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silkandspinach.net&amp;blog=1064186&amp;post=849&amp;subd=silkandspinach&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>My good friend Clarke Ching <a href="http://www.clarkeching.com/2008/09/dereks-story.html">asks an interesting question</a>: <strong>Could most programmers become better programmers (considerably more productive) by working with Ruby on Rails for a while?</strong></p>
<p>I&#8217;m not a huge fan of Rails, and I&#8217;ll post more of an answer here later, when I have a little time.  In the meantime, what do you think? Can Rails teach everyone to be better?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/silkandspinach.wordpress.com/849/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/silkandspinach.wordpress.com/849/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/silkandspinach.wordpress.com/849/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/silkandspinach.wordpress.com/849/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/silkandspinach.wordpress.com/849/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/silkandspinach.wordpress.com/849/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/silkandspinach.wordpress.com/849/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/silkandspinach.wordpress.com/849/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/silkandspinach.wordpress.com/849/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/silkandspinach.wordpress.com/849/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/silkandspinach.wordpress.com/849/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/silkandspinach.wordpress.com/849/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/silkandspinach.wordpress.com/849/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/silkandspinach.wordpress.com/849/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silkandspinach.net&amp;blog=1064186&amp;post=849&amp;subd=silkandspinach&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://silkandspinach.net/2008/09/29/better-after-using-rails/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9c39ead2d025bde14f3f39b20ff7d113?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kevinrutherford</media:title>
		</media:content>
	</item>
		<item>
		<title>listing problems instead of solutions</title>
		<link>http://silkandspinach.net/2007/04/28/listing-problems-instead-of-solutions/</link>
		<comments>http://silkandspinach.net/2007/04/28/listing-problems-instead-of-solutions/#comments</comments>
		<pubDate>Sat, 28 Apr 2007 21:32:11 +0000</pubDate>
		<dc:creator>Kevin Rutherford</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[kata]]></category>
		<category><![CDATA[tdd]]></category>

		<guid isPermaLink="false">http://silkandspinach.wordpress.com/2007/04/28/listing-problems-instead-of-solutions/</guid>
		<description><![CDATA[My programming to-do lists now consist of problems instead of solutions, and consequently my designs are greatly improved<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silkandspinach.net&amp;blog=1064186&amp;post=742&amp;subd=silkandspinach&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just noticed that one of my practices has changed subtly, probably sometime during the last six months or so:</p>
<p>I&#8217;ve always (ie. at least for the last twenty-five years) kept a to-do list during each programming episode.  The list begins with one entry, describing the goal I&#8217;m working towards.  And as I read and write code, new entries are added to make sure I go back and fix or refactor everything I see along the way.  Until recently, those additional entries tended to describe an outcome &#8211; &#8220;split class Foo to create Bar and Xyzzy&#8221;, or &#8220;wrap x and y into a Mouse class&#8221;, for example.  But recently I&#8217;ve noticed myself tending to write entries that describe the <em>problem</em> &#8211; &#8220;class Foo too large&#8221;, &#8220;x,y travel around together&#8221;.</p>
<p>I have no idea how, why or when this change happened, but I&#8217;m pleased it did.  Between the time I write a particular to-do item and the time I finally get around to executing it, I may significantly change the code in that area.  Or I may learn something about the code and where it wants to go next.  Or the problem may disappear, as a side-effect of some other change.  Either way, the solution I might have on my to-do list has a chance of being inappropriate now that the code and I have moved on.  So by listing the problem as I originally saw it, I&#8217;m giving myself a much better chance of creating the right solution for it &#8211; because I&#8217;m deciding on that solution in the presence of the full facts.</p>
<p>I&#8217;ve recently been re-doing a few kata that I first tried a couple of years ago.  I&#8217;ve noticed that my results are dramatically better now, mostly I think due to delaying the moment at which I decide how to solve each micro-problem.  This effect is an example of Mary Poppendieck&#8217;s <em><strong>&#8220;decide as late as possible&#8221;</strong></em> maxim.  There are clear benefits in terms of the quality of my designs; and there are psychological benefits too, because I don&#8217;t have to spend time trying to remember why I wanted to do each item on the list.  Everyone wins.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/silkandspinach.wordpress.com/742/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/silkandspinach.wordpress.com/742/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/silkandspinach.wordpress.com/742/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/silkandspinach.wordpress.com/742/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/silkandspinach.wordpress.com/742/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/silkandspinach.wordpress.com/742/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/silkandspinach.wordpress.com/742/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/silkandspinach.wordpress.com/742/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/silkandspinach.wordpress.com/742/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/silkandspinach.wordpress.com/742/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/silkandspinach.wordpress.com/742/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/silkandspinach.wordpress.com/742/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/silkandspinach.wordpress.com/742/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/silkandspinach.wordpress.com/742/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/silkandspinach.wordpress.com/742/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/silkandspinach.wordpress.com/742/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silkandspinach.net&amp;blog=1064186&amp;post=742&amp;subd=silkandspinach&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://silkandspinach.net/2007/04/28/listing-problems-instead-of-solutions/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9c39ead2d025bde14f3f39b20ff7d113?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kevinrutherford</media:title>
		</media:content>
	</item>
		<item>
		<title>introduction to behaviour-driven development</title>
		<link>http://silkandspinach.net/2005/09/30/introduction-to-behaviour-driven-development/</link>
		<comments>http://silkandspinach.net/2005/09/30/introduction-to-behaviour-driven-development/#comments</comments>
		<pubDate>Fri, 30 Sep 2005 09:12:46 +0000</pubDate>
		<dc:creator>Kevin Rutherford</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[tdd]]></category>

		<guid isPermaLink="false">http://silkandspinach.wordpress.com/2005/09/30/introduction-to-behaviour-driven-development/</guid>
		<description><![CDATA[Introducing a behaviour-driven development framework for Ruby<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silkandspinach.net&amp;blog=1064186&amp;post=584&amp;subd=silkandspinach&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.daveastels.com/?p=53">Dave Astels</a> has posted a link to his upcoming article introducing <em>behaviour-driven</em> (as opposed to test-driven) development.  As you know, I&#8217;ve long complained about the term &#8220;TDD&#8221;, and Dave&#8217;s article makes the case very nicely.</p>
<p>The article also provides a brief overview of <strong>rSpec</strong>, a new framework for BDD in Ruby.  Great package, shame about the name (say it aloud)&#8230;</p>
<p>Once of my current bug-bears is the lack of design done by agile teams.  I know we all chant &#8220;design is good, so we design all the time&#8221;, but in reality it just doesn&#8217;t happen.  Switching from legacy habits into test-first thinking and good object design is a really hard jump.  The programmers&#8217; habits have to be turned inside out, and the focus on <em>tests</em> seems to me to have a negative effect.  I hope the emergence of BDD frameworks like rSpec and <a href="http://www.ibiblio.org/maven/jbehave/current/website/">jBehave</a> will help to make it easier for programmers to make that transition.</p>
<p><em>Update, later the same day</em><br />
Elizabeth Keogh posted a nice description on the <a href="http://groups.yahoo.com/group/extremeprogramming/message/113105">extremeprogramming Yahoo group</a>, showing that switching to BDD is not just about replacing &#8220;test&#8221; by &#8220;should&#8221;.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/silkandspinach.wordpress.com/584/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/silkandspinach.wordpress.com/584/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/silkandspinach.wordpress.com/584/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/silkandspinach.wordpress.com/584/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/silkandspinach.wordpress.com/584/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/silkandspinach.wordpress.com/584/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/silkandspinach.wordpress.com/584/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/silkandspinach.wordpress.com/584/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/silkandspinach.wordpress.com/584/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/silkandspinach.wordpress.com/584/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/silkandspinach.wordpress.com/584/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/silkandspinach.wordpress.com/584/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/silkandspinach.wordpress.com/584/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/silkandspinach.wordpress.com/584/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/silkandspinach.wordpress.com/584/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/silkandspinach.wordpress.com/584/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silkandspinach.net&amp;blog=1064186&amp;post=584&amp;subd=silkandspinach&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://silkandspinach.net/2005/09/30/introduction-to-behaviour-driven-development/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9c39ead2d025bde14f3f39b20ff7d113?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kevinrutherford</media:title>
		</media:content>
	</item>
		<item>
		<title>five design skills</title>
		<link>http://silkandspinach.net/2005/09/07/five-design-skills/</link>
		<comments>http://silkandspinach.net/2005/09/07/five-design-skills/#comments</comments>
		<pubDate>Wed, 07 Sep 2005 13:05:15 +0000</pubDate>
		<dc:creator>Kevin Rutherford</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[objectthinking]]></category>

		<guid isPermaLink="false">http://silkandspinach.wordpress.com/2005/09/07/five-design-skills/</guid>
		<description><![CDATA[Being a link to an article about design skills<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silkandspinach.net&amp;blog=1064186&amp;post=575&amp;subd=silkandspinach&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>James Shore lists <a href="http://www.jamesshore.com/Blog/Five-Design-Skills.html" title="Successful Software">Five Design Skills Every Programmer Should Have</a>.  I don&#8217;t believe they are too much to ask.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/silkandspinach.wordpress.com/575/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/silkandspinach.wordpress.com/575/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/silkandspinach.wordpress.com/575/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/silkandspinach.wordpress.com/575/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/silkandspinach.wordpress.com/575/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/silkandspinach.wordpress.com/575/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/silkandspinach.wordpress.com/575/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/silkandspinach.wordpress.com/575/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/silkandspinach.wordpress.com/575/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/silkandspinach.wordpress.com/575/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/silkandspinach.wordpress.com/575/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/silkandspinach.wordpress.com/575/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/silkandspinach.wordpress.com/575/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/silkandspinach.wordpress.com/575/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/silkandspinach.wordpress.com/575/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/silkandspinach.wordpress.com/575/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silkandspinach.net&amp;blog=1064186&amp;post=575&amp;subd=silkandspinach&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://silkandspinach.net/2005/09/07/five-design-skills/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9c39ead2d025bde14f3f39b20ff7d113?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kevinrutherford</media:title>
		</media:content>
	</item>
		<item>
		<title>the ten-minute rules</title>
		<link>http://silkandspinach.net/2005/08/11/the-ten-minute-rules/</link>
		<comments>http://silkandspinach.net/2005/08/11/the-ten-minute-rules/#comments</comments>
		<pubDate>Thu, 11 Aug 2005 14:13:09 +0000</pubDate>
		<dc:creator>Kevin Rutherford</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[planning]]></category>

		<guid isPermaLink="false">http://silkandspinach.wordpress.com/2005/08/11/the-ten-minute-rules/</guid>
		<description><![CDATA[A list of some of my ten-minute rules for software teams<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silkandspinach.net&amp;blog=1064186&amp;post=569&amp;subd=silkandspinach&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When I&#8217;m coaching, I often find myself setting little 10-minute targets to help teams break old habits.  Here are some of my ten-minute rules for software teams:</p>
<ul>
<li> check-in working, tested code at least every ten minutes;</li>
<li> when pairing, switch driver after at most ten minutes;</li>
<li> if a design session lasts more than 10 minutes, it must be attempting to solve a problem that&#8217;s too big to be a single chunk.</li>
</ul>
<p>Because to make these work effectively, a number of other things have to be in place.  Such as a fast build and &#8220;vertical slice&#8221; thinking.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/silkandspinach.wordpress.com/569/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/silkandspinach.wordpress.com/569/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/silkandspinach.wordpress.com/569/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/silkandspinach.wordpress.com/569/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/silkandspinach.wordpress.com/569/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/silkandspinach.wordpress.com/569/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/silkandspinach.wordpress.com/569/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/silkandspinach.wordpress.com/569/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/silkandspinach.wordpress.com/569/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/silkandspinach.wordpress.com/569/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/silkandspinach.wordpress.com/569/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/silkandspinach.wordpress.com/569/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/silkandspinach.wordpress.com/569/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/silkandspinach.wordpress.com/569/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/silkandspinach.wordpress.com/569/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/silkandspinach.wordpress.com/569/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silkandspinach.net&amp;blog=1064186&amp;post=569&amp;subd=silkandspinach&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://silkandspinach.net/2005/08/11/the-ten-minute-rules/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9c39ead2d025bde14f3f39b20ff7d113?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kevinrutherford</media:title>
		</media:content>
	</item>
		<item>
		<title>UML is not a design tool</title>
		<link>http://silkandspinach.net/2005/02/08/uml-is-not-a-design-tool/</link>
		<comments>http://silkandspinach.net/2005/02/08/uml-is-not-a-design-tool/#comments</comments>
		<pubDate>Tue, 08 Feb 2005 14:01:20 +0000</pubDate>
		<dc:creator>Kevin Rutherford</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[UML]]></category>

		<guid isPermaLink="false">http://silkandspinach.wordpress.com/2005/02/08/uml-is-not-a-design-tool/</guid>
		<description><![CDATA[Knowing the UML notation does not make one a designer.  But not knowing that does make one dangerous<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silkandspinach.net&amp;blog=1064186&amp;post=490&amp;subd=silkandspinach&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Yesterday I was speaking to a chap who had just completed a 5-day UML course.  He&#8217;s a manager, and I asked him why he had taken the course.  &#8220;Well now I can at least read the designs people do on my projects.  And hopefully I can now also do some design myself.&#8221;</p>
<p>I&#8217;ve heard these misconceptions many times before &#8211; that UML is either a design tool or (worse) a design process.  It isn&#8217;t.  It&#8217;s a notation, based on an underlying set of concepts.  Knowing UML does not make one capable of design, any more than one can become a chef simply by recognising food types and kitchen utensils.</p>
<p>UML has become an industry in itself.  I can understand the commercial forces that caused it to happen, but I can&#8217;t help feeling that the resulting situation contains more negatives than positives.  Sure, vendors can ply standards-conformant consultancy, CASE tools and training courses, but far too many people think that UML brings an essentially creative and intellectual skill (by which I mean software design) into the broader world.  &#8220;Knowing&#8221; UML does not de-skill analysis or design.  Knowing the UML notation does not make one a designer.  But not knowing that does make one dangerous.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/silkandspinach.wordpress.com/490/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/silkandspinach.wordpress.com/490/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/silkandspinach.wordpress.com/490/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/silkandspinach.wordpress.com/490/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/silkandspinach.wordpress.com/490/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/silkandspinach.wordpress.com/490/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/silkandspinach.wordpress.com/490/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/silkandspinach.wordpress.com/490/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/silkandspinach.wordpress.com/490/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/silkandspinach.wordpress.com/490/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/silkandspinach.wordpress.com/490/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/silkandspinach.wordpress.com/490/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/silkandspinach.wordpress.com/490/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/silkandspinach.wordpress.com/490/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/silkandspinach.wordpress.com/490/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/silkandspinach.wordpress.com/490/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silkandspinach.net&amp;blog=1064186&amp;post=490&amp;subd=silkandspinach&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://silkandspinach.net/2005/02/08/uml-is-not-a-design-tool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9c39ead2d025bde14f3f39b20ff7d113?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kevinrutherford</media:title>
		</media:content>
	</item>
		<item>
		<title>forgetting the user</title>
		<link>http://silkandspinach.net/2005/02/02/forgetting-the-user/</link>
		<comments>http://silkandspinach.net/2005/02/02/forgetting-the-user/#comments</comments>
		<pubDate>Wed, 02 Feb 2005 09:17:34 +0000</pubDate>
		<dc:creator>Kevin Rutherford</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[userexperience]]></category>

		<guid isPermaLink="false">http://silkandspinach.wordpress.com/2005/02/02/forgetting-the-user/</guid>
		<description><![CDATA[Don't you just hate user interfaces that were designed by the database guy?<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silkandspinach.net&amp;blog=1064186&amp;post=482&amp;subd=silkandspinach&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Don&#8217;t you just hate user interfaces that were designed by the database guy?  You know the ones I mean, where the web page consists entirely of two links to &#8216;create&#8217; and &#8216;update&#8217;.  Is it laziness?  Lack of time?  A genuine belief that mice think in SQL?</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/silkandspinach.wordpress.com/482/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/silkandspinach.wordpress.com/482/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/silkandspinach.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/silkandspinach.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/silkandspinach.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/silkandspinach.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/silkandspinach.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/silkandspinach.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/silkandspinach.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/silkandspinach.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/silkandspinach.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/silkandspinach.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/silkandspinach.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/silkandspinach.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/silkandspinach.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/silkandspinach.wordpress.com/482/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silkandspinach.net&amp;blog=1064186&amp;post=482&amp;subd=silkandspinach&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://silkandspinach.net/2005/02/02/forgetting-the-user/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9c39ead2d025bde14f3f39b20ff7d113?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kevinrutherford</media:title>
		</media:content>
	</item>
		<item>
		<title>refactoring is hard</title>
		<link>http://silkandspinach.net/2004/07/23/refactoring-is-hard/</link>
		<comments>http://silkandspinach.net/2004/07/23/refactoring-is-hard/#comments</comments>
		<pubDate>Fri, 23 Jul 2004 19:57:42 +0000</pubDate>
		<dc:creator>Kevin Rutherford</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[legacycode]]></category>
		<category><![CDATA[metrics]]></category>
		<category><![CDATA[refactoring]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://silkandspinach.wordpress.com/2004/07/23/refactoring-is-hard/</guid>
		<description><![CDATA[In which I try to describe the kind of code our team should be aiming for<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silkandspinach.net&amp;blog=1064186&amp;post=395&amp;subd=silkandspinach&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I had an experience a few months ago that yet again raised the question of what kind of skills are required to make XP work.  I was trying to get a team to adopt TDD, and was having very little success.  The reason, it turned out, was that the existing code hadn&#8217;t been written TDD.  Anyone trying to add a new feature incurred a huge time penalty from trying to get to the point of being able to write simple unit tests.</p>
<p>So I stepped back from TDD and tried to get the team to only produce well-factored code from now on.  Another failure, and this time the legacy code was only partly to blame.  It turned out that only two of the fifteen people on the team really understood what well-designed object-oriented code looks like.  The rest wrote working algorithmic code, and were completely blind to the duplications and strong couplings they had created.  For lots of reasons, including timezone differences in some cases, it was impractical to pair with everyone to help them towards an understanding of &#8216;simple&#8217; code.  So I did a few public worked examples via NetMeeting, and still had almost no impact on the code being produced.  I guess that refactoring is a design skill, and that it has to be taught, because most programmers don&#8217;t learn to appreciate &#8216;good&#8217; code in university.<br />
<span id="more-395"></span><br />
Anyhow, pressed for time and somewhat frustrated, I tried another tack.  I wrote up a series of simple metrics that all new code must pass.  And again I publicly refactored a piece of legacy code to remove all duplication, showing at the end that the resulting code did indeed now pass the metrics.  The metrics themselves are purely a response to that particular situation, but may nevertheless prove interesting (they applied to Java code):</p>
<ol>
<li> every JUnit test must run in under 1 second</li>
<li> <a href="http://silkandspinach.wordpress.com/2004/07/16/if/">maximum of 1 if statement per class</a></li>
<li> 0-2 fields per class</li>
<li> 0-1 arguments per method</li>
<li> 1-3 statements per method</li>
<li> fewer than 6 imported classes per class</li>
</ol>
<p>Of course &#8216;bad&#8217; code can still pass these tests.  But I was trying to get across an understanding that each method and class should do only one thing.  So I made it very difficult to find enough space to do two things!</p>
<p>Did they encourage the team to write better code?  I&#8217;ll never know, because the project was soon cancelled&#8230;</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/silkandspinach.wordpress.com/395/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/silkandspinach.wordpress.com/395/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/silkandspinach.wordpress.com/395/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/silkandspinach.wordpress.com/395/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/silkandspinach.wordpress.com/395/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/silkandspinach.wordpress.com/395/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/silkandspinach.wordpress.com/395/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/silkandspinach.wordpress.com/395/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/silkandspinach.wordpress.com/395/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/silkandspinach.wordpress.com/395/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/silkandspinach.wordpress.com/395/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/silkandspinach.wordpress.com/395/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/silkandspinach.wordpress.com/395/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/silkandspinach.wordpress.com/395/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/silkandspinach.wordpress.com/395/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/silkandspinach.wordpress.com/395/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silkandspinach.net&amp;blog=1064186&amp;post=395&amp;subd=silkandspinach&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://silkandspinach.net/2004/07/23/refactoring-is-hard/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9c39ead2d025bde14f3f39b20ff7d113?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kevinrutherford</media:title>
		</media:content>
	</item>
	</channel>
</rss>
