<?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>David North &#187; Code</title>
	<atom:link href="http://www.dnorth.net/category/code/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dnorth.net</link>
	<description>The scribblings of an Oxford-based geek</description>
	<lastBuildDate>Tue, 27 Dec 2011 11:58:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>Over-engineering and how it makes people&#8217;s lives worse</title>
		<link>http://www.dnorth.net/2011/12/27/over-engineering-and-how-it-makes-peoples-lives-worse/</link>
		<comments>http://www.dnorth.net/2011/12/27/over-engineering-and-how-it-makes-peoples-lives-worse/#comments</comments>
		<pubDate>Tue, 27 Dec 2011 11:56:10 +0000</pubDate>
		<dc:creator>David North</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://www.dnorth.net/?p=422</guid>
		<description><![CDATA[There&#8217;s an acid test that we as engineers should always subject our creations to: do they make life better for the end user? &#8220;Better&#8221; is perhaps quite difficult to quantify, but you can always approach the problem from the opposite direction and see if you&#8217;ve made things worse. This is something British Gas&#8217;s man clearly [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">There&#8217;s an acid test that we as engineers should always subject our creations to: do they make life better for the end user? &#8220;Better&#8221; is perhaps quite difficult to quantify, but you can always approach the problem from the opposite direction and see if you&#8217;ve made things worse.</p>
<p style="text-align: justify;">This is something British Gas&#8217;s man clearly failed to do when fixing my grandparents&#8217; central heating recently. I don&#8217;t know the full details of the problem, but I do know that their thermostat was broken, so he installed a new one.</p>
<p style="text-align: justify;">Fair enough, but it turns out that the iron march of progress has changed a thermostat from a knob with some numbers on it to something &#8216;smart&#8217;:</p>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;">&nbsp;</p>
<div class="mceTemp mceIEcenter" style="text-align: justify;">
<dl id="attachment_424" class="wp-caption aligncenter" style="width: 245px;">
<dt class="wp-caption-dt"><a rel="attachment wp-att-424" href="http://www.dnorth.net/2011/12/27/over-engineering-and-how-it-makes-peoples-lives-worse/before-2/"><img class="size-full wp-image-424" src="http://www.dnorth.net/wp-content/uploads/2011/12/before1.jpg" alt="Central heating thermostat, circa 1990" width="235" height="235" /></a></dt>
<dd class="wp-caption-dd">Before</dd>
</dl>
</div>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;">&nbsp;</p>
<div class="mceTemp mceIEcenter" style="text-align: justify;">
<dl id="attachment_425" class="wp-caption aligncenter" style="width: 284px;">
<dt class="wp-caption-dt"><a rel="attachment wp-att-425" href="http://www.dnorth.net/2011/12/27/over-engineering-and-how-it-makes-peoples-lives-worse/index/"><img class="size-full wp-image-425" src="http://www.dnorth.net/wp-content/uploads/2011/12/index.jpeg" alt="Wireless super-blingy modern thermostat, circa 2011" width="274" height="184" /></a></dt>
<dd class="wp-caption-dd">After</dd>
</dl>
</div>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;">And how does the new wireless thermostat make life worse for my nonagenarian grandparents? Let us count the ways:</p>
<ul style="text-align: justify;">
<li>Because it&#8217;s wireless, it has batteries in it which need replacing every so often. This is achieved by opening a flimsy plastic door on the bottom of the unit which is fiddly to access once it&#8217;s wall mounted, then scrabbling on the carpet as the batteries fall to earth. It also means the thermostat will mysteriously stop working once every n months until someone younger sorts it out for them, since there&#8217;s no way they&#8217;ll hear a low-battery beep or spot an indicator on the screen.</li>
<li>Since it&#8217;s superglued to the wall just inches away from the hot water tank it controls, the only advantage of wirelessness is to save the drilling of one hole and the running of a six-inch bit of cabling &#8211; and even these could presumably have been avoided by replacing the original thermostat instead of leaving it screwed to the wall but not doing anything.</li>
<li>Instead of reading the numbers round a knob, you see them on an LCD display which is not backlit and not very big, thus making it perfect for people with poor eyesight to see in a not-very-well-lit hallway.</li>
<li>Pressing the middle of it resets it to a pre-programmed &#8216;preset temperature&#8217; (&#8220;ideal for the poorly sighted&#8221;, the manual claims with no sense of irony) &#8211; an unnecessary recipe for confusion if you knock the middle by mistake</li>
<li>It doesn&#8217;t go &#8216;click&#8217; as it passes the current room temperature like an electromechanical thermostat would, so you have to read the screen instead</li>
<li>By default the display shows the current room temperature, meaning you can&#8217;t tell without adjusting the knob what temperature the thermostat is currently set at</li>
</ul>
<p style="text-align: justify;">Somewhat more subjectively, I think it&#8217;s more likely to malfunction than an electromechanical device with two moving parts, and presumably it has to fight for spectrum with all surrounding cordless phones, WiFi units and garage door openers &#8211; let&#8217;s hope the base station does something sensible in the face of losing contact with the unit.</p>
<p style="text-align: justify;">Well done, lads. Another triumph of engineering.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dnorth.net/2011/12/27/over-engineering-and-how-it-makes-peoples-lives-worse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The joys of shared houses&#8230;</title>
		<link>http://www.dnorth.net/2011/09/09/the-joys-of-shared-houses/</link>
		<comments>http://www.dnorth.net/2011/09/09/the-joys-of-shared-houses/#comments</comments>
		<pubDate>Fri, 09 Sep 2011 23:11:44 +0000</pubDate>
		<dc:creator>David North</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Facebook]]></category>

		<guid isPermaLink="false">http://www.dnorth.net/?p=387</guid>
		<description><![CDATA[Being an organised sort of person (and a sucker who can&#8217;t say no), I tend to do a lot of the admin and paperwork for the house I share with a few friends. One of the things I do is draw up the chores rota. I&#8217;ve typically done it like this*: Week 10/09 17/09 24/09 [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Being an organised sort of person (and a sucker who can&#8217;t say no), I tend to do a lot of the admin and paperwork for the house I share with a few friends. One of the things I do is draw up the chores rota. I&#8217;ve typically done it like this*:</p>
<blockquote>
<pre>Week      10/09 17/09 24/09 ...
Bathroom  Tom   David Harry ...
Kitchen   Dick  Tom   David ...
Bins      Harry Dick  Tom   ...
Hoovering David Harry Dick  ...</pre>
</blockquote>
<p style="text-align: justify;">Careful and studious readers will have no difficulty in spotting the pattern.</p>
<p style="text-align: justify;">Inevitably, though, instead of being grateful for the minutes I slaved over my desk putting this together, t&#8217;housemates complained. Specifically, Tom complained that &#8216;I always do something the week after Dick&#8217;s supposed to have done it, and he makes a mess of everything&#8217;.</p>
<p style="text-align: justify;">Given the choice between speaking to Dick to correct the problem, or writing some code, I wrote <a href="https://svn.dnorth.net/svn/dotfiles/trunk/bin/chores-rota.py">some code</a> which starts with the above layout, then shuffles the columns until the following constraints are satisfied:</p>
<ul>
<li>A given person never does the same thing two weeks running</li>
<li>For any given pair of people (p1, p2), this pair never appears twice in a given row</li>
</ul>
<p style="text-align: justify;">Careful and studious readers (with Maths or CS degrees) will have no difficulty working out the number of weeks of chores rota I&#8217;ve limited myself to doing at a time, becuse the constraints become impossible for a greater number.</p>
<p style="text-align: justify;"><em>* No, my housemates aren&#8217;t really called Tom, Dick and Harry. After five years at an all-boys school, there&#8217;s no way I&#8217;d live in an all-male household.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dnorth.net/2011/09/09/the-joys-of-shared-houses/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java programmers</title>
		<link>http://www.dnorth.net/2011/08/25/java-programmers/</link>
		<comments>http://www.dnorth.net/2011/08/25/java-programmers/#comments</comments>
		<pubDate>Thu, 25 Aug 2011 21:38:43 +0000</pubDate>
		<dc:creator>David North</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://www.dnorth.net/?p=378</guid>
		<description><![CDATA[I don&#8217;t much care for Simon Willison&#8216;s (or in this case, the person he&#8217;s linking to&#8217;s) implication that Java programmers are misguided fools in need of help (as opposed to engineers trying to earn a living by using the best tool for the job on hand, rather than getting all evangelical about their language of [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">I don&#8217;t much care for <a href="http://simonwillison.net">Simon Willison</a>&#8216;s (or in this case, the person he&#8217;s linking to&#8217;s) implication that Java programmers are misguided fools in need of help (as opposed to engineers trying to earn a living by using the best tool for the job on hand, rather than getting all evangelical about their language of choice).</p>
<p style="text-align: justify;">However, the <a href="http://simonwillison.net/2011/Aug/19/peek/">quote</a> he posted recently makes a good point &#8211; using immutability and other functional ideas <em>does</em> make for better-written and less error-prone Java. And many of us have moved in that direction already, mostly without any prompting (although since <a href="http://www.haskell.org">Haskell</a> was the first language they taught me at Oxford, that doubtless influences my world view).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dnorth.net/2011/08/25/java-programmers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bogroll 0.3</title>
		<link>http://www.dnorth.net/2011/03/21/bogroll-0-3/</link>
		<comments>http://www.dnorth.net/2011/03/21/bogroll-0-3/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 22:08:43 +0000</pubDate>
		<dc:creator>David North</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://www.dnorth.net/?p=335</guid>
		<description><![CDATA[I&#8217;ve just minted the 0.3 release of my stateless RSS reader, Bogroll. This version features caching support which actually works, plus deep-linking to categories and browser navigation support courtesy of JQuery BBQ. The code now lives at Bitbucket.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just minted the <a href="http://files.dnorth.net/bogroll/releases/bogroll-0.3.zip">0.3 release</a> of my stateless RSS reader, Bogroll.</p>
<p>This version features caching support which actually works, plus deep-linking to categories and browser navigation support courtesy of <a href="http://benalman.com/code/projects/jquery-bbq/">JQuery BBQ</a>.</p>
<p>The code now lives at <a href="https://bitbucket.org/davidnorth/bogroll">Bitbucket</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dnorth.net/2011/03/21/bogroll-0-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bad code lasts the longest&#8230;</title>
		<link>http://www.dnorth.net/2010/12/18/bad-code-lasts-the-longest/</link>
		<comments>http://www.dnorth.net/2010/12/18/bad-code-lasts-the-longest/#comments</comments>
		<pubDate>Sat, 18 Dec 2010 21:01:37 +0000</pubDate>
		<dc:creator>David North</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Facebook]]></category>

		<guid isPermaLink="false">http://www.dnorth.net/?p=319</guid>
		<description><![CDATA[Browsing through the URC North Western Synod&#8217;s website today, I see they now run it on WordPress. And this is a bit of a relief for me &#8211; the site&#8217;s previous incarnation was a bunch of hand-crafted PHP written by 16-year-old me, and I&#8217;d been having sleepless nights wondering if that code was still in [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Browsing through the URC North Western Synod&#8217;s <a href="http://www.nwsynod.org.uk">website</a> today, I see they now run it on <a href="http://www.wordpress.org/">WordPress</a>. And this is a bit of a relief for me &#8211; the site&#8217;s <a href="http://web.archive.org/web/20040102155140/http://www.nwsynod.org.uk/">previous incarnation</a> was a bunch of hand-crafted <a href="http://www.php.net">PHP</a> written by 16-year-old me, and I&#8217;d been having sleepless nights wondering if that code was still in use, and how much pain it had caused. (Not that WordPress is perfect, but if it&#8217;s good enough for this blog&#8230;)</p>
<p style="text-align: justify;">Not all of my early attempts at computer programming have gone the way of all flesh, though &#8211; the <a href="http://www.python.org">Python</a> script I wrote to parse the dinner menus for <a href="http://www.magdjcr.co.uk">Magdalen JCR</a> (and the subject of <a href="/2007/05/20/parsing-xls-in-python/">my very first blog post</a>) is apparently still in production and telling people when to expect Chicken Kiev as recently as last week. The time it&#8217;s saved various JCR computer reps has presumably now exceeded the two days I spent writing it in the first place. And though I know the code is pretty horrible by my current standards, it does that which got me into computer programming in the first place &#8211; makes real people&#8217;s lives easier.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dnorth.net/2010/12/18/bad-code-lasts-the-longest/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Converting Word documents to PDF with OpenOffice and Python</title>
		<link>http://www.dnorth.net/2010/08/29/converting-word-documents-to-pdf-with-openoffice-and-python/</link>
		<comments>http://www.dnorth.net/2010/08/29/converting-word-documents-to-pdf-with-openoffice-and-python/#comments</comments>
		<pubDate>Sun, 29 Aug 2010 15:23:58 +0000</pubDate>
		<dc:creator>David North</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.dnorth.net/?p=265</guid>
		<description><![CDATA[The problem A word document (plain old .doc, not 2007) should be received by e-mail, fed to a script, turned into a PDF and published on a website. At my disposal My server running Debian &#8216;Lenny&#8217;, which does not have a display of any kind. How hard can it be? Harder than it should have [...]]]></description>
			<content:encoded><![CDATA[<h2>The problem</h2>
<p>A word document (plain old .doc, not 2007) should be received by e-mail, fed to a script, turned into a PDF and published on a website.</p>
<h2>At my disposal</h2>
<p>My server running Debian &#8216;Lenny&#8217;, which does not have a display of any kind.</p>
<h2>How hard can it be?</h2>
<p>Harder than it should have been, as ever. Here are my steps:</p>
<pre># aptitude install python-uno xvfb openoffice.org-java-common openoffice.org-writer unoconv
</pre>
<p>You&#8217;ll note the inclusion of <a href="http://en.wikipedia.org/wiki/Xvfb">Xvfb</a> there, because it turns out that &#8220;headless&#8221; mode in OpenOffice <a href="http://www.oooforum.org/forum/viewtopic.phtml?t=3600">isn&#8217;t really headless at all</a>. Sigh. Also sigh some more at the <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=491456">broken dependencies of the unoconv Debian package</a>.</p>
<p>Now we can write our <a href="https://svn.dnorth.net/svn/dotfiles/trunk/pymodules/doc2pdf.py">script</a> to do the actual conversion. Shame it took twice as long as it should have&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dnorth.net/2010/08/29/converting-word-documents-to-pdf-with-openoffice-and-python/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Fun with CurrentCost</title>
		<link>http://www.dnorth.net/2010/06/22/fun-with-currentcost/</link>
		<comments>http://www.dnorth.net/2010/06/22/fun-with-currentcost/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 22:28:49 +0000</pubDate>
		<dc:creator>David North</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.dnorth.net/?p=249</guid>
		<description><![CDATA[Five years after the cool kids first started jumping on the bandwagon, I&#8217;ve got myself a CurrentCost CC128 (Southern Electric send them to some customers for free, it seems &#8211; e.g. my granddad who didn&#8217;t want it). So, with the addition of an eight quid data cable and the Linux box running in my lounge, [...]]]></description>
			<content:encoded><![CDATA[<p>Five years after the cool kids first started jumping on the bandwagon, I&#8217;ve got myself a <a href="http://currentcost.co.uk/product-cc128.html">CurrentCost CC128</a> (<a href="http://www.southern-electric.co.uk/">Southern Electric</a> send them to some customers for free, it seems &#8211; e.g. my granddad who didn&#8217;t want it).</p>
<p>So, with the addition of an <a href="http://cgi.ebay.co.uk/Current-Cost-data-cable-USB-/180511818933?cmd=ViewItem&amp;pt=LH_DefaultDomain_3&amp;hash=item2a0757c4b5">eight quid data cable</a> and the Linux box running in my lounge, may I present <a href="http://electricity.dnorth.net">my electricity usage graphs</a>. Bear in mind that these are (at the time of writing) for a five-bedroom house in central Oxford.</p>
<p>The parser for the XML output of the device I&#8217;m using is <a href="http://code.google.com/p/currentcost/">this one</a> &#8211; just swap &#8220;COM20&#8243; for &#8220;/dev/ttyUSB0&#8243; in their testrun script and fix it to ignore empty lines read from the serial port, and you&#8217;re in business. I then hackdapted this <a href="http://www.jibble.org/currentcost/">RRDTool tutorial</a> to plot the graphs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dnorth.net/2010/06/22/fun-with-currentcost/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Are IDEs a problem?</title>
		<link>http://www.dnorth.net/2010/05/02/are-ides-a-problem/</link>
		<comments>http://www.dnorth.net/2010/05/02/are-ides-a-problem/#comments</comments>
		<pubDate>Sun, 02 May 2010 13:11:05 +0000</pubDate>
		<dc:creator>David North</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Facebook]]></category>

		<guid isPermaLink="false">http://www.dnorth.net/?p=234</guid>
		<description><![CDATA[I&#8217;ve just read an interesting piece over at The Register on the bloated awkwardness of Visual Studio 2010, and another on the question of whether we need IDEs at all. The latter is a difficult question for me &#8211; on the one hand, there&#8217;s a school of thought I have some sympathy with, which says [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">I&#8217;ve just read an interesting <a href="http://www.theregister.co.uk/2010/04/26/blowing_bubbtles/">piece</a> over at <a href="http://www.theregister.co.uk">The Register</a> on the bloated awkwardness of Visual Studio 2010, and <a href="http://www.theregister.co.uk/2010/02/28/ides_versus_the_people/">another</a> on the question of whether we need IDEs at all.</p>
<p style="text-align: justify;">The latter is a difficult question for me &#8211; on the one hand, there&#8217;s a school of thought I have some sympathy with, which says that IDEs are a crutch of the feeble-minded, and allow bad programmers to kid themselves that they&#8217;re good, because they can generate lots of code automatically and hit ctrl-space if they run out of ideas.</p>
<p style="text-align: justify;">However.</p>
<p style="text-align: justify;">When I started programming, six years ago (!), the first three languages I used were Turbo Pascal for Windows, PHP and Visual Basic 6. TPW was a good basic language for teaching A-Level Computing, but the built-in editor was scarcely better than Notepad. I can&#8217;t remember if it had a compile-and-run button, but I seem to recall not. PHP was slightly better &#8211; once I&#8217;d worked out how to get Apache onto my Windows machine and sacrificed a chicken to get PHP talking to it &#8211; but again, no IDE out of the box, and even the relatively advanced capabilities built into the copy of DreamWeaver  (was I the only student in the country honest enough to cough up over £100 for it?) didn&#8217;t feel up to much.</p>
<p style="text-align: justify;">VB6, though, felt magic. In retrospect, it was a horrid language, but not only could I drop controls onto a form and double-click to generate the outline of the method they&#8217;d activate, I could actually <em>pause and resume the code while it was running</em>! I could see the values of variables at a point in execution, and even go backwards and forwards. The completion facilities of the IDE were basic, but they were there, and they made things much faster. Writing code to automate Microsoft Office was a particular sweet spot &#8211; run the macro recorder to generate code containing roughly the API calls you were after, then drop some VB6 control flow round them, and off we go.</p>
<p style="text-align: justify;">Later, reading <a href="http://www.comlab.ox.ac.uk">Computer Science at Oxford</a>, the practicals we did rarely stipulated an IDE, but we nearly always ended up using <a href="http://projects.gnome.org/gedit/">gedit</a> + the relevant command-line compiler. Certainly, the existence of <a href="http://leksah.org/">IDEs for Haskell</a> was never alluded to &#8211; either the ultimate example of clever people thinking IDEs are the preserve of the feeble-minded, or the assumption that we&#8217;d be clever enough to go and look for one ourselves, depending on how silly I want to consider myself in retrospect.</p>
<p style="text-align: justify;">I&#8217;m happy to say that Java hardly featured at all in our courses (I&#8217;m <a href="http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html">with Joel</a> on that one), but when it did, we were told to use <a href="http://www.bluej.org/">BlueJ</a>, because, <a href="http://spivey.oriel.ox.ac.uk">Mike Spivey</a> explained, &#8220;it has only two buttons, and Eclipse has hundreds of others you don&#8217;t need&#8221;.</p>
<p style="text-align: justify;">Given the short length of the practicals involved, I only paused to think &#8220;pish, how many buttons can it have?&#8221;, but I didn&#8217;t feel the need to find out for myself until I started writing Java for a living. He was right, there are hundreds of them. Despite which, I use Eclipse every day at work, and would never dream of trying to write code without it. It is, irrefutably, a big, bloated beast, but when you&#8217;re working on serious real-world Java, with version control, coding standards, complicated dependencies, hundreds of packages making up one program, and spend far more time reading and debugging code than writing it, you really do need the beast on your side (or so I believe).</p>
<p style="text-align: justify;">So that&#8217;s it, then &#8211; I&#8217;ve converted to the world of IDEs? Well, not quite. The other language I use on a day-to-day basis &#8211; though mostly for pleasure rather than business &#8211; is <a href="http://www.python.org">Python</a>. And I don&#8217;t usually use an IDE, simply bashing out code in Notepad++ on Windows, or KDevelop on Linux. OK, so KDevelop is sort-of an IDE, but it&#8217;s very lightweight.</p>
<p style="text-align: justify;">Of course, Python being interpreted rather than compiled makes it easier to just fire up your Python program from the command line after editing it. And that, really, gives us a clue as to the only sane conclusion of the IDE debate: it&#8217;s the same as the programming language debate. There are tools (languages and IDEs) and there are jobs. Good programmers pick the best tool for the job, and for a compiled language as verbose as Java, an IDE arguably makes things faster. For Python, on the other hand, it&#8217;s not essential (IMO), but it depends on the tastes of the individual.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">http://www.theregister.co.uk/2010/04/26/blowing_bubbtles/</div>
]]></content:encoded>
			<wfw:commentRss>http://www.dnorth.net/2010/05/02/are-ides-a-problem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SysAdmin stuff</title>
		<link>http://www.dnorth.net/2010/04/25/sysadmin-stuff/</link>
		<comments>http://www.dnorth.net/2010/04/25/sysadmin-stuff/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 17:29:40 +0000</pubDate>
		<dc:creator>David North</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[SysAdmin]]></category>

		<guid isPermaLink="false">http://www.dnorth.net/?p=231</guid>
		<description><![CDATA[It&#8217;s amazing how many fewer afternoons I seem to spend hacking around on my servers these days. Perhaps I got a life; I certainly got a full-time job. I have however sorted a few long-standing bits and pieces out today&#8230; dnorth.net is now available over IPv6 As are its various satelite sites and www.saintcolumbas.org. Sorry, [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s amazing how many fewer afternoons I seem to spend hacking around on my servers these days. Perhaps I got a life; I certainly got a full-time job. I have however sorted a few long-standing bits and pieces out today&#8230;</p>
<h2>dnorth.net is now available over IPv6</h2>
<p>As are its various satelite sites and <a href="http://www.saintcolumbas.org.ipv4.sixxs.org/">www.saintcolumbas.org</a>. Sorry, no, there is no bouncing logo to reward those of you viewing them via such.</p>
<h2>A backup system that doesn&#8217;t Totally Suck<strong>™</strong></h2>
<p>I&#8217;ve finally retired my creaking &#8220;run a shell script to rsync them onto my laptop when I remember (i.e. every six months)&#8221; manaul backup system in favour of an encrypted LVM partition on my home server, and <a href="http://rdiff-backup.nongnu.org/">rdiff-backup</a> to make nice incremental backups of everything on a nightly basis. The instructions on how to do it are all <a href="http://www.google.com/search?q=encrypted+lvm">out</a> <a href="http://www.google.com/search?q=rdiff-backup+tutorial">there</a> on the interweb, and it&#8217;s not too difficult, fortunately. I&#8217;m a bit disappointed that <a href="https://labs.riseup.net/code/projects/show/backupninja/">backupninja</a> doesn&#8217;t support remote rdiff-backup, but I guess I should submit a patch if it bothers me that much&#8230;meanwhile, my <a href="https://svn.dnorth.net/svn/dotfiles/trunk/bin/nightly-backup.py">wrapper script</a> seems to work just fine.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dnorth.net/2010/04/25/sysadmin-stuff/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>mod_wsgi delivers on the promise</title>
		<link>http://www.dnorth.net/2010/03/08/mod_wsgi-delivers-on-the-promise/</link>
		<comments>http://www.dnorth.net/2010/03/08/mod_wsgi-delivers-on-the-promise/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 22:30:22 +0000</pubDate>
		<dc:creator>David North</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[SysAdmin]]></category>

		<guid isPermaLink="false">http://www.dnorth.net/?p=228</guid>
		<description><![CDATA[It&#8217;s been over a year since I deployed Django in production, and I wasn&#8217;t looking forward to it. Last time, I had a lot of trouble with mod_python, sessions and decimal objects refuising to pickle. Thankfully, all this really seems to have grown up in the last year &#8211; mod_wsgi is now the recommended way [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">It&#8217;s been over a year since I deployed <a href="http://www.djangoproject.com">Django</a> in production, and I wasn&#8217;t looking forward to it. Last time, I had a lot of trouble with mod_python, sessions and decimal objects refuising to pickle.</p>
<p style="text-align: justify;">Thankfully, all this really seems to have grown up in the last year &#8211; <a href="http://code.google.com/p/modwsgi/">mod_wsgi</a> is now the <a href="http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/">recommended way</a> of deploying Django in production, and following the <a href="http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango">mod_wsgi django instructions</a>, I was in business in 20 minutes. No fuss, no mess, no drama, and best of all, using daemon mode, no noticeable performance hit when serving static files and PHP off the same Apache installation. The ability to run the django project as its own unprivileged user when using daemon mode is also real handy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dnorth.net/2010/03/08/mod_wsgi-delivers-on-the-promise/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

