<?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/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Maurits thinks aloud &#187; Programming</title>
	<atom:link href="http://maurits.wordpress.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://maurits.wordpress.com</link>
	<description>Stuff I care about</description>
	<lastBuildDate>Thu, 08 Oct 2009 09:49:36 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='maurits.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/3e5d747e552cb1e98790d9b7e09ffdd1?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Maurits thinks aloud &#187; Programming</title>
		<link>http://maurits.wordpress.com</link>
	</image>
			<item>
		<title>First Google Wave experiments</title>
		<link>http://maurits.wordpress.com/2009/10/07/first-google-wave-experiments/</link>
		<comments>http://maurits.wordpress.com/2009/10/07/first-google-wave-experiments/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 22:16:23 +0000</pubDate>
		<dc:creator>maurits</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://maurits.wordpress.com/?p=155</guid>
		<description><![CDATA[I did some initial experiments with programming for Google Wave. Basically I got the code from the tutorial and created a robot (called Dalek) which automatically translates the entered text (so called blips) from English to Spanish using the Java version of the Google Translate API. Screenshot of the result:
Overall impression so far: very easy [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maurits.wordpress.com&blog=73044&post=155&subd=maurits&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I did some initial experiments with programming for Google Wave. Basically I got the code from the tutorial and created a robot (called <a href="http://en.wikipedia.org/wiki/Dalek">Dalek</a>) which automatically translates the entered text (so called blips) from English to Spanish using the <a href="http://code.google.com/p/google-api-translate-java/">Java version</a> of the Google Translate API. Screenshot of the result:</p>
<div id="attachment_154" class="wp-caption alignnone" style="width: 533px"><br />
<img class="size-full wp-image-154" title="Screen shot 2009-10-08 at 12.02.08 AM" src="http://maurits.files.wordpress.com/2009/10/screen-shot-2009-10-08-at-12-02-08-am.png?w=523&#038;h=443" alt="My first wave" width="523" height="443" /><p class="wp-caption-text">My first wave</p></div>
<p>Overall impression so far: very easy to use API. Google Wave itself can be terribly slow. Sometimes the syncing of &#8216;unsynced waves&#8217; takes more than a minute. Next step: thinking of a more serious application.</p>
<p>And for those interested, the actual Java code:</p>
<pre class="brush: java;">
package dalek;

import com.google.api.detect.Detect;
import com.google.api.translate.Language;
import com.google.api.translate.Translate;
import com.google.wave.api.AbstractRobotServlet;
import com.google.wave.api.Blip;
import com.google.wave.api.Event;
import com.google.wave.api.EventType;
import com.google.wave.api.RobotMessageBundle;
import com.google.wave.api.TextView;
import com.google.wave.api.Wavelet;

public class DalekServlet extends AbstractRobotServlet {

   @Override
   public void processEvents(RobotMessageBundle bundle) {
      Wavelet wavelet = bundle.getWavelet();

      if (bundle.wasSelfAdded()) {
         addText(wavelet, &quot;We are the Daleks&quot;);
      }

      for (Event e : bundle.getEvents()) {
         if (e.getType() == EventType.WAVELET_PARTICIPANTS_CHANGED) {
            addText(wavelet, &quot;Exterminate... exterminate... exterminate&quot;);
         } else if (e.getType() == EventType.BLIP_SUBMITTED) {
            addTranslation(e.getBlip());
         }
      }
   }

   private void addTranslation(Blip blip) {
      if (!blip.getCreator().equals(&quot;mjbvrijk@appspot.com&quot;)) {
         String originalText = blip.getDocument().getText();
         try {
            Detect.setHttpReferrer(&quot;maurits.wordpress.com&quot;);

            String translatedText = Translate.execute(originalText, Language.AUTO_DETECT, Language.SPANISH);
            createChildBlip(blip, translatedText);
         } catch (Exception e) {
            createChildBlip(blip, &quot;Translation failed&quot;);
         }
      }
   }

   private void createChildBlip(Blip blip, String s) {
      addTextToBlip(blip.createChild(), s);
   }

   private void addText(Wavelet wavelet, String s) {
      addTextToBlip(wavelet.appendBlip(), s);
   }

   private void addTextToBlip(Blip blip, String s) {
      TextView textView = blip.getDocument();
      textView.append(s);
   }
}
</pre>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/maurits.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/maurits.wordpress.com/155/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/maurits.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/maurits.wordpress.com/155/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/maurits.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/maurits.wordpress.com/155/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/maurits.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/maurits.wordpress.com/155/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/maurits.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/maurits.wordpress.com/155/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maurits.wordpress.com&blog=73044&post=155&subd=maurits&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://maurits.wordpress.com/2009/10/07/first-google-wave-experiments/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/893d9f6bfc7e837b99dcac17dc3616c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">maurits</media:title>
		</media:content>

		<media:content url="http://maurits.files.wordpress.com/2009/10/screen-shot-2009-10-08-at-12-02-08-am.png" medium="image">
			<media:title type="html">Screen shot 2009-10-08 at 12.02.08 AM</media:title>
		</media:content>
	</item>
		<item>
		<title>Twitter</title>
		<link>http://maurits.wordpress.com/2009/08/25/twitter/</link>
		<comments>http://maurits.wordpress.com/2009/08/25/twitter/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 08:25:24 +0000</pubDate>
		<dc:creator>maurits</dc:creator>
				<category><![CDATA[GIMP]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://maurits.wordpress.com/?p=139</guid>
		<description><![CDATA[I started using Twitter last week. My interest was triggered by a very cool workshop on programming in Scala that was given at the company I work for. Twitter has a nice API which is very easy to use from Scala or any other programming language. I still try to figure out what the business [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maurits.wordpress.com&blog=73044&post=139&subd=maurits&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I started using <a href="http://twitter.com/">Twitter</a> last week. My interest was triggered by a very cool workshop on programming in <a href="http://www.scala-lang.org/">Scala</a> that was given at the <a href="http://www.xebia.com/">company</a> I work for. <a href="http://twitter.com/">Twitter</a> has a nice API which is very easy to use from <a href="http://www.scala-lang.org/">Scala</a> or any other programming language. I still try to figure out what the business case could be for using Twitter, but for the moment it&#8217;s quite fun to do a few daily updates on what keeps me busy and/or interested.</p>
<p>My Twitter ID is @mauritsrijk (<a href="http://twitter.com/mauritsrijk">direct link</a>). I probably am going to use it to give more frequent updates on my <a href="http://sourceforge.net/projects/gimp-sharp/">GIMP#</a> activities.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/maurits.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/maurits.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/maurits.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/maurits.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/maurits.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/maurits.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/maurits.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/maurits.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/maurits.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/maurits.wordpress.com/139/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maurits.wordpress.com&blog=73044&post=139&subd=maurits&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://maurits.wordpress.com/2009/08/25/twitter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/893d9f6bfc7e837b99dcac17dc3616c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">maurits</media:title>
		</media:content>
	</item>
		<item>
		<title>Developing on Android</title>
		<link>http://maurits.wordpress.com/2009/06/30/developing-on-android/</link>
		<comments>http://maurits.wordpress.com/2009/06/30/developing-on-android/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 20:43:19 +0000</pubDate>
		<dc:creator>maurits</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://maurits.wordpress.com/?p=135</guid>
		<description><![CDATA[I intend to buy an Android phone. It&#8217;s probably going to be the HTC Hero mainly because it&#8217;s almost available where I live and it also comes without a simlock, unlike for example the HTC Magic which is exclusive for Vodafone. Next I plan to develop some übercool applications but in the meantime I&#8217;ll start [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maurits.wordpress.com&blog=73044&post=135&subd=maurits&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I intend to buy an <a href="http://www.android.com/">Android</a> phone. It&#8217;s probably going to be the <a href="http://www.htc.com/www/product/hero/overview.html">HTC Hero</a> mainly because it&#8217;s almost available where I live and it also comes without a simlock, unlike for example the HTC Magic which is exclusive for Vodafone. Next I plan to develop some übercool applications but in the meantime I&#8217;ll start with porting a very old game I did more than a decade ago: it was called Groundhog. A screenshot:</p>
<div class="wp-caption aligncenter" style="width: 411px"><img title="Groundhog screenshot" src="http://linux.softpedia.com/screenshots/Groundhog_1.gif" alt="Groundhog screenshot" width="401" height="406" /><p class="wp-caption-text">Groundhog screenshot</p></div>
<p>So stay tuned for a Groundhog coming to your mobile&#8230;</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/maurits.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/maurits.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/maurits.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/maurits.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/maurits.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/maurits.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/maurits.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/maurits.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/maurits.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/maurits.wordpress.com/135/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maurits.wordpress.com&blog=73044&post=135&subd=maurits&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://maurits.wordpress.com/2009/06/30/developing-on-android/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/893d9f6bfc7e837b99dcac17dc3616c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">maurits</media:title>
		</media:content>

		<media:content url="http://linux.softpedia.com/screenshots/Groundhog_1.gif" medium="image">
			<media:title type="html">Groundhog screenshot</media:title>
		</media:content>
	</item>
		<item>
		<title>Experiments with the Google Chart API</title>
		<link>http://maurits.wordpress.com/2009/03/26/experiments-with-the-google-chart-api/</link>
		<comments>http://maurits.wordpress.com/2009/03/26/experiments-with-the-google-chart-api/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 21:05:20 +0000</pubDate>
		<dc:creator>maurits</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://maurits.wordpress.com/?p=112</guid>
		<description><![CDATA[In 25 years of programming  I blogged about the lines of code I have written in several programming languages. I am experimenting with the Google Chart API and created a graphical overview of my personal top 7. Result:

The url to generate the pie chart:

http://chart.apis.google.com/chart?cht=p3&#38;chtt=Top+7&#38;chts=0000ff,32&#38;chd=t:100,70,20,20,5,5,2,3&#38;chs=650x250&#38;chl=C%20(100000)&#124;C%23%20(70000)&#124;Java%20(20000)&#124;C%2B%2B%20(20000)&#124;Pascal%20(5000)&#124;PV~Wave%20(5000)&#124;Basic%20(2000)&#124;Other%20(3400)&#124;


The next bar chart shows all the other languages in which [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maurits.wordpress.com&blog=73044&post=112&subd=maurits&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>In <a href="http://maurits.wordpress.com/2008/03/08/25-years-of-programming/">25 years of programming </a> I blogged about the lines of code I have written in several programming languages. I am experimenting with the <a href="http://code.google.com/apis/chart/">Google Chart API</a> and created a graphical overview of my personal top 7. Result:</p>
<p><img class="alignleft" src="http://chart.apis.google.com/chart?cht=p3&amp;chtt=Top+7&amp;chts=0000ff,32&amp;chd=t:100,70,20,20,5,5,2,3&amp;chs=650x250&amp;chl=C%20(100000)|C%23%20(70000)|Java%20(20000)|C%2B%2B%20(20000)|Pascal%20(5000)|PV~Wave%20(5000)|Basic%20(2000)|Other%20(3400)|" alt="Top 10" /></p>
<p>The url to generate the pie chart:</p>
<pre class="brush: xml;">
http://chart.apis.google.com/chart?cht=p3&amp;chtt=Top+7&amp;chts=0000ff,32&amp;chd=t:100,70,20,20,5,5,2,3&amp;chs=650x250&amp;chl=C%20(100000)|C%23%20(70000)|Java%20(20000)|C%2B%2B%20(20000)|Pascal%20(5000)|PV~Wave%20(5000)|Basic%20(2000)|Other%20(3400)|
</pre>
<p><span id="more-112"></span><br />
The next bar chart shows all the other languages in which I programmed less than 1000 lines.</p>
<p style="text-align:center;"><img class="aligncenter" src="http://chart.apis.google.com/chart?cht=bhs&amp;chtt=Other+languages&amp;chts=0000ff,32&amp;chs=350x300&amp;chxt=x,r&amp;chxl=0:|0|1000|1:|Lisp/Scheme|Assembly|Fortran|Perl|Python|Boo|Nemerle|F%23|Ruby&amp;chd=t:1,2,2,2,2,10,20,100,100" alt="" /></p>
<p>The url to generate the bar chart:</p>
<pre class="brush: xml;">
http://chart.apis.google.com/chart?cht=bhs&amp;chtt=Other+languages&amp;chts=0000ff,32&amp;chs=350x300&amp;chxt=x,r&amp;chxl=0:|0|1000|1:|Lisp/Scheme|Assembly|Fortran|Perl|Python|Boo|Nemerle|F%23|Ruby&amp;chd=t:1,2,2,2,2,10,20,100,100
</pre>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/maurits.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/maurits.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/maurits.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/maurits.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/maurits.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/maurits.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/maurits.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/maurits.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/maurits.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/maurits.wordpress.com/112/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maurits.wordpress.com&blog=73044&post=112&subd=maurits&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://maurits.wordpress.com/2009/03/26/experiments-with-the-google-chart-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/893d9f6bfc7e837b99dcac17dc3616c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">maurits</media:title>
		</media:content>

		<media:content url="http://chart.apis.google.com/chart?cht=p3&#38;chtt=Top+7&#38;chts=0000ff,32&#38;chd=t:100,70,20,20,5,5,2,3&#38;chs=650x250&#38;chl=C%20(100000)&#124;C%23%20(70000)&#124;Java%20(20000)&#124;C%2B%2B%20(20000)&#124;Pascal%20(5000)&#124;PV~Wave%20(5000)&#124;Basic%20(2000)&#124;Other%20(3400)&#124;" medium="image">
			<media:title type="html">Top 10</media:title>
		</media:content>

		<media:content url="http://chart.apis.google.com/chart?cht=bhs&#38;chtt=Other+languages&#38;chts=0000ff,32&#38;chs=350x300&#38;chxt=x,r&#38;chxl=0:&#124;0&#124;1000&#124;1:&#124;Lisp/Scheme&#124;Assembly&#124;Fortran&#124;Perl&#124;Python&#124;Boo&#124;Nemerle&#124;F%23&#124;Ruby&#38;chd=t:1,2,2,2,2,10,20,100,100" medium="image" />
	</item>
		<item>
		<title>Hacking JIRA with Ruby</title>
		<link>http://maurits.wordpress.com/2009/03/19/hacking-jira-with-ruby/</link>
		<comments>http://maurits.wordpress.com/2009/03/19/hacking-jira-with-ruby/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 22:13:53 +0000</pubDate>
		<dc:creator>maurits</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://maurits.wordpress.com/?p=93</guid>
		<description><![CDATA[I have been reading a lot over the last couple of months. Great books like &#8220;The World is Flat 3.0&#8243;, &#8220;Dreaming in Code&#8221;, &#8220;My Job went to India&#8221;, &#8220;The five dysfunctions of a team&#8221;, &#8220;Clean Code&#8221; and quite a few more. However I started to realize that although reading is fun, it tends to keep [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maurits.wordpress.com&blog=73044&post=93&subd=maurits&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I have been reading a lot over the last couple of months. Great books like <a href="http://www.thomaslfriedman.com/bookshelf/the-world-is-flat-3">&#8220;The World is Flat 3.0&#8243;</a>, <a href="http://www.dreamingincode.com/">&#8220;Dreaming in Code&#8221;</a>, <a href="http://www.pragprog.com/titles/mjwti/my-job-went-to-india">&#8220;My Job went to India&#8221;</a>, <a href="http://www.tablegroup.com/books/dysfunctions/">&#8220;The five dysfunctions of a team&#8221;</a>, <a href="http://blog.objectmentor.com/articles/2008/04/08/clean-code-whew">&#8220;Clean Code&#8221;</a> and quite a few more. However I started to realize that although reading is fun, it tends to keep me in my comfort zone. I should really practice writing. People remember great writers. You hardly ever hear people saying &#8220;he was such a great reader&#8221; about a person that died hundred years ago.</p>
<p>So I just put down here what I&#8217;m doing at the moment. Lately I started to automate some things like writing progress reports for customers. Now please don&#8217;t stop reading at the word &#8220;progress report&#8221;. It might become a bit more interesting <span id="more-93"></span>than you would expect. Part of my progress report consists of all kinds of metrics about a project: budgets, quality, schedule, etc. These metrics are collected from several systems and <a href="http://www.atlassian.com/software/jira/">JIRA</a> is one of them. Until recently I copied and pasted all this data into OpenOffice, did some magical calculations with a spreadsheet, and finally generated a few graphs which I used in the progress reports. So far the boring part.</p>
<p>However, <a href="http://www.atlassian.com/software/jira/">JIRA</a> also has a very nice RPC plugin which can be used to invoke <a href="http://www.atlassian.com/software/jira/">JIRA</a> operations remotely. And that&#8217;s exactly what I&#8217;m playing with at the moment. I&#8217;m using <a href="http://docs.codehaus.org/display/JIRA4R/Home">jira4r </a>as a Ruby client library to automate all my tedious copy and paste actions. First experiments are succesful: with just a couple of lines (3 lines of code to be exact) of Ruby code I&#8217;m able to get a listing of all projects registered in a certain <a href="http://www.atlassian.com/software/jira/">JIRA</a> instance. Next step is to find a good library to generate graphs. Oh, and some actual code:</p>
<pre class="brush: ruby;">

require 'rubygems'
require 'jira4r/jira_tool'

# Replace next url, username and password according to your own JIRA setup
jira = Jira4R::JiraTool.new(2, &quot;http://jira.atlassian.com&quot;)
jira.login(&quot;soaptester&quot;, &quot;soaptester&quot;)

# Dump all project descriptions
jira.getProjects.each { |project| puts project.description}
</pre>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/maurits.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/maurits.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/maurits.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/maurits.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/maurits.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/maurits.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/maurits.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/maurits.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/maurits.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/maurits.wordpress.com/93/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maurits.wordpress.com&blog=73044&post=93&subd=maurits&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://maurits.wordpress.com/2009/03/19/hacking-jira-with-ruby/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/893d9f6bfc7e837b99dcac17dc3616c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">maurits</media:title>
		</media:content>
	</item>
		<item>
		<title>Writing GIMP plug-ins in Object Pascal</title>
		<link>http://maurits.wordpress.com/2008/10/23/writing-gimp-plug-ins-in-object-pascal/</link>
		<comments>http://maurits.wordpress.com/2008/10/23/writing-gimp-plug-ins-in-object-pascal/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 14:46:29 +0000</pubDate>
		<dc:creator>maurits</dc:creator>
				<category><![CDATA[GIMP]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://maurits.wordpress.com/?p=88</guid>
		<description><![CDATA[I slowly picked up GIMP# development again. To get my brain in the right mode I added a plug-in in yet another .NET language: Oxygene which is a kind of Object Pascal. From what I&#8217;ve seen it is a pretty decent language although I never understood why people would like to type 10 characters (&#8220;begin;&#8221; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maurits.wordpress.com&blog=73044&post=88&subd=maurits&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I slowly picked up GIMP# development again. To get my brain in the right mode I added a plug-in in yet another .NET language: <a href="http://www.remobjects.com/product/?id={DC0A9947-5FED-4D34-8CC8-F2DCFA87A1FE}">Oxygene</a> which is a kind of <a href="http://en.wikipedia.org/wiki/Delphi_programming_language">Object Pascal</a>. From what I&#8217;ve seen it is a pretty decent language although I never understood why people would like to type 10 characters (&#8220;begin;&#8221; and &#8220;end;&#8221;) instead of 2 curly braces just to open and close a block <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>For those interested: currently I run <a href="http://www.mandriva.com/">Mandriva</a> 2009 with <a href="http://www.virtualbox.org/">VirtualBox</a> 2.0.2 on my loyal MacBook Pro for development. The fancy <a href="http://en.wikipedia.org/wiki/Integrated_development_environment">IDE</a> I use is called Emacs.</p>
<p><a href="http://www.ironruby.net/">IronRuby</a> and the <a href="http://www.fandev.org/">Fan Programming Language</a> will probably be my next targets.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/maurits.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/maurits.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/maurits.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/maurits.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/maurits.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/maurits.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/maurits.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/maurits.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/maurits.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/maurits.wordpress.com/88/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maurits.wordpress.com&blog=73044&post=88&subd=maurits&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://maurits.wordpress.com/2008/10/23/writing-gimp-plug-ins-in-object-pascal/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/893d9f6bfc7e837b99dcac17dc3616c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">maurits</media:title>
		</media:content>
	</item>
		<item>
		<title>25 years of programming</title>
		<link>http://maurits.wordpress.com/2008/03/08/25-years-of-programming/</link>
		<comments>http://maurits.wordpress.com/2008/03/08/25-years-of-programming/#comments</comments>
		<pubDate>Sat, 08 Mar 2008 11:01:09 +0000</pubDate>
		<dc:creator>maurits</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ramblings]]></category>

		<guid isPermaLink="false">http://maurits.wordpress.com/?p=83</guid>
		<description><![CDATA[I started programming in 1983 on a Sharp PC-1251 with an amazing 3486 bytes RAM. It had a Basic interpreter and we had to use it for a Calculus course at the university.

So that&#8217;s 25 years ago. That made me suddenly wonder how much code in different programming languages I have written in all those [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maurits.wordpress.com&blog=73044&post=83&subd=maurits&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I started programming in 1983 on a Sharp PC-1251 with an amazing 3486 bytes RAM. It had a Basic interpreter and we had to use it for a <a href="http://en.wikipedia.org/wiki/Calculus">Calculus</a> course at the university.</p>
<p><a href="http://maurits.files.wordpress.com/2008/03/sharp-pc-1251-m.jpg" title="Sharp PC-1251"><img src="http://maurits.files.wordpress.com/2008/03/sharp-pc-1251-m.thumbnail.jpg" alt="Sharp PC-1251" /></a></p>
<p>So that&#8217;s 25 years ago. That made me suddenly wonder how much code in different programming languages I have written in all those years. A completely useless question of course, but fun nevertheless.  I don&#8217;t have all the code available anymore so I have to estimate some numbers from memory. The numbers I present include comment and blank lines.</p>
<p>The list:</p>
<ol>
<li>C:                 100.000</li>
<li>C#:                 70.000</li>
<li>Java:              20.000</li>
<li>C++:               20.000</li>
<li>Pascal:              5.000</li>
<li>PV~Wave:        5.000</li>
<li>Basic:                2.000</li>
<li>Matlab:             1.000</li>
<li>Lisp/Scheme:  1.000</li>
<li>Assembly:        1.000</li>
<li>Fortran:              200</li>
<li>Perl:                     100</li>
<li>Python:                  20</li>
<li>Boo:                        20</li>
<li>Nemerle:               20</li>
<li>F#:                         20</li>
<li>Ruby:                     10</li>
</ol>
<p>This totals 225k lines of code in 25 years.In other words, about 10k LOC&#8217;s per year, or 30 lines per day. Other interesting questions that could be asked:</p>
<ul>
<li>how much of this code is still in use</li>
<li>how much of this code is forever lost</li>
<li>how much of this code is still archived somewhere on a company network</li>
<li>how much code would this have been if it all had been written using language xyz</li>
<li>how many bugs did I introduce over the last 25 years <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ul>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/maurits.wordpress.com/83/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/maurits.wordpress.com/83/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/maurits.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/maurits.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/maurits.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/maurits.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/maurits.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/maurits.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/maurits.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/maurits.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/maurits.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/maurits.wordpress.com/83/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maurits.wordpress.com&blog=73044&post=83&subd=maurits&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://maurits.wordpress.com/2008/03/08/25-years-of-programming/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/893d9f6bfc7e837b99dcac17dc3616c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">maurits</media:title>
		</media:content>

		<media:content url="http://maurits.files.wordpress.com/2008/03/sharp-pc-1251-m.thumbnail.jpg" medium="image">
			<media:title type="html">Sharp PC-1251</media:title>
		</media:content>
	</item>
		<item>
		<title>GIMP# 0.14 released</title>
		<link>http://maurits.wordpress.com/2008/01/04/gimp-014-released/</link>
		<comments>http://maurits.wordpress.com/2008/01/04/gimp-014-released/#comments</comments>
		<pubDate>Fri, 04 Jan 2008 14:00:09 +0000</pubDate>
		<dc:creator>maurits</dc:creator>
				<category><![CDATA[GIMP]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://maurits.wordpress.com/2008/01/04/gimp-014-released/</guid>
		<description><![CDATA[A new release of GIMP# is available. New in release 0.14 are:

Nemerle sample added
Boo sample added
Visual Basic sample added (I know.. don&#8217;t ask   )
F# sample added
Ported abandoned Sky plug-in (part of PhyModMedia plug-ins)
 GIMP# now uses C# 3.0 features for cleaner code

Have fun.
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maurits.wordpress.com&blog=73044&post=80&subd=maurits&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>A new release of <a href="http://sourceforge.net/projects/gimp-sharp/">GIMP#</a> is available. New in release 0.14 are:</p>
<ul>
<li><a href="http://nemerle.org">Nemerle</a> sample added</li>
<li><a href="http://boo.codehaus.org">Boo</a> sample added</li>
<li>Visual Basic sample added (I know.. don&#8217;t ask <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  )</li>
<li><a href="http://research.microsoft.com/fsharp">F#</a> sample added</li>
<li>Ported abandoned Sky plug-in (part of PhyModMedia plug-ins)</li>
<li><a href="http://sourceforge.net/projects/gimp-sharp/"> GIMP#</a> now uses C# 3.0 features for cleaner code</li>
</ul>
<p>Have fun.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/maurits.wordpress.com/80/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/maurits.wordpress.com/80/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/maurits.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/maurits.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/maurits.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/maurits.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/maurits.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/maurits.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/maurits.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/maurits.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/maurits.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/maurits.wordpress.com/80/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maurits.wordpress.com&blog=73044&post=80&subd=maurits&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://maurits.wordpress.com/2008/01/04/gimp-014-released/feed/</wfw:commentRss>
		<slash:comments>31</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/893d9f6bfc7e837b99dcac17dc3616c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">maurits</media:title>
		</media:content>
	</item>
		<item>
		<title>F# and GIMP#</title>
		<link>http://maurits.wordpress.com/2007/12/02/f-and-gimp/</link>
		<comments>http://maurits.wordpress.com/2007/12/02/f-and-gimp/#comments</comments>
		<pubDate>Sun, 02 Dec 2007 22:04:31 +0000</pubDate>
		<dc:creator>maurits</dc:creator>
				<category><![CDATA[GIMP]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://maurits.wordpress.com/2007/12/02/f-and-gimp/</guid>
		<description><![CDATA[I almost got my first F# plug-in running on GIMP#. It took me some time to get used to the syntax even with a background in functional languages like Lisp and Scheme. Only thing left to figure out is how I can override a C# function that returns an IEnumerable. What I&#8217;ve got sofar is:
override [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maurits.wordpress.com&blog=73044&post=75&subd=maurits&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I almost got my first <a href="http://research.microsoft.com/fsharp/fsharp.aspx">F#</a> plug-in running on <a href="http://sourceforge.net/projects/gimp-sharp/">GIMP#</a>. It took me some time to get used to the syntax even with a background in functional languages like Lisp and Scheme. Only thing left to figure out is how I can override a C# function that returns an IEnumerable. What I&#8217;ve got sofar is:</p>
<p>override x.ListProcedures() : seq&lt;Procedure&gt; =<br />
let procedure = new Procedure()<br />
procedure.MenuPath &lt;- &#8220;&lt;Image&gt;/Filters/Generic&#8221;<br />
// And now what?</p>
<p>The C# signature of this routine is</p>
<p>protected abstract IEnumerable&lt;Procedure&gt; ListProcedures() ;</p>
<p>Hope to find an answer pretty soon.</p>
<p><strong>Update 3 December 2007</strong>: seems that returning an IEnumerable is quite easy (many thanks to <a href="http://www.strangelights.com/">Robert Pickering</a>):</p>
<p>[procedure] :&gt; seq&lt;Procedure&gt;</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/maurits.wordpress.com/75/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/maurits.wordpress.com/75/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/maurits.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/maurits.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/maurits.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/maurits.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/maurits.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/maurits.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/maurits.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/maurits.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/maurits.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/maurits.wordpress.com/75/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maurits.wordpress.com&blog=73044&post=75&subd=maurits&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://maurits.wordpress.com/2007/12/02/f-and-gimp/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/893d9f6bfc7e837b99dcac17dc3616c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">maurits</media:title>
		</media:content>
	</item>
		<item>
		<title>Bah!</title>
		<link>http://maurits.wordpress.com/2007/11/29/bah/</link>
		<comments>http://maurits.wordpress.com/2007/11/29/bah/#comments</comments>
		<pubDate>Thu, 29 Nov 2007 22:39:38 +0000</pubDate>
		<dc:creator>maurits</dc:creator>
				<category><![CDATA[GIMP]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://maurits.wordpress.com/2007/11/29/bah/</guid>
		<description><![CDATA[After Boo comes bah. I&#8217;m probably going to burn in hell forever for having done this, but I actually created a Visual Basic plug-in for GIMP. The code is currently in CVS at the GIMP# Sourceforge page. Don&#8217;t look at the code unless you have a very strong stomach. Promise to myself: I will never [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maurits.wordpress.com&blog=73044&post=74&subd=maurits&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>After <a href="http://boo.codehaus.org/">Boo</a> comes bah. I&#8217;m probably going to burn in hell forever for having done this, but I actually created a Visual Basic plug-in for <a href="http://www.gimp.org">GIMP</a>. The code is currently in CVS at the <a href="http://sourceforge.net/projects/gimp-sharp/">GIMP#</a> Sourceforge page. Don&#8217;t look at the code unless you have a very strong stomach. Promise to myself: I will never ever create Basic code again. On a more serious note: the performance of the Visual Basic plug-in is comparable to the C#, Boo and Nemerle version!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/maurits.wordpress.com/74/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/maurits.wordpress.com/74/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/maurits.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/maurits.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/maurits.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/maurits.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/maurits.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/maurits.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/maurits.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/maurits.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/maurits.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/maurits.wordpress.com/74/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maurits.wordpress.com&blog=73044&post=74&subd=maurits&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://maurits.wordpress.com/2007/11/29/bah/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/893d9f6bfc7e837b99dcac17dc3616c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">maurits</media:title>
		</media:content>
	</item>
	</channel>
</rss>