<?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>Andrew Ferrier &#187; technical</title>
	<atom:link href="http://www.andrewferrier.com/blog/tag/technical/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.andrewferrier.com/blog</link>
	<description>Economics; Travel; Film; and Technology.</description>
	<lastBuildDate>Fri, 30 Jul 2010 14:00:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>HTC Desire &#8211; Bad Points</title>
		<link>http://www.andrewferrier.com/blog/2010/07/08/htc-desire-bad-points/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=htc-desire-bad-points</link>
		<comments>http://www.andrewferrier.com/blog/2010/07/08/htc-desire-bad-points/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 11:26:10 +0000</pubDate>
		<dc:creator>andrewferrier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[desire]]></category>
		<category><![CDATA[htc]]></category>
		<category><![CDATA[irritations]]></category>
		<category><![CDATA[phone]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.andrewferrier.com/blog/?p=648</guid>
		<description><![CDATA[Recently I acquired an HTC Desire, when seems to be the de-facto Android phone of the moment. Generally, I love this phone &#8211; I wrote part of this blog post on it, and the quality of the hardware is frankly astonishing. Irritatingly, one can&#8217;t help but feel a little smug comparing it to the iPhone. [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I acquired an <a href="http://www.htc.com/www/product/desire/overview.html">HTC Desire</a>, when seems to be the de-facto <a href="http://www.android.com/">Android</a> phone of the moment<em></em>. Generally, I love this phone &#8211; I wrote part of this blog post on it, and the quality of the hardware is frankly astonishing. Irritatingly, one can&#8217;t help but feel a little smug comparing it to the <a href="http://www.apple.com/iphone/">iPhone</a>. However, I don&#8217;t want to become yet another mindless gushing fan. So instead of raving about it, I thought I&#8217;d provide some provide some constructive criticism on the aspects of the phone I don&#8217;t like so much:</p>
<ul>
<li>The battery and power management needs some work. Like all smartphones, the Desire has plenty of battery-sucking components, such as GPS and WiFi. I spend more time than I should really have to turning these off and on manually to conserve power. For example, Google Maps should be able to turn the GPS on by itself, rather than rely on me to do it. Most software based solutions, such as <a href="http://www.twofortyfouram.com/">Locale</a>, <a href="http://www.latedroid.com/2010/01/juicedefender.html">JuiceDefender</a>, and so on, simply don&#8217;t work reliably enough (for example, mobile data connections frequently won&#8217;t turn off or on): it&#8217;s obvious that Android isn&#8217;t exposing enough APIs and these applications therefore have to rely on hacks. Better built-in power management would be welcome.</li>
<li>The volume switch is really annoying. In theory, it&#8217;s nice to have a hardware control. But I find myself hitting it accidentally when holding the phone, and reducing the ring volume down to vibrate. Sometimes I don&#8217;t even notice. I&#8217;d prefer to see a soft volume control, less easy to hit accidentally.</li>
<li>The openness of the platform is in question. I can install whatever applications I want. However, I still have firmware on the phone that&#8217;s been mangled by both <a href="http://www.htc.com/">HTC</a> and (in my case) <a href="http://www.orange.co.uk/">Orange</a>. The HTC modifications are fairly nice, but the pre-installed Orange applications are just irritating, and cannot be removed easily. Orange has a bad habit of mangling phones they ship; presumably they think they need to do this to &#8216;differentiate&#8217; themselves.  Worse still, it turns out one can&#8217;t simply &#8216;reinstall&#8217; the firmware: the closest process is to <a href="http://www.knowyourcell.com/htc/htc-desire/desire-guides/474135/how_to_root_the_htc_desire.html">root the phone</a> &#8211; an awkward and unsupported process I&#8217;ve yet to be brave enough to attempt.</li>
<li>Many of the pre-installed widgets are far too large (witness the SMS widget, which consumes an entire screen), with a lot of unnecessary chrome.</li>
<li>The Music app is a bit flaky and crashes once or twice a day.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewferrier.com/blog/2010/07/08/htc-desire-bad-points/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Logitech Presenter R800 with USB HID in Windows XP SP3</title>
		<link>http://www.andrewferrier.com/blog/2010/04/26/logitech-presenter-r800-with-usb-hid-in-windows-xp-sp3/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=logitech-presenter-r800-with-usb-hid-in-windows-xp-sp3</link>
		<comments>http://www.andrewferrier.com/blog/2010/04/26/logitech-presenter-r800-with-usb-hid-in-windows-xp-sp3/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 13:55:21 +0000</pubDate>
		<dc:creator>andrewferrier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[hid]]></category>
		<category><![CDATA[logitech]]></category>
		<category><![CDATA[presenter]]></category>
		<category><![CDATA[presenting]]></category>
		<category><![CDATA[r800]]></category>
		<category><![CDATA[sp3]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[troubleshooting]]></category>
		<category><![CDATA[usb]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[windowsxp]]></category>

		<guid isPermaLink="false">http://www.andrewferrier.com/blog/?p=626</guid>
		<description><![CDATA[I recently acquired a Logitech Presenter R800. It&#8217;s a beautiful device &#8211; not particularly cheap, but very slick and easy-to-use. Unfortunately, Windows XP (Service Pack 3) on my system refused to recognise it &#8211; the device was listed as USB Receiver in Windows Device Manager, but Windows kept claiming it couldn&#8217;t find the driver. It [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-629" style="margin-left: 10px; margin-right: 10px;" title="R800" src="http://www.andrewferrier.com/blog/wp-content/uploads/2010/04/R800.jpg" alt="" width="109" height="240" />I recently acquired a <a href="http://www.logitech.com/en-us/mice_pointers/presentation_remote/devices/5873">Logitech Presenter R800</a>. It&#8217;s a beautiful device &#8211; not particularly cheap, but very slick and easy-to-use. Unfortunately, Windows XP (Service Pack 3) on my system refused to recognise it &#8211; the device was listed as <strong>USB Receiver</strong> in Windows Device Manager, but Windows kept claiming it couldn&#8217;t find the driver. It is presented to the system as a standard USB HID device, so there is no Logitech-specific driver: it uses the standard Windows HID Driver. It worked perfectly out of the box on Ubuntu 9.10.</p>
<p>After 3-4 hours of research, I found the answer. Running a differencing tool between the <strong>C:\Windows\Inf</strong> folder on a colleague&#8217;s PC and mine showed that mine was missing the <strong>usb.inf</strong> and <strong>usb.PNF</strong> files from that folder. It wasn&#8217;t clear why they were missing, but having copied them over from his machine, the driver installation then worked perfectly. So that&#8217;s worth trying if you encounter a similar problem with this product (or indeed any USB HID device).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewferrier.com/blog/2010/04/26/logitech-presenter-r800-with-usb-hid-in-windows-xp-sp3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Connecting Google Reader and podget</title>
		<link>http://www.andrewferrier.com/blog/2008/11/23/connecting-google-reader-and-podget/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=connecting-google-reader-and-podget</link>
		<comments>http://www.andrewferrier.com/blog/2008/11/23/connecting-google-reader-and-podget/#comments</comments>
		<pubDate>Sun, 23 Nov 2008 21:08:09 +0000</pubDate>
		<dc:creator>andrewferrier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google-reader]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[podget]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.andrewferrier.com/blog/?p=542</guid>
		<description><![CDATA[For some time, I&#8217;ve had a Perl script that runs regularly, backing up my Google Reader subscriptions using the standard OPML format: #!/usr/bin/perl # # Usage: # backup-google-reader-opml file-to-write-to.opml google.user.name@domain google-password &#160; use strict; use warnings; &#160; use WWW::Mechanize; &#160; my $mech = WWW::Mechanize-&#62;new&#40;&#41;; &#160; $mech-&#62;get&#40;&#34;http://reader.google.com&#34;&#41; or die &#34;Cannot reach Google Reader Homepage&#34;; &#160; $mech-&#62;submit_form&#40; [...]]]></description>
			<content:encoded><![CDATA[<p>For some time, I&#8217;ve had a Perl script that runs regularly, backing up my Google Reader subscriptions using the standard OPML format:</p>

<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/usr/bin/perl</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Usage:</span>
<span style="color: #666666; font-style: italic;">#  backup-google-reader-opml file-to-write-to.opml google.user.name@domain google-password</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> strict<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> warnings<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> WWW<span style="color: #339933;">::</span><span style="color: #006600;">Mechanize</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$mech</span> <span style="color: #339933;">=</span> WWW<span style="color: #339933;">::</span><span style="color: #006600;">Mechanize</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">new</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #0000ff;">$mech</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">get</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;http://reader.google.com&quot;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;Cannot reach Google Reader Homepage&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #0000ff;">$mech</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">submit_form</span><span style="color: #009900;">&#40;</span>
    form_number <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span>
    fields <span style="color: #339933;">=&gt;</span>
    <span style="color: #009900;">&#123;</span>
        Email <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$ARGV</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
        Passwd <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$ARGV</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#41;</span>
    <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;Cannot submit form&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #0000ff;">$mech</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">get</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;http://www.google.com/reader/subscriptions/export&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$mech</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">save_content</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$ARGV</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>However, I recently wrote another script (this time Python) that then takes this OPML, parses out all the URLs that are tagged with &#8216;podcast&#8217;, and outputs a serverlist file for <a href="http://podget.sourceforge.net/">podget</a> (an automated console-based podcast downloader). This enables me to subscribe to a podcast in Google Reader, and have the podcast automatically added to the download list. The script looks like this:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/python</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># Pass in the OPML file as the first command-line parameter. Will output the</span>
<span style="color: #808080; font-style: italic;"># podget serverlist on stdout.</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">re</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">xml</span>.<span style="color: black;">dom</span>.<span style="color: black;">minidom</span>
&nbsp;
doc = <span style="color: #dc143c;">xml</span>.<span style="color: black;">dom</span>.<span style="color: black;">minidom</span>.<span style="color: black;">parse</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
&nbsp;
body = doc.<span style="color: black;">getElementsByTagName</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;body&quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>
&nbsp;
p = <span style="color: #dc143c;">re</span>.<span style="color: #008000;">compile</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'^<span style="color: #000099; font-weight: bold;">\W</span>+'</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">for</span> outline <span style="color: #ff7700;font-weight:bold;">in</span> doc.<span style="color: black;">getElementsByTagName</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;outline&quot;</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">if</span> outline.<span style="color: black;">getAttribute</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;text&quot;</span><span style="color: black;">&#41;</span> == <span style="color: #483d8b;">&quot;podcast&quot;</span>:
        <span style="color: #ff7700;font-weight:bold;">for</span> subOutlines <span style="color: #ff7700;font-weight:bold;">in</span> outline.<span style="color: black;">getElementsByTagName</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;outline&quot;</span><span style="color: black;">&#41;</span>:
            title = subOutlines.<span style="color: black;">getAttribute</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;title&quot;</span><span style="color: black;">&#41;</span>
            title = p.<span style="color: black;">sub</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;&quot;</span>, title<span style="color: black;">&#41;</span>
            <span style="color: #ff7700;font-weight:bold;">print</span> subOutlines.<span style="color: black;">getAttribute</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;xmlUrl&quot;</span><span style="color: black;">&#41;</span> + <span style="color: #483d8b;">&quot; NoCategory &quot;</span> + title</pre></div></div>

<p>Feel free to use and adapt to your needs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewferrier.com/blog/2008/11/23/connecting-google-reader-and-podget/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Reinstalling The Thinkpad</title>
		<link>http://www.andrewferrier.com/blog/2008/10/10/reinstalling-the-thinkpad/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=reinstalling-the-thinkpad</link>
		<comments>http://www.andrewferrier.com/blog/2008/10/10/reinstalling-the-thinkpad/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 12:02:45 +0000</pubDate>
		<dc:creator>andrewferrier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bios]]></category>
		<category><![CDATA[computing]]></category>
		<category><![CDATA[lenovo]]></category>
		<category><![CDATA[reinstall]]></category>
		<category><![CDATA[sata]]></category>
		<category><![CDATA[t61]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[thinkpad]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.andrewferrier.com/blog/?p=520</guid>
		<description><![CDATA[My work Thinkpad (a T61) was becoming a little crufty, so I decided to reinstall it from scratch. Here are a few lessons I learnt along the way: Making a hot copy of your entire drive onto a USB hard disk with VMWare Converter beforehand is a great idea. This basically means you have your [...]]]></description>
			<content:encoded><![CDATA[<p>My work Thinkpad (a T61) was becoming a little crufty, so I decided to reinstall it from scratch. Here are a few lessons I learnt along the way:</p>
<ul>
<li>Making a hot copy of your entire drive onto a USB hard disk with <a href="http://www.vmware.com/products/converter/">VMWare Converter</a> beforehand is a great idea. This basically means you have your entire previous installation still bootable, so you can rescue any data or settings you forgot about, after you&#8217;ve done the reformat and reinstall. VMWare Converter is free.</li>
<li>Windows XP won&#8217;t install if the <a href="http://en.wikipedia.org/wiki/BIOS">BIOS</a> has the <a href="http://en.wikipedia.org/wiki/Sata">SATA</a> controller set to AHCI mode &#8211; it won&#8217;t find the HD to install to. Read <a href="ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/7tim04ww.txt">the install instructions for the SATA driver</a> before installing Windows. Doing this without a floppy drive involves installing Service Pack 2 first (see below).</li>
<li>Windows, surprisingly, does not contain a driver that can work with the Ethernet controller. Have a copy of it ready on a USB stick.</li>
<li>The redistributable version of Service Pack 3 isn&#8217;t standalone, despite claims to the contrary; it pre-reqs. at least Service Pack 1. Windows Update won&#8217;t take you the whole way there, so it&#8217;s easiest to get the <a href="http://www.microsoft.com/downloads/details.aspx?familyid=049C9DBE-3B8E-4F30-8245-9E368D3CDB5A&amp;displaylang=en">SP2</a> and <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=5B33B5A8-5E76-401F-BE08-1E1555D4F3D4&amp;displaylang=en">SP3</a> standalones.</li>
<li>The USB ports will not operate at high speed until you install the <a href="http://www-307.ibm.com/pc/support/site.wss/MIGR-67818.html">Intel Chipset Device Software</a>.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewferrier.com/blog/2008/10/10/reinstalling-the-thinkpad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Delicious &#8211; For Mobile Once Again</title>
		<link>http://www.andrewferrier.com/blog/2008/08/07/new-delicious-for-mobile-once-again/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=new-delicious-for-mobile-once-again</link>
		<comments>http://www.andrewferrier.com/blog/2008/08/07/new-delicious-for-mobile-once-again/#comments</comments>
		<pubDate>Thu, 07 Aug 2008 11:03:50 +0000</pubDate>
		<dc:creator>andrewferrier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bookmarks]]></category>
		<category><![CDATA[delicious]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://www.andrewferrier.com/blog/?p=458</guid>
		<description><![CDATA[Used to be, I employed a cunning trick I found on the web to create a quick &#8216;n&#8217; dirty homepage for my browser on my mobile &#8211; all the delicious bookmarks I&#8217;d tagged with mtag. Then delicious went and released a new version and this trick broke. After a bit of fiddling, I&#8217;ve found a [...]]]></description>
			<content:encoded><![CDATA[<p>Used to be, I employed <a href="http://www.webpronews.com/blogtalk/2006/04/22/delicious-mobile">a cunning trick I found on the web</a> to create a quick &#8216;n&#8217; dirty homepage for my browser on <a href="http://europe.nokia.com/e65">my mobile</a> &#8211; all the <a href="http://delicious.com/">delicious</a> bookmarks I&#8217;d tagged with <a href="http://delicious.com/andrewferrier/mtag">mtag</a>.</p>
<p>Then delicious went and <a href="http://blog.delicious.com/blog/2008/07/oh-happy-day.html">released a new version</a> and this trick broke.</p>
<p>After a bit of fiddling, I&#8217;ve found a reasonable alternative. <a href="http://feed.informer.com/">feed.informer</a> will take any RSS feed and turn it into fairly plain HTML. So take your RSS feed, which might look something like this:</p>
<p><a href="http://feeds.delicious.com/v2/rss/andrewferrier/mtag?count=100">http://feeds.delicious.com/v2/rss/andrewferrier/mtag?count=100</a></p>
<p>(the <em>count </em>increases the maximum number of items in the feed to 100)</p>
<p>Now plug it into feed.informer, and edit the options to make the result look how you want (hint: I modify the template, and set the Per-Item Template to <strong>&lt;a href=&#8221;%URL%&#8221;&gt;%TITLE%&lt;/a&gt;&lt;br /&gt;</strong>, leaving the rest of the template blank &#8211; this prints one bookmark per line). You&#8217;ll also need to sign up and create a feed.informer account whilst you&#8217;re doing this (assuming you don&#8217;t already have one).</p>
<p>Once done, just view the &#8216;HTML&#8217; version of the digest you created, and set that as your mobile homepage. Bingo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewferrier.com/blog/2008/08/07/new-delicious-for-mobile-once-again/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>LaTeX Tips</title>
		<link>http://www.andrewferrier.com/blog/2008/03/24/latex-tips/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=latex-tips</link>
		<comments>http://www.andrewferrier.com/blog/2008/03/24/latex-tips/#comments</comments>
		<pubDate>Mon, 24 Mar 2008 09:50:09 +0000</pubDate>
		<dc:creator>andrewferrier</dc:creator>
				<category><![CDATA[design&usability]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.andrewferrier.com/blog/2008/03/24/latex-tips/</guid>
		<description><![CDATA[A general grab-bag of tips for using LaTeX, from the days when I still used it a lot: To add nice headers and footers to each page use the fancyhdr package. Use glosstex for most acronym and glossary needs. Use the hyphenat package if you need monospace text (such as that set by the \texttt [...]]]></description>
			<content:encoded><![CDATA[<p>A general grab-bag of tips for using <a href="http://www.latex-project.org/">LaTeX</a>, from the days when I still used it a lot:</p>
<ul>
<li> To add nice headers and footers to each page use the <tt>fancyhdr</tt> package.</li>
<li> Use <a href="http://www.ctan.org/tex-archive/help/Catalogue/entries/glosstex.html" class="ext">glosstex</a><span class="exttail"></span> for most acronym and glossary needs.</li>
<li> Use the <a href="http://www.ctan.org/tex-archive/help/Catalogue/entries/hyphenat.html" class="ext">hyphenat</a><span class="exttail"></span> package if you need monospace text (such as that set by the <tt>\texttt</tt> command) to wrap correctly, with hyphenation marks.</li>
<li> The <a href="http://www.ctan.org/tex-archive/help/Catalogue/entries/varioref.html" class="ext">varioref</a><span class="exttail"></span> package provides easy-to-use cross referencing with automatic phrases such as &#8216;on the following page&#8230;&#8217; etc.</li>
<li> To include EPS easily in both latex and pdflatex documents, use the following magic incantation in the document preamble:</li>

<div class="wp_syntax"><div class="code"><pre class="latex" style="font-family:monospace;"><span style="color: #800000; font-weight: normal;">\newif</span><span style="color: #800000; font-weight: normal;">\ifpdf</span>
<span style="color: #800000; font-weight: normal;">\ifx</span><span style="color: #800000; font-weight: normal;">\pdfoutput</span><span style="color: #800000; font-weight: normal;">\undefined</span>
    <span style="color: #800000; font-weight: normal;">\pdffalse</span>
<span style="color: #800000; font-weight: normal;">\else</span>
    <span style="color: #800000; font-weight: normal;">\pdfoutput</span>=1
    <span style="color: #800000; font-weight: normal;">\pdftrue</span>
<span style="color: #800000; font-weight: normal;">\fi</span>
&nbsp;
<span style="color: #800000; font-weight: normal;">\ifpdf</span>
   <span style="color: #800000; font-weight: normal;">\usepackage</span><span style="color: #E02020; ">{</span><span style="color: #2020C0; font-weight: normal;">hyperref</span><span style="color: #E02020; ">}</span>
   <span style="color: #800000; font-weight: normal;">\usepackage</span><span style="color: #E02020; ">[</span><span style="color: #C08020; font-weight: normal;">pdftex</span><span style="color: #E02020; ">]{</span><span style="color: #2020C0; font-weight: normal;">graphicx</span><span style="color: #E02020; ">}</span>
   <span style="color: #800000; font-weight: normal;">\DeclareGraphicsExtensions</span><span style="color: #E02020; ">{</span><span style="color: #2020C0; font-weight: normal;">.pdf,.png,.jpg</span><span style="color: #E02020; ">}</span>
<span style="color: #800000; font-weight: normal;">\else</span>
   <span style="color: #800000; font-weight: normal;">\usepackage</span><span style="color: #E02020; ">{</span><span style="color: #2020C0; font-weight: normal;">graphicx</span><span style="color: #E02020; ">}</span>
   <span style="color: #800000; font-weight: normal;">\DeclareGraphicsExtensions</span><span style="color: #E02020; ">{</span><span style="color: #2020C0; font-weight: normal;">.eps</span><span style="color: #E02020; ">}</span>
<span style="color: #800000; font-weight: normal;">\fi</span></pre></div></div>

</ul>
<p>Then refer to graphics files, when including them, without an extension. Use <tt>epstopdf</tt> to convert all EPS files to PDF for inclusion in the pdflatex version of the document.</p>
<ul>
<li> Use the <tt>custom-bib</tt> package to easily create custom BiBTeX style files.</li>
<li> The following command produces a new environment which gives a nice way of having an introductory paragraph for each new chapter:</li>

<div class="wp_syntax"><div class="code"><pre class="latex" style="font-family:monospace;"><span style="color: #800000; font-weight: normal;">\newenvironment</span><span style="color: #E02020; ">{</span><span style="color: #2020C0; font-weight: normal;">intro</span><span style="color: #E02020; ">}{</span><span style="color: #2020C0; font-weight: normal;"><span style="color: #800000; font-weight: normal;">\sffamily</span></span><span style="color: #E02020; ">}</span>
<span style="color: #E02020; ">{</span><span style="color: #2020C0; font-weight: normal;"><span style="color: #800000; font-weight: normal;">\vspace*</span><span style="color: #E02020; ">{</span>2ex minus 1.5ex</span><span style="color: #E02020; ">}}</span></pre></div></div>

</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewferrier.com/blog/2008/03/24/latex-tips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Picasa and RAW Bug</title>
		<link>http://www.andrewferrier.com/blog/2008/03/02/picasa-and-raw-bug/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=picasa-and-raw-bug</link>
		<comments>http://www.andrewferrier.com/blog/2008/03/02/picasa-and-raw-bug/#comments</comments>
		<pubDate>Sun, 02 Mar 2008 09:48:37 +0000</pubDate>
		<dc:creator>andrewferrier</dc:creator>
				<category><![CDATA[photography]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.andrewferrier.com/blog/2008/03/02/picasa-and-raw-bug/</guid>
		<description><![CDATA[Note to self and others: never use Picasa to download photos direct from the camera when using RAW+JPEG. It has a nasty habit of downloading the JPEGs, then deleting the RAWs. Ouch. Always use a card reader on the Compact Flash card instead.]]></description>
			<content:encoded><![CDATA[<p>Note to self and others: never use <a href="http://picasa.google.com/">Picasa</a> to download photos direct from the camera when using RAW+JPEG. It has a nasty habit of downloading the JPEGs, then deleting the RAWs. Ouch. Always use a card reader on the Compact Flash card instead.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewferrier.com/blog/2008/03/02/picasa-and-raw-bug/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>More Flexible Firefly Smart Playlists with Perl, sqlite3 and m3u</title>
		<link>http://www.andrewferrier.com/blog/2008/01/05/more-flexible-firefly-smart-playlists-with-perl-sqlite3-and-m3u/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=more-flexible-firefly-smart-playlists-with-perl-sqlite3-and-m3u</link>
		<comments>http://www.andrewferrier.com/blog/2008/01/05/more-flexible-firefly-smart-playlists-with-perl-sqlite3-and-m3u/#comments</comments>
		<pubDate>Sat, 05 Jan 2008 15:30:35 +0000</pubDate>
		<dc:creator>andrewferrier</dc:creator>
				<category><![CDATA[softwareengineering]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.andrewferrier.com/blog/2008/01/05/more-flexible-firefly-smart-playlists-with-perl-sqlite3-and-m3u/</guid>
		<description><![CDATA[I use Firefly (previously called mt-daapd) as a media server for my Roku Soundbridge. It has a feature called &#8216;Smart Playlists&#8217; that dynamically create playlists based on certain criteria, but they aren&#8217;t that powerful &#8211; they don&#8217;t support sorting or other more advanced query features. Fortunately, underlying Firefly is a sqlite database, which can be [...]]]></description>
			<content:encoded><![CDATA[<p>I use <a href="http://www.fireflymediaserver.org/">Firefly</a> (previously called mt-daapd) as a media server for my <a href="http://www.rokulabs.com/products_soundbridge.php">Roku Soundbridge</a>. It has a feature called &#8216;Smart Playlists&#8217; that dynamically create playlists based on certain criteria, but they aren&#8217;t that powerful &#8211; they don&#8217;t support sorting or other more advanced query features.</p>
<p>Fortunately, underlying Firefly is a <a href="http://www.sqlite.org/">sqlite</a> database, which can be queried using standard SQL syntax. This enables a technique of creating static playlists that are automatically re-generated periodically instead.</p>
<p>The prerequisites for the following technique are:</p>
<ul>
<li><a href="http://www.perl.org/">Perl</a>, with the <a href="http://perldoc.perl.org/File/Spec.html">File::Spec</a> module (to convert from absolute paths to relative ones, which is what Firefly expects).</li>
<li>The sqlite3 command-line interface.</li>
</ul>
<p>The three commands that follow will create a standard <code>.m3u</code> playlist with the top 100 most-played songs from Firefly&#8217;s database, and another playlist with all the non-Podcasts added in the last month, ordered by the time they were added. Neither of these are possible using Firefly&#8217;s query language.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">sqlite3 <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>cache<span style="color: #000000; font-weight: bold;">/</span>mt-daapd<span style="color: #000000; font-weight: bold;">/</span>songs3.db <span style="color: #ff0000;">'select path from songs order by play_count desc limit 100'</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">perl</span> <span style="color: #660033;">-nle</span> <span style="color: #ff0000;">'require File::Spec; $_ = File::Spec-&gt;abs2rel($_, &quot;$PLAYLIST_DIR&quot;); print;'</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$PLAYLIST_DIR</span>/Most-played songs.m3u&quot;</span>
&nbsp;
<span style="color: #007800;">MONTHAGO</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">perl</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'use Date::Calc::Object qw(:all); $date = Date::Calc&gt;now(); $date += [0,-1,0,0,0,0]; print $date-&gt;mktime();'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
sqlite3 var<span style="color: #000000; font-weight: bold;">/</span>cache<span style="color: #000000; font-weight: bold;">/</span>mt-daapd<span style="color: #000000; font-weight: bold;">/</span>songs3.db <span style="color: #ff0000;">&quot;select path from songs where genre!='Podcast' and time_added &amp;gt; <span style="color: #007800;">$MONTHAGO</span> order by time_added desc&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">perl</span> <span style="color: #660033;">-nle</span> <span style="color: #ff0000;">'require File::Spec; $_ = File::Spec-&gt;abs2rel($_, &quot;$PLAYLIST_DIR&quot;); print;'</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$PLAYLIST_DIR</span>/Music added in last month by most recent.m3u&quot;</span></pre></div></div>

<p>(obviously, if you use these, you&#8217;ll need to alter paths to suit, make sure the correct Perl modules are installed, remove line breaks to make it easier to read, etc.)</p>
<p>Firefly will read these <code>.m3u</code>s if configured correctly during its next rescan, and use them as it would any other playlists. You can force a rescan with the following <a href="http://www.gnu.org/software/wget/">wget </a>command:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #660033;">--delete-after</span> <span style="color: #660033;">-q</span> <span style="color: #660033;">--http-user</span> noone <span style="color: #660033;">--http-password</span> yourpasswd <span style="color: #ff0000;">&quot;http://localhost:3689/config-update.html?action=rescan&quot;</span></pre></div></div>

<p>Although not fully dynamic (they are not generated on request from the Soundbridge), if these commands are called from cron or similar, the playlist can be kept up-to-date &#8216;enough&#8217;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewferrier.com/blog/2008/01/05/more-flexible-firefly-smart-playlists-with-perl-sqlite3-and-m3u/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Subscribers on Google Reader</title>
		<link>http://www.andrewferrier.com/blog/2007/12/25/subscribers-on-google-reader/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=subscribers-on-google-reader</link>
		<comments>http://www.andrewferrier.com/blog/2007/12/25/subscribers-on-google-reader/#comments</comments>
		<pubDate>Tue, 25 Dec 2007 13:12:35 +0000</pubDate>
		<dc:creator>andrewferrier</dc:creator>
				<category><![CDATA[blogging]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.andrewferrier.com/blog/2007/12/25/subscribers-on-google-reader/</guid>
		<description><![CDATA[Tip for anyone who blogs and uses Google Reader:  the new &#8216;Discover&#8217; feature of Google Reader enables you to see how many people are subscribed to your blog. Select &#8216;Browse&#8217; and search for your blog using keywords. When you&#8217;ve found it, it&#8217;ll show how many subscribers there are. Take the number with a pinch of [...]]]></description>
			<content:encoded><![CDATA[<p>Tip for anyone who blogs and uses <a href="http://www.google.com/reader/">Google Reader</a>:  the <a href="http://googlereader.blogspot.com/2007/11/attack-of-interns-recommendations-and.html">new &#8216;Discover&#8217; feature</a> of Google Reader enables you to see how many people are subscribed to your blog. Select &#8216;Browse&#8217; and search for your blog using keywords. When you&#8217;ve found it, it&#8217;ll show how many subscribers there are. Take the number with a pinch of salt: it is, of course, only one of many blog readers, albeit a popular one.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewferrier.com/blog/2007/12/25/subscribers-on-google-reader/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting WPA Working with a Thinkpad T42 and Knoppix 5.1.1</title>
		<link>http://www.andrewferrier.com/blog/2007/11/10/getting-wpa-working-with-a-thinkpad-t42-and-knoppix-511/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=getting-wpa-working-with-a-thinkpad-t42-and-knoppix-511</link>
		<comments>http://www.andrewferrier.com/blog/2007/11/10/getting-wpa-working-with-a-thinkpad-t42-and-knoppix-511/#comments</comments>
		<pubDate>Sat, 10 Nov 2007 08:52:20 +0000</pubDate>
		<dc:creator>andrewferrier</dc:creator>
				<category><![CDATA[ibm]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.andrewferrier.com/blog/2007/11/10/getting-wpa-working-with-a-thinkpad-t42-and-knoppix-511/</guid>
		<description><![CDATA[Thinkpad problems mean that I&#8217;m currently borrowing a T42 from work. It took me a while to get WPA working with Knoppix 5.1.1. Here are the magic incantations required: wpa_passphrase YOURSSID YourWPAPassPhrase &#62; /etc/wpa_supplicant/wpa_supplicant.conf wpa_supplicant -ieth1 -c /etc/wpa_supplicant/wpa_supplicant.conf &#38;amp; ifup eth1 pump -i eth1 Replace eth1 in the list above with whatever network interface name [...]]]></description>
			<content:encoded><![CDATA[<p>Thinkpad problems mean that I&#8217;m currently borrowing a T42 from work. It took me a while to get WPA working with Knoppix 5.1.1. Here are the magic incantations required:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">wpa_passphrase YOURSSID YourWPAPassPhrase <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>wpa_supplicant<span style="color: #000000; font-weight: bold;">/</span>wpa_supplicant.conf
wpa_supplicant <span style="color: #660033;">-ieth1</span> <span style="color: #660033;">-c</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>wpa_supplicant<span style="color: #000000; font-weight: bold;">/</span>wpa_supplicant.conf <span style="color: #000000; font-weight: bold;">&amp;</span>amp;
ifup eth1
pump <span style="color: #660033;">-i</span> eth1</pre></div></div>

<p>Replace <code>eth1</code> in the list above with whatever network interface name Knoppix has assigned to your wireless card (reading through the output of <code>dmesg</code> should help you with this). Don&#8217;t forget to double-check that your router has the MAC address of the card (use <code>ifconfig</code> to find this) if you&#8217;re using MAC address filtering.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewferrier.com/blog/2007/11/10/getting-wpa-working-with-a-thinkpad-t42-and-knoppix-511/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gallery to Flickr</title>
		<link>http://www.andrewferrier.com/blog/2007/06/20/gallery-to-flickr/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=gallery-to-flickr</link>
		<comments>http://www.andrewferrier.com/blog/2007/06/20/gallery-to-flickr/#comments</comments>
		<pubDate>Wed, 20 Jun 2007 19:10:41 +0000</pubDate>
		<dc:creator>andrewferrier</dc:creator>
				<category><![CDATA[photography]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.andrewferrier.com/blog/2007/06/20/gallery-to-flickr/</guid>
		<description><![CDATA[Just spent a little while consolidating all my photos: moving the remainder from my Gallery installation on andrewferrier.com to their new and preferred home on Flickr. My Flickr account is now vastly more populated with photos (and more variable in quality). This script basically did all the work. It doesn&#8217;t support nested albums, so I [...]]]></description>
			<content:encoded><![CDATA[<p>Just spent a little while consolidating all my photos: moving the remainder from my <a href="http://gallery.menalto.com/">Gallery</a> installation on <a href="http://www.andrewferrier.com/">andrewferrier.com</a> to their new and preferred home <a href="http://www.flickr.com/photos/andrewferrier/">on Flickr</a>. My Flickr account is now vastly more populated with photos (and more variable in quality). <a href="http://www.wildgardenseed.com/Taj/Export_Gallery2_to_Flickr.shtml">This script</a> basically did all the work. It doesn&#8217;t support nested albums, so I had to move all sub-albums to the top level, as well as removing the few &#8216;symlinks&#8217; I had on photos (later versions of Gallery support this). But apart from that, it was plain (if a little slow) sailing. A recommended approach.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewferrier.com/blog/2007/06/20/gallery-to-flickr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>From Palm, to Google Calendar</title>
		<link>http://www.andrewferrier.com/blog/2007/05/10/from-palm-to-google-calendar/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=from-palm-to-google-calendar</link>
		<comments>http://www.andrewferrier.com/blog/2007/05/10/from-palm-to-google-calendar/#comments</comments>
		<pubDate>Thu, 10 May 2007 18:58:04 +0000</pubDate>
		<dc:creator>andrewferrier</dc:creator>
				<category><![CDATA[gettingthingsdone]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.andrewferrier.com/blog/2007/05/10/from-palm-to-google-calendar/</guid>
		<description><![CDATA[As part of my cunning plan to move my data online, I decided to move away from using my Palm for managing my diary &#8211; and towards Google Calendar instead. I&#8217;ve already stopped using the Palm to-do list; all I really need to do now is find a decent online addressbook; Plaxo being one possibility [...]]]></description>
			<content:encoded><![CDATA[<p>As part of <a href="http://www.andrewferrier.com/blog/2007/01/26/drop-your-laptop-or-how-to-live-and-happy-and-fulfilling-life-by-keeping-your-data-on-the-network/">my cunning plan to move my data online</a>, I decided to move away from using my Palm for managing my diary &#8211; and towards <a href="http://www.google.com/calendar/">Google Calendar</a> instead. I&#8217;ve already stopped using the Palm to-do list; all I really need to do now is find a decent online addressbook; <a href="http://www.plaxo.com/">Plaxo</a> being one possibility that <a href="http://www.ctomkins.co.uk/">Chris</a> suggested.</p>
<p>It took me a while to figure out how to get my data out of the Palm. Palm don&#8217;t provide a decent export to anything other than Palm formats for the datebook, so a third-party exporter was called for. The web is seemingly full of dodgy Windows shareware to do the job, but <a href="http://www.jpilot.org/">jpilot</a> (which I already, but rarely, use on my Linux machine) turned up trumps. It exports directly to the modern <a href="http://en.wikipedia.org/wiki/ICalendar">iCalendar</a> standard, fully supported by Google Calendar. Hurrah! Since this solution doesn&#8217;t seem to be well-documented, I thought I&#8217;d write it down.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewferrier.com/blog/2007/05/10/from-palm-to-google-calendar/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Subscribe to Comments Disabled</title>
		<link>http://www.andrewferrier.com/blog/2007/01/19/subscribe-to-comments-disabled/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=subscribe-to-comments-disabled</link>
		<comments>http://www.andrewferrier.com/blog/2007/01/19/subscribe-to-comments-disabled/#comments</comments>
		<pubDate>Fri, 19 Jan 2007 13:42:21 +0000</pubDate>
		<dc:creator>andrewferrier</dc:creator>
				<category><![CDATA[blogging]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.andrewferrier.com/blog/2007/01/19/subscribe-to-comments-disabled/</guid>
		<description><![CDATA[I recently installed the Subscribe to Comments plugin on this blog. However, it seems to have attracted far too much spam. I&#8217;ve therefore disabled it again until a version is developed that&#8217;s a bit more hardy against spammers. You can always subscribe to an RSS feed for the comments on any post (as you can [...]]]></description>
			<content:encoded><![CDATA[<p>I recently installed the <a href="http://txfx.net/code/wordpress/subscribe-to-comments/">Subscribe to Comments</a> plugin on this blog. However, it seems to have attracted far too much spam. I&#8217;ve therefore disabled it again until a version is developed that&#8217;s a bit more hardy against spammers. You can always subscribe to an <a href="http://en.wikipedia.org/wiki/RSS_(file_format)">RSS feed</a> for the comments on any post (as you can with any <a href="http://wordpress.org/">WordPress</a>-powered blog) by appending <strong>/feed</strong> to the <a href="http://en.wikipedia.org/wiki/Permalink">permalink</a> URL for that post.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewferrier.com/blog/2007/01/19/subscribe-to-comments-disabled/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Acid Test</title>
		<link>http://www.andrewferrier.com/blog/2007/01/16/the-acid-test/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=the-acid-test</link>
		<comments>http://www.andrewferrier.com/blog/2007/01/16/the-acid-test/#comments</comments>
		<pubDate>Tue, 16 Jan 2007 17:01:25 +0000</pubDate>
		<dc:creator>andrewferrier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[food]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.andrewferrier.com/blog/2007/01/16/the-acid-test/</guid>
		<description><![CDATA[Fun chemistry fact of the day: Acidity regulators regulate pH in general, not just acidity. Hence (presumably) why this smoothie bottle contains Citric Acid as an acidity regulator (my first thought was: shouldn&#8217;t it be an alkali?). This is when I wish I&#8217;d done Chemistry A-Level rather than Further Maths.]]></description>
			<content:encoded><![CDATA[<p><img style="padding-right: 15px; padding-bottom: 15px" src="http://www.andrewferrier.com/blog/wp-content/uploads/2007/01/smoothie_label.jpg" alt="Smoothie Label" align="left" /> Fun chemistry fact of the day: <a href="http://en.wikipedia.org/wiki/Acidity_regulator">Acidity regulators</a> regulate <a href="http://en.wikipedia.org/wiki/PH">pH</a> in general, not just acidity. Hence (presumably) why this smoothie bottle contains Citric Acid as an acidity regulator (my first thought was: shouldn&#8217;t it be an alkali?).</p>
<p>This is when I wish I&#8217;d done <a href="http://www.alevelchemistry.co.uk/">Chemistry A-Level</a> rather than <a href="http://www.fmnetwork.org.uk/">Further Maths</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewferrier.com/blog/2007/01/16/the-acid-test/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blog Moved</title>
		<link>http://www.andrewferrier.com/blog/2007/01/13/blog-moved/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=blog-moved</link>
		<comments>http://www.andrewferrier.com/blog/2007/01/13/blog-moved/#comments</comments>
		<pubDate>Sat, 13 Jan 2007 14:35:31 +0000</pubDate>
		<dc:creator>andrewferrier</dc:creator>
				<category><![CDATA[blogging]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.andrewferrier.com/blog/2007/01/13/blog-moved/</guid>
		<description><![CDATA[This blog has now moved to my new domain andrewferrier.com. You shouldn&#8217;t notice any change if you are using a web browser or a well-designed feedreader to read it, as all parts of the old blog (including permalinks, RSS feed, etc.) should permanently redirect to the new one. You might just want to check that [...]]]></description>
			<content:encoded><![CDATA[<p>This blog has now moved to my new domain <a href="http://www.andrewferrier.com/">andrewferrier.com</a>. You shouldn&#8217;t notice any change if you are using a web browser or a well-designed <a href="http://en.wikipedia.org/wiki/News_aggregator">feedreader</a> to read it, as all parts of the old blog (including <a href="http://en.wikipedia.org/wiki/Permalink">permalinks</a>, <a href="http://en.wikipedia.org/wiki/RSS_(file_format)">RSS feed</a>, etc.) should permanently redirect to the new one. You might just want to check that your RSS reader is pointing to the new blog though, or alter your browser bookmarks. The redirection will disappear in a few months. I&#8217;d appreciate it if you can let me know if you see any problems with the new blog.</p>
<p><strong>Update 2007-01-13</strong>: I should add that some feedreaders will treat all the items in the feed as new, because the GUID will have changed. Just mark them all as read. Apologies for the inconvenience.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewferrier.com/blog/2007/01/13/blog-moved/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exim: Remove &#8216;if error_message&#8230;&#8217; From Your .forward</title>
		<link>http://www.andrewferrier.com/blog/2006/12/05/exim-remove-if-error_message-from-your-forward/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=exim-remove-if-error_message-from-your-forward</link>
		<comments>http://www.andrewferrier.com/blog/2006/12/05/exim-remove-if-error_message-from-your-forward/#comments</comments>
		<pubDate>Tue, 05 Dec 2006 10:48:32 +0000</pubDate>
		<dc:creator>andrewferrier</dc:creator>
				<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.new-destiny.co.uk/andrew/blog/2006/12/05/exim-remove-if-error_message-from-your-forward/</guid>
		<description><![CDATA[For users of Exim only: It&#8217;s normally recommended to include the line if error_message then finish endif in your .forward filter file, to make sure error messages don&#8217;t cause recursive problems in your mail system. I have found that this doesn&#8217;t work in practice if you normally receive a lot of spam, because spammers are [...]]]></description>
			<content:encoded><![CDATA[<p>For users of <a href="http://www.exim.org/">Exim</a> only:</p>
<p>It&#8217;s normally <a href="http://www.exim.org/exim-html-4.50/doc/html/filter_1.html">recommended</a> to include the line <code>if error_message then finish endif</code> in your <code>.forward</code> filter file, to make sure error messages don&#8217;t cause recursive problems in your mail system. I have found that this doesn&#8217;t work in practice if you normally receive a lot of spam, because spammers are increasingly using <em>your</em> email address to spam other people. This causes bounces back to you, which bypass your spam filter because of that line (at least in my setup, using <a href="http://marc.merlins.org/linux/exim/sa.html">sa-exim</a>). Removing that line greatly reduced the amount of spam reaching my inbox.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewferrier.com/blog/2006/12/05/exim-remove-if-error_message-from-your-forward/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spam and OCR</title>
		<link>http://www.andrewferrier.com/blog/2006/11/10/spam-and-ocr/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=spam-and-ocr</link>
		<comments>http://www.andrewferrier.com/blog/2006/11/10/spam-and-ocr/#comments</comments>
		<pubDate>Fri, 10 Nov 2006 14:12:59 +0000</pubDate>
		<dc:creator>andrewferrier</dc:creator>
				<category><![CDATA[economics]]></category>
		<category><![CDATA[softwareengineering]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.new-destiny.co.uk/andrew/blog/2006/11/10/spam-and-ocr/</guid>
		<description><![CDATA[It&#8217;s strange how the same techniques can be used to attack both sides of a problem. For some time now, some of the more sophisticated web spammers have been using OCR techniques to circumvent CAPTCHAs on websites in order to hijack free email accounts, submit comment spam on blogs, and similar forms of mischievousness. As [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s strange how the same techniques can be used to attack both sides of a problem. For some time now, some of the more sophisticated web spammers have been using <a href="http://en.wikipedia.org/wiki/OCR">OCR</a> techniques to circumvent <a href="http://en.wikipedia.org/wiki/Captcha">CAPTCHA</a>s on websites in order to hijack free email accounts, submit comment spam on blogs, and similar forms of mischievousness.</p>
<p>As the more capable e-mail spammers seem to be figuring out that anti-spam technologies are getting pretty good at filtering out the crap they send, normally using rule-based detection, <a href="http://en.wikipedia.org/wiki/Bayesian_filtering">Bayesian learning</a>, or a combination of the two, a lot of spam now being sent out is image-based &#8211; and anti-spammers are now using OCR to fight back against this new tide.</p>
<p><a href="http://www.new-destiny.co.uk/andrew/blog/2006/10/30/meta-blog/">As I&#8217;ve mentioned before</a>, I have a huge spam problem on my personal e-mail account (~4,000/week) &#8211; due to a combination of bad luck and some foolish naivety at a few points &#8211; and so I have a fairly highly-tuned <a href="http://spamassassin.apache.org/">SpamAssassin</a> installation running at home, with plenty of custom rules and plugins. I&#8217;ve seen a rising amount of image spam on it, so I decided to give <a href="http://wiki.apache.org/spamassassin/FuzzyOcrPlugin">FuzzyOcr</a>, a plugin for SpamAssassin, a try. So far, the results are pretty impressive. FuzzyOcr uses the open-source <a href="http://jocr.sourceforge.net/">gocr</a> program as the engine, and ties it to with SpamAssassin and some logic. The OCR is fairly CPU-intensive, so unlike most SpamAssassin plugins, it only kicks in if the message is otherwise going to be below a certain scoring threshold. So far it has roughly halved the volume of spam that slips through into my inbox (previously ~40-50/day), which is a welcome improvement.</p>
<p>However, fun though they are as a technical challenge, technical approaches such as these always feel like fighting a losing battle. I might write a lengthier article on this at a later date, but I&#8217;d like to see ISPs take a far more hardline attitude with their peers that host spammers. There are also compelling economic solutions to the problem, mostly related to <a href="http://fare.tunes.org/articles/stamps_vs_spam.html">micro-payments for sending email</a>. There are problems with those too (how do you roll them out gradually?), but you rarely see <a href="http://blogs.msdn.com/oldnewthing/archive/2004/09/16/230388.aspx">graphs of spam</a> that have a downward trend &#8211; a solution to the spam problem would be most welcome.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewferrier.com/blog/2006/11/10/spam-and-ocr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lightbulb Conundrum &#8211; Drinks, Anyone?</title>
		<link>http://www.andrewferrier.com/blog/2006/11/08/lightbulb-conundrum-drinks-anyone/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=lightbulb-conundrum-drinks-anyone</link>
		<comments>http://www.andrewferrier.com/blog/2006/11/08/lightbulb-conundrum-drinks-anyone/#comments</comments>
		<pubDate>Wed, 08 Nov 2006 10:18:57 +0000</pubDate>
		<dc:creator>andrewferrier</dc:creator>
				<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.new-destiny.co.uk/andrew/blog/2006/11/08/lightbulb-conundrum-drinks-anyone/</guid>
		<description><![CDATA[A pint is yours if you can solve this conundrum for me (a theoretical explanation you can convince me of will do; I have a practical workaround). A few weeks ago I replaced some of the bulbs in my house with energy-saving ones. However, the ceiling light in my hall behaves in a very odd [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Beer">A pint</a> is yours if you can solve this conundrum for me (a theoretical explanation you can convince me of will do; I have a practical workaround).</p>
<p>A few weeks ago I replaced some of the bulbs in my house with <a href="http://en.wikipedia.org/wiki/Compact_fluorescent_lamp">energy-saving ones</a>. However, the ceiling light in my hall behaves in a very odd manner. Occasionally, after I switch it off at the wall, it flickers on very briefly (for about 1/10 second) about once every minute &#8211; even though the power is (allegedly) off. The flicker is fairly dim, so I only notice it at night. If I take the bulb out of the socket, the flicker stops. If I put it back, it starts again. This behaviour happily continues for hours &#8211; to the extent that I remove the bulb when it happens because it&#8217;s too distracting when trying to sleep.</p>
<p>Perhaps it&#8217;s some kind of residual charge in the bulb. But this doesn&#8217;t really seem to explain why it only flickers when the bulb is in the socket (even though the switch is off). It also doesn&#8217;t explain why it doesn&#8217;t happen in the rest of the house (they have the same brand of bulb). The only difference is that the hall has two switches &#8211; but they aren&#8217;t <a href="http://en.wikipedia.org/wiki/Dimmer_switch">dimmer switches</a> or anything special.</p>
<p>Any thoughts?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewferrier.com/blog/2006/11/08/lightbulb-conundrum-drinks-anyone/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Free Hour</title>
		<link>http://www.andrewferrier.com/blog/2006/10/29/free-hour/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=free-hour</link>
		<comments>http://www.andrewferrier.com/blog/2006/10/29/free-hour/#comments</comments>
		<pubDate>Sun, 29 Oct 2006 10:19:23 +0000</pubDate>
		<dc:creator>andrewferrier</dc:creator>
				<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.new-destiny.co.uk/andrew/blog/2006/10/29/free-hour/</guid>
		<description><![CDATA[Once a year (today is the day) I wake up and realise I&#8217;ve been given a free hour. Does anyone else savour that moment? (Of course, once a year, I lose an hour &#8211; but I prefer not to talk about that&#8230;)]]></description>
			<content:encoded><![CDATA[<p>Once a year (<a href="http://wwp.united-kingdom-uk.com/">today is the day</a>) I wake up and realise I&#8217;ve been given a free hour. Does anyone else savour that moment?</p>
<p>(Of course, once a year, I lose an hour &#8211; but I prefer not to talk about that&#8230;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewferrier.com/blog/2006/10/29/free-hour/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Flaky Trackback / Pingbacks on WordPress 2.0.x</title>
		<link>http://www.andrewferrier.com/blog/2006/10/16/flaky-trackback-pingbacks-on-wordpress-20x/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=flaky-trackback-pingbacks-on-wordpress-20x</link>
		<comments>http://www.andrewferrier.com/blog/2006/10/16/flaky-trackback-pingbacks-on-wordpress-20x/#comments</comments>
		<pubDate>Mon, 16 Oct 2006 16:39:18 +0000</pubDate>
		<dc:creator>andrewferrier</dc:creator>
				<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.new-destiny.co.uk/andrew/blog/2006/10/16/flaky-trackback-pingbacks-on-wordpress-20x/</guid>
		<description><![CDATA[It seems that pingbacks and trackbacks (which are pingbacks&#8217; more awkward, older cousin) are a bit flaky on WordPress 2.0.x (for more information on how both are supposed to work, see this excellent tutorial). I&#8217;ve long suspected that&#8217;s the case, because blog entries I&#8217;ve linked to haven&#8217;t had pingbacks appear, and it seems I&#8217;m not [...]]]></description>
			<content:encoded><![CDATA[<p>It seems that pingbacks and trackbacks (which are pingbacks&#8217; more awkward, older cousin) are a bit flaky on <a href="http://wordpress.org/">WordPress</a> 2.0.x (for more information on how both are supposed to work, see <a href="http://www.optiniche.com/blog/117/wordpress-trackback-tutorial/">this excellent tutorial</a>). I&#8217;ve long suspected that&#8217;s the case, because blog entries I&#8217;ve linked to haven&#8217;t had pingbacks appear, and it seems I&#8217;m not the <a href="http://wordpress.org/support/topic/59117?replies=1">only</a> <a href="http://wordpress.org/support/topic/89571">one</a> with such problems. However, I&#8217;ve tested pingbacks with this blog in both directions against <a href="http://www.tamba2.org.uk/wordpress/TestTrack/index.php">TestTrack</a>, which enables you to test ping- and trackbacks, and it does seem to work. TestTrack is running an 2.1 alpha level of WordPress, so let&#8217;s hope that sorts out the bugs when it arrives.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewferrier.com/blog/2006/10/16/flaky-trackback-pingbacks-on-wordpress-20x/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
