<?xml version="1.0" encoding="iso-8859-1"?>



<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:cc="http://web.resource.org/cc/"
  xmlns="http://purl.org/rss/1.0/">

<channel rdf:about="http://blogs.codehaus.org/people/kevin/">
<title>-k.</title>
<link>http://blogs.codehaus.org/people/kevin/</link>
<description><![CDATA[Random thoughts, opinions and rants from the eclectic mind of Kevin O&apos;Neill.]]></description>
<dc:language>en-us</dc:language>
<dc:creator></dc:creator>
<dc:date>2005-03-17T07:33:05+10:00</dc:date>
<admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=2.661" />
<cc:license rdf:resource="http://creativecommons.org/licenses/by/1.0/" />


<items>
<rdf:Seq><rdf:li rdf:resource="http://blogs.codehaus.org/people/kevin/archives/001013_moving_to_easy_street.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/kevin/archives/000956_a_great_eclipse_rcp_example.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/kevin/archives/000879_back_alive_and_well.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/kevin/archives/000654_back_to_gentoo.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/kevin/archives/000210_the_bottch_is_back.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/kevin/archives/000188_why_didnt_i_think_of_that.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/kevin/archives/000169_dependency_targets_now_with_webapp_dependencies.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/kevin/archives/000168_welcome_back_old_friend.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/kevin/archives/000162_write_a_bloody_test.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/kevin/archives/000160_in_my_pants.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/kevin/archives/000158_google_ads.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/kevin/archives/000157_tired.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/kevin/archives/000156_java_productivity.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/kevin/archives/000154_picocontainer.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/kevin/archives/000145_new_home_and_a_new_look.html" />
</rdf:Seq>
</items>

</channel>

