<?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>Renaissance Developer &#187; Open Source</title>
	<atom:link href="http://www.exubero.com/joe/category/open-source/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.exubero.com/joe</link>
	<description>Follically Challenged in a Hirsute World</description>
	<lastBuildDate>Sat, 01 May 2010 04:11:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<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>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Ruby and Java in Eclipse on Ubuntu</title>
		<link>http://www.exubero.com/joe/2009/01/ruby-and-java-in-eclipse-on-ubuntu/</link>
		<comments>http://www.exubero.com/joe/2009/01/ruby-and-java-in-eclipse-on-ubuntu/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 13:16:55 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.exubero.com/joe/?p=187</guid>
		<description><![CDATA[I&#8217;ve been updating the development environment on my home computer. I&#8217;m running Ubuntu at home, and was expecting a pretty easy setup. I was rather surprised to find that the Eclipse environment packaged with Ubuntu 8.10 is actually pretty old (Eclipse 3.2). Given that Eclipse 3.4 has been out for quite a while now, I [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been updating the development environment on my home computer. I&#8217;m running Ubuntu at home, and was expecting a pretty easy setup. I was rather surprised to find that the Eclipse environment packaged with Ubuntu 8.10 is actually pretty old (Eclipse 3.2). Given that Eclipse 3.4 has been out for quite a while now, I was expecting it to track the version updates a bit better. No matter &#8211; I was able to download the tar.gz for <a href="http://www.eclipse.org/ganymede/">Eclipse Ganymede</a>. After uncompressing the tar, I was able to run the eclipse executable directly, and the program Just Worked™. Very nice, but I would have hoped to have this version integrated with the Ubuntu packaging system.</p>
<p>The first thing I did was to install <a href="subclipse.tigris.org">Subclipse</a>, which is not yet part of the main distribution (I wonder when that will be added?).</p>
<p>Next: test out a Java project. I tried setting up CruiseControl by checking out the project directly from the <a href="http://cruisecontrol.sourceforge.net/svn.html">source repository</a>. The project check out OK, but there were a number of build issues I had to chase up. Given that I&#8217;m going to be doing a bit more work with CC, it&#8217;s probably something for which I might be able to submit some fixes.</p>
<p>Finally, tried setting up a Ruby project. This was slightly harder than expected. I remember using the Ruby Development Tools (RDT) plugin a couple of years ago. However, when I visited the RDT website, it was pretty obvious that the project has become defunct, with no updates for quite a while. This is a broken link on the website pointing to a company called Aptana, who now provide a product called RadRails, which is a repackaged Eclipse set up for Ruby and Rails development. Given that I only had a number of smallish Ruby scripts to maintain, I didn&#8217;t actually want to download an entirely new IDE, and a stand alone plugin for Ruby development didn&#8217;t seem to be available.</p>
<p>I was finally able to find the thing I was looking for: it&#8217;s the <a href="http://www.eclipse.org/dltk/">Dynamic Languages Toolkit</a>, which is actually already part of Eclipse Ganymede. All I had to do was from within Eclipse select the menu Help -&gt; Software Updates&#8230; and select the &#8220;Available Software&#8221; tab. The option for Ruby development can be found in the tree by navigating via Ganymede -&gt; Programming Languages -&gt; Dynamic Languages Toolkit &#8211; Ruby Development Tools. Select the checkbox, click &#8220;Install..&#8221;, and it&#8217;s done.</p>
<div id="attachment_189" class="wp-caption aligncenter" style="width: 694px"><a href="http://www.exubero.com/joe/wp-content/uploads/2009/01/eclipse-install-ruby.png"><img class="size-full wp-image-189" title="eclipse-install-ruby" src="http://www.exubero.com/joe/wp-content/uploads/2009/01/eclipse-install-ruby.png" alt="Eclipse software updates dialog" width="684" height="496" /></a><p class="wp-caption-text">Eclipse software updates dialog</p></div>
<p>On my first attempt at debugging, I had the following problem:</p>
<pre>Debugging Engine not started
The 'Fast Ruby Debugger (ruby-debug)' is selected, but the 'ruby-debug' gem doesn't seem to be installed in the selected Ruby Interpreter (/usr/bin/ruby)</pre>
<p>Change the relevant option in the ruby dubugging configuration screen, and everything working fine.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.exubero.com/joe/2009/01/ruby-and-java-in-eclipse-on-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AFP Renderer 1.1.0 Released</title>
		<link>http://www.exubero.com/joe/2005/01/afp-renderer-110-released/</link>
		<comments>http://www.exubero.com/joe/2005/01/afp-renderer-110-released/#comments</comments>
		<pubDate>Thu, 06 Jan 2005 12:00:47 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.exubero.com/joe/?p=44</guid>
		<description><![CDATA[(The following announcement is taken from the release notes)
The AFP Renderer development team (that&#8217;s Pete and I) is pleased to announce the release of AFP Renderer 1.1.0.
This latest release can be downloaded from  http://afp-renderer.sourceforge.net/download.html.
The important changes since the last release (1.0.2) are:

added support for outline fonts
added sample fonts with distribution
added XML2AFP command-line utility
added examples
fixed [...]]]></description>
			<content:encoded><![CDATA[<p><em>(The following announcement is taken from the release notes)</em></p>
<p>The AFP Renderer development team <em>(that&#8217;s Pete and I)</em> is pleased to announce the release of AFP Renderer 1.1.0.</p>
<p>This latest release can be downloaded from <a href="http://afp-renderer.sourceforge.net/download.html"> http://afp-renderer.sourceforge.net/download.html</a>.</p>
<p>The important changes since the last release (1.0.2) are:</p>
<ul>
<li>added support for outline fonts</li>
<li>added sample fonts with distribution</li>
<li>added XML2AFP command-line utility</li>
<li>added examples</li>
<li>fixed rendering of tables removing double lines</li>
<li>fixed rendering of tables in landscape</li>
<li>fixed shading table cell problem in landscape</li>
<li>expanded and updated documentation</li>
</ul>
<p>Existing users should read the notes on upgrading the configuration in <a href="http://afp-renderer.sourceforge.net/configuring.html"> http://afp-renderer.sourceforge.net/configuring.html</a>, as the structure of <tt>afp-fonts.xml</tt> has changed slightly.</p>
<p>For more information about the AFP Renderer, see <a href="http://afp-renderer.sourceforge.net/"> http://afp-renderer.sourceforge.net/</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.exubero.com/joe/2005/01/afp-renderer-110-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AFP Renderer</title>
		<link>http://www.exubero.com/joe/2004/09/afp-renderer/</link>
		<comments>http://www.exubero.com/joe/2004/09/afp-renderer/#comments</comments>
		<pubDate>Fri, 24 Sep 2004 12:00:01 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.exubero.com/joe/?p=29</guid>
		<description><![CDATA[As part of a project that we&#8217;re working on together, my friend Pete Townsend developed some library code to generate prints for insurance policy applicants. Input data comes from an XML document, and is converted to an AFP print stream (AFP is a MO:DCA print format used on mainframes). Leveraging available open source tools, Pete [...]]]></description>
			<content:encoded><![CDATA[<p>As part of a project that we&#8217;re working on together, my friend Pete Townsend developed some library code to generate prints for insurance policy applicants. Input data comes from an XML document, and is converted to an AFP print stream (AFP is a MO:DCA print format used on mainframes). Leveraging available open source tools, Pete created a plugin output renderer for <a href="http://xml.apache.org/fop/">Apache FOP</a>.</p>
<p>There&#8217;s nothing unusual about this type work, any developer working for a large corporation will do similar tasks. The amazing thing is that Pete managed to convince our management that donating this project back to the Apache Foundation would be a good idea. The result of this is the <a href="http://sourceforge.net/projects/afp-renderer/">AFP Renderer</a> project on SourceForge. In a fit of madness, I told Pete I could help out with creating the <a href="http://afp-renderer.sourceforge.net/">AFP Renderer Homepage</a>.</p>
<p>The ultimate aim is to get the AFP Renderer source code integrated directly into the Apache FOP codebase. In the meantime, SourceForge has (yet another) project.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.exubero.com/joe/2004/09/afp-renderer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
