<?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>Divide and Conquer &#187; Software Development</title>
	<atom:link href="http://www.divideandconquer.se/category/software-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.divideandconquer.se</link>
	<description>David's Software Development Blog</description>
	<lastBuildDate>Thu, 24 Jun 2010 13:47:00 +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>The Book Of JOSH is back online!</title>
		<link>http://www.divideandconquer.se/2010/04/22/the-book-of-josh-is-back-online/</link>
		<comments>http://www.divideandconquer.se/2010/04/22/the-book-of-josh-is-back-online/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 19:19:07 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.divideandconquer.se/?p=653</guid>
		<description><![CDATA[A little more than a year ago I wrote Recommended reading: “The Book Of JOSH: Scala In The Enterprise”. Since then, the original article was removed from the author&#8217;s blog and I didn&#8217;t know of any copies.
The other day I was browsing already read articles in Google Reader, and found the article in Google Reader!
As [...]]]></description>
			<content:encoded><![CDATA[<p>A little more than a year ago I wrote <a href="http://www.divideandconquer.se/2009/03/25/the-book-of-josh-scala-in-the-enterprise/">Recommended reading: “The Book Of JOSH: Scala In The Enterprise”</a>. Since then, the original article was removed from the author&#8217;s blog and I didn&#8217;t know of any copies.</p>
<p>The other day I was browsing already read articles in Google Reader, and found the article in Google Reader!</p>
<p>As I like the article very much and still would like to recommend it to others, I have decided to host it myself: <a href="/book-of-josh/">The Book Of JOSH</a>. Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.divideandconquer.se/2010/04/22/the-book-of-josh-is-back-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Øresund Agile 2010 has been cancelled</title>
		<link>http://www.divideandconquer.se/2010/04/21/%c3%b8resund-agile-2010-has-been-cancelled/</link>
		<comments>http://www.divideandconquer.se/2010/04/21/%c3%b8resund-agile-2010-has-been-cancelled/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 13:59:08 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Softhouse]]></category>

		<guid isPermaLink="false">http://www.divideandconquer.se/?p=642</guid>
		<description><![CDATA[It seems like too few people registered for Øresund Agile 2010:
As painful as it is, we have deemed it necessary to cancel this years  conference.
]]></description>
			<content:encoded><![CDATA[<p>It seems like too few people registered for <a href="http://www.oresundagile.org/" onclick="pageTracker._trackPageview('/outgoing/www.oresundagile.org/?referer=');">Øresund Agile 2010</a>:</p>
<blockquote><p>As painful as it is, we have deemed it necessary to cancel this years  conference.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.divideandconquer.se/2010/04/21/%c3%b8resund-agile-2010-has-been-cancelled/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Øresund Agile 2010 takes place on May 17-20 in Malmö</title>
		<link>http://www.divideandconquer.se/2010/03/10/%c3%b8resund-agile-2010-takes-place-on-may-17-20-in-malmo/</link>
		<comments>http://www.divideandconquer.se/2010/03/10/%c3%b8resund-agile-2010-takes-place-on-may-17-20-in-malmo/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 09:55:38 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.divideandconquer.se/?p=636</guid>
		<description><![CDATA[Øresund Agile is short for&#8230;
the meeting point for Agile  Software Development in Scandinavia
I expect great talks and workshops. For example, Johanna Rothman will be speaking!
By the way, Lean Magazine #5 is available for download!
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.oresundagile.org/" onclick="pageTracker._trackPageview('/outgoing/www.oresundagile.org/?referer=');">Øresund Agile</a> is short for&#8230;</p>
<blockquote><p>the meeting point for Agile  Software Development in Scandinavia</p></blockquote>
<p>I expect great talks and workshops. For example, Johanna Rothman will be speaking!</p>
<p>By the way, <a href="http://www.2010.oresundagile.org/blog/lean-magazine" onclick="pageTracker._trackPageview('/outgoing/www.2010.oresundagile.org/blog/lean-magazine?referer=');">Lean Magazine #5 is available for download</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.divideandconquer.se/2010/03/10/%c3%b8resund-agile-2010-takes-place-on-may-17-20-in-malmo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Remote control of XBMC, but not too much</title>
		<link>http://www.divideandconquer.se/2010/01/23/remote-control-of-xbmc-but-not-too-much/</link>
		<comments>http://www.divideandconquer.se/2010/01/23/remote-control-of-xbmc-but-not-too-much/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 19:55:29 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[XBMC]]></category>

		<guid isPermaLink="false">http://www.divideandconquer.se/?p=618</guid>
		<description><![CDATA[Yesterday and today I have scripted a small web interface for remote control of XBMC using its HTTP API. (BTW, That API could really use a redesign!)
It&#8217;s actually just a page showing a screen shot and the name of the file that is currently playing, together with some commands to remote control XBMC.
Available commands are [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday and today I have scripted a small web interface for remote control of <a href="http://xbmc.org/" onclick="pageTracker._trackPageview('/outgoing/xbmc.org/?referer=');">XBMC</a> using its <a href="http://xbmc.org/wiki/?title=WebServerHTTP-API" onclick="pageTracker._trackPageview('/outgoing/xbmc.org/wiki/?title=WebServerHTTP-API&amp;referer=');">HTTP API</a>. (BTW, That API could really use a redesign!)</p>
<p>It&#8217;s actually just a page showing a screen shot and the name of the file that is currently playing, together with some commands to remote control XBMC.</p>
<p>Available commands are pause/resume, stop, play another file, and shutdown.</p>
<p>I also implemented support for showing notifications on the XBMC screen, which gave me an idea:</p>
<p>The Google Calendar can e-mail reminders for appointments. If XBMC is running, the reminder could be shown as a notification on the XBMC monitor.</p>
<p>I was just about to start implementing this calendar-reminder-in-XBMC when I reminded myself that there are many other small and big projects that would be more valuable for me. But instead of throwing this idea right down the trashcan I decided to blog about it first. Done!</p>
<p>Now I&#8217;ll spend some valuable time with my son!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.divideandconquer.se/2010/01/23/remote-control-of-xbmc-but-not-too-much/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Today&#8217;s thoughts about programming languages</title>
		<link>http://www.divideandconquer.se/2009/09/16/todays-thoughts-about-programming-languages/</link>
		<comments>http://www.divideandconquer.se/2009/09/16/todays-thoughts-about-programming-languages/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 19:48:31 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JRuby]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Scala]]></category>

		<guid isPermaLink="false">http://www.divideandconquer.se/?p=551</guid>
		<description><![CDATA[Maybe some of you have heard me ranting about this already?

I&#8217;m not productive enough in C++ and I feel too limited by Java
A large chunk of Java frameworks seem to serve no other purpose than to workaround limitations in Java
I believe (and hope!) that Java will cease to be the default language in the non-Microsoft [...]]]></description>
			<content:encoded><![CDATA[<p>Maybe some of you have heard me ranting about this already?</p>
<ul>
<li>I&#8217;m not productive enough in C++ and I feel too limited by Java</li>
<li>A large chunk of Java frameworks seem to serve no other purpose than to workaround limitations in Java</li>
<li>I believe (and hope!) that Java will cease to be the default language in the non-Microsoft world, and that other JVM-based languages such as Scala, Groovy and JRuby will become more important</li>
<li>How can I convince a client to allow  Scala, Groovy or JRuby in a project?</li>
<li>I should really get some C# experience!</li>
<li>It seems like I almost always resolve to PHP when I need to get something done quickly&#8230; which reminds me of an upcoming blog post about a recent fight with <a href="http://php.net/manual/en/class.soapserver.php" onclick="pageTracker._trackPageview('/outgoing/php.net/manual/en/class.soapserver.php?referer=');">SoapServer</a> and <a href="http://php.net/manual/en/book.simplexml.php" onclick="pageTracker._trackPageview('/outgoing/php.net/manual/en/book.simplexml.php?referer=');">SimpleXML</a> to implement WSSE UsernameToken authentication.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.divideandconquer.se/2009/09/16/todays-thoughts-about-programming-languages/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>TaskFreak hacking part 2: date format</title>
		<link>http://www.divideandconquer.se/2009/09/07/taskfreak-hacking-part-2-date-format/</link>
		<comments>http://www.divideandconquer.se/2009/09/07/taskfreak-hacking-part-2-date-format/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 14:17:10 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[taskfreak]]></category>

		<guid isPermaLink="false">http://www.divideandconquer.se/?p=537</guid>
		<description><![CDATA[My TaskFreak hacking goes on. In Sweden we often use ISO 8601 format for dates (year-month-day), but TaskFreak does not offer this out of the box.
Most date formatting comes from the DATE FORMATS section in include/config.php but even after changing these date formats I still don&#8217;t get all dates displayed as I would like.
For example, [...]]]></description>
			<content:encoded><![CDATA[<p>My <a href="http://www.divideandconquer.se/2009/08/27/taskfreak-hacking-changing-first-day-of-week-to-monday/">TaskFreak hacking</a> goes on. In Sweden we often use ISO 8601 format for dates (year-month-day), but TaskFreak does not offer this out of the box.</p>
<p>Most date formatting comes from the DATE FORMATS section in include/config.php but even after changing these date formats I still don&#8217;t get all dates displayed as I would like.</p>
<p>For example, the text box for the date when editing an item is using the TZN_DATE_FRM constant defined in include/classes/tzn_generic.php. There&#8217;s a pretty naïve comment in the source code, saying that there is a &#8220;US format&#8221; for dates and a &#8220;rest of the world&#8221; format. Fortunately (for the US), the rest of the world is not united in opposition.</p>
<p>To get the date format I wanted I changed the constant definition like this:</p>
<pre style="padding-left: 30px;">define("TZN_DATE_FRM","%Y-%m-%d");</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.divideandconquer.se/2009/09/07/taskfreak-hacking-part-2-date-format/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hire me for my mind!</title>
		<link>http://www.divideandconquer.se/2009/08/12/hire-me-for-my-mind/</link>
		<comments>http://www.divideandconquer.se/2009/08/12/hire-me-for-my-mind/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 06:31:54 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[jobs]]></category>
		<category><![CDATA[Ward Cunningham]]></category>

		<guid isPermaLink="false">http://www.divideandconquer.se/?p=518</guid>
		<description><![CDATA[Ward Cunningham tweeted a link to an ad for an Agile Ruby Developer at AboutUs, Inc. Out of curiosity I took a look and it sounds like a fantastic opportunity for someone!
What I liked most about the job ad was the last part:
We’re hiring you for your mind. Please showcase it by answering some of [...]]]></description>
			<content:encoded><![CDATA[<p>Ward Cunningham tweeted a link to an ad for an <a href="http://jobs.37signals.com/jobs/5436" onclick="pageTracker._trackPageview('/outgoing/jobs.37signals.com/jobs/5436?referer=');">Agile Ruby Developer at AboutUs, Inc.</a> Out of curiosity I took a look and it sounds like a fantastic opportunity for someone!</p>
<p>What I liked most about the job ad was the last part:</p>
<blockquote><p>We’re hiring you for your mind. Please showcase it by answering some of the following questions in your cover letter:</p>
<ul>
<li>What is a recent programming insight you discovered and what was intriguing about it?</li>
<li>Why do you want to work with us? (be specific!)</li>
<li>What Open Source communities/projects are you a part of and why do you like them?</li>
<li>Tell us about a time you brought initiative to your team and made a positive change.</li>
<li>What modern programmer do you admire and why?</li>
<li>How do you learn and keep up with the field of computing?</li>
</ul>
</blockquote>
<p>These questions really appeal to me!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.divideandconquer.se/2009/08/12/hire-me-for-my-mind/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Good at programming, bad at communicating</title>
		<link>http://www.divideandconquer.se/2009/06/10/good-at-programming-bad-at-communicating/</link>
		<comments>http://www.divideandconquer.se/2009/06/10/good-at-programming-bad-at-communicating/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 12:02:01 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.divideandconquer.se/?p=461</guid>
		<description><![CDATA[I can&#8217;t remember how I originally found the link (was it in someone&#8217;s tweet?) but I managed to find it again in order to share it here. The message may seem silly in retrospect, but I think it was enlightening. The article is called Sometimes, The Better You Program, The Worse You Communicate. The author [...]]]></description>
			<content:encoded><![CDATA[<p>I can&#8217;t remember how I originally found the link (was it in someone&#8217;s tweet?) but I managed to find it again in order to share it here. The message may seem silly in retrospect, but I think it was enlightening. The article is called <a href="http://secretgeek.net/program_communicate_4reasons.asp" onclick="pageTracker._trackPageview('/outgoing/secretgeek.net/program_communicate_4reasons.asp?referer=');">Sometimes, The Better You Program, The Worse You Communicate</a>. The author writes that:</p>
<blockquote><p>[...] good programming practices are directly opposed to good communication practices.</p>
<p>In bullet form:</p>
<ol>
<li>D.R.Y. Does Not Apply.</li>
<li>Humans don&#8217;t mean what they say.</li>
<li>Compilers don&#8217;t need to see an example.</li>
<li>Programs love definitions; Humans get flummoxed.</li>
</ol>
</blockquote>
<p>From now on I will try to repeat myself more often, act on what people mean and not what they say, give more examples and avoid definitions. Except when programming!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.divideandconquer.se/2009/06/10/good-at-programming-bad-at-communicating/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Permute an array in PHP</title>
		<link>http://www.divideandconquer.se/2009/06/04/permute-an-array-in-php/</link>
		<comments>http://www.divideandconquer.se/2009/06/04/permute-an-array-in-php/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 08:20:53 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[permutate]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.divideandconquer.se/?p=456</guid>
		<description><![CDATA[I wrote this function recently when I could not find it in the PHP function list. Please provide any optimizations you discover!
function permute($array)
{
  $results = array();

  if (count($array) == 1)
  {
    $results[] = $array;
  }
  else
  {
    for ($i = 0; $i &#60; [...]]]></description>
			<content:encoded><![CDATA[<p>I wrote this function recently when I could not find it in the PHP function list. Please provide any optimizations you discover!</p>
<pre>function permute($array)
{
  $results = array();

  if (count($array) == 1)
  {
    $results[] = $array;
  }
  else
  {
    for ($i = 0; $i &lt; count($array); $i++)
    {
      $first = array_shift($array);
      $subresults = permute($array);
      array_push($array, $first);
      foreach ($subresults as $subresult)
      {
        $results[] = array_merge(array($first), $subresult);
      }
    }
  }
  return $results;
}

assert(permute(array()) == array());
assert(permute(array(1)) == array(array(1)));
assert(permute(array(1,2)) == array(array(1,2),array(2,1)) ||
       permute(array(1,2)) == array(array(2,1),array(1,2)));
assert(count(permute(array(1,2,3)) == 6));
assert(count(permute(array(1,2,3,4)) == 24));</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.divideandconquer.se/2009/06/04/permute-an-array-in-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Amount of type checks in Java</title>
		<link>http://www.divideandconquer.se/2009/06/03/amount-of-type-checks-in-java/</link>
		<comments>http://www.divideandconquer.se/2009/06/03/amount-of-type-checks-in-java/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 07:41:38 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.divideandconquer.se/?p=451</guid>
		<description><![CDATA[Martin Fowler writes about DynamicTypeCheck:
Recently some of our developers ran into the accusation that with a   dynamic language like ruby you use so many dynamic type checks that   you end up effectively writing your own type system. So they   thought, since we&#8217;ve written a lot of real ruby code [...]]]></description>
			<content:encoded><![CDATA[<p>Martin Fowler writes about <a href="http://www.martinfowler.com/bliki/DynamicTypeCheck.html" onclick="pageTracker._trackPageview('/outgoing/www.martinfowler.com/bliki/DynamicTypeCheck.html?referer=');">DynamicTypeCheck</a>:</p>
<blockquote><p>Recently some of our developers ran into the accusation that with a   dynamic language like ruby you use so many dynamic type checks that   you end up effectively writing your own type system. So they   thought, since we&#8217;ve written a lot of real ruby code &#8211; how often do   we make dynamic type checks?</p>
<p>&#8230;</p>
<p>We define a dynamic type check   as the use of the methods <code>is_a?</code>, <code>kind_of?</code>,   and <code>instance_of?</code>.</p></blockquote>
<p>This made me think about the use of <code>instanceof</code> in Java. A pretty non-scientific investigation of an Open Source Java application (Vuze) showed:</p>
<p>Lines of code: 740257 (<code>find . -name '*.java' | xargs cat |wc -l</code>)</p>
<p>Number of <code>instanceof</code>: 1926 (<code>find . -name '*.java' | xargs cat| grep -c ' instanceof '</code>)</p>
<p>LOC/Number of <code>instanceof</code>: 384</p>
<p>So, there is actually more instanceof in this Java project than there are dynamic type checks in the anonymous Ruby projects used for the statistics presented by Martin Fowler. I certainly hope it wasn&#8217;t a Java developer that accused dynamic languages to use lots of dynamic type checks!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.divideandconquer.se/2009/06/03/amount-of-type-checks-in-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