<item rdf:about="http://blogs.codehaus.org/people/kevin/archives/001013_moving_to_easy_street.html">
<title>Moving to easy street</title>
<link>http://blogs.codehaus.org/people/kevin/archives/001013_moving_to_easy_street.html</link>
<description><![CDATA[Well I finally got my own server on the net. You can find my all new shinney blog at <a href="http://kevin.oneill.id.au/">http://kevin.oneill.id.au/</a>.

I want to say thanks to bob and the crew for letting me stay for a while and I hope to see everyone over in my new home.]]></description>
<dc:subject>Random thoughts and rants</dc:subject>
<dc:creator>kevin</dc:creator>
<dc:date>2005-03-17T07:33:05+10:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/kevin/archives/000956_a_great_eclipse_rcp_example.html">
<title>A great Eclipse RCP example</title>
<link>http://blogs.codehaus.org/people/kevin/archives/000956_a_great_eclipse_rcp_example.html</link>
<description><![CDATA[<p>Of late I've been working on a couple of <a href="http://www.eclipse.org/rcp/">Eclipse <acronym title="Rich Client Platform">RCP</acronym></a> based applications. The biggest problem I've run into is the lack of good example applications for the <acronym title="Rich Client Platform">RCP</acronym>. Either they are too big (the Eclipse IDE for example) or too small (the sample <acronym title="Rich Client Platform">RCP</acronym> application supplied with 3.1). Then I came across <a href="http://jlibrary.javahispano.net/es/index.html">JLibrary</a>.</p>
<p>JLibrary is large without being too large. It has example of most of the things you'd like to do with the <acronym title="Rich Client Platform">RCP</acronym> without the weight of the Eclipse IDE. If you're interested in using the <acronym title="Rich Client Platform">RCP</acronym> then I'd suggest checking it out.]]></description>
<dc:subject>Java</dc:subject>
<dc:creator>kevin</dc:creator>
<dc:date>2005-01-17T11:07:59+10:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/kevin/archives/000879_back_alive_and_well.html">
<title>Back, alive and well.</title>
<link>http://blogs.codehaus.org/people/kevin/archives/000879_back_alive_and_well.html</link>
<description><![CDATA[<p>Forgive me father it's been along time since I last blogged.</p>

<p>Well the last six months have seen alot of changes for me. Most significant was my partners decision to leave me, she just didn't love me any more. Life goes on.</p>

<p>I've now been with Sensis for almost twelve months. The move to corporate Australia has been an interesting experience. New ways of doing things. At times things seem to move very slowly and there is a lot more bureaucracy than I'm used to. At other times things need to be done with little or no time. All in all though the experience has been a good one. I'm working with a very talented group of individuals that work exceptionally well as a team, what more could you ask for. </p>]]></description>
<dc:subject>Random thoughts and rants</dc:subject>
<dc:creator>kevin</dc:creator>
<dc:date>2004-11-08T13:47:08+10:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/kevin/archives/000654_back_to_gentoo.html">
<title>Back to Gentoo</title>
<link>http://blogs.codehaus.org/people/kevin/archives/000654_back_to_gentoo.html</link>
<description><![CDATA[<p>A while back I made the switch to <a href="http://www.redhat.com">Red Hat Linux</a> from <a href="www.gentoo.org">Gentoo</a>. At the time I need to do a reinstall and <em>Gentoo</em> was difficult to install across a modem connected to the local machine (I still only have modem access, but that's another story).</p>
<p>It ran fine, and the blucurve theme made KDE and Gnome apps look the same, if not good. Updates where horrible, even using <em>yum</em>. Installing RPMs directly made dependencies a complete pain in the ass. So afer going through the <em>Red Hat Linux</em> to <em>Fedora</em> update and then attempting to switch 2.6 I decided that <em>Fedora</em> was to painful to deal with and a distro switch was in order.</p>
<p>I've been back running <em>Gentoo</em> for a couple of weeks now, it rocks! The distro is really making progress and the ability to combine stable and unstable packages is great. No I just have to figure out why I ever left. I really should have put more effort into staying in the first place :S. But eh, some days I'm just fickle</p>]]></description>
<dc:subject>Open Source</dc:subject>
<dc:creator>kevin</dc:creator>
<dc:date>2004-03-20T11:07:42+10:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/kevin/archives/000210_the_bottch_is_back.html">
<title>The bottch is back</title>
<link>http://blogs.codehaus.org/people/kevin/archives/000210_the_bottch_is_back.html</link>
<description><![CDATA[<p>Bottch has his blog back at <a title="bottch blog" href="http://www.bottch.com/blog">http://www.bottch.com/blog</a>. It's good to see him back.</p>
<p>Evan does mention that <b>someone</b> toasted the <a href="http://movabletype.org"><acronym title="Movable Type">MT</acronym></a> on the box  he is running on and I have to admint that I was that someone. F*&king bsddb libs.</p>]]></description>
<dc:subject>Random thoughts and rants</dc:subject>
<dc:creator>kevin</dc:creator>
<dc:date>2003-10-23T08:49:54+10:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/kevin/archives/000188_why_didnt_i_think_of_that.html">
<title>Why didn&apos;t I think of that.</title>
<link>http://blogs.codehaus.org/people/kevin/archives/000188_why_didnt_i_think_of_that.html</link>
<description><![CDATA[<p>I saw this and almost wet myself laughing so I thought I'd share. It's pretty geeky, but it's very funny. </p>
<p><img alt="for-i.gif" src="http://blogs.codehaus.org/people/kevin/archives/funnies/for-i.gif" width="600" height="197" border="0" /></p>]]></description>
<dc:subject>Random thoughts and rants</dc:subject>
<dc:creator>kevin</dc:creator>
<dc:date>2003-10-03T19:54:51+10:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/kevin/archives/000169_dependency_targets_now_with_webapp_dependencies.html">
<title>Dependency targets - now with webapp dependencies</title>
<link>http://blogs.codehaus.org/people/kevin/archives/000169_dependency_targets_now_with_webapp_dependencies.html</link>
<description><![CDATA[<p>I've made a small update to  <a href="http://blogs.codehaus.org/people/kevin/code/ant/dependency-targets.xslt">dependency-targets.xslt</a> that will add marked jars to the defined web app library area (defaults to <code>${build.webapp}/WEB-INF/lib
</code>
). I've also updated the target names to make them a little more sensible.</p>]]></description>
<dc:subject>Development</dc:subject>
<dc:creator>kevin</dc:creator>
<dc:date>2003-09-26T10:30:46+10:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/kevin/archives/000168_welcome_back_old_friend.html">
<title>Welcome back old friend</title>
<link>http://blogs.codehaus.org/people/kevin/archives/000168_welcome_back_old_friend.html</link>
<description><![CDATA[<p>In a moment of weakness at the start of a project I decided to use <a href="http://maven.apache.org">Maven</a> for build management (hey all the cool kids were doing it and I felt really square). Now Maven is great as long as your happy to play in it's sandbox with the toys it provides. Beware if you step outside of the sandbox though. Nanny will come and slap your botty hard. You see nanny manges all the dependencies between "plugins"  so if you want to use the new version of aspectj to weave some sexy aspects through your code and a couple of third party libs and that's not the way nanny does it, well put it this way, your bot bot is going to be sore.</p>
<p>So I looked at adding custom targets to my <code>maven.xml
</code>
 file (effectivley duplicating a lot of the code in the plugins to reorder the dependencies), but it looked like more effort than it was worth so I decided to go back to crawling back to my old friend <a href="http://ant.apache.org/">Ant</a>.</p>
<p>My favorite thing about Maven is its jar loading. Add a dependency to your project and down comes the jar. It's added to your compile classpath and into your war lib dir, no mess, no fuss. I wanted this in Ant.</p>
<p>I grabbed a copy of the latest and greatest source code and built a nice fresh version. 1.6 has some nice new features the one I was really interested in was <code>import
</code>
. I'd used an early version of this when I was playing with <a href="http://www.krysalis.org/centipede/">Centipede</a>  a year or so ago.</p>
<p>I grabbed the dependency section out of my Maven <code>project.xml
</code>
 file and stuck it into a seperate file (<code>dependencies.xml
</code>
).</p>
<blockquote><pre>&lt;dependencies&gt;
  &lt;dependency&gt;
    &lt;id&gt;concurrent&lt;/id&gt;
    &lt;version&gt;1.3.2&lt;/version&gt;
    &lt;url&gt;http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html&lt;/url&gt;
    &lt;properties&gt;
      &lt;war.bundle&gt;true&lt;/war.bundle&gt;
    &lt;/properties&gt;
  &lt;/dependency&gt;
&lt;/dependencies&gt;</pre></blockquote>
<p>Then I created an XSLT (<a href="http://blogs.codehaus.org/people/kevin/code/ant/dependency-targets.xslt">dependency-targets.xslt</a>) that created the ant targets to make the project class path and fetch each of the jars I didn't have it in my local jar repository. </p>
<p>All that was left was add the <code>style
</code>
 and <code>import
</code>
 tasks to my <code>build.xml
</code>
 and make my <code>compile
</code>
 target depend on the generated <code>fetch-dependencies
</code>
 target.</p>
<blockquote><pre>&lt;!-- import dependencies targets --&gt;
&lt;style
  basedir="${basedir}"
  out="${work.dir}/dependency-targets.xml"
  in="dependencies.xml"
  style="${src.build}/dependency-targets.xslt"&gt;

  &lt;param name="project-name" expression="${ant.project.name}"/&gt;
  &lt;param name="local-repository" expression="${repository.local}"/&gt;
  &lt;param name="remote-repository" expression="${repository.remote}"/&gt;
&lt;/style&gt;

&lt;import file="${work.dir}/dependency-targets.xml"/&gt;</pre></blockquote>
<p>45 minutes and it was all good. Now my friend Ant and I can play together and nannys spankings are a distant and best forgotten memory.</p>]]></description>
<dc:subject>Development</dc:subject>
<dc:creator>kevin</dc:creator>
<dc:date>2003-09-25T20:27:26+10:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/kevin/archives/000162_write_a_bloody_test.html">
<title>Write a bloody test!</title>
<link>http://blogs.codehaus.org/people/kevin/archives/000162_write_a_bloody_test.html</link>
<description><![CDATA[<p> I once heard that insanity was doing the same thing over and over and expecting a different result. I have recently encountered an example of this. A development team I'm working with has a bug count that is spiriling out of control. Having talked to the developers and looked at the code it wasn't hard to see why. There has been very little thought put into overall design of the system and more copy and paste code than I think I ever seen (a friend of mine swears that the copy and paste function should be removed from all development software). </p>
<p>So I talked to them about writing a few unit test. Before addressing a bug, write a test. Once it it running (and presumably failing), fix the bug. That way you slowly build up a test suite.  Okay yeah, that easy, they said. </p>
<p>Last week I went in to see them again there where a number of new bugs so I asked to take a look at the tests. Not one had been written. I restated that it was going to be an up hill battle trying to stabilise the system if they don't start writing tests. They said that the code was too hard to write test for.  So I sat down with them and wrote a test for one of the bugs.  Along the way I refactored the underlying code a little to make working with the test system a little easier and fixed the bug. I then refactored the code some more to get rid of some copy and paste. Ran the test, all green, sweet. Oh, that was easy they said. </p> 
<p>Today I got a call. Bugs had let bitten them again in areas they'd fixed two days before. Again I asked about the tests. Mine was the only one they had.</p>
<p>Sometimes getting developers to change their ways is more force  than logic. Tommorrow I'm taking a hammer in with me  :)</p> ]]></description>
<dc:subject>Development</dc:subject>
<dc:creator>kevin</dc:creator>
<dc:date>2003-09-24T15:49:42+10:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/kevin/archives/000160_in_my_pants.html">
<title>&quot;In my pants&quot;</title>
<link>http://blogs.codehaus.org/people/kevin/archives/000160_in_my_pants.html</link>
<description><![CDATA[<p>Adding the phrase "in my pants" to the end of any sentence makes it immediately funny.</p>
<p>For example: "I have a meeting to go to." Becomes "I have a meeting to go to in my pants." Which is far funnier. </p>
<p>This revelation was passed on to me by the best tech writer I know, Mark (who yesterday forgot how to spell "does"). The comic genius behind "in my pants" is one Sean Cummins whom I've never met "in my pants".</p>]]></description>
<dc:subject>Random thoughts and rants</dc:subject>
<dc:creator>kevin</dc:creator>
<dc:date>2003-09-23T12:14:53+10:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/kevin/archives/000158_google_ads.html">
<title>Google Ads</title>
<link>http://blogs.codehaus.org/people/kevin/archives/000158_google_ads.html</link>
<description><![CDATA[<p>Bob has been good enough to provide me with blog space so as a small gesture of thanks I've added google ads to the blog with any income generated going to support the codehaus site. I hope you don't mind. Oh and if something interests you be sure to click through, it all helps :).</p>]]></description>
<dc:subject>Random thoughts and rants</dc:subject>
<dc:creator>kevin</dc:creator>
<dc:date>2003-09-20T21:27:45+10:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/kevin/archives/000157_tired.html">
<title>Tired</title>
<link>http://blogs.codehaus.org/people/kevin/archives/000157_tired.html</link>
<description><![CDATA[<p>I woke at 4am this morning. It's starting to get to me now.</p>]]></description>
<dc:subject>Random thoughts and rants</dc:subject>
<dc:creator>kevin</dc:creator>
<dc:date>2003-09-19T18:37:35+10:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/kevin/archives/000156_java_productivity.html">
<title>Java productivity</title>
<link>http://blogs.codehaus.org/people/kevin/archives/000156_java_productivity.html</link>
<description><![CDATA[<p>When I don't have my developer hat on I do some work helping development team improve their process. Recently I've been working with a very successful group of young developers who have a great learning management suite. Unfortunatly it is suffering from a growing bug count and the guys are spending the majority their time reacting to bugs rather than adding features. </p>

<p>The system is written on the .NET platform using visual studio. The project was the first for many of the developers (being straight out of university) and they took a look at the Microsoft tools available and said "hey this makes thing easy" and it did. For a while. </p>

<p>There are plenty of "organic growth" issues in the code base, but what struct me the most was the amount of infrastructure code for persistence, security etc, they'd had to develop. The sort of stuff I'd forgot about a long time ago. I realised that the reason I can be productive when creating a system is that for the majority of time I can just concentrate on the unique aspects of the system, not on the infracstruction.</p>]]></description>
<dc:subject>Java</dc:subject>
<dc:creator>kevin</dc:creator>
<dc:date>2003-09-19T09:40:27+10:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/kevin/archives/000154_picocontainer.html">
<title>PicoContainer</title>
<link>http://blogs.codehaus.org/people/kevin/archives/000154_picocontainer.html</link>
<description><![CDATA[<p>Yesterday I needed a container to manage a small number of components and although I've used <a href="http://avalon.apache.org/" title="Avalon Framework">Avalon</a> in the past it's fairly heavy and intrusive and the thought of adding all the dependencies to my web app just made me a little hesitent. After looking at a few containers I decided to go with <a title="PicoContainer" href="http://picocontainer.codehaus.org/">PicoContainer</a>. An hour later it was integrated and combining my components. You can't ask for much simplier than that. Now I've read all the arguments about the use of constructors being evil <em>blah blah blah</em>, but this thing just works and its nice and light (44K with debug symbols).</p>]]></description>
<dc:subject>Java</dc:subject>
<dc:creator>kevin</dc:creator>
<dc:date>2003-09-18T08:52:09+10:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/kevin/archives/000145_new_home_and_a_new_look.html">
<title>New home and a new look</title>
<link>http://blogs.codehaus.org/people/kevin/archives/000145_new_home_and_a_new_look.html</link>
<description><![CDATA[<p>Well after toasting the <a href="http://www.movabletype.org">mt</a> install on my own box <a href="http://blogs.werken.com/people/bob/">bob</a> has set me up here on codehaus where I can do no more harm to myself.</p>
<p>I've also revamped the look of the blog. It's pretty untested on anything but <a href="http://www.mozilla.org/">Mozilla</a> but I'm not doing anything too fancy so <emp>Internet Exploder</emp> should be able to handle it. Can you tell I don't think much of IE?</p>]]></description>
<dc:subject>Random thoughts and rants</dc:subject>
<dc:creator>kevin</dc:creator>
<dc:date>2003-09-10T01:56:31+10:00</dc:date>
</item>


</rdf:RDF>
