<?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/"
	>

<channel>
	<title>Renaissance Developer</title>
	<atom:link href="http://www.exubero.com/joe/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.exubero.com/joe</link>
	<description>Follically Challenged in a Hirsute World</description>
	<pubDate>Tue, 23 Jun 2009 21:19:38 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Build Doctor Giveaway</title>
		<link>http://www.exubero.com/joe/2009/06/build-doctor-giveaway/</link>
		<comments>http://www.exubero.com/joe/2009/06/build-doctor-giveaway/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 21:19:38 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
		
		<category><![CDATA[Build Automation]]></category>

		<category><![CDATA[Continuous Integration]]></category>

		<guid isPermaLink="false">http://www.exubero.com/joe/?p=330</guid>
		<description><![CDATA[The Build Doctor is running a competition to win some swag donated by Atlassian. The catch is you have to tell a short story about your best or worst (or best and worst) build/deployment experience. The deadline is this Friday, so get cracking!
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.build-doctor.com/">The Build Doctor</a> is running a <a href="http://www.build-doctor.com/2009/06/16/atlassian-bamboo-giveaway">competition</a> to win some swag donated by Atlassian. The catch is you have to tell a short story about your best or worst (or best and worst) build/deployment experience. The deadline is this Friday, so get cracking!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.exubero.com/joe/2009/06/build-doctor-giveaway/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Build Metrics from a CI Implementation</title>
		<link>http://www.exubero.com/joe/2009/06/build-metrics-from-a-ci-implementation/</link>
		<comments>http://www.exubero.com/joe/2009/06/build-metrics-from-a-ci-implementation/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 00:00:01 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
		
		<category><![CDATA[Continuous Integration]]></category>

		<guid isPermaLink="false">http://www.exubero.com/joe/?p=325</guid>
		<description><![CDATA[One of my favourite features of CruiseControl is the build metrics tab in the old reporting application. One of the graphs marks when builds occur, with date on the horizontal axis, and time on the vertical axis. This means that sequential builds through the day form a dotted line at a slant. &#8220;Good&#8221; builds are [...]]]></description>
			<content:encoded><![CDATA[<p>One of my favourite features of CruiseControl is the build metrics tab in the old reporting application. One of the graphs marks when builds occur, with date on the horizontal axis, and time on the vertical axis. This means that sequential builds through the day form a dotted line at a slant. &#8220;Good&#8221; builds are blue, and &#8220;Bad&#8221; builds are red.</p>
<p><a href="http://www.exubero.com/joe/wp-content/uploads/2009/06/cc-metrics-mainline.png"><img class="aligncenter size-full wp-image-326" title="CruiseControl Build Metrics" src="http://www.exubero.com/joe/wp-content/uploads/2009/06/cc-metrics-mainline.png" alt="CruiseControl Build Metrics" width="402" height="301" /></a></p>
<p>More than anything else, this graph tells a story. Here, a relatively large team of developers, spread across 2 time zones are coming to grips with this new fangled &#8220;continuous integration&#8221; malarkey, over a period of 7 weeks after the new build system was switched on at the end of April.</p>
<ul>
<li>Initially, the builds are sporadic; the developers are unsure of the new tools (which includes a completely unfamiliar SCM tool and CruiseControl), as well as the CI commit rules (&#8221;don&#8217;t break the build!&#8221;).</li>
<li>For the first week, there are only a handful of commits, about a third of them break. People feel a little overwhelmed by the changes; many of the developers are unhappy with the new system, there is a general muttering in the corridors.</li>
<li>In the second week, developers gain more confidence, and by Wednesday, the number of commits starts to rise drastically.</li>
<li>In the third week, the shit hits the fan as everyone jumps into the fray and starts to commit their changes as fast as they can. This week sees the first bouts of long term breakages, and developers check in broken code, and don&#8217;t know how to fix it. The muttering in the corridors gets louder, and people start complaining over the harsh strictures involved (&#8221;We didn&#8217;t have to worry about this before!&#8221;)</li>
<li>The fourth week shows a slight improvement, though there are still a number of 3 hour breakages.</li>
<li>By the fifth week, things appear to be running much smoother. Breakages are still occurring, but the developers have learned to watch out for them, and have become a bit more careful about verifying their code before they check it in. The week also marks the end of a major code release cycle.</li>
<li>In weeks 6 and 7 the builds are going along much more smoothly, and the team has developed a good rhythm: code, test (sometimes), check in, and watch for problems. Bugs are fixed very quickly indeed. The grumbling in the corridors has mostly stopped, as everyone gets more familiar with what is expected. The release team had an easier job, as well this time. There was much less compilation problems as they tried to build a release.</li>
</ul>
<p>From my perspective, it&#8217;s a fascinating process to watch, as a team comes to grips with a new process. I suspect the team is still pining for old &#8220;easier&#8221; ways, but there are now a number of developers and release engineers who have grown to appreciate the advantages.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.exubero.com/joe/2009/06/build-metrics-from-a-ci-implementation/feed/</wfw:commentRss>
		</item>
		<item>
		<title>My New Toy</title>
		<link>http://www.exubero.com/joe/2009/05/my-new-toy/</link>
		<comments>http://www.exubero.com/joe/2009/05/my-new-toy/#comments</comments>
		<pubDate>Tue, 05 May 2009 23:14:27 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.exubero.com/joe/?p=320</guid>
		<description><![CDATA[A couple of weeks back I got myself a new toy: an ASUS Eee 1000 netbook. I tried to order one through Amazon, but it appeared to have been sold out everywhere I looked. A week later I was passing through a shop in Croydon, and I happened to mention to the sales assistent that [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of weeks back I got myself a new toy: an <a href="http://en.wikipedia.org/wiki/ASUS_Eee_PC">ASUS Eee 1000</a> netbook. I tried to order one through Amazon, but it appeared to have been sold out everywhere I looked. A week later I was passing through a shop in Croydon, and I happened to mention to the sales assistent that I was looking for the Eee, but it was sold out. He said &#8220;We&#8217;ve got one&#8221;, and then took me to the display model. There was no other in stock, but he gave me a discount on the display model, giving me probably the last Eee in England (for the next few weeks, at least).</p>
<p>I really like the little beast. It&#8217;s a pretty solid frame. I&#8217;ve been carrying it around with me on the train, doing updates to the Lillifoot website as I commute. I have the black 1000 model, which is larger that the previous models, but still pretty diddly. It&#8217;s a nice package, with all the WiFi, etc available. There are only really two issues I don&#8217;t like about it: one I can&#8217;t fix, and one that I did.</p>
<p>My first  major annoyance is the small factor keyboard. The keys themselves are big enough, but I miss having the home, end, pg up and pg down keys in predicatable locations (I use them a lot). I think that this is an unavoidable problem when you deal with computers this size.</p>
<p>My other major annoyance was the Linux distribution installed: a customised version of Xandros. I was too busy to do anything else when I first bought it, so I thought I&#8217;d give the default distro a go. I didn&#8217;t have any problem with the UI, which was a tabbed menu interface on the desktop, giving access to application icons. My first impression was that the applications installed appeared to be out of date. The version of Firefox installed was still at version 2. After I connected to the internet, a newer version did install itself, though. Even still, there wasn&#8217;t much software available that I wanted. For example, I needed Subversion. It proved harder to install than I expected. It wasn&#8217;t available through the standard repositories. I did search about, and eventually found some detailed instructions on how to enable extra repositories, but that came with dire warnings that installing the new software might cause the installation to become corrupted.</p>
<p>Last night, I finally was able to get a chance to install <a href="http://www.eeebuntu.org/">Eeebuntu</a>, and now I&#8217;m completely happy with that score. All the software I want is now readily available, and I really like the default theme that it comes with. My only problem now is to avoid playing nethack on the train, instead of doing anything useful.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.exubero.com/joe/2009/05/my-new-toy/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Lillifoot Product Categories</title>
		<link>http://www.exubero.com/joe/2009/05/lillifoot-product-categories/</link>
		<comments>http://www.exubero.com/joe/2009/05/lillifoot-product-categories/#comments</comments>
		<pubDate>Tue, 05 May 2009 00:33:40 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
		
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.exubero.com/joe/?p=311</guid>
		<description><![CDATA[I posted a note on the 9th March about upgrading the Lillifoot website. After spending parts of 4 weekends, and a few late nights during the week, I finally reached a stage where I felt confident enough to push the changes to the unsuspecting public. Have a look here: http://www.lillifoot.co.uk
With a cursory glance, you might [...]]]></description>
			<content:encoded><![CDATA[<p>I posted a note on the 9th March about <a href="http://www.exubero.com/joe/2009/03/upgrading-the-lillifoot-website/">upgrading the Lillifoot website</a>. After spending parts of 4 weekends, and a few late nights during the week, I finally reached a stage where I felt confident enough to push the changes to the unsuspecting public. Have a look here: <a href="http://www.lillifoot.co.uk">http://www.lillifoot.co.uk</a></p>
<p>With a cursory glance, you might think that not much has changed. Probably the first thing to catch your eye would be the two new  &#8220;buttons&#8221; on the home page:</p>
<div id="attachment_312" class="wp-caption aligncenter" style="width: 302px"><a href="http://www.exubero.com/joe/wp-content/uploads/2009/04/gender-buttons.png"><img class="size-full wp-image-312" title="gender-buttons" src="http://www.exubero.com/joe/wp-content/uploads/2009/04/gender-buttons.png" alt="Gender Buttons" width="292" height="51" /></a><p class="wp-caption-text">Gender Buttons</p></div>
<p>These buttons can be used to drill down to a gender specific landing page. This was the primary use case I wanted to handle: help the customer <em>discover</em> interesting content on the website. In many cases the customer may be thinking something along the lines of &#8220;I need to find new trainers for little Johnny&#8221;. These buttons sit in a part of the screen that draws attention to them. I&#8217;m not completely happy with what is there now: they appear a bit sterile, and don&#8217;t quite render properly on IE right now. Ideally, I would like to find some subtle image of a boy and a girl I could work into the button background.</p>
<p>Clicking on either the boys or the girls will navigate to the category selection page:</p>
<p><a href="http://www.exubero.com/joe/wp-content/uploads/2009/05/category-buttons.png"><img class="aligncenter size-full wp-image-317" title="Category Buttons" src="http://www.exubero.com/joe/wp-content/uploads/2009/05/category-buttons.png" alt="Category Buttons" width="250" height="221" /></a></p>
<p>Clicking through on any of those buttons will navigate to a top level category page. These same category pages can also be accessed via the expanded product navigation menu to the left:</p>
<p><a href="http://www.exubero.com/joe/wp-content/uploads/2009/05/category-nav.png"><img class="aligncenter size-full wp-image-318" title="Category Navigation" src="http://www.exubero.com/joe/wp-content/uploads/2009/05/category-nav.png" alt="Category Navigation" width="143" height="411" /></a></p>
<p>The category landing pages are very similar to before, execept the layout has been compressed. Clicking on any individual show picture or title will open up a style-specific page, with a large picture.</p>
<p>The above describes the main changes. Overall, adding in the gender categories added another 20 pages, but adding the individual shoe pages added a significant number of new pages - there are now over 500 pages on the entire site.</p>
<p>It&#8217;s been very interesting work for me. I&#8217;ve been getting my hands dirty with a lot of Ruby scripting and web design work, which is a diverting change from my day job (Java, Ant and CruiseControl at the moment). For me one of the most fascinating aspects of this change was how it would affect the web statistics.</p>
<p>Before I put this change live, I would have predicted that the bandwidth usage would have rocketed: there was a huge number of new pages, the all the new larger image sizes were now available. Strangely enough, this didn&#8217;t seem to change at all. There was a slight increase in the pages per visit, and most encouraging was the drop in the bounce rate from about 45% to 30% (that is, two thirds of visitors browse to more than one page). I&#8217;ll discuss some of the more interesting web statistics later.</p>
<p>All in all, I was pretty happy with the changes made, with the proviso that there is still a lot more tweaking to do, usability and otherwise.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.exubero.com/joe/2009/05/lillifoot-product-categories/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Continuous Integration is a Human Process</title>
		<link>http://www.exubero.com/joe/2009/03/continuous-integration-is-a-human-process/</link>
		<comments>http://www.exubero.com/joe/2009/03/continuous-integration-is-a-human-process/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 21:23:01 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
		
		<category><![CDATA[Continuous Integration]]></category>

		<guid isPermaLink="false">http://www.exubero.com/joe/?p=305</guid>
		<description><![CDATA[The Build Doctor tells us the way it is:
http://www.build-doctor.com/2009/03/25/continuous-integration-is-not-a-silver-bullet
]]></description>
			<content:encoded><![CDATA[<p>The Build Doctor tells us the way it is:</p>
<p><a href="http://www.build-doctor.com/2009/03/25/continuous-integration-is-not-a-silver-bullet">http://www.build-doctor.com/2009/03/25/continuous-integration-is-not-a-silver-bullet</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.exubero.com/joe/2009/03/continuous-integration-is-a-human-process/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A Day in the Life</title>
		<link>http://www.exubero.com/joe/2009/03/a-day-in-the-life/</link>
		<comments>http://www.exubero.com/joe/2009/03/a-day-in-the-life/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 20:51:48 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.exubero.com/joe/?p=288</guid>
		<description><![CDATA[I saw a drawing today, oh boy!
A colleague bought his daughter into the office for work experience last week. She sat through pretty much a day of solid meetings (I was in one of them), and she somehow stayed awake for all of them. After all of this, she was asked to draw a picture [...]]]></description>
			<content:encoded><![CDATA[<p>I saw a drawing today, oh boy!</p>
<p>A colleague bought his daughter into the office for work experience last week. She sat through pretty much a day of solid meetings (I was in one of them), and she somehow stayed awake for all of them. After all of this, she was asked to draw a picture representing her day. Here is the result:</p>
<div id="attachment_289" class="wp-caption aligncenter" style="width: 510px"><a href="http://www.exubero.com/joe/wp-content/uploads/2009/03/georgiasdrawing-sm.png"><img class="size-full wp-image-289" title="Georgia's drawing of a meeting" src="http://www.exubero.com/joe/wp-content/uploads/2009/03/georgiasdrawing-sm.png" alt="Georgia's drawing of a meeting" width="500" height="283" /></a><p class="wp-caption-text">Georgia&#39;s drawing of a meeting</p></div>
<p>I guess John (the hairy guy with the beard) and I (the bald guy with the goatee) must have made some impression. I must admit, it is amazingly accurate! Or at least it will be, when I start wearing bright orange shirts and dying my beard blue. Otherwise, I probably <em>was</em> sitting back with a cup of tea, daydreaming of something unrelated (or more likely, <a href="http://www.exubero.com/joe/2009/03/doodling/">doodling</a>), as shown in the picture.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.exubero.com/joe/2009/03/a-day-in-the-life/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Doodling</title>
		<link>http://www.exubero.com/joe/2009/03/doodling/</link>
		<comments>http://www.exubero.com/joe/2009/03/doodling/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 20:41:18 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.exubero.com/joe/?p=286</guid>
		<description><![CDATA[In case you missed it, doodling is not a bad thing any more:

The Guardian
BBC


This is lucky for me. As anyone who has sat next to me in a meeting can testify, my notebooks are filled with dubious pen scribblings and &#8220;artwork&#8221;.

My left hand features prominently in my notebook, mainly because it happens to be there [...]]]></description>
			<content:encoded><![CDATA[<p>In case you missed it, doodling is not a bad thing any more:</p>
<ul>
<li><a href="http://www.guardian.co.uk/science/2009/feb/27/doodling-doodles-boring-meetings-concentration">The Guardian</a></li>
<li><a href="http://news.bbc.co.uk/1/hi/health/7912671.stm">BBC</a></li>
</ul>
<p style="text-align: center;"><a href="http://www.exubero.com/joe/wp-content/uploads/2009/03/doodle-thumb.png"><img class="size-full wp-image-296 aligncenter" title="Doodle of my thumb" src="http://www.exubero.com/joe/wp-content/uploads/2009/03/doodle-thumb.png" alt="Doodle of my thumb" width="450" height="456" /></a></p>
<p>This is lucky for me. As anyone who has sat next to me in a meeting can testify, my notebooks are filled with dubious pen scribblings and &#8220;artwork&#8221;.</p>
<p><a href="http://www.exubero.com/joe/wp-content/uploads/2009/03/doodle-small.png"><img class="size-full wp-image-298 alignright" title="Small doodle" src="http://www.exubero.com/joe/wp-content/uploads/2009/03/doodle-small.png" alt="Small doodle" width="100" height="67" /></a></p>
<p>My left hand features prominently in my notebook, mainly because it happens to be there right in front of me. Also seen are pens, cups, books, computers, and other pieces of meeting room paraphernalia. Not much faces, though. I can never get those looking right.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.exubero.com/joe/2009/03/doodling/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Chromium Developer Tools</title>
		<link>http://www.exubero.com/joe/2009/03/chromium-developer-tools/</link>
		<comments>http://www.exubero.com/joe/2009/03/chromium-developer-tools/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 21:04:54 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
		
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.exubero.com/joe/?p=280</guid>
		<description><![CDATA[These days, the first thing I do when I get a new computer is install Firefox along with the DOM Inspector and Web Developer Toolbar plugins. Those tools, css reference documentation and a text editor is usually all I use for development and maintenance of web pages. I find the DOM Inspector particularly useful for [...]]]></description>
			<content:encoded><![CDATA[<p>These days, the first thing I do when I get a new computer is install <a href="http://www.mozilla.com/firefox/">Firefox</a> along with the <a href="https://addons.mozilla.org/en-US/firefox/addon/6622">DOM Inspector</a> and <a href="https://addons.mozilla.org/en-US/firefox/addon/60">Web Developer Toolbar</a> plugins. Those tools, css reference documentation and a text editor is usually all I use for development and maintenance of web pages. I find the DOM Inspector particularly useful for debugging layout problems, as it lets you really drill down into CSS styles being applied to a specific element. I didn&#8217;t think that there was anything that could top the usefulness of that tool.</p>
<p>That just changed: I had a look at the <a href="http://code.google.com/p/chromium/">Chromium</a> developer tools today, and I can say that I&#8217;m really impressed. By accessing the menu -&gt; Developer Tools -&gt; JavaScript console, you get a window that has pretty much all the functionality of the DOM Inspector, but it appears much more usable. The highlighting is much more robust, and the css styles are shown in a more readable format.</p>
<p>My only problem is that my main home workstation is Linux, and Chromium on Linux is definitely not quite there yet (it causes my CPU to hit 100% when I try and use it). It&#8217;s something I&#8217;ll definitely keep and eye on, and I shall certainly keep a copy around on any Windows computers I work with.</p>
<p>Here&#8217;s a screenshot of the JavaScript console on Linux:</p>
<p><a href="http://www.exubero.com/joe/wp-content/uploads/2009/03/chromium-javascript-console.png"><img class="aligncenter size-full wp-image-281" title="chromium-javascript-console" src="http://www.exubero.com/joe/wp-content/uploads/2009/03/chromium-javascript-console.png" alt="chromium-javascript-console" width="500" height="465" /></a></p>
<p>The windows version is much more polished, and you can see that they&#8217;re paying attention to this area of the new browser. I&#8217;m not dropping Firefox anytime soon. There are still too many other plugins I rely on, but it&#8217;s nice to have choice.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.exubero.com/joe/2009/03/chromium-developer-tools/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A Small CruiseControl Fix, and a Critique of Spring</title>
		<link>http://www.exubero.com/joe/2009/03/a-small-cruisecontrol-fix-and-a-critique-of-spring/</link>
		<comments>http://www.exubero.com/joe/2009/03/a-small-cruisecontrol-fix-and-a-critique-of-spring/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 22:35:15 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
		
		<category><![CDATA[Continuous Integration]]></category>

		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.exubero.com/joe/?p=277</guid>
		<description><![CDATA[I quite like the new Dashboard that was added to CruiseControl last year. It has a certain style that makes it appealing to the end users who may be watching the build status, and is a step up from the old reporting JSPs. Until today, I had never really looked into how it was implemented.
My [...]]]></description>
			<content:encoded><![CDATA[<p>I quite like the new <a href="http://cruisecontrol.sourceforge.net/dashboard.html">Dashboard</a> that was added to CruiseControl last year. It has a certain style that makes it appealing to the end users who may be watching the build status, and is a step up from the old <a href="http://cruisecontrol.sourceforge.net/reporting/jsp/index.html">reporting JSPs</a>. Until today, I had never really looked into how it was implemented.</p>
<p>My problem today was that the Dashboard does not show raw build output by default (it will show plenty of reports and other bits and pieces from an Ant build). In my case, I&#8217;m calling an external build tool (not Ant) using the CC &lt;exec&gt;  builder, but there is no way to actually see the output.</p>
<p>A quick look at the <code>dashboard-config.xml</code> file showed that there appeared to be a simple way to add another tab to the build display using classes from the Widget package. Looking in the CC source code, I spotted a class called <code>net.sourceforge.cruisecontrol.dashboard.widgets.AntOutputWidget</code>, which despite it&#8217;s name, looked like it would display the build output for anything. I tried adding a reference to this class to the configuration. Sure enough, a new tab appeared. Unfortunately, it only ever displayed the text &#8220;No information for Ant Output&#8221;. Doh!</p>
<p>Googling about, I was able to turn up a <a href="http://www.nabble.com/First-attempt-at-fixing-Ant-Output-widget-(2.7.2)-p16692905.html">message from Pete Doyle</a> who had exactly the same problem. He had even submitted a patch to the CC mailing list, but it appeared to have been missed. I tried out his patch, and everything worked fine (after a few fine tweaks). While I was there, I created a new task in the CruiseControl issue tracker: <a href="http://jira.public.thoughtworks.org/browse/CC-899">CC-899</a>. Hopefully, this can get rolled into the next CC release. Score 1 for open source!</p>
<p>However, the story doesn&#8217;t end there. Before I moved on, I just happened to glance at the <a href="http://cruisecontrol.sourceforge.net/dashboard.html#subtabs">documentation for subtabs</a>. There is a strong note warning that these widgets are deprecated:</p>
<blockquote><p><em>Note that the dashboard widget API is deprecated and will be replaced in a future version of CruiseControl. We strongly recommend developers do not create widgets using this API, as it will not be supported in the future.</em></p></blockquote>
<p>I found this curious: I didn&#8217;t think the code for Widgets was that bad, what New and Improved implementation was replacing it? The answer was harder to work out than I expected.</p>
<p>The problem (as I see it) is that there is a relatively convoluted set of Spring configuration files joining bits and pieces together in hidden ways, and somehow using a heap of Velocity templates to generate the UI. My issue is that although the code appears to be quite solid and well factored, the configuration that wires it all together is quite opaque. Because it is Spring configuration (programming by XML), I lost the ability to easily navigate the code using the IDE. It was back to searching for snippets of text, and then looking up the referenced classes.</p>
<p>XML is not a good language in which to write programs. I don&#8217;t mind Spring in small doses, but I&#8217;ve been burnt a number of times by very large and unwieldy Spring configurations that wire together lots of small pieces in such a way that it&#8217;s very hard to get a view of the important features. Scoping, encapsulation, IDE integration: trodden over in a very haphazard way.</p>
<p>I&#8217;m all for dependency injection and inversion of control, but I definitely think that most of that can be done more efficiently in code. There are a few posts floating about on the same subject. Here are some of my favourites:</p>
<ul>
<li>Crazy Bob (inventor of Guice): <a href="http://crazybob.org/2006/01/i-dont-get-spring.html">I Don&#8217;t Get Spring</a></li>
<li>Floating point: <a href="http://floatingpoint.tinou.com/2007/03/a_critique_of_s.html">A Critique of Spring</a>.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.exubero.com/joe/2009/03/a-small-cruisecontrol-fix-and-a-critique-of-spring/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Setting up Categories</title>
		<link>http://www.exubero.com/joe/2009/03/setting-up-categories/</link>
		<comments>http://www.exubero.com/joe/2009/03/setting-up-categories/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 23:40:27 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
		
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.exubero.com/joe/?p=270</guid>
		<description><![CDATA[It&#8217;s been a while, but my web monkey skills are getting a bit of a workout again. I&#8217;m started tweaking Lillifoot to add product categories, hopefully in a very clear and usable way:
One thing which I had forgotten was Nifty Corners (a tool using CSS and Javascript to get rounded corners without images). It can [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a while, but my web monkey skills are getting a bit of a workout again. I&#8217;m started tweaking <a href="http://www.lillifoot.co.uk/">Lillifoot</a> to add product categories, hopefully in a very clear and usable way:</p>
<p><a href="http://www.exubero.com/joe/wp-content/uploads/2009/03/lillifoot-redesign.jpg"><img class="aligncenter size-full wp-image-271" title="Lillifoot Redesign with Categories" src="http://www.exubero.com/joe/wp-content/uploads/2009/03/lillifoot-redesign.jpg" alt="Lillifoot Redesign with Categories" width="469" height="279" /></a>One thing which I had forgotten was <a href="http://www.html.it/articoli/niftycube/index.html">Nifty Corners</a> (a tool using CSS and Javascript to get rounded corners <em>without images</em>). It can make a fairly nice difference.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.exubero.com/joe/2009/03/setting-up-categories/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
