<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>jbrains.ca: Can't stop the learning</title>
    <link>http://www.jbrains.info/blog</link>
    <pubDate>Thu, 02 Oct 2008 02:48:00 GMT</pubDate>
    <description>From the mind of J. B. Rainsberger: software, learning, teaching, playing</description>
    <item>
      <title>"Failing Quickly" via Productivity501</title>
      <link>http://www.jbrains.info/permalink/211</link>
      <description>&lt;p&gt;I started reading productivity501.com about a year ago and have really liked what I&amp;#8217;ve read to date. Occasionally, I see an article there that relates quite directly to agile software development, so I wanted to share that with you. I hope you start reading productivity501.com and enjoy it.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.productivity501.com/failing-quickly/53/"&gt;Failing Quickly&lt;/a&gt; begins&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;Failing can be one of the most productive things you can do.  Most people try to avoid failure. I&#8217;m not saying that this is bad, but in many cases they are just delaying failure to a later point in time.  If something you are doing is going to result in failure you should do your best to make sure it happens sooner rather than later.  With few exceptions, failing now is going to be less expensive (in time, money, mental stress) than failing one year from now.&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;Enjoy the article.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/211&amp;#38;title=%22Failing%20Quickly%22%20via%20Productivity501" id="digg-211" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F211&amp;#38;title=%22Failing+Quickly%22+via+Productivity501"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 02 Oct 2008 02:48:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/211</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>Call for samples of integration tests</title>
      <link>http://www.jbrains.info/permalink/210</link>
      <description>&lt;p&gt;I need your help.&lt;/p&gt;


	&lt;p&gt;At the &lt;a href="http://sqe.com/agiledevpractices"&gt;Better Software Agile Development Practices&lt;/a&gt; conference in November I will present my tutorial entitled Avoid Integration Defects Without Integration Tests. I will describe and demonstrate the design benefits of reducing your reliance on integration tests (specifically end-to-end tests) to gain confidence in the basic correctness of code. I&amp;#8217;d like to take sample integration or end-to-end tests from the audience and turn them into good, focused object tests, but at a busy conference, few audience members prepare such material in advance.&lt;/p&gt;


	&lt;p&gt;Enter you.&lt;/p&gt;


	&lt;p&gt;If you have some end-to-end or integration tests that you&amp;#8217;d like to turn into good, focused object tests that help improve your design while offering the same or better confidence in the correctness of your code, then please &lt;a href="mailto:integration.tests@jbrains.info"&gt;contact me&lt;/a&gt; to receive instructions on how to send me your sample. I will, of course, give you whatever credit you want, or promise not to identify you if you&amp;#8217;d rather remain anonymous. Whether I use the sample in the tutorial, I will work with you to show you how to improve your design through focused, object tests, rather than relying on integration tests.&lt;/p&gt;


	&lt;p&gt;Thanks.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/210&amp;#38;title=Call%20for%20samples%20of%20integration%20tests" id="digg-210" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F210&amp;#38;title=Call+for+samples+of+integration+tests"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 01 Oct 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/210</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>Microtechniques: typing</title>
      <link>http://www.jbrains.info/permalink/209</link>
      <description>&lt;p&gt;I remember Alistair Cockburn presenting a keynote address at XP/Agile Universe 2002 in Chicago. I remember most vividly his comments on microtechniques, a phrase that struck me and has stayed with me since that time. He described how microtechniques enable higher-level improvements by speeding up the rote parts of one&amp;#8217;s work. Put another way, quicker typing buys slack, and since slack compounds, higher-level improvements are significant and inevitable. To write code, we type, and we learn to type by rote. While programming involves much more than typing, programming includes typing, so one can argue convincingly that typing well helps people develop as programmers. I contend that typing combines with knowing your text editor or &lt;span class="caps"&gt;IDE&lt;/span&gt; well to drastically amplify a programmer&amp;#8217;s skill, which explains the typing test badge attached to this entry. I believe my typing speed helps make me a better programmer.&lt;/p&gt;


	&lt;p&gt;At times, though, fast typing gets me into trouble. I do manage to spend too much time typing quickly and not enough time typing thoughtfully. Does this mean, then, that typing quickly really slows me down? I haven&amp;#8217;t measured it closely, so no-one knows the answer; however, I have become conscious of this, which explains why I so easily get up and walk away from the keyboard when things don&amp;#8217;t go well. I know that I need to walk away from the keyboard to avoid letting my quick typing lead me down a rathole and, perhaps more importantly, I know when I come back to the keyboard with better ideas that typing won&amp;#8217;t pose a bottleneck to completing the task. In a sense, I treat typing time as free and feel comfortable taking all the time I need to think. More than anything else, &lt;strong&gt;this&lt;/strong&gt; helps make me a better programmer.&lt;/p&gt;


	&lt;p&gt;Would you do well to take a typing class? Perhaps. I suppose if you can afford to spend an hour per day for three months to practise typing and if you plan to type for more than about 10 more years, then you ought to at least consider it.&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;Suppose a full-time programmer sits at the keyboard prepared to type about four hours per day, half of that time actively typing. If you increase your speed from 30 to 40 words per minute, then you&amp;#8217;d reduce typing time from two hours to 90 minutes. An investment of 65 hours (1 hour per day for three months, meaning 250 / 4 &amp;lt; 65 working days) would return 0.5 hours per day * 250 working days per year * 10 years = 1250 hours of saved typing. I count more than 1920% return over 10 years, or 35% return per year compounded annually for 10 years. (1250 / 65 &amp;gt; 19.23 and (1 + 19.23) ^ (1/10) &amp;#8211; 1 &amp;gt; 0.35) The payback period for the 65 hours of investment is approximately 130 days (65 working days * 0.5 hours saved per day) or 7 working months (12 * 130 / 250 &amp;lt; 7). In other words, if you took a three-month typing course for one hour per day that improved your typing speed from 30 to 40 wpm, the decrease in typing effort would return you the investment in 4-10 months (7 +/- 50%). This ignores your increase in effectiveness from spending more time thinking about what you type before you type it! It sounds like a win to me.&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;&lt;a href="http://speedtest.10-fast-fingers.com" style="display: block; width: 300px; height: 100px; background: url('http://speedtest.10-fast-fingers.com/img/badge1.png') no-repeat; padding-top: 50px; padding-left: 60px; color: #009933; font-weight: bold; text-decoration: none; font-family: Times New Roman, Arial, serif; font-size: 40px;"&gt;102 words&lt;/a&gt;&lt;p&gt;&lt;a href="http://speedtest.10-fast-fingers.com"&gt;Typing Test&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/209&amp;#38;title=Microtechniques:%20typing" id="digg-209" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F209&amp;#38;title=Microtechniques%3A+typing"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Sat, 20 Sep 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/209</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>JUnit: A Starter Guide</title>
      <link>http://www.jbrains.info/permalink/208</link>
      <description>&lt;p&gt;Not long after the Christmas break between 2001 and 2002 I wrote &amp;#8220;JUnit: A Starter Guide&amp;#8221; in response to a flurry of complaints over the lack of a decent JUnit tutorial. I didn&amp;#8217;t know at the time that I would turn this simple tutorial, written somewhat in haste, into &lt;em&gt;JUnit Recipes: Practical Methods for Programmer Testing&lt;/em&gt;, which I completed in 2004. It has surprised me to note that several hundred people continue to read the Starter Guide, so I thought I would include a link to it from here. In order not to deal with differences in &lt;span class="caps"&gt;HTML&lt;/span&gt; formatting, I have decided to link to the document as a &lt;span class="caps"&gt;PDF&lt;/span&gt; and keep it mostly for historical purposes. Much has changed since 2002, and I hope the Starter Guide remains a solid introduction to JUnit, test-driven development and software design.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://articles.jbrains.ca/JUnitAStarterGuide.pdf" title="pdf"&gt;JUnit: A Starter Guide&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/208&amp;#38;title=JUnit:%20A%20Starter%20Guide" id="digg-208" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F208&amp;#38;title=JUnit%3A+A+Starter+Guide"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Fri, 19 Sep 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/208</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>Gordon Pask Award: write the future</title>
      <link>http://www.jbrains.info/permalink/207</link>
      <description>&lt;p&gt;At Agile 2008 I agreed to take the reins of the Gordon Pask Award from Brian Marick, who had stewarded the award through its first four years. Laurent Bossavit and I have agreed to administer the award for the foreseeable future, although I promise Laurent that I will do most of the work. I have quite strong personal feelings about the award, since the committee awarded it to Jim Shore and me in 2005, and I also have some strong feelings about public recognition in general, so I felt it wise to canvas the public a little to find out what &lt;em&gt;they&lt;/em&gt; think about the award. In the past month, a handful of you have responded, and I have organized those responses into a few categories. I wanted to share them with you in the hopes that more of you would provide some input, even if just &amp;#8220;me, too&amp;#8221;.&lt;/p&gt;


	&lt;p&gt;Most of the respondents said that the Gordon Pask Award helps them know &lt;strong&gt;whom they should talk to&lt;/strong&gt;. I consider this the primary mission of the award: to shine a light on the people the community ought to pay attention to and even push to greater heights. I also consider this the award&amp;#8217;s greatest strength, and I will encourage the selection committee to keep this point uppermost in its collective mind when it meets to select the 2009 winners. &lt;strong&gt;What problems do you believe this approach will create?&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;A few respondents said that they look at the award winners as models to emulate. One person said that seeing someone win the award made him think he should &amp;#8220;get off (his) ass and add value.&amp;#8221; Another said that the winners&amp;#8217; actions serve as a model to him. A third said that the award &amp;#8220;breathes new life&amp;#8221; into the community. I consider this to be an important part of the award&amp;#8217;s influence: a kind of call to action to the rest of the community. I felt especially proud of Arlo Belshee&amp;#8217;s call to action: come back to Agile 2009 and tell us what you&amp;#8217;ve invented in the past year. I believe this kind of rallying helps the community grow, although I remain concerned about the award&amp;#8217;s effective on people&amp;#8217;s intrinsic motivation. I have read Kohn&amp;#8217;s &lt;em&gt;Punished By Rewards&lt;/em&gt; and I find it important to dampen the negative effects of the award on the community. I don&amp;#8217;t want people to do things expressly hoping to win the award, and a part of me believes that karma will stop those people from winning, anyway. &lt;strong&gt;What other problems do you believe the award will create?&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;A couple of respondents pointed out the importance of knowing on what basis people nominated others, and especially on what basis we chose the winners. I understand the desire for transparency, but I fear that if we act too transparently, then we will lose our opportunity to be flexible and dynamic in our choices. Our selection committee meetings take long enough already and as the committee expands to include two more winners, I imagine the complexity will only increase. To add things like precedents and worry about how this group of people who react to choosing Person X over Person Y&amp;#8230; frankly, if that starts to happen, then I will walk away from the program entirely. On the other hand, I do counsel businesses to be uncomfortably transparent, so I don&amp;#8217;t know how to take my own advice here. I don&amp;#8217;t know how to balance transparency with freedom to make choices without undue recrimination from the agile community. &lt;strong&gt;Do you have any advice for us on that front?&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;Someone suggested we publish a collection of references to the award winners&amp;#8217; work shortly after we present the award as a starting place for learning about the award winners and their work. I really like this idea and I plan to invite Kenji Hiranabe and Arlo Belshee to help me prepare an anthology of sorts for them. &lt;strong&gt;I encourage you to suggest references to their work as well by email.&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;One person commented about how easily one could see the award winners become a clique, meaning that one would need to belong to an inner circle to win the award. This represents by far my greatest fear for the Gordon Pask Award. Given that the previous winners get together with Brian Marick, Rachel Davies and Big Dave Thomas to select the next winners, and given that the nominating process has progressed somewhat haphazardly so far, I can see the risk of becoming another Old Boys Network. I don&amp;#8217;t know how to deal with this potential problem, except to keep it in mind as the selection committee works towards selecting new winners, as well as working with you to make the nomination process more open. I want desperately to avoid turning the Gordon Pask Award into American Idol! I don&amp;#8217;t want the public the vote and I especially don&amp;#8217;t want to see effects like &amp;#8220;Vote For The Worst&amp;#8221; infiltrate this award. This might mean less transparency, but I remain open to other suggestions. &lt;strong&gt;If you feel concerned about the award winners becoming a closed circle, what might we do to allay your concern?&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;One person commented that no woman has yet won the award. On this point, I must remain firm. I will influence the selection committee as much as possible against letting issues of gender, religion, sexual orientation, or any similar issues directly affect the choices we make. I do not want to give the award to a woman in 2009, an Eastern European in 2010, then someone fitting some other particular &amp;#8220;type&amp;#8221; in 2011. Anyone can win the award. A diverse group selects the winners, and that group grows more diverse each year. I don&amp;#8217;t see anyone trying to keep the award away from women, gays, or the handicapped. I especially don&amp;#8217;t care to dispute the notion of &amp;#8216;proper terms&amp;#8217; for groups of people. On this basis, &lt;strong&gt;I see no need to encourage the selection committee to consider any particular group of people for the award. We consider anyone and everyone.&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;No-one yet has taken the time to tell us that they want us to discontinue the award. If you happen to feel that way, &lt;a href="mailto:gordonpaskaward@jbrains.ca"&gt;I really want to hear from you&lt;/a&gt;, because those opinions will tend to differ from mine the most. I need those opinions to have a balanced view. Please don&amp;#8217;t hold back.&lt;/p&gt;


	&lt;p&gt;Finally, if you have any suggestions related to the questions above, please &lt;a href="mailto:gordonpaskaward@jbrains.ca"&gt;tell me about them&lt;/a&gt;, otherwise I will simply choose the suggestions I like and change nothing else. Thank you for your time.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/207&amp;#38;title=Gordon%20Pask%20Award:%20write%20the%20future" id="digg-207" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F207&amp;#38;title=Gordon+Pask+Award%3A+write+the+future"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Fri, 12 Sep 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/207</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>Employee Rescue Wednesday for September 10, 2008</title>
      <link>http://www.jbrains.info/permalink/206</link>
      <description>&lt;p&gt;Act fast! Positions either fill quickly or clients move on. Don&amp;#8217;t waste this opportunity.&lt;/p&gt;


	&lt;p&gt;Are you looking for the contract that will let you &lt;strong&gt;take the plunge as an independent contractor&lt;/strong&gt;? We have an opportunity in Des Moines IA that could let you live for a year on only six months&amp;#8217; worth of work. You need to be an expert-level .NET/C# programmer with at least one professional Java project and who knows Extreme Programming. Give yourself some slack by building up an emergency fund while you &lt;strong&gt;take your first steps towards financial independence&lt;/strong&gt;. &lt;a href="mailto:desmoines@diasparsoftware.com"&gt;Send your resume and a write-up of your last .NET/C# project, including how you applied agile concepts to your work!&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Are you frustrated&lt;/strong&gt; that your co-workers won&amp;#8217;t listen to your great ideas about how to deliver software? Our New York City-based client wants you to teach them while you work! You need to be a strong Java programmer with agile skills (TDD, evolutionary design, adaptive planning) who has a desire to teach. &lt;strong&gt;Put your ideas to good use&lt;/strong&gt; and build up slack in your work schedule while you do it. &lt;a href="mailto:newyorkcity@diasparsoftware.com"&gt;Send your resume and a write-up of the three ideas your co-workers won&amp;#8217;t let you implement!&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Looking for your first contract as a programmer? You need to be well-versed in agile practices and have experience with Java technology skills for a project in Columbus OH that will run at least until December. &lt;strong&gt;Earn more than you can as an employee while we pay your living expenses for at least four months&lt;/strong&gt;. &lt;a href="mailto:columbus@diasparsoftware.com"&gt;Send your resume and a write-up of your experience as an agile programmer today!&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Interested to see whether you could live someplace small and inexpensive? Give yourself a chance to live the cheap life and contemplate earlier retirement by house-sitting for six to eight weeks in &lt;a href="http://tinyurl.com/57as5a"&gt;Dauphin, Manitoba, Canada&lt;/a&gt;. The fastest way to retirement is to live simply: it builds slack in your finances that you can use to learn to become as rich as you want to be. We pay your expenses; you take care of a house and a few cats. &lt;a href="mailto:housesitting@diasparsoftware.com"&gt;Tell us you&amp;#8217;d like the house-sit starting October 13 until sometime between November 17 or December 8, depending on our travel schedule.&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/206&amp;#38;title=Employee%20Rescue%20Wednesday%20for%20September%2010,%202008" id="digg-206" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F206&amp;#38;title=Employee+Rescue+Wednesday+for+September+10%2C+2008"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 10 Sep 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/206</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>Employee Rescue Wednesday for September 3, 2008</title>
      <link>http://www.jbrains.info/permalink/205</link>
      <description>&lt;p&gt;Act fast! Positions either fill quickly or clients move on. Don&amp;#8217;t waste this opportunity.&lt;/p&gt;


	&lt;p&gt;Are you looking for the contract that will let you &lt;strong&gt;take the plunge as an independent contractor&lt;/strong&gt;? We have an opportunity in Des Moines IA that could let you live for a year on only six months&amp;#8217; worth of work. You need to be an expert-level .NET/C# programmer with at least one professional Java project and who knows Extreme Programming. Give yourself some slack by building up an emergency fund while you &lt;strong&gt;take your first steps towards financial independence&lt;/strong&gt;. &lt;a href="mailto:desmoines@diasparsoftware.com"&gt;Send your resume and a write-up of your last .NET/C# project, including how you applied agile concepts to your work!&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Are you frustrated&lt;/strong&gt; that your co-workers won&amp;#8217;t listen to your great ideas about how to deliver software? Our Newark-based client wants you to teach them while you work! You need to be a strong Java programmer with agile skills (TDD, evolutionary design, adaptive planning) who has a desire to teach. &lt;strong&gt;Put your ideas to good use&lt;/strong&gt; and build up slack in your work schedule while you do it. &lt;a href="mailto:newark@diasparsoftware.com"&gt;Send your resume and a write-up of the three ideas your co-workers won&amp;#8217;t let you implement!&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Looking for your first contract as a programmer? You need to be well-versed in agile practices and have experience with Java technology skills for a project in Columbus OH that will run at least until December. &lt;strong&gt;Earn more than you can as an employee while we pay your living expenses for at least four months&lt;/strong&gt;. &lt;a href="mailto:columbus@diasparsoftware.com"&gt;Send your resume and a write-up of your experience as an agile programmer today!&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/205&amp;#38;title=Employee%20Rescue%20Wednesday%20for%20September%203,%202008" id="digg-205" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F205&amp;#38;title=Employee+Rescue+Wednesday+for+September+3%2C+2008"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 03 Sep 2008 08:38:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/205</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>Story Test-Driven Development: don't start here</title>
      <link>http://www.jbrains.info/permalink/204</link>
      <description>&lt;p&gt;I don&amp;#8217;t want to claim that story test-driven development doesn&amp;#8217;t work, because some of my most respected colleagues teach the practice with success; however, I do want to warn people who might find themselves seduced by &lt;span class="caps"&gt;STDD&lt;/span&gt;, especially if they think of it as an easy replacement for &lt;span class="caps"&gt;TDD&lt;/span&gt;.&lt;/p&gt;


	&lt;p&gt;Allow me to clarify the two terms, &lt;span class="caps"&gt;TDD&lt;/span&gt; and &lt;span class="caps"&gt;STDD&lt;/span&gt;. To practice &lt;span class="caps"&gt;TDD&lt;/span&gt;, the programmer begins with a small, well-defined behavior they&amp;#8217;d like to implement. Typically, they design that behavior as a method on a class, although they could get away with doing even less, then brainstorm a list of tests they might write. With such a list in hand, they run through the &lt;span class="caps"&gt;TDD&lt;/span&gt; cycle, illustrated beautifully by Bill Wake&amp;#8217;s &lt;a href="http://xp123.com/xplor/xp0101/index.shtml"&gt;stoplight analogy&lt;/a&gt;. When the design behaves adequately and correctly, the programmer stops.&lt;/p&gt;


	&lt;p&gt;To practice &lt;span class="caps"&gt;STDD&lt;/span&gt;, the programmer begins with a story and several story tests, which I tend to call &amp;#8220;examples&amp;#8221;. The programmer then selects a story test, watches it fail, then test-drives enough code to make it pass. One by one, the programmer makes each story test pass until they complete the entire story.&lt;/p&gt;


	&lt;p&gt;I have been teaching people about &lt;span class="caps"&gt;TDD&lt;/span&gt; and stories for years, and have practiced &lt;span class="caps"&gt;STDD&lt;/span&gt; most of that time, in one form or another. I find the technique helpful; however, when I have pushed &lt;span class="caps"&gt;STDD&lt;/span&gt; to its limit, I have found it to guide me in directions I don&amp;#8217;t like, which &lt;span class="caps"&gt;TDD&lt;/span&gt; has generally never done. When I watch others attempt to practice &lt;span class="caps"&gt;STDD&lt;/span&gt;, especially novices and advanced beginners, I see how they misapply &lt;span class="caps"&gt;STDD&lt;/span&gt; and lead themselves towards a Big Ball of Mud, despite what the agile community&amp;#8217;s marketing machine says about &lt;span class="caps"&gt;TDD&lt;/span&gt; and stories. I believe the intersection of the two creates problems for those not accustomed to the different goals of &lt;span class="caps"&gt;TDD&lt;/span&gt; and user stories.&lt;/p&gt;


	&lt;p&gt;I use examples, the term I use for story tests, to show progress towards delivering a story, or feature. Broadly, I add examples to reflect increasing levels of understanding of the system to design, and as examples pass, that reflects progress towards delivering an ever more powerful system. I use programmer tests, the term I use in place of unit tests, to test my design ideas as they come to me and to help me type code in correctly. Any time all the programmer tests pass, the system works as designed, even if it does not yet do everything the business needs. Any time all the programmer tests pass, I can freely commit changes to the main line of the project&amp;#8217;s design repository.&lt;/p&gt;


	&lt;p&gt;More succinctly, examples help us design the right system and programmer tests help us design the system right. (I prefer &amp;#8220;correctly&amp;#8221; there, but then I lose the symmetry.)&lt;/p&gt;


	&lt;p&gt;I often see programmers try to use passing examples as an absolute criterion to stop designing. They underestimate, in my opinion, the role of programmer tests to put positive pressure on their design. Examples, especially when written as end-to-end or integration tests (a test whose failure does not isolate the mistake to a single method), simply do not put positive pressure on a design: their high-level nature can&amp;#8217;t constrain a design enough to support careful refactoring. For this reason, I recommend novices and advanced beginners not practice &lt;span class="caps"&gt;STDD&lt;/span&gt; until they first see or feel for themselves the impact focused, small programmer tests have on their design.&lt;/p&gt;


	&lt;p&gt;I want to leave no room for doubt: I do not mean to say that novices should avoid &lt;span class="caps"&gt;STDD&lt;/span&gt; as an &amp;#8220;advanced practice&amp;#8221;; but rather that a combination of novice tendencies makes &lt;span class="caps"&gt;STDD&lt;/span&gt; harder than &lt;span class="caps"&gt;TDD&lt;/span&gt; to practice well. Specifically, the novice tends to write examples as end-to-end tests, which provide too much design freedom and exert too little positive pressure on the design to guide refactoring and prevent defects. Instead, I would counsel novices and advanced beginners to focus on &lt;span class="caps"&gt;TDD&lt;/span&gt; and run the examples every hour or so to measure their progress towards delivering the story.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://tinyurl.com/5vklgp"&gt;Read more&lt;/a&gt; about how to practice &lt;span class="caps"&gt;STDD&lt;/span&gt; well.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/204&amp;#38;title=Story%20Test-Driven%20Development:%20don't%20start%20here" id="digg-204" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F204&amp;#38;title=Story+Test-Driven+Development%3A+don%27t+start+here"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 02 Sep 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/204</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>Istanbul, Eindhoven, Bled</title>
      <link>http://www.jbrains.info/permalink/203</link>
      <description>&lt;p&gt;In case you don&amp;#8217;t religiously follow &lt;a href="http://jbrains.ca/appearing.html"&gt;where I&amp;#8217;m appearing&lt;/a&gt;, I simply wanted to announce that we will visit Istanbul August 21-23, travel from their to Eindhoven, Netherlands August 25-29, and finally on to Bled, Slovenia August 30-September 7. If you live near these places and would like to get together or would like me to speak to a local company or user group, please contact me by email and we will attempt to arrange things. Since I do not drive, you&amp;#8217;d need to provide transportation to and from the event, which could be a pre-paid taxi, a ride from a friend or detailed instructions on using public transport to get there and back.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/203&amp;#38;title=Istanbul,%20Eindhoven,%20Bled" id="digg-203" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F203&amp;#38;title=Istanbul%2C+Eindhoven%2C+Bled"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 20 Aug 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/203</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>Gordon Pask Award 2009</title>
      <link>http://www.jbrains.info/permalink/202</link>
      <description>&lt;p&gt;I have agreed to administer the Gordon Pask Award starting in 2009. Brian Marick has done a wonderful job, just at the edge of chaos, in starting the program and I hope to be able to continue in his footsteps. Laurent Bossavit has agreed, at least in principle, to co-administer the program and I know I will need his help.&lt;/p&gt;


	&lt;p&gt;I have several ideas for improving the mechanics of the award in addition to a personal vision of the award, but I certainly don&amp;#8217;t mind receiving your advice. Since I cannot handle thousands of emails on the topic, I would like you to answer one of these questions regarding the prize, how we award it and how we present it.&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;What does it mean to you to see someone other than you win a Gordon Pask Award?&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;blockquote&gt;
		&lt;p&gt;What does it mean to you to see someone other than the person you nominated win a Gordon Pask Award?&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;blockquote&gt;
		&lt;p&gt;All things considered, would you rather we continue the program or abandon it?&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;Please &lt;a href="mailto:gordonpaskaward@jbrains.ca"&gt;send me an email&lt;/a&gt; with your thoughts. Write what you will, but please include an answer to at least one of these questions.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/202&amp;#38;title=Gordon%20Pask%20Award%202009" id="digg-202" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F202&amp;#38;title=Gordon+Pask+Award+2009"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 12 Aug 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/202</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>A review of Agile 2008</title>
      <link>http://www.jbrains.info/permalink/201</link>
      <description>&lt;p&gt;I must admit to some bias in reviewing Agile 2008, because they held it in Toronto, where I lived from 1996 to 2007. I grew up in a Toronto suburb. I can&amp;#8217;t account for what portion of my positive review depends on my great familiarity and comfort with the city. Even so, I can&amp;#8217;t remember having as enjoyable a time at the Agile 200x conference since Agile 2005 in Denver when I received the Gordon Pask Award.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;&lt;span class="caps"&gt;I FELT CONNECTED&lt;/span&gt;.&lt;/strong&gt; I have been particularly concerned about how much the conference has grown in the past few years. Large conventions like Java One do not hold my interest, which explains why I don&amp;#8217;t attend them. As attendance at Agile 200x grew from Denver to Minneapolis to &lt;span class="caps"&gt;DC I&lt;/span&gt; became concerned that I would find myself increasingly lost among the sea of people. I felt deeply connected to people in Toronto and managed even to make a handful of new connections. Even though I believe the conference consists of &amp;#8220;600 of my closest friends and 1000 people I will never meet&amp;#8221;, I must admit that I felt much more connected to the people than I did in Minneapolis and DC. I attribute much of this to the space: there were more open spaces for gathering, and I spent less time in long, narrow hallways. Granted, I found it difficult to navigate through some of the winding paths inside the Sheraton Centre, but overall I felt like I could find people I needed to find and bumped into enough people to keep it interesting. I hope I can feel this way again in Chicago in 2009.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;&lt;span class="caps"&gt;I REALLY LEARNED&lt;/span&gt;.&lt;/strong&gt; I have had some doubt about how much of the program would excite me, and I must say that while none of the sessions intrigued me enough to draw me there, I dropped in to a handful of sessions and the presenters welcomed me in and allowed me to participate even though I sometimes tend to try to take over. I learned from those sessions and even more from hallway conversations with my peers. I hadn&amp;#8217;t felt like I&amp;#8217;d learned much from the last few years, but rather that I&amp;#8217;d spent most of my time teaching. This time I found a good balance. I don&amp;#8217;t know how much of that to attribute to my mindset, to the program, to the people the conference drew and to random chance. No matter: I love the result. I should thank Arlo Belshee for putting the thought in my head that cost estimates might not always matter much. That one will stick with me for a while, I imagine.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;&lt;span class="caps"&gt;I PUSHED THE ENVELOPE OF EXHAUSTION&lt;/span&gt;.&lt;/strong&gt; I measure the success of a conference experience by my energy level on the last day. When I find myself exhausted, I imagine I rushed too much, committed to too much and wasted too much time getting around. When I find myself lethargic, I imagine I didn&amp;#8217;t care much, didn&amp;#8217;t see the people I wanted to see, didn&amp;#8217;t find much of interest in the program and didn&amp;#8217;t learn anything worthwhile. This time, I felt energized at the tipping point of exhaustion. Perfect! In the words of the great Calvin (the modern one), &lt;a href="http://tinyurl.com/6qtsyc"&gt;the days were just packed!&lt;/a&gt; I kept my schedule fluid and managed never to spend a moment bored. I imagine my fluid schedule make it difficult for other people to co-ordinate with me, so I apologize to my wife and my friends for their difficulties reaching me throughout the week, but I enjoyed it immensely. By the end, I felt ready for week two of the conference, but it abruptly ended. I call that a success.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;&lt;span class="caps"&gt;REVIEW IN A BOX&lt;/span&gt;.&lt;/strong&gt; We stayed at the Hilton across the street, mostly because I forgot to book our room until two weeks ago.&lt;/p&gt;


	&lt;table&gt;
		&lt;tr&gt;
			&lt;td&gt;Program&lt;/td&gt;
			&lt;td&gt;B&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Open Jam&lt;/td&gt;
			&lt;td&gt;B&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Location&lt;/td&gt;
			&lt;td&gt;A&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Attendees&lt;/td&gt;
			&lt;td&gt;A&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Amenities&lt;/td&gt;
			&lt;td&gt;B&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Expense&lt;/td&gt;
			&lt;td&gt;B&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Hotel&lt;/td&gt;
			&lt;td&gt;B&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Overall&lt;/td&gt;
			&lt;td&gt;A-&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/table&gt;




	&lt;p&gt;I had a few minor nits to pick: I didn&amp;#8217;t like the breakfast, which featured cost-cutting pastry over energy-boosting protein and berries; I found it difficult to carry around the large program book, so I would have preferred schedule-on-one-page on a day-by-day basis; I have become a coffee snob, so I never like the coffee anywhere, and the Sheraton fit that pattern.&lt;/p&gt;


	&lt;p&gt;As I like to say, if you have no bigger problems than these, then you deserve a vacation. Thank you to Rachel Davies and her crew for doing an excellent job organizing and running this conference. Good luck to Johanna Rothman, as you have big shoes to fill. I feel confident in the result.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/201&amp;#38;title=A%20review%20of%20Agile%202008" id="digg-201" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F201&amp;#38;title=A+review+of+Agile+2008"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 12 Aug 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/201</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>How are you dealing with Homeland Security confiscating electronics?</title>
      <link>http://www.jbrains.info/permalink/200</link>
      <description>&lt;p&gt;As a Canadian consultant with many US-based clients, I enter the US quite frequently, and I now know that I face random seizure of my electronics even without reasonable suspicion. I find it difficult to enter the US under these circumstances with my electronics, notably my computer and phone.&lt;/p&gt;


	&lt;p&gt;Have you done anything interesting to deal with this problem? I have had to contemplate measures including requiring US clients to provide me with a MacBook Pro when I visit them. Even if I do that, what about my data? How can I guarantee that I have a bootable copy of my hard disk when I cross the border if the &lt;span class="caps"&gt;TSA&lt;/span&gt; can confiscate my external hard disk?&lt;/p&gt;


	&lt;p&gt;The simplest solution is to stop working in the US until the proposed law on the books requiring reasonable suspicion passes, but even then, I run a considerable risk of having materials seized even though I have nothing to hide. I don&amp;#8217;t trust Homeland Security to be reasonable.&lt;/p&gt;


	&lt;p&gt;Is shipping hard disks any better? I can&amp;#8217;t risk having material held up in customs. I can&amp;#8217;t rely on internet services, because it takes days to download a 100 GB bootable disk image.&lt;/p&gt;


	&lt;p&gt;I would like to know what you do about this, aside from refuse to work in the US.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/200&amp;#38;title=How%20are%20you%20dealing%20with%20Homeland%20Security%20confiscating%20electronics?" id="digg-200" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F200&amp;#38;title=How+are+you+dealing+with+Homeland+Security+confiscating+electronics%3F"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 03 Aug 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/200</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>"Dear XP" with new English lyrics</title>
      <link>http://www.jbrains.info/permalink/199</link>
      <description>&lt;p&gt;Kenji Hiranabe asked me to write new English lyrics for the &amp;#8220;Dear XP&amp;#8221; song, and with his lyrics as a starting point, here is the result:&lt;/p&gt;


&lt;object type="application/x-shockwave-flash" width="320" height="263" id="FlowPlayer" data="http://www.archive.org/flv/FlowPlayerWhite.swf"&gt;   &lt;param name="movie" value="http://www.archive.org/flv/FlowPlayerWhite.swf"/&gt;   &lt;param name="scale" value="noScale"/&gt;   &lt;param name="wmode" value="transparent"/&gt;   &lt;param name="allowScriptAccess" value="sameDomain"/&gt;   &lt;param name="quality" value="high"/&gt;   &lt;param name="flashvars" value="config={     loop: false,     autoPlay:false,     autoBuffering:false,     initialScale: 'fit',     videoFile: 'http://www.archive.org/download/DearXPMovieAgile2008/DearXPAgile2008.flv',     splashImageFile: 'http://www.archive.org/download/DearXPMovieAgile2008/DearXPMovieAgile2008.thumbs/DearXPAgile2008_00000003.jpg',   }"/&gt; &lt;/object&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/199&amp;#38;title=%22Dear%20XP%22%20with%20new%20English%20lyrics" id="digg-199" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F199&amp;#38;title=%22Dear+XP%22+with+new+English+lyrics"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 30 Jul 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/199</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>Any title would be superfluous</title>
      <link>http://www.jbrains.info/permalink/198</link>
      <description>&lt;p&gt;&lt;img src="http://media.tumblr.com/FKevS0GRzbwhn5z5Qe7LbEFI_400.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/198&amp;#38;title=Any%20title%20would%20be%20superfluous" id="digg-198" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F198&amp;#38;title=Any+title+would+be+superfluous"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 28 Jul 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/198</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>Help us nominate David Chelimsky for the Gordon Pask Award</title>
      <link>http://www.jbrains.info/permalink/197</link>
      <description>&lt;p&gt;Once again, nominating season for the Gordon Pask Award has begun. I have so far put my support behind one excellent candidate, David Chelimsky. &lt;a href="http://www.exampler.com/blog/2008/07/23/2008-gordon-pask-award-for-contributions-to-agile-practice/"&gt;The nominating process has changed&lt;/a&gt; and we would like to garner some additional support for David. If you are interested, then please click the Discuss link for this article (which takes you to &lt;code&gt;reddit&lt;/code&gt;) and write a blurb in the style that the selection committee has asked for. (If you haven&amp;#8217;t already, read the link above.)&lt;/p&gt;


	&lt;p&gt;Thank you for helping us show support for David as a significant contributor to agile practice who is well due the recognition of the Gordon Pask Award.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/197&amp;#38;title=Help%20us%20nominate%20David%20Chelimsky%20for%20the%20Gordon%20Pask%20Award" id="digg-197" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F197&amp;#38;title=Help+us+nominate+David+Chelimsky+for+the+Gordon+Pask+Award"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Sat, 26 Jul 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/197</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>Please nominate someone for the 2008 Gordon Pask Award for contributions to agile practice</title>
      <link>http://www.jbrains.info/permalink/196</link>
      <description>&lt;p&gt;Please nominate someone for the 2008 Gordon Pask Award for contributions to agile practice. &lt;a href="http://www.exampler.com/blog/2008/07/23/2008-gordon-pask-award-for-contributions-to-agile-practice/"&gt;Read more.&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/196&amp;#38;title=Please%20nominate%20someone%20for%20the%202008%20Gordon%20Pask%20Award%20for%20contributions%20to%20agile%20practice" id="digg-196" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F196&amp;#38;title=Please+nominate+someone+for+the+2008+Gordon+Pask+Award+for+contributions+to+agile+practice"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Sat, 26 Jul 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/196</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>Your "Discuss" links are broken?</title>
      <link>http://www.jbrains.info/permalink/195</link>
      <description>&lt;p&gt;I could use your help, if you have the patience to help me.&lt;/p&gt;


	&lt;p&gt;At least one person has reported the &amp;#8220;Discuss&amp;#8221; links are broken for him. They work for me, whether I read postings on the web or through my &lt;span class="caps"&gt;RSS&lt;/span&gt; reader Net News Wire. If you have trouble with the &amp;#8220;Discuss&amp;#8221; links, I&amp;#8217;d appreciate knowing about them. Please send me email describing the problem so I can diagnose it. Thanks!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/195&amp;#38;title=Your%20%22Discuss%22%20links%20are%20broken?" id="digg-195" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F195&amp;#38;title=Your+%22Discuss%22+links+are+broken%3F"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 10 Jul 2008 08:56:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/195</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>If we are serious about speed...</title>
      <link>http://www.jbrains.info/permalink/194</link>
      <description>&lt;p&gt;I have been reading the Cutter IT Journal from March 2003, when they ran a special issue on Critical Chain Project Management. I wanted to share this especially salient point. I don&amp;#8217;t know how to help my clients understand this, particularly because my clients usually find themselves behind the eight-ball and in desperate need of this advice.&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;If we are serious about speed, we must understand what is required for people to &#8220;go faster.&#8221; We are not asking them to work faster! We are asking them to wait, to rest, and
then work at full speed. And then rest again. Our strategy is to remove all the obstacles that cause them delay and to recognize that relay runners don&#8217;t run at full speed all
day. They are not &amp;#8220;fully utilized&amp;#8221; because full utilization of resources is inefficient for speed. For our people to do tasks faster, we must reduce their workload and lower
their utilization. This is not a sacrifice for the organization, it is the means for substantially greater project throughput. For our people to do tasks faster, we must reduce their workload and lower their utilization.&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;How do I help them understand? Click the Discuss link to give me your suggestions.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/194&amp;#38;title=If%20we%20are%20serious%20about%20speed..." id="digg-194" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F194&amp;#38;title=If+we+are+serious+about+speed..."&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 07 Jul 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/194</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>Find out where I'm appearing</title>
      <link>http://www.jbrains.info/permalink/193</link>
      <description>&lt;p&gt;To borrow from Garr Reynolds, who has taught me much about &lt;a href="http://www.presentationzen.com"&gt;presentations&lt;/a&gt;:&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://presentationzen.blogs.com/.a/6a00d83451b64669e200e552928a0d8833-pi" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;So if you&amp;#8217;d like to know where I plan to appear next, click the link under my photo or subscribe to my appearances calendar:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.google.com/calendar/feeds/p2j53mga3v3e595bkdhfth0o84%40group.calendar.google.com/public/basic"&gt;as an &lt;span class="caps"&gt;RSS&lt;/span&gt; feed&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www.google.com/calendar/ical/p2j53mga3v3e595bkdhfth0o84%40group.calendar.google.com/public/basic.ics"&gt;from your iCal-supported calendar&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;anyway you like with calendar ID &lt;code&gt;p2j53mga3v3e595bkdhfth0o84@group.calendar.google.com&lt;/code&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Feel free to invite me anywhere with any amount of notice. You never know what we can work out. Be sure to tell me enough about your invitation to pique my interest!&lt;/p&gt;


	&lt;p&gt;See you on the road, which would be a town near you!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/193&amp;#38;title=Find%20out%20where%20I'm%20appearing" id="digg-193" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F193&amp;#38;title=Find+out+where+I%27m+appearing"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 07 Jul 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/193</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>Agile Adoption Patterns, the book</title>
      <link>http://www.jbrains.info/permalink/192</link>
      <description>&lt;p&gt;I would like to announce the release of Amr Elssamadisy&amp;#8217;s book &lt;em&gt;Agile Adoption Patterns&lt;/em&gt; on Safari at O&amp;#8217;Reilly. Amr invited me to write a &lt;a href="http://tinyurl.com/5vc33c"&gt;foreword&lt;/a&gt;, but even if he hadn&amp;#8217;t, I would heartily endorse his book.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/192&amp;#38;title=Agile%20Adoption%20Patterns,%20the%20book" id="digg-192" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F192&amp;#38;title=Agile+Adoption+Patterns%2C+the+book"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 03 Jul 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/192</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>A rare opportunity in September</title>
      <link>http://www.jbrains.info/permalink/191</link>
      <description>&lt;p&gt;Friends, I have been carefully constructing a rather complex travel itinerary for August and September, and one of my prospective clients has gone rather dark on me. As a result, I have ten days of time available that I would like to offer to you at cost. You read that correctly: you can hire me to help your organization between September 1 and September 10 at the unusually low rate of covering reasonable travel costs for Sarah and me. As you might expect, some conditions apply.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;I will be in Amsterdam, Netherlands on August 31 and I need to fly to Chicago, &lt;span class="caps"&gt;USA&lt;/span&gt; on September 11, so you could hire me in the period in between for up to 9 days, as I&amp;#8217;d prefer to have Monday as slack in our travel schedule.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;I would like to work out a fixed travel budget for our travel expenses, rather than submit receipts.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;We don&amp;#8217;t need a fancy hotel, but prefer someplace with a kitchenette so we can prepare our own meals in the room.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;We need to eat well, so we prefer a hotel near a local market or good-quality grocery store with fresh produce that is either less than a 15-minute walk or easy to reach with public transport.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;I want fun work, which means a multi-disciplinary opportunity, including all aspects of your software delivery system, from the boardroom to the bullpen.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;If prospective client gets back to me by Friday and wants me during this time, then I need to give them priority.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;If this interests you, please send email right now to the address in the top-left corner of the page with the subject &amp;#8220;Crazy Joe&amp;#8217;s September 2008 Consulting Special&amp;#8221; or something like that, and I&amp;#8217;ll get back to you.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/191&amp;#38;title=A%20rare%20opportunity%20in%20September" id="digg-191" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F191&amp;#38;title=A+rare+opportunity+in+September"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 01 Jul 2008 00:57:40 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/191</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>What I've said so far...</title>
      <link>http://www.jbrains.info/permalink/190</link>
      <description>&lt;p&gt;...courtesy of &lt;a href="http://www.wordle.net"&gt;wordle.net&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://wordle.net/gallery/wrdl/28749/jbrains.ca%3A_Can%27t_stop_the_learning%2C_October_2006-June_2008" title="Wordle: jbrains.ca: Can&amp;#39;t stop the learning, October 2006-June 2008"&gt;&lt;img src="http://wordle.net/thumb/wrdl/28749/jbrains.ca%3A_Can%27t_stop_the_learning%2C_October_2006-June_2008" style="padding:4px;border:1px solid #ddd"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/190&amp;#38;title=What%20I've%20said%20so%20far..." id="digg-190" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F190&amp;#38;title=What+I%27ve+said+so+far..."&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 25 Jun 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/190</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>On the importance of disciplined software design and the implications of succumbing to poor practice</title>
      <link>http://www.jbrains.info/permalink/189</link>
      <description>&lt;p&gt;&lt;img src="http://imgs.xkcd.com/comics/goto.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;Proceed at your own risk.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/189&amp;#38;title=On%20the%20importance%20of%20disciplined%20software%20design%20and%20the%20implications%20of%20succumbing%20to%20poor%20practice" id="digg-189" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F189&amp;#38;title=On+the+importance+of+disciplined+software+design+and+the+implications+of+succumbing+to+poor+practice"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 24 Jun 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/189</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>Testing the UI: presentation and rendering</title>
      <link>http://www.jbrains.info/permalink/188</link>
      <description>&lt;p&gt;I recently read Jeff Patton&amp;#8217;s column at StickyMinds. &lt;a href="http://tinyurl.com/44mnmy"&gt;His latest article tells us the secret to automated acceptance tests&lt;/a&gt;. I responded, and I include that response here.&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;I like this article, Jeff, but I&amp;#8217;d like to point out that programmers can automate more tests in advance without risking a ripple effect when a customer wants to move a field around.&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;blockquote&gt;
		&lt;p&gt;We know that many designs exhibit high coupling between &amp;#8220;the UI&amp;#8221; and &amp;#8220;the logic&amp;#8221;, and teasing that coupling apart-&lt;del&gt;mostly moving (business) logic out of the UI&lt;/del&gt;-is one step towards more flexibility, less ripple effect and more valuable automated end-to-end tests. We have all seen it. I invite programmers to take one more step.&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;blockquote&gt;
		&lt;p&gt;Inside &amp;#8220;the UI&amp;#8221; I find two major kinds of code: UI toolkit client code and more general toolkit-neutral code. When I format a monetary amount as &amp;#8221;$12.50&amp;#8221;, I can make that decision without involving the UI toolkit; but when I decide to display the text &amp;#8221;$12.50&amp;#8221; as a label or in a text field, I need to involve the UI toolkit in that decision. I invite programmers to separate their UI into presentation logic (UI toolkit neutral) and rendering logic (UI toolkit specific). If you do this, you will have an &amp;#8220;abstract UI&amp;#8221; or &amp;#8220;presentation layer&amp;#8221; you can test without drawing a real UI. These tests run quickly because they run in memory without having to paint a screen or invoke a UI toolkit component of any kind. You don&amp;#8217;t need end-to-end tests here. When someone decides to move a field around, none of your presentation layer tests need to change, and you avoid the ripple effect. Yes, your end-to-end tests change, but over time you&amp;#8217;ll automate fewer of those, preferring instead to automate the presentation layer tests.&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;blockquote&gt;
		&lt;p&gt;So programmers, do your worst! Introduce a true presentation layer into your design, starting with the next screen or page. You&amp;#8217;ll thank yourself, and maybe me.&lt;/p&gt;
	&lt;/blockquote&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/188&amp;#38;title=Testing%20the%20UI:%20presentation%20and%20rendering" id="digg-188" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F188&amp;#38;title=Testing+the+UI%3A+presentation+and+rendering"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 19 Jun 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/188</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>JUnit Recipes coming soon to Safari Online</title>
      <link>http://www.jbrains.info/permalink/187</link>
      <description>&lt;p&gt;I would like to announce that Manning Publications has begun sending its books to &lt;a href="http://safari.oreilly.com"&gt;Safari Online, the subscription-based O&amp;#8217;Reilly service&lt;/a&gt;. I have found the service useful over the past three years, particularly after our flood wiped out much of my professional development book collection. If you subscribe to the service, but have not yet read &lt;em&gt;JUnit Recipes&lt;/em&gt;, you will soon have your chance!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/187&amp;#38;title=JUnit%20Recipes%20coming%20soon%20to%20Safari%20Online" id="digg-187" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F187&amp;#38;title=JUnit+Recipes+coming+soon+to+Safari+Online"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 18 Jun 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/187</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>Fixing Mail.app as it pertains to IMAP and gmail</title>
      <link>http://www.jbrains.info/permalink/186</link>
      <description>&lt;p&gt;I am in the process of making &lt;code&gt;gmail&lt;/code&gt; my One and Only Mail Database. My first tentative steps showed that &lt;code&gt;gmail&lt;/code&gt; filters duplicate emails, which is great, because I have multiple copies of several hundred emails, thanks to &lt;code&gt;POP&lt;/code&gt;. Naively, I just started dragging emails from my other Inboxes to my gmail/IMAP/personal mail Inbox and letting the messages synchronize on the gmail server. My goal was to make my other &lt;code&gt;Mail.app&lt;/code&gt; accounts empty so I could disable them. This worked well for a while, but for most of today, &lt;code&gt;Mail.app&lt;/code&gt; has been telling me this:&lt;/p&gt;


&lt;pre&gt;Mail has undone actions on some messages
so that you can redo the actions while online.
Mail has saved other messages in mailbox &#8220;INBOX&#8221;
in &#8220;On My Mac&#8221; so that you can complete the 
actions while online.  

Additional information: The attempt to read data 
from the server &#8220;imap.gmail.com&#8221; failed.&lt;/pre&gt;

	&lt;p&gt;I read an article or two and figured I&amp;#8217;d overburdened my &lt;code&gt;gmail&lt;/code&gt; server and it was scolding me by limiting my access for a while. When about eight hours passed without any change, I knew I had a problem, and that problem was the same email over and over again. Something about &lt;strong&gt;embroidery&lt;/strong&gt; of all things. Each time the message popped up in my &amp;#8220;On my Mac&amp;#8221; &lt;span class="caps"&gt;INBOX&lt;/span&gt;, I moved it to Trash, then erased deleted messages&amp;#8230; nothing worked. Finally, out of desperation, I simply pasted the entire message&amp;mdash;you can see it&amp;#8217;s quite long&amp;mdash;into Google.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://forums.macrumors.com/showthread.php?t=396848"&gt;Seek and ye shall find.&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;The advice there, however, didn&amp;#8217;t impress me. I might not be a &lt;code&gt;Mail.app&lt;/code&gt; developer, but I imagine that if I delete my entire offline cache, I&amp;#8217;ll lose all the emails I moved into my gmail/IMAP/personal mail inbox. That would be bad, considering it&amp;#8217;s about 10000 messages, many of which matter to me. I thought I should investigate, and fortunately, it wasn&amp;#8217;t too hard to figure out what to do.&lt;/p&gt;


	&lt;p&gt;I went to &lt;code&gt;~/Library/Mail/IMAP-[myemailaddress]/.OfflineCache&lt;/code&gt; and saw about 10000 numbered files. I looked at one of them and saw an email. I figured I could &lt;code&gt;grep&lt;/code&gt; to find the offending email, delete it, restart &lt;code&gt;Mail.app&lt;/code&gt;, then all would be well. So I did, and so far it is.&lt;/p&gt;


	&lt;p&gt;To be clear, here is what I did:&lt;/p&gt;


&lt;pre&gt;
$ cd ~/Library/Mail/IMAP-****/.OfflineCache
$ ls
1000        1001        1002        1003        1004        1005        1006        1007        1008        1009
1010        1011        1012        1013        1014        1015        1016        1017        1018        1019
1020        1021        1022        1023        1024        1025        1026        1027        1028        1029
....
$ grep -i embroidery *
[...Matched email 854....]
$ rm 854
&lt;/pre&gt;

	&lt;p&gt;That worked great. I hope it helps you, too.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/186&amp;#38;title=Fixing%20Mail.app%20as%20it%20pertains%20to%20IMAP%20and%20gmail" id="digg-186" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F186&amp;#38;title=Fixing+Mail.app+as+it+pertains+to+IMAP+and+gmail"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 11 Jun 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/186</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>Recommended: Pragmatic Screencasts</title>
      <link>http://www.jbrains.info/permalink/185</link>
      <description>&lt;p&gt;I am writing this from a hotel room in Winnipeg on the way to &lt;span class="caps"&gt;XP 2008&lt;/span&gt; in Limerick, Ireland. Since I live 400 km (that&amp;#8217;s 260 miles for the metric impaired) from Winnipeg and don&amp;#8217;t drive, I typically have to endure a 4.5-hour bus ride at the beginning and end of every trip. You can imagine that I need to keep myself occupied during those stretches, which often involves my trusty iPod Touch. I used this trip to watch my first two &lt;a href="http://www.pragmatic.tv"&gt;Pragmatic Screencasts&lt;/a&gt; and they impressed me.&lt;/p&gt;


	&lt;p&gt;I started to watch a screencast on &lt;a href="http://expressionengine.com/"&gt;Expression Engine&lt;/a&gt; which I hadn&amp;#8217;t heard of before, but as I get older I find building web sites less interesting, so I am always looking for ways to simplify the task. When I noticed this screencast I thought it would give me an idea whether Expression Engine would interest me as a web site platform. It does. Worse, I wanted to follow along with Ryan Irelan so much that I had to stop the screencast in frustration because I wasn&amp;#8217;t at my computer and connected to the internet. I look forward to returning to that screencast next week, if I can wait that long.&lt;/p&gt;


	&lt;p&gt;The other screencast that caught my eye was building a chat system in Erlang. I tried reading the Pragmatic book on Erlang, and while that book receives excellent reviews, I just didn&amp;#8217;t like it. I found it too abstract and didn&amp;#8217;t stick with it. I like the author&amp;#8217;s writing style well enough, but it just felt like I was reading the encyclopedia, rather than a tutorial. I needed an example to follow, and the screencast gave me just that. Kevin Smith builds a tiny chat system before your eyes and does so quite well. I found the screencast very engaging, not just because it illustrated the content and helped me finally begin to understand what Erlang is all about, but also because I found myself wanting to argue with Kevin about coding style, which I always enjoy. I look forward to watch the third episode a little later.&lt;/p&gt;


	&lt;p&gt;The quality of the screencasts is high, the production is good and they are a suitable length. Even on the small screen of an iPod Touch I found them easy to follow. I think that Mike Clark has done a very good job so far on both the vision and execution of these screencasts. I hope to do one or two for them sometime soon. (Hint, hint.)&lt;/p&gt;


	&lt;p&gt;Go to &lt;a href="http://www.pragmatic.tv"&gt;http://www.pragmatic.tv&lt;/a&gt; and enjoy. I think you&amp;#8217;ll be very satisfied with the result.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/185&amp;#38;title=Recommended:%20Pragmatic%20Screencasts" id="digg-185" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F185&amp;#38;title=Recommended%3A+Pragmatic+Screencasts"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 10 Jun 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/185</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>Mac OS X: choosing the default currency symbol</title>
      <link>http://www.jbrains.info/permalink/184</link>
      <description>&lt;p&gt;This is just a quick tip for Mac &lt;span class="caps"&gt;OS X&lt;/span&gt; users who might want the symbol &amp;#8221;$&amp;#8221; to represent &lt;em&gt;their&lt;/em&gt; dollar, rather than the US dollar.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;ve been working on expense reports with Numbers.app and I noticed that my laptop was formatting Canadian and US dollars as &amp;#8220;Can$&amp;#8221; and &amp;#8221;$&amp;#8221;, respectively. While I thought this a tad US-centric, that didn&amp;#8217;t bother me much, so I gave it no real thought until I opened the same spreadsheet on my Mac Mini, where I saw &amp;#8221;$&amp;#8221; and &amp;#8220;US$&amp;#8221; instead. I thought this was neat, except of course that now the columns were the wrong width. I saw the difference, figured there was a difference in the &lt;strong&gt;International&lt;/strong&gt; settings, but no! &lt;a href="http://www.xs4all.nl/~timkr/chess2/diary_7.htm"&gt;To quote Swiss chess master Gereben&lt;/a&gt;, &amp;#8220;wie ist es m&amp;ouml;glich?!&amp;#8221; The settings are the same, and yet one window has &amp;#8220;Can$&amp;#8221; and the other &amp;#8221;$&amp;#8221;. There is no &amp;#8220;Customize&amp;#8230;&amp;#8221; button, so I can&amp;#8217;t change the number format. What can I do?&lt;/p&gt;


	&lt;p&gt;I did what any self-respecting programmer would do: I played around with the settings until it worked. I found out that by switching the currency to something else, then back to &lt;strong&gt;Canadian Dollar&lt;/strong&gt;, I reset the number formatting, and now both computers use &amp;#8221;$&amp;#8221; for real dollars and &amp;#8220;US$&amp;#8221; for the fake kind.&lt;/p&gt;


	&lt;p&gt;Now you know.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/184&amp;#38;title=Mac%20OS%20X:%20choosing%20the%20default%20currency%20symbol" id="digg-184" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F184&amp;#38;title=Mac+OS+X%3A+choosing+the+default+currency+symbol"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Sat, 07 Jun 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/184</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>Death (march) and taxes</title>
      <link>http://www.jbrains.info/permalink/183</link>
      <description>&lt;p&gt;I am late filing my taxes for 2007, which explains why I&amp;#8217;m awake at 5.00 this morning. I&amp;#8217;m not entirely sure how many consecutive mornings I&amp;#8217;ve been waking up earlier and earlier: maybe it&amp;#8217;s six, maybe it&amp;#8217;s seven. My fingers feel a little heavy, I&amp;#8217;ve yawned three times since I opened my computer, and it&amp;#8217;s too dark in here to scan paper, so I decided to write these words.&lt;/p&gt;


	&lt;p&gt;Let me tell you a little about my project: I have to file my taxes. Since I have been audited, I no longer trust myself to file my own corporate taxes, so I&amp;#8217;m preparing paperwork for my accountant. My goal is to deliver a &lt;span class="caps"&gt;DVD&lt;/span&gt; of my data and let my accountant and her staff do a first draft of my taxes while we&amp;#8217;re at &lt;span class="caps"&gt;XP 2008&lt;/span&gt;. When we return, I&amp;#8217;ll be able to answer questions, then I hope to file before June 28 when we have to leave for the next trip. That is the goal, some context and a few constraints, and I think that&amp;#8217;s enough for you to understand me.&lt;/p&gt;


	&lt;p&gt;This, dear friends, is a death march. Here is how I know: I have a pile of things to do long enough that I don&amp;#8217;t know how much there is, I don&amp;#8217;t know when I will finish, I don&amp;#8217;t feel like measuring what I&amp;#8217;ve done will help he know how much more time it will take, I have doing this essentially 12-14 hours per day, I have no system for choosing the next task, and I feel like I&amp;#8217;m making up the tasks as I go. As a result of all this, I&amp;#8217;m in here at 5.16 and I don&amp;#8217;t think I&amp;#8217;ll leave here until 22.00, and I need to do this until further notice, and until it&amp;#8217;s done. And oh yes, I can&amp;#8217;t really describe &amp;#8220;done&amp;#8221; precisely, but I&amp;#8217;ll know it when I see it. That all sounds like a death march to me. It&amp;#8217;s not a fun place, so how did I get here?&lt;/p&gt;


	&lt;p&gt;A big part of it is fear: I am at the tail end of an audit for the four preceding years, and I don&amp;#8217;t think I&amp;#8217;ve ever felt so much stress in my life. I dealt with my father&amp;#8217;s alcoholic rages better than I&amp;#8217;ve dealt with this audit. I have coped (if you can call it that) mostly by withdrawing from life in general and certainly avoiding anything that looks like financial record-keeping. Of course, I&amp;#8217;ve also spent a lot of time blaming myself for being such a poor accountant, even though my last bit of real accounting training was 1991 in high school. I&amp;#8217;ve been afraid to deal with the audit, and terrified to keep records carefully since about October 2007 or so, and my year end is October 2007. As a result of this fear I have delayed tackling my current taxes, wanting to focus my accountant and tax lawyer on the audit. Only now that the audit is mostly settled have I turned my attention back to the present.&lt;/p&gt;


	&lt;p&gt;Another part is incompetence: in 2002 I walked away from my first accountant because I started a full-time job and let my company hibernate indefinitely. On that basis I couldn&amp;#8217;t justify the expense of an accountant. As a result, I hired myself as accountant by default, and while the job wasn&amp;#8217;t very demanding in 2003, I left my full-time job that year to write &lt;em&gt;JUnit Recipes&lt;/em&gt;, which led me to more of the work I&amp;#8217;d wanted to do as an independent, then I started XP Day North America, which introduced me to my current business partner, ... you can see where that&amp;#8217;s headed: more money, more records to keep, more taxes to pay, and more financial information to get wrong. It&amp;#8217;s that incompetence that directly led to the audit and ignorance of a good filing system that has led to the long string of files of paperwork I need to process here. If I were any good at this, not only could I file my taxes sooner, but I probably wouldn&amp;#8217;t have been audited in the first place, and even if I had I would have been confident enough to handle it well.&lt;/p&gt;


	&lt;p&gt;As you can see, incompetence and fear play a big role, and not that my incompetence&amp;mdash;at least as far as it has hurt me in this context&amp;mdash;has mostly to do with something I was never trained properly to do! It&amp;#8217;s worth arguing that if I&amp;#8217;d hired someone to do it, I&amp;#8217;d be in better shape, and that &lt;em&gt;that&lt;/em&gt; is the truly incompetent part. I grant that, but part of the reason I didn&amp;#8217;t hire anyone is that I was too ignorant to see that I needed to do it, then once I realized I needed someone, too ashamed of the mistakes I&amp;#8217;d made to let anyone look at them. Fear, incompetence, shame&amp;#8230; I&amp;#8217;m doing really well so far.&lt;/p&gt;


	&lt;p&gt;Finally, there are the tangible effects of my fear, incompetence and shame. The audit has contributed to my sinking into a fairly deep depression (and no, not just sadness, believe me), the result of which has been many days spent in bed, rather than taking care of these matters. Every day I went to bed thinking, &lt;em&gt;Tomorrow I&amp;#8217;ll get up, start working on my financial records, and within a couple of weeks, I&amp;#8217;ll have organized everything&lt;/em&gt;, and every morning the first big thought in my head was, &lt;em&gt;Not today!&lt;/em&gt; As a result of this, not only were my 2007 records remaining disorganized, but my incoming paperwork began to create a serious backlog. Even more, I wasn&amp;#8217;t separating the 2007 material from the 2008 material, which is one of the reasons my current work is going so slowly: I first have to figure out whether I need to handle a piece of paper before I handle it. Such waste!&lt;/p&gt;


	&lt;p&gt;In addition, as you might expect, I am ignoring my other responsibilities in the name of Getting This Done, but when an urgent request comes up, it completely ruins my flow. My business partner needed me to pay him for some long-outstanding invoices. Nothing huge, but big enough to matter, and because the invoices were months old, I had to wade through old reports, old receipts, and so on, in order to help him. What should have taken 45 minutes took over 3.5 hours and knocked me completely off my rhythm. (I did manage to track down the cause of a $107 credit I had in my books, though: it turns out the credit was my mistake. Big surprise.) Yesterday, after paying him (but not for everything, because I&amp;#8217;m just not that well organized) I had to stop working, even though it was only 17.30, because my mind simply folded up its tent and left. I couldn&amp;#8217;t concentrate at all. I managed to go grocery shopping, but even &lt;em&gt;that&lt;/em&gt; manifested this death march: we usually shop every 2-3 days and carry home 2-4 bags of groceries. Sometimes those bags are pretty heavy, but usually they aren&amp;#8217;t. This time, even though we were leaving the country in 5 days, we carried 5 bags home&amp;mdash;after buying another bag at the store&amp;mdash;and just barely. I don&amp;#8217;t know about Sarah&amp;#8217;s, but my bags were heavy! I was struck by how my work problems were affecting my home life. About the only benefit of staying in my office is that I&amp;#8217;ve mostly avoided working around the contractors finishing up the main floor in our house.&lt;/p&gt;


	&lt;p&gt;So it&amp;#8217;s now 5.37 and the sky is brightening despite the rain. Pretty soon I&amp;#8217;ll be able to see enough that I can&amp;#8217;t justify not scanning papers and organizing them. I don&amp;#8217;t know how much I&amp;#8217;ll get done, nor how far along the project that represents, nor when it will be done, nor how to pace myself to finish it. I don&amp;#8217;t yet know whether I&amp;#8217;ll be late and delay my taxes an extra 1-2 weeks as a result, not to mention having this waiting for me when we return from Ireland. I don&amp;#8217;t know much about this project, but I&amp;#8217;m busting my ass on it, and that is what makes it a death march.&lt;/p&gt;


	&lt;p&gt;The foregoing is a true story. The names have not been changed. The events are real. I hope you feel a little compassion and even pity for me, even though this is a situation largely of my own creation. I have a question: do you think the causes of your last (or current!) death march are much different? Do you feel compassion and even pity for the people who landed you there?&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/183&amp;#38;title=Death%20(march)%20and%20taxes" id="digg-183" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F183&amp;#38;title=Death+%28march%29+and+taxes"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 04 Jun 2008 12:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/183</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>The perfect item for your team room...</title>
      <link>http://www.jbrains.info/permalink/182</link>
      <description>&lt;p&gt;...if your project is a death march.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://tinyurl.com/53zx64"&gt;&lt;img src="http://www.blogsmithmedia.com/www.engadget.com/media/2008/05/5-31-08-clock-lighting.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/182&amp;#38;title=The%20perfect%20item%20for%20your%20team%20room..." id="digg-182" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F182&amp;#38;title=The+perfect+item+for+your+team+room..."&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 03 Jun 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/182</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>You're invited! "Test-Driven Enterprise Code" at XP 2008</title>
      <link>http://www.jbrains.info/permalink/181</link>
      <description>&lt;p&gt;Allow me to invite you to &lt;a href="http://www.xp2008.org"&gt;&lt;span class="caps"&gt;XP 2008&lt;/span&gt;&lt;/a&gt; in Limerick, Ireland on June 11, 2008 at 2 PM local time to join me for &lt;a href="http://tinyurl.com/3zxxjs"&gt;Test-Driven Enterprise Code&lt;/a&gt;, my long-running tutorial aimed at programmers who want to practise test-driven development in the complicated world of platforms, frameworks, libraries, and more. Stay tuned to this channel for presentation slides, and possibly more.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/181&amp;#38;title=You're%20invited!%20%22Test-Driven%20Enterprise%20Code%22%20at%20XP%202008" id="digg-181" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F181&amp;#38;title=You%27re+invited%21+%22Test-Driven+Enterprise+Code%22+at+XP+2008"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 01 Jun 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/181</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>Rescuing disk space from Parallels</title>
      <link>http://www.jbrains.info/permalink/179</link>
      <description>&lt;p&gt;I use Parallels to run Windows under my MacBook Pro which has a 93 GiB hard disk. Since I also live a flight away from the nearest authorized Apple reseller, I find it difficult to buy a new hard disk whenever I need one. These reasons form the constraints under which I spent much of a recent afternoon reclaiming disk space, rather than focusing on real work. Since I have more than a neophyte&amp;#8217;s, but less than an expert&amp;#8217;s, knowledge of &lt;span class="caps"&gt;UNIX&lt;/span&gt;, I needed to look up the command to show me how to ask &lt;span class="caps"&gt;UNIX&lt;/span&gt; how much disk space folders used. I invoked this command&lt;/p&gt;


&lt;pre&gt;$ du -h -d 1&lt;/pre&gt;

	&lt;p&gt;This command tells me how much space each immediate folder (&lt;code&gt;-d 1&lt;/code&gt; means &amp;#8220;depth of one&amp;#8221;) takes up in human-readable (&lt;code&gt;-h&lt;/code&gt;) form. This gave me a report like the following&lt;/p&gt;


&lt;pre&gt;....other folders....
 24M    ./Applications
 24K    ./bin
7.3M    ./Desktop
2.5G    ./Documents
....yet other folders....&lt;/pre&gt;

	&lt;p&gt;Since I want to focus on the really big folders, I looked for a way to do that. I decided to &lt;code&gt;grep&lt;/code&gt; for a &amp;#8220;G&amp;#8221; in the fourth position.&lt;/p&gt;


&lt;pre&gt;mel:~ jbrains$ du -d 1 -h | grep ^...G.*$
2.5G    ./Documents
 20G    ./Library
1.0G    ./Movies
5.8G    ./Music
3.3G    ./Pictures
3.3G    ./Workspaces
 36G    .&lt;/pre&gt;

	&lt;p&gt;Since I plan to use this command frequently, I added it to &lt;code&gt;~/.profile&lt;/code&gt;&lt;/p&gt;


&lt;pre&gt;alias find_big_folders="du -d 1 -h | grep ^...G.*$"&lt;/pre&gt;

	&lt;p&gt;I found that &lt;code&gt;Library&lt;/code&gt; took up the most space, and within it &lt;code&gt;Parallels&lt;/code&gt; took up over 20 GiB on its own. I searched the web and learned that Parallels has a &amp;#8220;Compressor Tool&amp;#8221; that compresses hard disk images, but when I tried to use it, it failed, telling me I had snapshots or had enabled &amp;#8220;disk undo&amp;#8221;. Since neither condition held true, I searched further and saw that Parallels has a long-standing defect (back to July 2007 at least) that causes this problem. Fortunately, the same search gave me a solution: &lt;strong&gt;MakeVM&lt;/strong&gt;.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://tinyurl.com/4tcadw"&gt;MakeVM&lt;/a&gt; creates disk images for Parallels and VMWare, and although it cost &lt;span class="caps"&gt;USD 19&lt;/span&gt;.99, it appeared to solve my problem, so I decided to try it. I installed it on the Windows XP image running under Parallels and found the &amp;#8220;Custom Clone&amp;#8221; feature ridiculously easy to use. Since I had no experience with this tool and wanted to recover from each step, I did the following&lt;/p&gt;


	&lt;ol&gt;
	&lt;li&gt;Back up my entire Parallels virtual machine image by &lt;code&gt;tar&lt;/code&gt;-ing it to an external disk.&lt;/li&gt;
		&lt;li&gt;Back up my second Parallels hard disk image (&lt;code&gt;disk2.hdd&lt;/code&gt;).&lt;/li&gt;
		&lt;li&gt;Choose &amp;#8220;Custom Clone&amp;#8221; under MakeVM to clone my second hard drive (not the &amp;#8220;Virtual Hard Disk&amp;#8221; feature, which wants to clone a hard disk image), writing the clone to my external hard disk, since I had little space on the internal disk. &lt;strong&gt;When asked whether I wanted to compact the cloned disk, I naturally chose &amp;#8220;yes&amp;#8221;.&lt;/strong&gt;&lt;/li&gt;
		&lt;li&gt;Shut down my virtual Windows XP.&lt;/li&gt;
		&lt;li&gt;Edit the Windows XP virtual machine settings, removing the existing &amp;#8220;Hard Disk 2&amp;#8221; image and adding the newly-cloned disk image as &amp;#8220;Hard Disk 2&amp;#8221;. Windows XP should treat these disks as identical.&lt;/li&gt;
		&lt;li&gt;Start my virtual Windows XP and judge the results. Although I had to re-install Java to make Eclipse work, everything else appeared all right.&lt;/li&gt;
		&lt;li&gt;Shut down my virtual Windows XP.&lt;/li&gt;
		&lt;li&gt;Remove the old Hard Disk 2 image from my internal disk and copy the newly-cloned Hard Disk 2 image to my internal disk, updating the virtual machine preferences accordingly.&lt;/li&gt;
		&lt;li&gt;Back up my entire Windows XP virtual machine image again, repeating the rest of the process for Hard Disk 1.&lt;/li&gt;
	&lt;/ol&gt;


	&lt;p&gt;This entire process took about a half day, so it helped that I had another computer in the room on which to continue working. Once I completed the process, my Windows XP virtual machine image folder reduced in size from about 22 GiB to its current 9.2 GiB. That rectified my disk space problems. I now have over 16 GiB of breathing room, which means I don&amp;#8217;t have to upgrade my hard disk, but rather I can wait to upgrade my entire machine. That makes me happy.&lt;/p&gt;


	&lt;p&gt;If you have disk space problems, or even if you simply want to save disk space, and you run Parallels or VMWare, I recommend &lt;a href="http://tinyurl.com/4tcadw"&gt;MakeVM&lt;/a&gt; to safely compact your disk images. I found it well worth the &lt;span class="caps"&gt;USD 19&lt;/span&gt;.99 I paid for it. If this helps you, then please use the &amp;#8220;Discuss&amp;#8221; link below to comment.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/179&amp;#38;title=Rescuing%20disk%20space%20from%20Parallels" id="digg-179" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F179&amp;#38;title=Rescuing+disk+space+from+Parallels"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Fri, 30 May 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/179</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>A reason for a relative lack of congruence in the world</title>
      <link>http://www.jbrains.info/permalink/180</link>
      <description>&lt;p&gt;Just a little something to think about&amp;#8230;&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;From a writer&#8217;s point of view, congruent interactions aren&#8217;t very dramatic; people just act sensibly, are considerate of one another, get their work done, and enjoy what they&#8217;re doing. That kind of behavior might not make as good a soap opera scene as your manager throwing a tantrum and you cringing in the corner, but it definitely makes a better project.&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;From Jerry Weinberg, &lt;a href="http://www.ayeconference.com/beyondblaming/"&gt;Beyond Blaming.&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/180&amp;#38;title=A%20reason%20for%20a%20relative%20lack%20of%20congruence%20in%20the%20world" id="digg-180" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F180&amp;#38;title=A+reason+for+a+relative+lack+of+congruence+in+the+world"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 29 May 2008 16:07:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/180</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>Mercurial, Python, Mac OS X and duplication</title>
      <link>http://www.jbrains.info/permalink/178</link>
      <description>&lt;p&gt;As you all know, I&amp;#8217;m not a fan of duplication. When we duplicate code we create safe, warm places for defects to hide. The more we duplicate, the more things go wrong, the harder they are to debug and, most importantly, &lt;strong&gt;the more we need to know in order to find the root cause of the problem&lt;/strong&gt;. (In particular, we need to know we&amp;#8217;ve duplicated something and where it is duplicated.) Just to emphasize that this is not some arcane theoretical notion about programming, allow me to share with you an adventurous half-hour I just spent trying to get &lt;code&gt;mercurial&lt;/code&gt; (or &lt;code&gt;hg&lt;/code&gt;, if you like) to play nicely between my MacBook Pro and my Mac Mini.&lt;/p&gt;


	&lt;p&gt;I have a working copy of a Mercurial forest in the same place on two different computers, one is my MacBook Pro and the other is my Mac Mini. When I have to do book-keeping work, I often use the laptop for handling paper and my desktop for running QuickBooks. This helps me avoid overworking either computer and that slowing me down. At least, this is my &lt;em&gt;intent&lt;/em&gt;.&lt;/p&gt;


	&lt;p&gt;Since I&amp;#8217;m using &lt;code&gt;hg&lt;/code&gt;, by its nature a decentralized version control system, I have to be sure to keep my two working copies synchronized. This means periodic &lt;code&gt;push&lt;/code&gt; operations from the laptop to the desktop or &lt;code&gt;pull&lt;/code&gt; operations to the desktop from the laptop, depending on which keyboard happens to be in front of me at the moment. Since &lt;code&gt;push&lt;/code&gt; from here to there and &lt;code&gt;pull&lt;/code&gt; from here to there are essentially the same operation, it stands to reason that I should be able to do either one equally well.&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://tinyurl.com/ywdnoe" title="Not so fast, mah littel pink frend" alt="Not so fast, mah littel pink frend" /&gt;&lt;/p&gt;


	&lt;p&gt;I could &lt;code&gt;push&lt;/code&gt; from the laptop, but not &lt;code&gt;pull&lt;/code&gt; from the desktop. I was getting this error:&lt;/p&gt;


&lt;pre&gt;hobbes:Operations jbrains$ hg incoming ssh://mel.local/Workspaces/DiasparSoftwareServices/Operations
remote: Traceback (most recent call last):
remote:   File "/usr/local/bin/hg", line 11, in &amp;lt;module&amp;gt;
remote:     from mercurial import demandimport; demandimport.enable()
remote: ImportError: No module named mercurial
abort: no suitable response from remote hg!&lt;/pre&gt;

	&lt;p&gt;After some searching, I came across an article that suggested I had an &lt;code&gt;ssh&lt;/code&gt; problem, and since I hadn&amp;#8217;t swapped keys from the desktop to the laptop yet, I did that, hoping it would magically solve the problem. It did not. It saved me typing my password for each &lt;code&gt;pull&lt;/code&gt; or &lt;code&gt;incoming&lt;/code&gt; operation, but &lt;a href="http://tinyurl.com/49oa9w"&gt;what other value it has, I don&amp;#8217;t know.&lt;/a&gt; I had to search on.&lt;/p&gt;


	&lt;p&gt;After a few more minutes, I found &lt;a href="http://tinyurl.com/4t2j9p"&gt;this article&lt;/a&gt;, which suggested to me that my &lt;code&gt;PYTHONPATH&lt;/code&gt; or &lt;code&gt;PATH&lt;/code&gt; was wrong. I compared the environment variables on both computers and that wasn&amp;#8217;t the problem. I compared the locations of Mercurial on both computers with a quick &lt;code&gt;which hg&lt;/code&gt; and they were the same. I was beginning to think that I just didn&amp;#8217;t know enough about installing Python packages to make this work, but then I asked each computer to &lt;code&gt;locate mercurial&lt;/code&gt;.&lt;/p&gt;


	&lt;p&gt;Aha!&lt;/p&gt;


	&lt;p&gt;The laptop answered &lt;code&gt;/usr/local/lib/python2.5/site-packages&lt;/code&gt; and the desktop answered &lt;code&gt;/Library/Python/2.5/site-packages&lt;/code&gt; and &lt;strong&gt;there it is&lt;/strong&gt;: the two environments expect Python packages in different places. I bet some symbolic links will do the trick.&lt;/p&gt;


	&lt;p&gt;On the desktop, I did this:&lt;/p&gt;


&lt;pre&gt;/usr/local/lib jbrains$ sudo ln -s /Library/Python/2.5 python2.5&lt;/pre&gt;

	&lt;p&gt;Now when someone looks for Python packages in the usual &lt;span class="caps"&gt;UNIX&lt;/span&gt; place (&lt;code&gt;/usr/local/lib/python2.5), the file system points them to the usual Mac OS place (&lt;/code&gt;/Library/Python/2.5@). I&amp;#8217;m not thrilled about two different conventions, but as long as I can make one be like the other, it&amp;#8217;s all good.&lt;/p&gt;


	&lt;p&gt;On the laptop, however, I found a defect as a result of duplication. I found Python libraries both in &lt;code&gt;/usr/local/lib/python2.5&lt;/code&gt; and in &lt;code&gt;/Library/Python/2.5&lt;/code&gt;. It&amp;#8217;s a wonder anything Python works correctly in that environment. &lt;strong&gt;This is the defect I fixed today&lt;/strong&gt;. I moved the Python libraries into the usual Mac OS place (&lt;code&gt;/Library/Python/2.5&lt;/code&gt;) before adding the same symbolic link that I&amp;#8217;d added on the desktop.&lt;/p&gt;


	&lt;p&gt;And yes, folks, now it all just works. Mostly because now there&amp;#8217;s only one place for Python libraries to live on each computer.&lt;/p&gt;


	&lt;p&gt;If you remove duplication, you don&amp;#8217;t just improve the design, but you remove places defects can hide.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/178&amp;#38;title=Mercurial,%20Python,%20Mac%20OS%20X%20and%20duplication" id="digg-178" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F178&amp;#38;title=Mercurial%2C+Python%2C+Mac+OS+X+and+duplication"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 29 May 2008 03:00:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/178</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>If you defer the decision long enough...</title>
      <link>http://www.jbrains.info/permalink/177</link>
      <description>&lt;p&gt;...then someone might implement the feature for you. In surfing around, I recently found out about creating &amp;#8220;subreddits&amp;#8221;, which are subdomains of &lt;code&gt;reddit.com&lt;/code&gt;. I learned this when I saw Joel Spolsky&amp;#8217;s weblog had a &amp;#8220;Discuss&amp;#8221; link that submitted the item to &lt;code&gt;joel.reddit.com&lt;/code&gt; instead of hosting comments on his own weblog. I think this is a good idea, so you&amp;#8217;ll notice that I&amp;#8217;ve done the same here. This is especially helpful, given that in order to add comments to this weblog, I either have to build the feature myself or migrate my content to TextPattern or one of its ilk.&lt;/p&gt;


	&lt;p&gt;The next time someone insists you need a doubtful feature, ask them to choose something more important first. By the time you get to the doubtful feature, you might have discovered that someone&amp;#8217;s built it for you!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/177&amp;#38;title=If%20you%20defer%20the%20decision%20long%20enough..." id="digg-177" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F177&amp;#38;title=If+you+defer+the+decision+long+enough..."&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 07 May 2008 05:39:00 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/177</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>The post-iteration demo: practice or anti-pattern?</title>
      <link>http://www.jbrains.info/permalink/176</link>
      <description>&lt;p&gt;The standard, universal data processing answer is &amp;#8220;it depends&amp;#8221;. Specifically, it depends on the ongoing participation of your stakeholders.&lt;/p&gt;


	&lt;p&gt;If the development team is demonstrating the application at the end of the iteration to the stakeholders, then that&amp;#8217;s an anti-pattern. If you&amp;#8217;re not getting any constructive criticism from the stakeholders about the demonstration, then the stakeholders are likely not engaged by the demonstration, and it&amp;#8217;s a waste of time. If your stakeholders are engaged, then they&amp;#8217;re likely giving a sizable amount of constructive criticism, the result of which is re-working a substantial number of stories in the next iteration. Of course, you could just be &lt;em&gt;that&lt;/em&gt; good, but I haven&amp;#8217;t met that team yet.&lt;/p&gt;


	&lt;p&gt;The last time I worked with a team in this situation, they held demonstrations once per iteration, which for them meant every two weeks. They expressed to me that they were not getting feedback soon enough, so I asked them whether they thought weekly demonstrations would work better. They did, they asked the stakeholders to make at least two people available every Friday afternoon, and that worked. After a while, they added a Wednesday morning demonstration just before lunch. The next step would be daily demonstrations, then finally continuous stakeholder participation. The secret was to sneak up on the daily demonstrations.&lt;/p&gt;


	&lt;p&gt;Rather than ask your stakeholder to go from hands-off to daily meetings, hold demonstrations once per iteration. When they point out how much feedback causes rework, suggest having a mid-iteration demonstration to avoid so much rework. You might be able to fix a small problem or two right in front of the stakeholders, and if you can, then do. (It looks impressive.) Once you&amp;#8217;ve established that you can fix some problems without putting the stakeholders to sleep, they&amp;#8217;re more likely to want to work directly with you. Each time they notice a demonstration leads to substantial rework, suggest doubling the frequency of the demonstrations. Eventually you&amp;#8217;ll arrive at the right amount of stakeholder participation for your project. The key is to &lt;strong&gt;let your stakeholders notice the problem of not enough feedback&lt;/strong&gt;, because if it&amp;#8217;s their problem, they might look for solutions, but if it&amp;#8217;s your problem, they&amp;#8217;re less likely to care. If they can&amp;#8217;t see it&amp;#8217;s their problem, then look for subtle, non-destructive ways to make it their problem.&lt;/p&gt;


	&lt;p&gt;My goal is for a key stakeholder and the development team to demonstrate the product &lt;em&gt;together&lt;/em&gt; to any and all interested parties. This is an important step towards the &lt;strong&gt;whole team&lt;/strong&gt; approach to building software that I find so incredibly effective.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/176&amp;#38;title=The%20post-iteration%20demo:%20practice%20or%20anti-pattern?" id="digg-176" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F176&amp;#38;title=The+post-iteration+demo%3A+practice+or+anti-pattern%3F"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 30 Apr 2008 15:36:05 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/176</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>When you're the bottleneck...</title>
      <link>http://www.jbrains.info/permalink/175</link>
      <description>&lt;p&gt;I remember being a technical lead, believing that it was my job to make sure everything was doing correctly and as quickly as possible. The result was predictable: I made myself a bottleneck because I was afraid to delegate important tasks to other people, for fear that they&amp;#8217;d do it poorly and have to redo it, or even simply because it would take me less time to do it than to explain to someone else how to do it. I know now that letting myself be a bottleneck is a bad idea, but I wasn&amp;#8217;t able to explain why very well until just a moment ago when a long-awaited neural connection finally happened. I almost felt the crackle in my brain at the point of impact.&lt;/p&gt;


	&lt;p&gt;Tim Ottinger wrote about &lt;a href="http://www.butunclebob.com/ArticleS.TimOttinger.SoonerNotFaster"&gt;Sooner, Not Faster&lt;/a&gt;, which I describe to people frequently in my work as a consultant. My goal in teaching test-driven development is not to help programmers write code more quickly, but rather to help them deliver solid code sooner. The time-saving techniques include being clear about what to build before trying to build it (write a failing test first), building only what you need (write just enough code to pass the test), stopping when you&amp;#8217;ve built enough (continue until you can&amp;#8217;t think of more failing tests to write), and keeping the code clean as you go to avoid building up inventory of uncompleted necessary work (&amp;#8220;clean the kitchen&amp;#8221; refactoring). Not all these techniques involve thinking or typing more quickly. Some involve thinking more to type less and knowing what&amp;#8217;s enough then stopping. In general, I help teams by focusing on how to deliver a satisfactory result sooner, no matter how fast or slow the individual tasks are completed.&lt;/p&gt;


	&lt;p&gt;Now I wish I&amp;#8217;d thought that way as a technical lead. If I have a backlog of 10 tasks that take a total of 4 weeks to complete, but I could delegate some of those tasks to others, then even if they take 5 times as long as I do to complete those tasks, I could delegate any task up to 3 days in length and, as a group, we could be done in 3 weeks, even if we spend more total time working. The alternative is to keep those tasks for myself, then have the others do busywork to avoid looking idle. You might think this is a false alternative, but how many people on your team are working on its top three priorities, and how many are working on other things? The other things are busywork!&lt;/p&gt;


	&lt;p&gt;Had I thought this way, I could have benefited dramatically. More important work would have been completed, I&amp;#8217;d have learned how to delegate effectively, and I would have felt (and probably now feel) less stress.&lt;/p&gt;


	&lt;p&gt;If only.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/175&amp;#38;title=When%20you're%20the%20bottleneck..." id="digg-175" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F175&amp;#38;title=When+you%27re+the+bottleneck..."&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 28 Apr 2008 15:22:13 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/175</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>New review of JUnit Recipes</title>
      <link>http://www.jbrains.info/permalink/174</link>
      <description>&lt;p&gt;It&amp;#8217;s nice to see that nearly five years after I started writing &lt;a href="http://tinyurl.com/4p3vp8"&gt;&lt;em&gt;JUnit Recipes&lt;/em&gt;&lt;/a&gt;, &lt;a href="http://tinyurl.com/42f8w3"&gt;people continue to read and review it&lt;/a&gt;. I imagined it would have become obsolete by now, especially with the proliferation of Java 5, Java 6 and JUnit 4.&lt;/p&gt;


	&lt;p&gt;The review ends with &amp;#8220;If you use JUnit as your test tool and if you do any of the &#8216;things&#8217; covered in the contents list of recipes then I recommend getting hold of this book.&amp;#8221; I appreciate it.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/174&amp;#38;title=New%20review%20of%20JUnit%20Recipes" id="digg-174" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F174&amp;#38;title=New+review+of+JUnit+Recipes"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 20 Apr 2008 16:05:04 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/174</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>Quick guideline for using experimentation as an aid for decision making</title>
      <link>http://www.jbrains.info/permalink/173</link>
      <description>&lt;p&gt;An anonymous person at &lt;code&gt;blog.isnotworking.com&lt;/code&gt; whose name I could not find on the site has written a &lt;a href="http://blog.isnotworking.com/2008/03/quick-guideline-for-using.html"&gt;short piece&lt;/a&gt; on helping teams avoid getting stuck arguing over different solutions to a given problem. It was inspired by my November/December 2007 article in &lt;span class="caps"&gt;IEEE&lt;/span&gt; Software Magazine.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://blog.isnotworking.com/2008/03/quick-guideline-for-using.html"&gt;http://blog.isnotworking.com/2008/03/quick-guideline-for-using.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/173&amp;#38;title=Quick%20guideline%20for%20using%20experimentation%20as%20an%20aid%20for%20decision%20making" id="digg-173" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F173&amp;#38;title=Quick+guideline+for+using+experimentation+as+an+aid+for+decision+making"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 20 Apr 2008 15:57:33 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/173</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>Five Mistakes New Agile Teams Make</title>
      <link>http://www.jbrains.info/permalink/172</link>
      <description>&lt;p&gt;I recently had the honor of speaking at the &lt;a href="http://www.phillyemergingtech.com/"&gt;Emerging Technologies for the Enterprise Conference&lt;/a&gt;, where I renewed some friendships, made some new acquaintances, and spoke about something I enjoy: failures.&lt;/p&gt;


	&lt;p&gt;Last summer I debuted &lt;a href="http://tinyurl.com/2hl6zv"&gt;&lt;em&gt;XP: My Greatest Misses 2000-2007&lt;/em&gt;&lt;/a&gt;, which became popular due to its honesty and directness. (See &lt;a href="http://tinyurl.com/yspy9v"&gt;an example&lt;/a&gt; of the response to it.) I followed this theme of reflecting on failures to gather some mistakes I have seen people make as they make the transition from work group in chaos to agile team. It&amp;#8217;s important to note that I didn&amp;#8217;t talk about the five biggest mistakes, the five most common, nor the five most dangerous; but rather, simply about five mistakes that came to my head. As you&amp;#8217;d expect, once I&amp;#8217;d written my five in &lt;a href="http://articles.jbrains.ca/FiveMistakesNewAgileTeamsMake-handout.pdf"&gt;the notes&lt;/a&gt;, I found a number more, especially as I sat in my fellow presenters&amp;#8217; sessions. Even when they weren&amp;#8217;t describing mistakes at all, they triggered a number of memories&amp;mdash;so many that I could easily have written the &lt;strong&gt;20&lt;/strong&gt; mistakes new agile teams make.&lt;/p&gt;


	&lt;p&gt;Please enjoy &lt;a href="http://articles.jbrains.ca/FiveMistakesNewAgileTeamsMake-handout.pdf"&gt;Five Mistakes New Agile Teams Make&lt;/a&gt;, and if you&amp;#8217;d like me to visit your user group, please contact me at the prominently-displayed e-mail address on this site. You should also consider contacting the &lt;a href="http://www.agilealliance.org"&gt;Agile Alliance&lt;/a&gt; to find out how to qualify for funding to bring out-of-town speakers to your user group or event.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/172&amp;#38;title=Five%20Mistakes%20New%20Agile%20Teams%20Make" id="digg-172" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F172&amp;#38;title=Five+Mistakes+New+Agile+Teams+Make"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 01 Apr 2008 16:52:44 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/172</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>A clear violation of the Single Responsibility Principle</title>
      <link>http://www.jbrains.info/permalink/171</link>
      <description>&lt;p&gt;(From &lt;a href="http://xkcd.com/387"&gt;&lt;span class="caps"&gt;XKCD&lt;/span&gt;&lt;/a&gt;)&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://imgs.xkcd.com/comics/advanced_technology.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;Should a class be a factory for itself?&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/171&amp;#38;title=A%20clear%20violation%20of%20the%20Single%20Responsibility%20Principle" id="digg-171" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F171&amp;#38;title=A+clear+violation+of+the+Single+Responsibility+Principle"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 25 Feb 2008 22:27:12 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/171</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>McCabe Complexity and Design</title>
      <link>http://www.jbrains.info/permalink/170</link>
      <description>&lt;p&gt;Another in the Enerjy TV series. This time, the question is &amp;#8220;How do you believe McCabe Complexity helps programmers?&amp;#8221;&lt;/p&gt;


&lt;embed src="http://blip.tv/play/Aai1Lg" type="application/x-shockwave-flash" width="480" height="360" allowscriptaccess="always" allowfullscreen="true" /&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/170&amp;#38;title=McCabe%20Complexity%20and%20Design" id="digg-170" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F170&amp;#38;title=McCabe+Complexity+and+Design"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 11 Feb 2008 19:44:04 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/170</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>Is excellent design "too Eastern" for us?</title>
      <link>http://www.jbrains.info/permalink/169</link>
      <description>&lt;p&gt;I have spent the last two days with &lt;a href="http://www.poppendieck.com"&gt;Mary and Tom Poppendieck&lt;/a&gt; at one of their Practitioners Courses, and I find myself inspired. Among the interesting moments for me was a point at which I reached an unsettling notion: are we &amp;#8220;too Western&amp;#8221; to design software well?&lt;/p&gt;


	&lt;p&gt;I came to this question while watching course attendees talk about the problems in their organization. As they explored the flow of value through their IT organizations, I kept hearing about managers interrupting the flow and of centralized decision-makers as bottlenecks, when it occurred to me: I&amp;#8217;ve heard about these problems in code before.&lt;/p&gt;


	&lt;p&gt;Specifically, I heard the word &amp;#8220;manager&amp;#8221; and my mind wandered towards thinking of &lt;code&gt;Manager&lt;/code&gt; classes in a code base, rather than flesh-and-blood managers. In that wandering instant I saw a connection between the two kinds of managers: human managers have mostly commonly been trained over the last century to micro-manage, make important decisions and direct their people; and &lt;code&gt;Manager&lt;/code&gt; classes do essentially the same thing in code. Now, while our ideas of management have changed in the past 50 years, mostly due to the work coming out of Toyota, we are still over-run by micro-managers whose effectiveness is limited.&lt;/p&gt;


	&lt;p&gt;It&amp;#8217;s quite similar with code. In spite of the object-oriented design movement and the advance of test-driven development with its emphasis on simple design, procedural thinking dominates, even in code bases that use object-oriented languages. Most programmers approach code with Procedural Mind, even when they believe they want to design with objects. Even when I teach people how their can arrive at excellent designs by following four simple rules, Procedural Mind dominates.&lt;/p&gt;


	&lt;p&gt;So I wonder: given the parallels between tactical, command-and-control management and highly procedural code where important decisions are centralized in these &lt;code&gt;Manager&lt;/code&gt; classes, and given that our most common human management style is a relic of western military thinking, and given that it perpetuates in part due to culturally-entrenched ideas about managing people, are Western programmers conditioned against excellent design? Are we mostly doomed to gather our code in &lt;code&gt;Manager&lt;/code&gt; classes, rather than distribute responsibilities evenly and focus on object interaction?&lt;/p&gt;


	&lt;p&gt;Are those notions simply too Eastern for us?&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/169&amp;#38;title=Is%20excellent%20design%20%22too%20Eastern%22%20for%20us?" id="digg-169" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F169&amp;#38;title=Is+excellent+design+%22too+Eastern%22+for+us%3F"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 17 Jan 2008 01:00:41 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/169</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>Backpack helps me change my habits</title>
      <link>http://www.jbrains.info/permalink/168</link>
      <description>&lt;p&gt;I use &lt;a href="http://tinyurl.com/28c9u6"&gt;Backpack&lt;/a&gt; to help me change my habits for the better, and I wanted to share this little technique with you.&lt;/p&gt;


	&lt;p&gt;The programmer in me values version control systems because they allow me to keep an indefinite record of what I&amp;#8217;ve done. If something goes wrong while I&amp;#8217;m working, then I can go back to an old version of a file and continue working. This is why I use Mercurial every day.&lt;/p&gt;


	&lt;p&gt;The entrepreneur in me values off-site backups because if a fire destroys my office, then all I need is any computer and an internet connection and I can get back to work. This is why I use Amazon S3 every day.&lt;/p&gt;


	&lt;p&gt;The &lt;a href="http://tinyurl.com/242oel"&gt;scanner&lt;/a&gt; in me values &lt;a href="http://tinyurl.com/2jdbbb"&gt;getting things done&lt;/a&gt;, because when commitments start to sneak up on me, I have my commitments, actions and priorities in one place, and I can get back on track. This is why I use &lt;a href="http://www.omnigroup.com/applications/omnifocus/"&gt;OmniFocus&lt;/a&gt; every day.&lt;/p&gt;


	&lt;p&gt;What I&amp;#8217;ve noticed, though, is that my tasks aren&amp;#8217;t really getting done. For me, most tasks require building or changing some key assets. Sometimes that&amp;#8217;s code, or expense receipts, or drafts of an article. It&amp;#8217;s not good enough to write the article, I want to put it into version control and know it&amp;#8217;s backed up off site. It&amp;#8217;s natural for me to end a coding session by committing changes to Mercurial, but it&amp;#8217;s not yet natural for me to end a non-coding work session the same way. I need to remind myself to do this.&lt;/p&gt;


	&lt;p&gt;Whenever I hear myself think or say, &amp;#8220;I need to remind myself&amp;#8230;&amp;#8221; I immediately log in to &lt;a href="http://tinyurl.com/28c9u6"&gt;Backpack&lt;/a&gt;, because it does such a great job of reminding me of things. Today, I added a reminder that reads&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;A task isn&amp;#8217;t done until the assets are safe: under version control and backed up&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;I set the reminder for tomorrow, and every day after that, until the idea is burned into my brain and becomes second nature. I&amp;#8217;m not sure how long that&amp;#8217;ll take, but by this time next month, I should be able to switch that reminder to every month, just to make sure it doesn&amp;#8217;t fall completely off my radar.&lt;/p&gt;


	&lt;p&gt;This is how &lt;a href="http://tinyurl.com/28c9u6"&gt;Backpack&lt;/a&gt; helps me move away from bad habits and move towards better habits.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.digg.com/submit?phase=2&amp;#38;url=http://www.jbrains.info/permalink/168&amp;#38;title=Backpack%20helps%20me%20change%20my%20habits" id="digg-168" style="background: none"&gt;&lt;img alt="Digg!" height="15" src="http://digg.com/img/badges/80x15-digg-badge.png" style="border: 0px" width="80" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://reddit.com/submit?sr=jbrains&amp;#38;url=http%3A%2F%2Fwww.jbrains.info%2Fpermalink%2F168&amp;#38;title=Backpack+helps+me+change+my+habits"&gt;Discuss&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Fri, 04 Jan 2008 17:22:41 GMT</pubDate>
      <guid>http://www.jbrains.info/permalink/168</guid>
      <author>me@jbrains.ca (J. B. Rainsberger)</author>
    </item>
    <item>
      <title>Should we measure velocity?</title>
      <link>http://www.jbrains.info/permalink/167</link>
      <description>&lt;p&gt;What does velocity measure?&lt;/p&gt;


	&lt;p&gt;First, let&amp;#8217;s be clear: by velocity, I mean story points delivered per iteration over time. Of course, that means we need more definitions, so let me get those out of the way now.&lt;/p&gt;


	&lt;p&gt;&amp;#8220;A story point&amp;#8221; is a unit that programmers invent solely to make it easier to estimate the work it takes to deliver a story. A story point is however big the programmers decide it is, no more, and no less. Story points are useful to the extent that they help programmers compare the effort required to deliver different stories, so that the team can decide how many stories to commit to delivering in a given iteration. Although story points necessarily fluctuate in value, one hopes that over a sufficiently short span of time &amp;#8211; say the length of a release &amp;#8211; the fluctuation is small enough that a constant approximation of velocity is helpful enough to plan the release.&lt;/p&gt;


	&lt;p&gt;&amp;#8220;Delivered&amp;#8221; means realizing (in the accounting sense) the value the customer intended to realize by asking the team to work on the story. A story is not delivered until it either reduces cost or generates revenue.&lt;/p&gt;


	&lt;p&gt;&amp;#8220;Iteration&amp;#8221; means equal-length time boxes the goal of which is to provide natural breaks in daily work to reconsider the plan and stop work from expanding indefinitely. On teams that have less trouble stopping when they&amp;#8217;ve done enough, iterations are less important.&lt;/p&gt;


	&lt;p&gt;&amp;#8220;Over time&amp;#8221; refers to the trend of spot measurements over at least the length of a release.&lt;/p&gt;


	&lt;p&gt;I hope that makes it crystal clear what I mean by velocity. Now that I&amp;#8217;ve clarified the meaning of velocity, what does it measure? It simply aggregates past estimates of effort of a set of stories the team selected to complete in the last several iterations. That doesn&amp;#8217;t sound like much, does it? There&amp