<?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>halfdecent.net &#187; software</title>
	<atom:link href="http://halfdecent.net/category/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://halfdecent.net</link>
	<description>some personal argumentation</description>
	<lastBuildDate>Fri, 20 Aug 2010 21:51:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Eclipse + Ubuntu + Groovy pain</title>
		<link>http://halfdecent.net/2010/01/19/eclipse-ubuntu-groovy-pain/</link>
		<comments>http://halfdecent.net/2010/01/19/eclipse-ubuntu-groovy-pain/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 15:17:06 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[eclipse ubuntu]]></category>

		<guid isPermaLink="false">http://halfdecent.net/?p=110</guid>
		<description><![CDATA[A couple of days ago the v2 Groovy Eclipse plugin was released, but sadly I&#8217;m still not able to use it on my Ubuntu desktop because of a fairly convoluted set of configuration problems. The first is that the linux download of eclipse doesnt work very well in the latest version of Ubuntu (Karmic Koala). [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of days ago the <a href="http://docs.codehaus.org/display/GROOVY/Groovy-Eclipse+2.0.0+New+and+Noteworthy">v2 Groovy Eclipse plugin was released</a>, but sadly I&#8217;m still not able to use it on my Ubuntu desktop because of a fairly convoluted set of configuration problems.</p>
<p>The first is that the linux download of eclipse doesnt work very well in the latest version of Ubuntu (Karmic Koala).  A <a href="http://mou.me.uk/2009/10/31/fixing-eclipse-in-ubuntu-9-10-karmic-koala/">work around is described here</a> with further links to Ubuntu&#8217;s issuelist. But actually the work around is only a partial fix because Eclipse sometimes starts a copy of itself and, when it does, it ignores the work around. This affects me as I&#8217;m currently trying to develop plugins.</p>
<p>One alternative approach that has worked for me so far is to use the version of eclipse that&#8217;s in the Ubuntu repositories.  However, this version wasn&#8217;t taken from the final release of the eclipse codebase and the groovy plugin install, which patches the JDT (Java Development Toolkit) <a href="http://jira.codehaus.org/browse/GRECLIPSE-498">just wont install in this version</a>.</p>
<p>So to use the groovy plugin it looks as though I&#8217;ll have to wait for Eclipse 3.5.2 (which is <a href="http://wiki.eclipse.org/Galileo_Simultaneous_Release#SR2">due on February 29th</a>).</p>
]]></content:encoded>
			<wfw:commentRss>http://halfdecent.net/2010/01/19/eclipse-ubuntu-groovy-pain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ArgKit: An argumentation toolkit</title>
		<link>http://halfdecent.net/2008/01/24/argkit-an-argumentation-toolkit/</link>
		<comments>http://halfdecent.net/2008/01/24/argkit-an-argumentation-toolkit/#comments</comments>
		<pubDate>Thu, 24 Jan 2008 15:33:30 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[argumentation]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://halfdecent.net/2008/01/24/argkit-an-argumentation-toolkit/</guid>
		<description><![CDATA[Last week I released an open source project: ArgKit. It&#8217;s the synthesis of some work that I&#8217;ve been doing in the last couple of years and I&#8217;m very pleased with it. I&#8217;ve released early (ish) on this one, so there is more work to come in the same vein, time and attention allowing. One thing [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.argkit.org" title="ArgKit website"><img src="http://halfdecent.net/wp-content/uploads/2008/01/website.thumbnail.png" alt="ArgKit website" style="float: left; margin-right: 10px" /></a>Last week I released an open source project: <a href="http://www.argkit.org" title="ArgKit">ArgKit</a>.  It&#8217;s the synthesis of some work that I&#8217;ve been doing in the last couple of years and I&#8217;m very pleased with it.  I&#8217;ve released early (ish) on this one, so there is more work to come in the same vein, time and attention allowing.  One thing that ArgKit&#8217;s website misses is some background on &#8220;what is argumentation?&#8221; so I thought I&#8217;d just blog something about Dungine &#8211; the only tool in the toolkit at the moment, based on an email I sent to a friend recently (thanks for the question Steve).</p>
<p><span id="more-24"></span>If you look at the <a href="http://en.wikipedia.org/wiki/Argumentation">wikipedia argumentation entry</a>, you&#8217;ll see that Dung is mentioned in the Artificial Intelligence (AI) section.  The underlying model for Dungine, Dung&#8217;s acceptability semantics, is interesting to people who work in AI and are trying to capture how people reason and debate, particularly with inconsistent evidence and automate reasoning in this context. In my lab we use ideas like this to try and improve clinical decision support systems that:</p>
<ul>
<li>recommend diagnoses for a patient with a history and a set of symptoms and</li>
<li>recommend treatments for a diagnosed condition.</li>
</ul>
<p>Clinicians don&#8217;t always agree, and neither does the evidence upon which they base their opinions.  If we can adequately represent their arguments, then this software might allow us to automatically reason about which of those arguments we should accept.</p>
<p>In the business world one might use Dungine to:</p>
<ul>
<li>accept a recommendation from a source on the web or</li>
<li>represent a decision about granting a loan,</li>
</ul>
<p>but there are many alternative approaches to supporting these examples, including Bayesian methods or applying a set of prioritised rules. My intuition is that argumentation is most useful in situations where it feels natural to represent contradicting reasons for doing something (accepting the recommendation or granting the loan) but this is a new area, and there are too few examples of it&#8217;s application in the wild.   So I&#8217;ve built this library to help people give it go, and in doing so gather empirical evidence to help us understand where it&#8217;s a practical and useful technique.</p>
]]></content:encoded>
			<wfw:commentRss>http://halfdecent.net/2008/01/24/argkit-an-argumentation-toolkit/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The importance of being willing to ask stupid questions</title>
		<link>http://halfdecent.net/2007/11/28/stupid_questions/</link>
		<comments>http://halfdecent.net/2007/11/28/stupid_questions/#comments</comments>
		<pubDate>Wed, 28 Nov 2007 10:59:01 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://halfdecent.net/2007/11/28/stupid_questions/</guid>
		<description><![CDATA[Last week I spent a day interviewing candidates for a programmer position. One of the candidates discussed things that he looked for in an organisation. Two things in particular struck me: He wanted to work in an organisation that, if he was making good progress, didn&#8217;t slow him down and that, if he asked a [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I spent a day interviewing candidates for a programmer position.   One of the candidates discussed things that he looked for in an organisation.  Two things in particular struck me: He wanted to work in an organisation that, if he was making good progress, didn&#8217;t slow him down and that, if he asked a stupid question, didn&#8217;t call him stupid.  The first question revealed the candidates lack of experience (not a problem in this case btw) but the second one is very important to a career in software engineering.</p>
<p><span id="more-20"></span>Is is very important to ask stupid questions.  The amount that a developer is expected to know is huge.  They must understand their own field of software development, which is rapidly expanding, the domain of their client and be able to think about both at the tiniest level of detail and the highest abstraction.   It is inevitable that things fall through the gaps along the way, and often the only way to pick those things up is to ask stupid questions.  If you are afraid to ask stupid questions you&#8217;re going to proceed much more slowly then you could otherwise.  Of course, most people don&#8217;t like asking questions that they suspect might be stupid, but developers should consider this as part of their role.</p>
<p>One consequence of this attitude is that a software team, when it takes on a new member, must expect a whole series of questions from that newcomer about their domain, design decisions and working practice.  They must allow for this in their planning and encourage this from that person.  However, everyone has limits about being pestered about things that seem stupid, and my stated limit is that if someone asks me to show or explain to them the same thing three times I will be cross.  Twice is ok (expected sometimes), three is not.  I hope this encourages people to actively examine their level of understanding at whatever level of abstraction and document the processes they encounter (or, even better, review the documentation that exists).</p>
<p>Oh, and why did the first question suggest a lack of experience?  Well, because we&#8217;re not actually paid by an organisation to write software (although generally of course, this is what we get a kick out of the most) &#8211; we&#8217;re paid to solve their technical problems in a sustainable manner.  And generally this involves prioritising partial solutions.  Thus if an organisation doesn&#8217;t understand why you wish to pursue a particular line of work, and you cannot justify that line of work in terms of a problem they have, then it&#8217;s legitimate for them to prioritise another piece of work for you.  Sorry, but that&#8217;s just the way it is.  You have the option to continue rich seams of development in your own time (I would say this was one of the primary motivations for open source software), or find an organisation that is more aligned with your own personal enthusiasms &#8211; this may mean starting your own.</p>
]]></content:encoded>
			<wfw:commentRss>http://halfdecent.net/2007/11/28/stupid_questions/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Concept of the day: cargo cults</title>
		<link>http://halfdecent.net/2007/08/01/cargo-cults/</link>
		<comments>http://halfdecent.net/2007/08/01/cargo-cults/#comments</comments>
		<pubDate>Wed, 01 Aug 2007 16:19:05 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://halfdecent.net/2007/08/01/concept-of-the-day-cargo-cultists/</guid>
		<description><![CDATA[Cargo cults are a delightful new concept to me, from the excellent and thought provoking blog entry, internal code re-use considered dangerous, which in turn was a link from another blog entry, is your code worthless? which in turn was a link from theserverside.com.  Now that&#8217;s provenance baby.  Too much information?]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Cargo_cult">Cargo cults</a> are a delightful new concept to me, from the excellent and thought provoking blog entry, <a href="http://www.yafla.com/dforbes/2005/09/15.html#a54">internal code re-use considered dangerous</a>, which in turn was a link from another blog entry, <a href="http://cysquatch.net/blog/?p=43">is your code worthless?</a> which in turn was a link from <a href="http://theserverside.com">theserverside.com</a>.  Now that&#8217;s provenance baby.  Too much information?</p>
]]></content:encoded>
			<wfw:commentRss>http://halfdecent.net/2007/08/01/cargo-cults/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>You lied to me when you said this was a program</title>
		<link>http://halfdecent.net/2007/06/15/you-lied-to-me/</link>
		<comments>http://halfdecent.net/2007/06/15/you-lied-to-me/#comments</comments>
		<pubDate>Fri, 15 Jun 2007 08:57:30 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://halfdecent.net/?p=7</guid>
		<description><![CDATA[A Dutch colleague introduced me to plasmasturm.org a while ago &#8211; an excellent software engineering resource. I hadnt noticed it before* but today I was most tickled by a quote he has on his code page: A friend of mine in a compiler writing class produced a compiler with one error message ‘you lied to [...]]]></description>
			<content:encoded><![CDATA[<p>A Dutch colleague introduced me to <a href="http://plasmasturm.org/">plasmasturm.org</a> a while ago &#8211; an excellent software engineering resource.    I hadnt noticed it before* but today I was most tickled by a quote he has on his code page:</p>
<p><cite>A friend of mine in a compiler writing class produced a compiler with one error message ‘you lied to me when you told me this was a program’</cite></p>
<p>see <a href="http://plasmasturm.org/code/">plasmasturm.org/code.</a></p>
<p>* Maybe I did notice it before and didnt get it.  Since I first looked at that site I&#8217;ve done some work with the <a href="http://i.loveruby.net/en/projects/racc/">RACC</a>, <a href="http://web.cecs.pdx.edu/~mpj/jacc/index.html">JACC</a> and <a href="https://javacc.dev.java.net/">JavaCC</a> compiler compilers (of the two Java compiler compilers, I prefer JavaCC).</p>
]]></content:encoded>
			<wfw:commentRss>http://halfdecent.net/2007/06/15/you-lied-to-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress theme</title>
		<link>http://halfdecent.net/2007/06/13/wordpress-theme/</link>
		<comments>http://halfdecent.net/2007/06/13/wordpress-theme/#comments</comments>
		<pubDate>Wed, 13 Jun 2007 11:10:52 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://halfdecent.net/?p=6</guid>
		<description><![CDATA[I fell in love with this styleshout web template and decided to hack it into a WordPress theme. Someone else had done it before, but their license was a little too restrictive for my liking. It took a few hours but was well worth it. It&#8217;s not widget friendly yet, but it will do for [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.styleshout.com/templates/preview/Envision1-0/index.html"><img src="http://www.styleshout.com/templates/thumbnails/Envision.jpg" style="float: left; margin-right: 10px" height="150" width="200" /></a>I fell in love with this <a href="http://www.styleshout.com">styleshout</a> web template and decided to hack it into a WordPress theme.  Someone else had done it before, but their license was a little too restrictive for my liking.  It took a few hours but was well worth it.  It&#8217;s not widget friendly yet, but it will do for now.</p>
<p>This was almost my first encounter with PHP and definately my first encounter with the WordPress codebase but the task turned out to be fairly straightforward.  The files in the WordPress themes were intuitively named and the code was easy to read.   The only problem I had was tracing the location of some of the core functions that are used in the theme, but this is quite normal for this sort of application I feel.</p>
]]></content:encoded>
			<wfw:commentRss>http://halfdecent.net/2007/06/13/wordpress-theme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java status bar</title>
		<link>http://halfdecent.net/2007/06/12/java-status-bar/</link>
		<comments>http://halfdecent.net/2007/06/12/java-status-bar/#comments</comments>
		<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[desktop]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[This might save someone else a little bother. I&#8217;ve been building Java Swing demo&#8217;s in the last few months and one thing that has slowed me down is building a status bar. A status bar is the strip at the bottom of a window that contains useful information about the status of an application. As [...]]]></description>
			<content:encoded><![CDATA[<p>This might save someone else a little bother.  I&#8217;ve been building Java Swing demo&#8217;s in the last few months and one thing that has slowed me down is building a status bar.  A status bar is the strip at the bottom of a window that contains useful information about the status of an application.  As an example, here is the status bar for my skype client:</p>
<p><a href="http://halfdecent.net/wp-content/uploads/2007/06/skype_status_bar.png" title="skype status bar"><img src="http://halfdecent.net/wp-content/uploads/2007/06/skype_status_bar.png" alt="skype status bar" /></a></p>
<p>There is no standard swing control (container) to do this so you must roll your own.  Searching for &#8220;java status bar&#8221; didnt get me very far.   Initially I just used a JLabel, but this is too simple.  I really wanted something with multiple recessed panels (as in the skype example).  I considered using an unfloatable JToolBar but I dropped this idea because a toolbar&#8217;s default background doesnt look like a status bar and because its not easy to make the recessed panels this way.  Finally I realised that the best way to build my status bar is to nest JPanels.  <span id="more-1"></span>In the next screenshot you can see an example Java status bar which consists of the one JPanel with two JPanel containers nested within it.</p>
<p><a href="http://halfdecent.net/wp-content/uploads/2007/06/java-status-bar.png" title="My java status bar"><img src="http://halfdecent.net/wp-content/uploads/2007/06/java-status-bar.png" alt="My java status bar" /></a></p>
<p>Now it&#8217;s a little tricky to get the status bar behaving correctly on resize, but if you use a GridBagLayout for your top level JPanel then it&#8217;s doable.  However, a GridBagLayout is pretty horrible to use so I constructed two helper classes, StatusBar and StatusBarPanel to make things eaiser.  A StatusBarPanel is simply a JPanel extended with two extra attributes: an integer panelWidth and a boolean fixedWidth.  Thus you can define the width that you wish for your panel and whether or not it can stretch on resize.  The StatusBar class also extends JPanel and has an array of StatusBarPanel objects.   A StatusBar object configures the GridBagConstraints for you when you give it the array of panels.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-8045023696629925";
/* 468x60, created 25/03/08 */
google_ad_slot = "7387698164";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://halfdecent.net/2007/06/12/java-status-bar/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
