<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ivan's agile thinkings &#187; Productivity</title>
	<atom:link href="http://ivansthunks.com/blog/category/productivity/feed/" rel="self" type="application/rss+xml" />
	<link>http://ivansthunks.com/blog</link>
	<description>My thoughts and opinions on all things agile</description>
	<lastBuildDate>Sat, 02 Jul 2011 20:21:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Git in (mild) anger</title>
		<link>http://ivansthunks.com/blog/2011/07/02/git-in-mild-anger/</link>
		<comments>http://ivansthunks.com/blog/2011/07/02/git-in-mild-anger/#comments</comments>
		<pubDate>Sat, 02 Jul 2011 20:20:55 +0000</pubDate>
		<dc:creator>ivan</dc:creator>
				<category><![CDATA[Configuration management]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Subversion]]></category>

		<guid isPermaLink="false">http://ivansthunks.com/blog/?p=76</guid>
		<description><![CDATA[Last weekend I wasn&#8217;t feeling so good due to a bit of a cold.  As I manage more than I do these days I don&#8217;t often get time to code.  Interestingly I&#8217;ve noticed a bit of a trend that I code more when I&#8217;m feeling ill.  I don&#8217;t really understand it, but as long as [...]]]></description>
			<content:encoded><![CDATA[<p>Last weekend I wasn&#8217;t feeling so good due to a bit of a cold.  As I manage more than I do these days I don&#8217;t often get time to code.  Interestingly I&#8217;ve noticed a bit of a trend that I code more when I&#8217;m feeling ill.  I don&#8217;t really understand it, but as long as my brain is working and my body doesn&#8217;t feel like doing much I suppose it&#8217;s nothing to worry about.</p>
<p>On to the main point of this post.  My company is currently using Subversion as its source control mechanism. I&#8217;m pretty sure I want to change this to something better.  I have the influence and power to be able to enact this change, potentially overnight if I REALLY wanted, but that would be as successful as flying to the moon in a sherbet-powered watermelon.</p>
<p>For a start, I&#8217;m not 100% sure of what &#8216;better&#8217; would be.  We&#8217;ve had a small grass-roots movement trying different types of DCVS for a while.  Basically this meant Mercurial and Git.  Git seems to be winning out at the moment, and its got to be said that the git-svn seems very solid.</p>
<p>I&#8217;ve been tracking svn using git-svn for a while &#8211; I might not &#8216;do&#8217; so much any more, but I know the answers to lots of things and need the code to refer to.  But last weekend was the first time I&#8217;ve used Git in anger.  So, I set about tidying and refactoring a set of unit tests that are horribly coupled to a large chunk of the system &#8211; and are slow because of it.</p>
<p>What a difference Git made to my work-flow!  Edit, compile, re-run tests, COMMIT, edit, compile, re-run tests, COMMIT.  I was committing many, many times more than I ever would have with Subversion.  Even if I had my own Subversion branch to isolate my changes, the time to commit over the network would have stopped me doing it so often.  Git was a breath of fresh air.  Knowing I could just do my work and commit as part of my workflow was very liberating, confidence giving and really quite enjoyable.  At the end of the session, I simply ran &#8216;git svn rebase&#8217; re-ran my tests and &#8216;dcommit&#8217;ed back to Subversion.*</p>
<p>I have a longer term plan to get a GitHub style development system internally at work and this experience has encouraged me tremendously.  So much so that this long-weekend I installed gitorious and gerrit on a VirtualBox VM to give them a test drive.</p>
<p>Anyone else changed from Subversion to Git?  Got any pointers or war stories?</p>
<p>* Actually I got a little help from a colleague to move my changes onto a git branch so then I could merge/squash them before committing. Thanks for the help and learning Mehran.</p>
]]></content:encoded>
			<wfw:commentRss>http://ivansthunks.com/blog/2011/07/02/git-in-mild-anger/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Big Visible Build Monitor!!</title>
		<link>http://ivansthunks.com/blog/2010/07/05/big-visible-build-monitor/</link>
		<comments>http://ivansthunks.com/blog/2010/07/05/big-visible-build-monitor/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 14:51:29 +0000</pubDate>
		<dc:creator>ivan</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://ivansthunks.com/blog/2010/07/05/big-visible-build-monitor/</guid>
		<description><![CDATA[Just a quick post to let everyone see the latest incarnation of the big, visible build monitors that I have been building.  The current version connects directly to the network and scrapes Hudson&#8217;s json api for a specific view of the builds we have. Here&#8217;s a list of the component parts: an Arduino ATMEGA328 an [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left">Just a quick post to let everyone see the latest incarnation of the big, visible build monitors that I have been building.  The current version connects directly to the network and scrapes Hudson&#8217;s json api for a specific view of the builds we have.</p>
<p style="text-align: left">Here&#8217;s a list of the component parts:</p>
<ul>
<li style="text-align: left">an Arduino ATMEGA328</li>
<li style="text-align: left">an Internet Shield</li>
<li style="text-align: left">code to parse the json api output of Hudson and drive the LEDs based on the status (colour) of the builds</li>
<li style="text-align: left">a few high-power LEDs to glow as brightly a possible (might whack some more in there one day to really make it glow)</li>
<li style="text-align: left">a dome (with previous lamp removed) from IKEA</li>
</ul>
<p style="text-align: left">This version is much prettier than the tupperware version I produced previously.  However, I did have to up the LED brightness so they can actually show through the pearlised lamp dome.</p>
<p style="text-align: left">The next version will trigger a sound when the build status changes so the team knows that something&#8217;s gone wrong sooner (and that normality has been resumed when the build is fixed).</p>
<p style="text-align: left">NOTE: The &#8216;bling bling piggy&#8217; is always nearby to help lighten the pockets of those who break the build.<img src="http://ivansthunks.com/blog/wp-content/uploads/2010/07/img_0217.JPG" align="center" height="400" width="300" vspace="20" hspace="20" alt="build monitor and piggy" /></p>
]]></content:encoded>
			<wfw:commentRss>http://ivansthunks.com/blog/2010/07/05/big-visible-build-monitor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Failing with Acceptance Testing</title>
		<link>http://ivansthunks.com/blog/2010/01/08/failing-with-acceptance-testing/</link>
		<comments>http://ivansthunks.com/blog/2010/01/08/failing-with-acceptance-testing/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 16:11:54 +0000</pubDate>
		<dc:creator>ivan</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://ivansthunks.com/blog/2010/01/08/failing-with-acceptance-testing/</guid>
		<description><![CDATA[I&#8217;ve had this one sat in my FireFox tabs for months and only just got around to reading it.  Gojko Adzic lists the outcome of an openspace session at CITCON Eurpose:  http://gojko.net/2009/09/24/top-10-reasons-why-teams-fail-with-acceptance-testing/ Most of the reasons rung true with me too, especially at the start.  It&#8217;s been two years now since we adopted FIT as [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had this one sat in my FireFox tabs for months and only just got around to reading it.  Gojko Adzic lists the outcome of an openspace session at CITCON Eurpose:  <a href="http://gojko.net/2009/09/24/top-10-reasons-why-teams-fail-with-acceptance-testing/">http://gojko.net/2009/09/24/top-10-reasons-why-teams-fail-with-acceptance-testing/</a></p>
<p>Most of the reasons rung true with me too, especially at the start.  It&#8217;s been two years now since we adopted FIT as our acceptance test tool.  We&#8217;ve improved greatly since then, but we still have challenges.</p>
<ol>
<li><strong>No Collaboration<br />
</strong>Initially we had developers writing tests and proving the usefulness of the approach.  Unfortunately, the same developers were then tasks with writing a battery of tests against the existing buggy code.  It was a between-project slack period and there wasn&#8217;t anything better for them to do.  Unfortunately #2 and #10 came in to play with junior and intermediate devs mirroring the existing system in tests, rather than describing the business requirements.</li>
<li><strong>Focusing on how, not on what<br />
</strong>We definitely had a lot of this going on.  We have far more procedural &#8216;this then this then this&#8217; tests that have a huge amount of setup actions than I like to admit.  We have definitely turned this around somewhat more recently with more abstract &#8216;business requirement&#8217; tests rather than &#8216;technical requirements&#8217;: the tests don&#8217;t change just because the implementation does.</li>
<li><strong>Tests unusable as live documentation<br />
</strong>This is my biggest chagrin with the tests, lack of prose around the FIT test tables explaining WHY.  When there are comments they describe what we&#8217;re doing with the &#8216;this then this then this&#8217; style.  Again, we have turned the corner recently but it&#8217;s a bugger to retro-fit that kind of knowledge into the tests.</li>
<li><strong>Expecting acceptance tests to be a full regression suite<br />
</strong>I think I can own the blame on this one.  I pushed for this to be the case.  In my defense I did push for quick, localized acceptance tests that could run quickly and give the required feedback.  As you may guess, that&#8217;s not what we ended up with.  Rather, we got a whole slew of System tests.  They are still very useful tests, they just take longer to run that I want.  In a way it&#8217;s a reflection of the system we&#8217;re testing: very coupled system begets very coupled tests (maybe).</li>
<li><strong>Focusing on tools<br />
</strong>Not really something we struggled with too much.  If anything it was the opposite &#8211; few tools in our price range.  We settled on FIT and went forward.  We also use the FitPro Eclipse plugin though it&#8217;s limited Mac and Linux capabilities are still a bit of a challenge.  We did look at FitNesse for a while and knowing what I know now I would probably have chosen that as it is more actively developed.  Our biggest perceived challenge was one of integrating with Subversion, in the end it was a non-issue.</li>
<li><strong>Not considering acceptance testing as value added activity<br />
</strong>We are doing so much better than before with QA/BA developing the first example FIT tests but we&#8217;ve still got a ways to go.</li>
<li><strong>“Test code” not maintained with love<br />
</strong>Another sore point for me.  Developers treat our test code as an afterthought and seem to think that good design principles and refactoring don&#8217;t apply to test code.  I couldn&#8217;t disagree strongly enough.  I am always looking for ways of making my tests simple, robust and expressive.  I often spend a lot longer on my (unit) tests than my production code.  I have hear developers whinge and complain about the test code and how &#8220;it&#8217;s hard to do such and such&#8221;.  I swear that in the time they&#8217;ve spent complaining they could have improved the test code ten-fold &#8211; but they don&#8217;t treat it the same as production code!</li>
<li><strong>Objectives of team members not aligned<br />
</strong>We&#8217;re actually doing pretty well at this one, we&#8217;re a million miles from where we once were.  Our QA guys now sit with the developers and BA&#8217;s and there is a true collaborative spirit at times.  I was utterly stunned (shocked, awed, caught-out) recently when a developer said to me &#8220;I&#8217;ll just commit it and QA can find the bugs&#8221;.  I hadn&#8217;t realized that that attitude still lived on within our teams.  I guess old habits die hard!</li>
<li><strong>No management buy-in<br />
</strong>This one isn&#8217;t a problem &#8211; I&#8217;ve seen too many bugs and mis-understood/implemented features and also seen the benefits of automated acceptance tests to ever go back (so&#8217;s my boss).</li>
<li><strong>Underestimating the skill required to do this well<br />
</strong>As mentioned above, we definitely struggled with this one initially.  Things are improving as we get better and better with this.  I think the biggest drag was the large amount of tests and fixtures that were written without too much thought that were then copy/pasted or at least aped.</li>
</ol>
<p>Despite our challenges I think one reason we didn&#8217;t fail was that there were several people who held the opinion that &#8216;failure wasn&#8217;t an option&#8217;.  We needed to a rigor to our development process: Automated Acceptance Driven Development was a large part of the added rigor.  Yes it takes longer to develop initially, but it pays for itself over and over once you get over the hump.</p>
]]></content:encoded>
			<wfw:commentRss>http://ivansthunks.com/blog/2010/01/08/failing-with-acceptance-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quicksilver: jump to Jira issues</title>
		<link>http://ivansthunks.com/blog/2009/08/08/quicksilver-jump-to-jira-issues/</link>
		<comments>http://ivansthunks.com/blog/2009/08/08/quicksilver-jump-to-jira-issues/#comments</comments>
		<pubDate>Sat, 08 Aug 2009 18:05:55 +0000</pubDate>
		<dc:creator>ivan</dc:creator>
				<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://ivansthunks.com/blog/2009/08/08/quicksilver-jump-to-jira-issues/</guid>
		<description><![CDATA[Currently I use that &#8220;Keyword&#8221; property of Firefox&#8217;s bookmarks to get me into the Jira projects I use at work quickly: Bookmark an issue in Jira: http://jira.company.com/browse/PROJ1-53 Edit the new bookmark Give it a sensible name &#8211; &#8220;browse jira&#8221; Replace the Jira identifier with &#8220;%s&#8221;: http://jira.company.com/browse/%s Give it a short keyword.  I normally use &#8220;j&#8221;. [...]]]></description>
			<content:encoded><![CDATA[<p>Currently I use that &#8220;Keyword&#8221; property of Firefox&#8217;s bookmarks to get me into the Jira projects I use at work quickly:</p>
<ul>
<li> Bookmark an issue in Jira: http://jira.company.com/browse/PROJ1-53</li>
<li>Edit the new bookmark</li>
<li>Give it a sensible name &#8211; &#8220;browse jira&#8221;</li>
<li>Replace the Jira identifier with &#8220;%s&#8221;: http://jira.company.com/browse/%s</li>
<li>Give it a short keyword.  I normally use &#8220;j&#8221;.</li>
</ul>
<p>Now you can simply type the following into Firefox&#8217;s location bar and jump straight to an issue: &#8220;j PROJ2-26&#8243;.</p>
<p>You still have to find Firefox and pop open a new tab and such.  I was wondering if I could side-step this and use Quicksilver to jump directly into an issue.  Note that this approach should work just fine with any other browser too.</p>
<p>Following the instructions over at coelomi&#8217;s blog I can now jump straight to a Jira issue with very little fuss.  <a href="http://coelomic.wordpress.com/2006/01/02/quicksilver-tips/">http://coelomic.wordpress.com/2006/01/02/quicksilver-tips/</a></p>
<ul>
<li>Enable the Web Search Quicksilver plugin.</li>
<li>Copy the Jira url.</li>
<li>Prepend the url with &#8220;qss-&#8221;.</li>
<li>Replace the issue id with three stars &#8220;***&#8221;.</li>
<li>Create a new trigger copying the url into the top box.</li>
<li>Ensure the next box says &#8220;Search For&#8221; and the next box is empty.</li>
<li>Assign a hot key for the trigger.</li>
</ul>
<p>I now have the following triggers:</p>
<ul>
<li>Ctrl-Command-j: access any Jira issue &#8211; I provide Quicksilver with the full issue id.</li>
<li>Ctrl-Command-r: access any Jira issue within a specific project &#8211; I provide Quicksilver only with the numeric part of the issue id &#8211; the project and the hyphen are hardcoded in the url.</li>
<li>Ctrl-Command-b: same as the one above but for a different project.</li>
<li>Ctrl-Command-g: A general google search.</li>
<li>I&#8217;ll be adding another to perform a search on our wiki too.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ivansthunks.com/blog/2009/08/08/quicksilver-jump-to-jira-issues/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Productivity Boost</title>
		<link>http://ivansthunks.com/blog/2008/04/26/productivity-boost/</link>
		<comments>http://ivansthunks.com/blog/2008/04/26/productivity-boost/#comments</comments>
		<pubDate>Sun, 27 Apr 2008 06:59:06 +0000</pubDate>
		<dc:creator>ivan</dc:creator>
				<category><![CDATA[NFJS]]></category>
		<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://ivansthunks.com/blog/2008/04/26/productivity-boost/</guid>
		<description><![CDATA[Inspired by Neal Ford&#8217;s talk last weekend at the No Fluff Just Stuff conference in Seattle I have recently spent a little bit of time installing a bunch of utilities and setting up my MacBook Pro &#8216;just so&#8217;.  I&#8217;ve always hated using a mouse, it&#8217;s always so damn far away from my hands when they [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://ivansthunks.com/blog/wp-content/uploads/2008/04/mouse.jpg" title="mouse.jpg"><img src="http://ivansthunks.com/blog/wp-content/uploads/2008/04/mouse.jpg" alt="mouse.jpg" align="left" height="140" hspace="10" vspace="10" width="100" /></a></p>
<p>Inspired by Neal Ford&#8217;s talk last weekend at the No Fluff Just Stuff conference in Seattle I have recently spent a little bit of time installing a bunch of utilities and setting up my MacBook Pro &#8216;just so&#8217;.  I&#8217;ve always hated using a mouse, it&#8217;s always so damn far away from my hands when they are settled above my keyboard.  But being relatively new to Mac OS X (I was previously mainly using Linux for about 5 years) I wasn&#8217;t aware of what could be done to prevent the need to reach for my mouse so often.</p>
<p>An interesting thing to note about the NFJS conference is that all the presenters were using Macs: the majority of the attendees were also using Macs.  So it was a great chance to pick up tips and tricks.</p>
<p>Anwho, the changes I made:</p>
<ul>
<li><a href="http://blacktree.com/?quicksilver">Quicksilver</a> &#8211; shortcuts to launching apps and sooooo much more</li>
<li><a href="http://henrik.nyh.se/2007/10/open-in-textmate-from-leopard-finder">OpenInTextMate</a> &#8211; open the files or directories currently selected in Finder (Quicksilver trigger: alt-shift-m)</li>
<li><a href="http://www.entropy.ch/software/applescript/">OpenTerminalHere</a> &#8211; open a terminal for the directory currently viewed in Finder (Quicksilver trigger: alt-shift-t)</li>
<li><a href="http://anoved.net/lselect.html">lselect</a> &#8211; select a bunch of files based on glob expressions in Finder</li>
<li><a href="http://www.zipeg.com/">Zipeg</a> &#8211; viewing archives without expanding them</li>
<li>Global shortcut to pop-open finder &#8211; ctrl-alt-cmd-f</li>
<li><a href="http://www.flatmtn.com/article/wine-ie-and-owa-premium">Making IEs 4 Mac work with Outlook Web Access</a> &#8211; Public Folders, Calendaring, etc.
<ul>
<li>Make sure you you have your WINEPREFIX pointing at the version of Wine IE is using (caught me for about an hour)</li>
<li>IE does monster my CPU, but at least I can book a meeting room myself (my team will be very happy about this)</li>
</ul>
</li>
<li><a href="http://grandperspectiv.sourceforge.net/">Grand Perspective</a> &#8211; a tree map view of your harddrive &#8211; no productiviy boost in itself, but it allowed me to find large files I didn&#8217;t know I had and do some spring-cleaning.</li>
<li><a href="http://www.manytricks.com/witch/">Witch</a> &#8211; a better task switcher</li>
</ul>
<p><a href="http://ivansthunks.com/blog/wp-content/uploads/2008/04/toolbar-productivity.jpg" title="Finder’s new toolbar"></a></p>
<p style="text-align: center"><a href="http://ivansthunks.com/blog/wp-content/uploads/2008/04/toolbar-productivity.jpg" title="Finder’s new toolbar"><img src="http://ivansthunks.com/blog/wp-content/uploads/2008/04/toolbar-productivity.jpg" alt="Finder’s new toolbar" border="1" /></a></p>
<p>Even whilst setting this stuff up I found myself naturally using the new shortcuts, so I&#8217;m very hopeful that my productivity will get a good boost for a moderate investment of time.</p>
]]></content:encoded>
			<wfw:commentRss>http://ivansthunks.com/blog/2008/04/26/productivity-boost/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

