<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:admin="http://webns.net/mvcb/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:html="http://www.w3.org/1999/html" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Ross Burton</title><link>http://www.burtonini.com/blog</link><description>A potted account of Ross' life</description><language>en</language><ttl>60</ttl><dc:creator>Ross Burton</dc:creator><admin:generatorAgent rdf:resource="http://pyblosxom.sourceforge.net/"/><admin:errorReportsTo rdf:resource="mailto:ross@burtonini.com"/><item><title>Why I Hate September</title><guid isPermaLink="false">life/phone-2008-09-03-10-00</guid><link>http://www.burtonini.com/blog/life/phone-2008-09-03-10-00</link><description>I hate September because it is in September that I finally get my mobile phone bill from GUADEC. Total of ...</description><content:encoded><![CDATA[<p>
  I hate September because it is in September that I finally get my mobile phone
  bill from GUADEC.
</p>
<blockquote>
  <b>Total of 5 Calls while abroad 	00:23:20 	&pound;31.402</b>
</blockquote>
<p>
  Money grabbing tight fisted evil bastards.  This includes a rate of
  &pound;1.25 a minute to <em>receive</em> a call.
</p>
<p>
  <small>NP: <cite>Los Angeles</cite>, Flying Lotus</small>
</p>
]]></content:encoded><category domain="http://www.burtonini.com">life</category><dc:date>2008-09-03T09:00:00Z</dc:date></item><item><title>Sound Juicer &quot;I Don't Know What You Heard But It's Mandatory&quot; 2.23.2</title><guid isPermaLink="false">computers/sound-juicer/sj-2.23.2</guid><link>http://www.burtonini.com/blog/computers/sound-juicer/sj-2.23.2</link><description>Sound Juicer &quot;I Don't Know What You Heard But It's Mandatory&quot; 2.23.2 has been released. Tarballs are available on burtonini.com ...</description><content:encoded><![CDATA[<p>
  Sound Juicer "I Don't Know What You Heard But It's Mandatory" 2.23.2 has been
  released.  Tarballs are
  available <a href="http://www.burtonini.com/computing/sound-juicer-2.23.2.tar.bz2">on
    <tt>burtonini.com</tt></a>, or from
  the <a href="ftp://ftp.gnome.org/pub/gnome/sources/sound-juicer/2.23/">GNOME
  FTP servers</a>.  Lots of fixes from the Amazing Matthew Martin:
</p>
<ul>
  <li>Stop playback when the disc is re-read (Matthew Martin)</li>
  <li>Only eject the disc if tracks were ripped (MM)</li>
  <li>Don't try and move the non-existant temp file when skipping (MM)</li>
  <li>Free the option context (Pierre Benz)</li>
  <li>Don't block until n-c-b quits when copying discs</li>
  <li>Fix playback track switching (MM)</li>
</ul>

]]></content:encoded><category domain="http://www.burtonini.com">computers/sound-juicer</category><dc:date>2008-08-18T13:59:53Z</dc:date></item><item><title>Sound Juicer &quot;We're Singing In Tune But Now It's Over&quot; 2.23.1</title><guid isPermaLink="false">computers/sound-juicer/sj-2.23.1</guid><link>http://www.burtonini.com/blog/computers/sound-juicer/sj-2.23.1</link><description>Sound Juicer &quot;We're Singing In Tune But Now It's Over&quot; 2.23.1 has been released. Tarballs are available on burtonini.com , ...</description><content:encoded><![CDATA[<p>
  Sound Juicer "We're Singing In Tune But Now It's Over" 2.23.1 has been released.  Tarballs
  are available <a href="http://www.burtonini.com/computing/sound-juicer-2.23.1.tar.bz2">on
    <tt>burtonini.com</tt></a>, or from
  the <a href="ftp://ftp.gnome.org/pub/gnome/sources/sound-juicer/2.23/">GNOME
  FTP servers</a>.  Nothing that amazing here, sorry:
</p>
<ul>
  <li>Fix play+pause+play (#523182, thanks Matthew Martin)</li>
  <li>Add %ay, album year (#522909, Juan F. Giménez Silva)</li>
</ul>
]]></content:encoded><category domain="http://www.burtonini.com">computers/sound-juicer</category><dc:date>2008-08-04T19:33:17Z</dc:date></item><item><title>GUADEC</title><guid isPermaLink="false">computers/guadec-2008-07-29-21-40</guid><link>http://www.burtonini.com/blog/computers/guadec-2008-07-29-21-40</link><description>Hmm, so I never did blog a GUADEC roundup. In two words: it rocked. Congratulations to Baris and everyone else ...</description><content:encoded><![CDATA[<p>
  Hmm, so I never did blog a GUADEC roundup.  In two words: it rocked.
  Congratulations to Baris and everyone else who organised it!
</p>
<p>
  In other late GUADEC news I finally reviewed the rest of my GUADEC photos and
  <a href="http://www.flickr.com/photos/rossburton/sets/72157606166808992/">uploaded
  them to Flickr</a>.  I'll try and not take a month to upload next time,
  honest!
</p>
]]></content:encoded><category domain="http://www.burtonini.com">computers</category><dc:date>2008-07-29T20:40:00Z</dc:date></item><item><title>OH Wares</title><guid isPermaLink="false">computers/oh-wares-2008-07-11-14-14</guid><link>http://www.burtonini.com/blog/computers/oh-wares-2008-07-11-14-14</link><description>I've just been informed that Rob Bradford has one large &quot;I3&lt;OH&quot; left. If you want one, then find him fast! ...</description><content:encoded><![CDATA[<p>
  I've just been informed that Rob Bradford has <em>one</em> large "I3&lt;OH"
  left.  If you want one, then find him fast!  The grapevine also says that
  there is a crack team of
  rouge <a href="http://o-hand.com/2008/05/09/ohmen-arrived/">OH Men</a> on the
  loose, so watch out!
</p>
]]></content:encoded><category domain="http://www.burtonini.com">computers</category><dc:date>2008-07-11T13:14:00Z</dc:date></item><item><title>GUPnP Action</title><guid isPermaLink="false">computers/gupnp-2008-06-30-14-00</guid><link>http://www.burtonini.com/blog/computers/gupnp-2008-06-30-14-00</link><description>Action around GUPnP has been really hotting up recently. Jorn is back from the dead studying and demonstrating that he ...</description><content:encoded><![CDATA[<p>
  Action around GUPnP has been really hotting up recently.  Jorn is back
  from <strike>the dead</strike> studying and demonstrating that he hasn't lost
  his touch by refactoring the various audio/visual widgets spread around our
  toy projects
  into <a href="http://svn.o-hand.com/repos/misc/trunk/libowl-av/">libowl-av</a>,
  adding Vala bindings, and then writing
  a <a href="http://svn.o-hand.com/repos/gupnp/trunk/gupnp-media-renderer/">MediaRenderer</a>
  implementation on top of that.  This means we now have reference
  implementations of the full media specification in the form of
  gupnp-media-server (server), gupnp-av-cp (control), and gupnp-media-renderer
  (playback).
</p>
<p>
  Also Johan Kristell posted to the list for the first time with an
  implementation of
  the <a href="http://www.upnp.org/standardizeddcps/digitalsecuritycamera.asp">Digital
  Security Camera specifications</a>, both server and
  client.  <a href="http://www.kristell.se/network-camera/">GUPnP Network
  Camera</a> currently only supports still images, but as it is based on
  GStreamer video can't be far away.
</p>
]]></content:encoded><category domain="http://www.burtonini.com">computers</category><dc:date>2008-06-30T13:00:00Z</dc:date></item><item><title>Erm...</title><guid isPermaLink="false">computers/fail-2008-06-23-18-00</guid><link>http://www.burtonini.com/blog/computers/fail-2008-06-23-18-00</link><description>case &quot;$1&quot; in *.sh) # Source shell script for speed. ( trap - INT QUIT TSTP scriptname=$1 shift . $scriptname ...</description><content:encoded><![CDATA[<pre>case "$1" in
        *.sh)
                # Source shell script for speed.
                (
                        trap - INT QUIT TSTP
                        scriptname=$1
                        shift
                        . $scriptname
                )
                ;;
        *)
                "$@"
                ;;
  esac</pre>
<p>
  OPTIMISATION FAIL.
</p>
<p>
  <small>NP: <cite>Roseland NYC Live</cite>, Portishead</small>
</p>
]]></content:encoded><category domain="http://www.burtonini.com">computers</category><dc:date>2008-06-23T17:00:00Z</dc:date></item><item><title>Zebu 0.1</title><guid isPermaLink="false">computers/zebu-2008-06-22-14-20</guid><link>http://www.burtonini.com/blog/computers/zebu-2008-06-22-14-20</link><description>As one of the maintainers of debian.o-hand.com I use the always wonderful pbuilder and cowbuilder to rebuild packages originally build ...</description><content:encoded><![CDATA[<p>
  As one of the maintainers
  of <a href="http://debian.o-hand.com/">debian.o-hand.com</a> I use the always
  wonderful <tt>pbuilder</tt> and <tt>cowbuilder</tt> to rebuild packages
  originally build for Debian Sid for Debian Etch, Ubuntu Gutsy, Hardy, and so
  on.  Continually typing the commands to update the cowbuilders can get
  tiresome fast so last week I scratched the itch and
  produced <cite>Zebu</cite>.
</p>
<p>
  <img src="http://burtonini.com/computing/screenshots/zebu-0.1.png" alt="Zebu"/>
</p>
<p>
  As of version 0.1 it is barely functional but it does let you update or login
  to a cowbuilder.  It requires that the cowbuilders are
  named <tt>/var/cache/pbuilder/*.cow</tt> and doesn't support "traditional"
  pbuilder rootstraps yet, but that is planned.  Anyway, cowbuilders are the
  future.
</p>
<p>
  If anyone else thinks this could be useful there is
  a <a href="http://burtonini.com/computing/zebu-0.1.tar.gz">tarball</a> and
  a <a href="http://burtonini.com/bzr/zebu">Bazaar repository</a>.  I must also
  thank the wonderful Ulisse Perusin for the rocking icon he created.
</p>
<p>
  <small>NP: <cite>Cosmos</cite>, Murcof</small>
</p>
]]></content:encoded><category domain="http://www.burtonini.com">computers</category><dc:date>2008-06-22T13:20:00Z</dc:date></item><item><title>Wanted: Icon</title><guid isPermaLink="false">computers/wanted-icon-2008-06-18-09-40</guid><link>http://www.burtonini.com/blog/computers/wanted-icon-2008-06-18-09-40</link><description>I'm hacking on a small tool at the moment and need an icon for the launcher. A simple icon of ...</description><content:encoded><![CDATA[<p>
  I'm hacking on a small tool at the moment and need an icon for the launcher.
  A simple icon of a cow's head would be perfect: anyone know of something like
  this, or willing to quickly draw one for me?
</p>
]]></content:encoded><category domain="http://www.burtonini.com">computers</category><dc:date>2008-06-18T08:40:00Z</dc:date></item><item><title>Postr 0.12.2</title><guid isPermaLink="false">computers/postr/postr-2008-06-15-15-10</guid><link>http://www.burtonini.com/blog/computers/postr/postr-2008-06-15-15-10</link><description>Another point release of Postr which should fix Flickr authentication for good this time. Also the file size limit has ...</description><content:encoded><![CDATA[<p>
  Another point release
  of <a href="http://burtonini.com/blog/computers/postr">Postr</a> which should
  fix Flickr authentication for good this time.  Also the file size limit has
  been increased to 20Mb to match the new Flickr limits.
</p>
<p>
  The <a href="http://burtonini.com/computing/postr-0.12.2.tar.gz">tarball is
    here</a>, and packages for Debian are being worked on next.
</p>
]]></content:encoded><category domain="http://www.burtonini.com">computers/postr</category><dc:date>2008-06-15T14:10:00Z</dc:date></item><item><title>UPnP in Epiphany</title><guid isPermaLink="false">computers/gupnp-ephy-2008-06-12-22-10</guid><link>http://www.burtonini.com/blog/computers/gupnp-ephy-2008-06-12-22-10</link><description>One of the more useful features of the UPnP specification is that devices have a standard way of specifying a ...</description><content:encoded><![CDATA[<p>
  One of the more useful features of the UPnP specification is that devices have
  a standard way of specifying a "presentation URL", a human-readable web page
  representing the device.  For example, my SoundBridge has a web page which
  shows the currently playing music and lets me switch radio station, whilst my
  router's presentation URL is the administration page.
</p>
<p>
  Useful, but not exposed anywhere.  Until now...
</p>
<p>
  <img src="http://burtonini.com/computing/screenshots/ephy-upnp.png" alt="GUPnP in Epiphany" width="609" height="400"/>
</p>
<p>
  This is a small Epiphany extension which adds all presentation URLs it finds
  to the <cite>Nearby Sites</cite> menu, just like the URLs discovered using
  Avahi.  It needs a bit more work as it doesn't yet handle being unloaded or
  devices disappearing, but it is certainly usable now.
</p>
<p>
  If anyone else wants to have a go with it, the source can be fetched using
  Bazaar from <a href="http://burtonini.com/bzr/ephy-gupnp/">here</a>.  Watch
  out for the currently hard-coded paths...
</p>
]]></content:encoded><category domain="http://www.burtonini.com">computers</category><dc:date>2008-06-12T21:10:00Z</dc:date></item><item><title>GUPnP Documentation</title><guid isPermaLink="false">computers/gupnp-2008-06-10-17-15</guid><link>http://www.burtonini.com/blog/computers/gupnp-2008-06-10-17-15</link><description>What started off as a quick tutorial to writing a service using GUPnP turned into a week of reviewing and ...</description><content:encoded><![CDATA[<p>
  What started off as a quick tutorial to writing a service using GUPnP turned
  into a week of reviewing and writing more GUPnP documentation.  It's all
  landed in our Subversion repository now but if anyone wants to see how to
  write
  a <a href="http://burtonini.com/computing/gupnp-docs/client-tutorial.html">UPnP
  client</a>, <a href="http://burtonini.com/computing/gupnp-docs/server-tutorial.html">implement
  the UPnP networked light bulb service</a>, or just browse the beginnings
  of the <a href="http://burtonini.com/computing/gupnp-docs/glossary.html">glossary</a>, then I have a local copy of
  the <a href="http://burtonini.com/computing/gupnp-docs/">latest documentation
  online</a>.
</p>

<p>
  <small>NP: <cite>Aerial</cite>, 2562</small>
</p>
]]></content:encoded><category domain="http://www.burtonini.com">computers</category><dc:date>2008-06-10T16:15:00Z</dc:date></item><item><title>Week 21</title><guid isPermaLink="false">life/baby-2008-06-06-17-38</guid><link>http://www.burtonini.com/blog/life/baby-2008-06-06-17-38</link><description>Growing nicely.</description><content:encoded><![CDATA[<p>
  <a class="noline" href="http://www.flickr.com/photos/rossburton/2556272648/" title="Week 21 by Ross Burton, on Flickr">
    <img class="thumbnail" src="http://farm4.static.flickr.com/3143/2556272648_02283b484e.jpg" width="500" height="361" alt="Week 21" />
  </a>
</p>
<p>
  Growing nicely.
</p>
]]></content:encoded><category domain="http://www.burtonini.com">life</category><dc:date>2008-06-06T16:38:00Z</dc:date></item><item><title>Sound Juicer &quot;Harder Now With Higher Speed&quot; 2.23.0</title><guid isPermaLink="false">computers/sound-juicer/sj-2.23.0</guid><link>http://www.burtonini.com/blog/computers/sound-juicer/sj-2.23.0</link><description>Sound Juicer &quot;Harder Now With Higher Speed&quot; 2.23.0 has finally been released.. Tarballs are available on burtonini.com , or from ...</description><content:encoded><![CDATA[<p>
  Sound Juicer "Harder Now With Higher Speed" 2.23.0 has finally been released..  Tarballs
  are available <a href="http://www.burtonini.com/computing/sound-juicer-2.23.0.tar.bz2">on
    <tt>burtonini.com</tt></a>, or from
  the <a href="ftp://ftp.gnome.org/pub/gnome/sources/sound-juicer/2.23/">GNOME
  FTP servers</a>.  Hot new features!
</p>
<ul>
  <li>Port to GIO (Michael Terry)</li>
  <li>Update URL handling for New GIO World Order (Bastien Nocera)</li>
  <li>Fix display problems with the cluebar (Pekka Vuorela)</li>
  <li>Add audio preview when overwriting (Luca Cavalli)</li>
  <li>Use GtkVolmeButton instead of BaconVolume (MT)</li>
  <li>Fix crash when no profile is selected (Matthew Martin)</li>
  <li>Add []&lt;&gt; to the special character list (MM)</li>
  <li>Make the year and disc entries a11y (Patrick Wade)</li>
  <li>Fix error handling in CD playback (Tim-Philipp Müller)</li>
  <li>Require intltool 0.40</li>
</ul>
<p>
  I really need some heavy testing on the GIO rewrite, so please try and extract
  tracks to as many different targets as possible.  Although I expect
  confirmation that using an unmounted remote location currently fails, it
  should be possible to use this to write to Samba, OBEX-FTP, and so on.
</p>
]]></content:encoded><category domain="http://www.burtonini.com">computers/sound-juicer</category><dc:date>2008-06-05T12:34:03Z</dc:date></item><item><title>20 Weeks</title><guid isPermaLink="false">life/bump-2008-05-27-10-30</guid><link>http://www.burtonini.com/blog/life/bump-2008-05-27-10-30</link><description>Over the last few weeks Vicky's previously invisible pregnancy has finally popped out. Much frustration ensued as this meant most ...</description><content:encoded><![CDATA[<p>
  Over the last few weeks Vicky's previously invisible pregnancy has finally
  popped out.  Much frustration ensued as this meant most of her clothes didn't
  fit any more, but that was soon relieved.
</p>
<p>
  <a class="noline" href="http://www.flickr.com/photos/rossburton/2526738845/" title="20 Weeks">
    <img class="thumbnail" src="http://farm4.static.flickr.com/3015/2526738845_3f5a4ec475_m.jpg" width="160" height="240" alt="20 Weeks" />
  </a>
</p>
]]></content:encoded><category domain="http://www.burtonini.com">life</category><dc:date>2008-05-27T09:30:00Z</dc:date></item><item><title>Postr 0.12.1</title><guid isPermaLink="false">computers/postr/postr-2008-05-27-10-00</guid><link>http://www.burtonini.com/blog/computers/postr/postr-2008-05-27-10-00</link><description>I just made a quick Postr 0.12.1 release to fix authentication with non-trivial HTTP handler strings. If you can't login ...</description><content:encoded><![CDATA[<p>
  I just made a quick Postr 0.12.1 release to fix authentication with
  non-trivial HTTP handler strings.  If you can't login to Flickr with Postr,
  then this release <em>should</em> fix it for you.
</p>
<p>
  The <a href="http://burtonini.com/computing/postr-0.12.1.tar.gz">tarball is
    here</a>, and packages for Debian are being built now.
</p>
<p>
  In other news postr.dev has seen a lot of development and is looking pretty
  damn neat at the moment.
</p>
]]></content:encoded><category domain="http://www.burtonini.com">computers/postr</category><dc:date>2008-05-27T09:00:00Z</dc:date></item><item><title>GUPnP Bindings Generation</title><guid isPermaLink="false">computers/gupnp-binding-2008-05-23-16-40</guid><link>http://www.burtonini.com/blog/computers/gupnp-binding-2008-05-23-16-40</link><description>I've now finished the first draft of the bindings generation tool for GUPnP, which is now part of libgupnp itself. ...</description><content:encoded><![CDATA[<p>
  I've now finished the first draft of the bindings generation tool for GUPnP,
  which is now part of <tt>libgupnp</tt> itself.  I've added both blocking and
  non-blocking wrappers, so if you wanted to get the external IP there is the
  choice of this for blocking calls:
</p>
<pre>char *ip;
GetExternalIPAddress (proxy, &amp;ip, &amp;error);</pre>
<p>
  Or this for non-blocking calls:
</p>
<pre>static void
external_ip_cb (GUPnPServiceProxy *proxy, char * ip,
                GError *error, gpointer userdata)
{
  // ...
}
...
  GetExternalIPAddress_async (proxy, external_ip_cb, NULL);</pre>
<p>
  I've ported my test applications to use the bindings, which are available in
  <a href="http://burtonini.com/bzr/gupnp-demos">this Bazaar repository</a>.  It
  appears to work quite well, I just need to test it against all of the official
  service descriptions and add a few small features.
</p>
]]></content:encoded><category domain="http://www.burtonini.com">computers</category><dc:date>2008-05-23T15:40:00Z</dc:date></item><item><title>GUPnP Autogeneration</title><guid isPermaLink="false">computers/upnp-gen-2008-05-22-16-25</guid><link>http://www.burtonini.com/blog/computers/upnp-gen-2008-05-22-16-25</link><description>The problem with GUPnP is that (like DBus) when programming from C you need to specify the types of each ...</description><content:encoded><![CDATA[<p>
  The problem with GUPnP is that (like DBus) when programming from C you need to
  specify the types of each argument when making a method call:
</p>
<pre>gupnp_service_proxy_send_action (proxy,
                                   "AddPortMapping", &amp;error,
                                   /* In arguments */
                                   "NewRemoteHost", G_TYPE_STRING, "",
                                   "NewExternalPort", G_TYPE_UINT, external_port,
                                   "NewProtocol", G_TYPE_STRING, "TCP",
                                   "NewInternalPort", G_TYPE_UINT, internal_port,
                                   "NewInternalClient", G_TYPE_STRING, internal_host,
                                   "NewEnabled", G_TYPE_BOOLEAN, TRUE,
                                   "NewPortMappingDescription", G_TYPE_STRING, desc,
                                   "NewLeaseDuration", G_TYPE_UINT, 0,
                                   NULL,
                                   /* Out arguments */
                                   NULL);</pre>
<p>
  Now, that really is quite tiresome.  It basically means that you need to have
  the service reference to hand when coding, because you need to know the name
  and type of each argument. Luckily for DBus part of <tt>dbus-glib</tt> is a
  binding tool which can create type-safe wrappers so that making method calls
  is much easier.  Wouldn't it be nice if there was something similar for GUPnP,
  which generated inline functions with prototypes like this:
</p>
<pre>static inline gboolean
AddPortMapping (GUPnPServiceProxy *proxy,
                char * in_NewRemoteHost,
                unsigned int in_NewExternalPort,
                char * in_NewProtocol,
                unsigned int in_NewInternalPort,
                char * in_NewInternalClient,
                gboolean in_NewEnabled,
                char * in_NewPortMappingDescription,
                unsigned int in_NewLeaseDuration,
                GError **error);</pre>
<p>
  Well, now there is.  I've put
  the <a href="http://burtonini.com/computing/gupnp-bind.py">initial code
  here</a> but will be moving this into GUPnP itself shortly.  The next task is
  to add asynchronous wrappers just as in dbus-glib, but that shouldn't be too
  hard.
</p>
]]></content:encoded><category domain="http://www.burtonini.com">computers</category><dc:date>2008-05-22T15:25:00Z</dc:date></item><item><title>Anjuta+Poky Integration</title><guid isPermaLink="false">computers/anjuta-2008-05-20-17-40</guid><link>http://www.burtonini.com/blog/computers/anjuta-2008-05-20-17-40</link><description>Yesterday I tested and rolled a new release of the Poky integration plugin for Anjuta , created by our fearless ...</description><content:encoded><![CDATA[<p>
  Yesterday I tested and rolled a new release of
  the <a href="http://labs.o-hand.com/anjuta-poky-sdk-plugin/">Poky
    integration plugin for Anjuta</a>, created by our
  fearless <a href="http://www.robster.org.uk/">Sir Bradford</a>.  This is a
  very special piece of magic which lets you use a Poky SDK in Anjuta to
  cross-compile binaries without any pain, and will even deploy, execute and
  debug the binaries in a QEMU for testing. As part of the release process I
  had to test it, so I'll step through what I did as a brief tutorial on how
  to use Anjuta with Poky.
</p>
<p>
  The prerequisites are Anjuta, the Anjuta Poky SDK plugin, and QEMU.  These are
  all available for installation from
  our <a href="http://debian.o-hand.com">Debian repository</a> for Debian/Ubuntu
  users, everyone else will have to build from source, sorry!  You'll also need
  a Poky ARM SDK and QEMU ARM images from
  the <a href="http://pokylinux.org">Poky</a> web site.  The SDK is a tarball
  which contains a cross compiler with base libraries (glibc, GTK+, and so on)
  and should be extracted onto your machine (it extracts the SDK
  into <tt>/usr/local/poky</tt>).  The QEMU image consists of a kernel and
  a <tt>ext3</tt> file system which will boot Poky inside QEMU.
</p>
<p>
  To start I fetched a checkout
  of <a href="http://pimlico-project.org/tasks.html">Tasks</a> and loaded up
  Anjuta.  I don't have an existing Anjuta project for Tasks, so I used
  <cite>File &rarr; New &rarr; Project From Existing Sources</cite> to create a project using
  the checkout.  At this point I could do native development using
  <cite>Build &rarr; Run Configure</cite> and <cite>Build &rarr; Build
    Project</cite> to configure and compile the source, but we want to
  cross-compile.
</p>
<p>
  To activate cross compiling go to <cite>Edit &rarr; Preferences &rarr; General
    &rarr; Installed Plugins</cite> and enable the <cite>Poky SDK</cite> plugin.
  This will add a new page <cite>Poky SDK</cite> to the preferences dialog.
  We're using an external toolchain so set the SDK root
  to <tt>/usr/local/poky/eabi-glibc/arm</tt> and the toolchain triplet
  to <tt>arm-poky-linux-gnueabi</tt>.  We're also using QEMU instead of a real
  device so set the paths to the kernel and root filesystem (remembering to
  uncompress the filesystem).  We're now done configuring, so the preferences
  dialog can be closed.  However notice that if you switch from using a SDK to
  building with a full Poky tree you can use the cross-compiler it produces
  directly, and you can also use an external device instead of QEMU: the only
  requirement is that you can SSH into it.
</p>
<p>
  Now to do the build.  Use <cite>Build &rarr; Run Configure</cite> to configure
  Tasks, passing any extra options you want.  Note that if you want to debug
  your build in the future you'll need to enter <tt>CFLAGS=-g</tt> here to
  disable optimisation (autoconf sets <tt>-O2 -g</tt> by default, which isn't
  useful for debugging).  The configure script is then ran with the right
  environment and options for cross compiling, and with any luck will
  successfully configure.  Then hit <cite>Build &rarr; Build Project</cite> and
  watch the cross-compiler do its thing.  When that has worked, you can prove to
  yourself that the right thing has happened.
</p>
<pre>$ file tasks
  tasks: ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.6.14, dynamically linked (uses shared libs), not stripped</pre>
<p>
  We have an ARM binary, ready for deployment.  Start the virtual machine
  with <cite>Tools &rarr; Start QEMU</cite> (this may ask for your root password
  to configure networking) and once it has booted you can install the project
  into the VM with <cite>Tools &rarr; Deploy</cite>.  This will run <tt>make
  install</tt> to a temporary directory and then rsync it to the VM.  Now you
  can either interact with the VM directly (if the application installed a new
  desktop file, then it should appear on the desktop), or use <cite>Tools &rarr;
  Run Remote</cite> to execute a binary directly: entering <tt>tasks</tt> will
  execute the freshly installed Tasks.  Neat, huh?
</p>
<p>
  For the final trick there is even GDB integration.  <cite>Tools &rarr; Debug
  Remote</cite> will let you specify a local binary (to extract debug symbols
  from, say <tt>src/gtk/tasks</tt>) and a remote binary to run, and then start a
  GDB on the VM and connect to it.  The binary will be initially running but
  paused at the entrypoint, so you can add breakpoints and
  then <tt>continue</tt> execution.
</p>
<p>
  Hopefully this post has been a good overview of the integration available
  between Poky and Anjuta.  In the future I hope to see Nemiver integrated into
  Anjuta, and gdbserver support in Nemiver, which would be a killer combination
  for Poky integration.
</p>
<p>
  <small>NP: <cite>One On Twoism</cite>, Various</small>
</p>
]]></content:encoded><category domain="http://www.burtonini.com">computers</category><dc:date>2008-05-20T16:40:00Z</dc:date></item><item><title>Gypsy and Geoclue in Fedora</title><guid isPermaLink="false">computers/geo-2008-05-19-10-50</guid><link>http://www.burtonini.com/blog/computers/geo-2008-05-19-10-50</link><description>Thanks to Peter Robinson, both Gypsy and Geoclue are scheduled for addition to Fedora 9 Updates. Thanks Peter!</description><content:encoded><![CDATA[    <p>
      Thanks to Peter Robinson, both Gypsy and Geoclue are scheduled for
      addition to Fedora 9 Updates.  Thanks Peter!
    </p>
]]></content:encoded><category domain="http://www.burtonini.com">computers</category><dc:date>2008-05-19T09:50:00Z</dc:date></item><item><title>Ridicule</title><guid isPermaLink="false">life/metal-2008-05-15-13-40</guid><link>http://www.burtonini.com/blog/life/metal-2008-05-15-13-40</link><description>The problem for mainstream pop since the 70s is that metal has siphoned off many of the best freaks and ...</description><content:encoded><![CDATA[    <blockquote><p><q>
          The problem for mainstream pop since the 70s is that metal has
          siphoned off many of the best freaks and losers.
    </q></p></blockquote>
    <p>
      It's not often you read an article in the Guardian about Adam and The
      Ants, Finnish Battle Metal bands, and being "cool",
      but <a href="http://blogs.guardian.co.uk/music/2008/05/in_metal_ridicule_is_nothing_t.html">today
        I did</a>.
    </p>
]]></content:encoded><category domain="http://www.burtonini.com">life</category><dc:date>2008-05-15T12:40:00Z</dc:date></item><item><title>Galaxy Dark</title><guid isPermaLink="false">life/chocolate-2008-05-14-12-06</guid><link>http://www.burtonini.com/blog/life/chocolate-2008-05-14-12-06</link><description>I got a free bar of the new Galaxy Dark with my shopping yesterday, which is basically a dark chocolate ...</description><content:encoded><![CDATA[    <p>
      I got a free bar of the new <cite>Galaxy Dark</cite> with my shopping
      yesterday, which is basically a dark chocolate (50%) version of a Galaxy
      bar.  Well, I say that, but...
    </p>
    <blockquote><p><q>
          The smooth Galaxy way to enjoy dark chocolate... deeply smooth,
          intensely delicious and not at all bitter.
    </q></p></blockquote>
    <p>
      This should be called <cite>Galaxy Fail</cite>.  It looks like dark
      chocolate but is pumped with sugar so it has a weird sickly sweet taste,
      nothing like the creamy taste of the original Galaxy.  I predict this
      product will be binned soon.
    </p>
]]></content:encoded><category domain="http://www.burtonini.com">life</category><dc:date>2008-05-14T11:06:00Z</dc:date></item><item><title>Today's Second Geohack</title><guid isPermaLink="false">computers/geo-2008-05-13-15-15</guid><link>http://www.burtonini.com/blog/computers/geo-2008-05-13-15-15</link><description>I managed to wangle a Fire Eagle invitation this morning, so over lunch I grabbed the Python API Kit and ...</description><content:encoded><![CDATA[    <p>
      I managed to wangle a Fire Eagle invitation this morning, so over lunch I
      grabbed the Python API Kit and threw it at the sample Gypsy client.
    </p>
    <pre>$ ./gypsy-fireeagle.py 00:0B:0D:88:A4:A3
got 51.861145 0.156275
Updated FireEagle</pre>
    <p>
      The first line is me running my script (this one is 64 lines, but it is
      half whitespace), telling it where my GPS is.  The second line is the
      current position that my rather cheap and nasty GPS determined.  The third
      line tells me that Fire Eagle has been updated with those coordinates.
    </p>
    <p>
      Suffice to say I'm very impressed with Yahoo's geocoding software.  My GPS
      never settles to an accurate reading and will happily jitter around a 20
      metre wide circle for hours, but the location Fire Eagle is reporting me
      at is <em>two doors away</em>.  I'm not exaggerating: it says number 9 on
      my street when it should be number 5.  That is some incredibly accurate
      mapping they have.
    </p>
]]></content:encoded><category domain="http://www.burtonini.com">computers</category><dc:date>2008-05-13T14:15:00Z</dc:date></item><item><title>Today's Geohack</title><guid isPermaLink="false">computers/geo-2008-05-13-10-50</guid><link>http://www.burtonini.com/blog/computers/geo-2008-05-13-10-50</link><description>Following hot on the heels of Yahoo's announcement of their Internet Location Platform , I wrote a quick 20-line Python ...</description><content:encoded><![CDATA[    <p>
      Following hot on the heels of Yahoo's announcement of
      their <a href="http://developer.yahoo.com/geo/">Internet Location
      Platform</a>, I wrote a quick 20-line Python hack to convert from latitude and
      longitude to a place name.  Because the ILP doesn't yet expose the ability
      to go from a position to a <acronym title="Where On Earth
      ID">WOEID</acronym> we have to ask the Flickr web services to do this
      first (as Flickr is owned by Yahoo this is using the same backend).  Once
      we have the WOEID, it can be then be looked up on the ILP and useful
      information obtained.  Example speak more than words:
    </p>
    <pre>$ python geohack.py 
Using position 51.872330 0.161950
Got WOEID 12775
Got town Bishop's Stortford</pre>
    <p>
      Now to write a <a href="http://geoclue.freedesktop.org">GeoClue</a>
      provider which will fill in the locality information from the position.
      Long-term grand plans involve integrating all of this geo magic into
      Postr, somehow.
    </p>
    <p>
      <small>NP: <cite>Third</cite>, Portishead</small>
    </p>
]]></content:encoded><category domain="http://www.burtonini.com">computers</category><dc:date>2008-05-13T09:50:00Z</dc:date></item><item><title>Fire Eagle Invitation?</title><guid isPermaLink="false">computers/fireeagle-2008-05-12-21-50</guid><link>http://www.burtonini.com/blog/computers/fireeagle-2008-05-12-21-50</link><description>Does anyone out there on the Intarwebs work for Yahoo, or have a friend who works at Yahoo? I'd really ...</description><content:encoded><![CDATA[    <p>
      Does anyone out there on the Intarwebs work for Yahoo, or have a friend
      who works at Yahoo?  I'd really like to give
      this <a href="http://fireeagle.yahoo.net/">Fire Eagle</a> thing a go,
      specifically integrating <a href="http://gypsy.freedesktop.org/">Gypsy</a>
      and <a href="http://geoclue.freedesktop.org/">GeoClue</a> with Fire Eagle,
      but it's invitation only at the moment...
    </p>
    <p>
      <strong>Update: </strong> I now have an account!
    </p>
]]></content:encoded><category domain="http://www.burtonini.com">computers</category><dc:date>2008-05-12T20:50:00Z</dc:date></item><item><title>GUPnP Basics, Part 1</title><guid isPermaLink="false">computers/gupnp-basics-2008-05-12-12-50</guid><link>http://www.burtonini.com/blog/computers/gupnp-basics-2008-05-12-12-50</link><description>For the last few days I've been learning more about UPnP and testing it with the few devices I have ...</description><content:encoded><![CDATA[    <!-- -*- Mode: html -*- -->
    <p>
      For the last few days I've been learning more about UPnP and testing it
      with the few devices I have around the house.  One of these is a cheap
      ADSL router, which apparently has the lamest UPnP stack on in existence.
      It does however support the <cite>WAN IP Connection</cite> interface, so
      you can use UPnP to get the external IP address and manipulate the port
      mapping.  I'll skip over the horrific security violations this involves,
      because it's a useful demonstration that the majority of people will be
      able to test.
    </p>
    <p>
      Today we'll start simple and get our external IP address using GUPnP.  The
      first thing to be done is to create a <cite>Control Point</cite>, which in
      the UPnP model handles discovery of resources, be them devices or services
      (a device can have multiple services).  When creating a control point you
      can specify the URN of the resource you want to target.  In this case we
      want all services providing <cite>WANIPConnection</cite> so we'd
      use <tt>urn:schemas-upnp-org:service:WANIPConnection:1</tt>.  If you want
      to browse for all services then use <tt>ssdp:all</tt> (SSDP being the
      <cite>Simple Service Discovery Protocol</cite>).
    </p>
    <pre>static GMainLoop *main_loop;

int
main (int argc, char **argv)
{
  GError *error = NULL;
  GUPnPContext *context;
  GUPnPControlPoint *cp;
  
  /* libsoup requires threading, so we have to initialise it */
  g_thread_init (NULL);
  g_type_init ();

  /* Default GLib context, default host IP, default port */
  context = gupnp_context_new (NULL, NULL, 0, &amp;error);
  if (error) g_error (error->message);

  /* Create a control point targeting WAN IP Connection services */
  cp = gupnp_control_point_new
    (context, "urn:schemas-upnp-org:service:WANIPConnection:1");
  /* The service-proxy-available signal is emitted when any services which match
     our target are found */
  g_signal_connect (cp,
		    "service-proxy-available",
		    G_CALLBACK (service_proxy_available_cb),
		    NULL);
  
  /* Tell the control point to start searching */
  gssdp_resource_browser_set_active (GSSDP_RESOURCE_BROWSER (cp), TRUE);

  /* Enter the main loop */
  main_loop = g_main_loop_new (NULL, FALSE);
  g_main_loop_run (main_loop);

  /* Clean up */
  g_main_loop_unref (main_loop);
  g_object_unref (cp);
  g_object_unref (context);
  
  return 0;
}

static void
service_proxy_available_cb (GUPnPControlPoint *cp,
                            GUPnPServiceProxy *proxy)
{
  /* ... */
}</pre>
    <p>
      Now we have an application which searches for the service we specified and
      calls <tt>service_proxy_available_cb</tt> for each one it found.  Now, to
      get the external IP address we need to invoke
      the <tt>GetExternalIPAddress</tt> action.  This action takes no in
      arguments, and has a single out argument called "NewExternalIPAddress".
      Yes, the naming scheme is <em>stupid</em>.  GUPnP has a set of methods to
      invoke actions -- which will be very familiar to anyone who has
      used <tt>dbus-glib</tt> -- where you pass a <tt>NULL</tt>-terminated varargs list
      of (name, type, value) tuples for the in arguments, then
      a <tt>NULL</tt>-terminated varargs list of (name, value, return location) tuples
      for the out arguments.  A simple implementation would be as follows.
    </p>
    <pre>static void
service_proxy_available_cb (GUPnPControlPoint *cp,
                            GUPnPServiceProxy *proxy)
{
  GError *error = NULL;
  char *ip = NULL;
  
  gupnp_service_proxy_send_action (proxy,
				   /* Action name and error location */
				   "GetExternalIPAddress", &amp;error,
				   /* IN args */
				   NULL,
				   /* OUT args */
				   "NewExternalIPAddress",
				   G_TYPE_STRING, &amp;ip,
				   NULL);
  
  if (error == NULL) {
    g_print ("External IP address is %s\n", ip);
    g_free (ip);
  } else {
    g_printerr ("Error: %s\n", error-&gt;message);
    g_error_free (error);
  }
  g_main_loop_quit (main_loop);
}</pre>
    <p>
      Note that <tt>_send_action</tt> blocks until the service has replied.  If you
      need to make non-blocking calls then
      use <tt>gupnp_service_proxy_begin_action</tt> which takes a callback.
    </p>
    <p>
      So, that is searching for services and invoking actions in GUPnP.  Next
      time I'll cover subscribing to state variables, and routers which can't
      count.
    </p>
    <p>
      <small>NP: <cite>Folk But Not Folk</cite>, Various</small>
    </p>
]]></content:encoded><category domain="http://www.burtonini.com">computers</category><dc:date>2008-05-12T11:50:00Z</dc:date></item><item><title>EphyDeli 0.3</title><guid isPermaLink="false">computers/ephydeli-2008-04-29-20-12</guid><link>http://www.burtonini.com/blog/computers/ephydeli-2008-04-29-20-12</link><description>EphyDeli is a Python extension for Epiphany that adds Post To Delicious menu and toolbar items for posting the current ...</description><content:encoded><![CDATA[    <p>
      EphyDeli is a Python extension for Epiphany that adds <cite>Post To
      Delicious</cite> menu and toolbar items for posting the current page to
      Del.icio.us.  I know of several people who use it frequently and the last
      release was in 2006, so I've obviously mastered the Unix philosophy well
      here!  This release was caused by those mean old Epiphany developers
      changing the API, many thanks to Thibauld Nion for noticing this and
      sending a patch.
    </p>
    <p>
      To download it you can either
      grab <a href="http://burtonini.com/computing/ephydeli-0.3.tar.gz">the
      tarball</a> or fetch the <a href="http://burtonini.com/bzr/ephydeli/">bzr
      tree</a>.
    </p>
]]></content:encoded><category domain="http://www.burtonini.com">computers</category><dc:date>2008-04-29T19:12:00Z</dc:date></item><item><title>It's Bubbling Hot</title><guid isPermaLink="false">computers/hot-2008-04-24-17-47</guid><link>http://www.burtonini.com/blog/computers/hot-2008-04-24-17-47</link><description>$ cat /proc/acpi/thermal_zone/*/temperature temperature: 84 C temperature: 90 C Maybe it's time to get a dedicated build machine, my poor ...</description><content:encoded><![CDATA[    <pre>$ cat /proc/acpi/thermal_zone/*/temperature
temperature:             84 C
temperature:             90 C</pre>
    <p>
      Maybe it's time to get a dedicated build machine, my poor laptop gets
      quite toasty when building Poky.  Then again it seems happy enough, so
      maybe I should just use an external keyboard to avoid boiling my hands.
    </p>

    <p>
      <small>NP: <cite>Oneric</cite>, Boxcutter</small>
    </p>
]]></content:encoded><category domain="http://www.burtonini.com">computers</category><dc:date>2008-04-24T16:47:00Z</dc:date></item><item><title>Postr 0.12</title><guid isPermaLink="false">computers/postr/postr-2008-04-23-10-30</guid><link>http://www.burtonini.com/blog/computers/postr/postr-2008-04-23-10-30</link><description>A quick Postr 0.12 release, mainly to fix an annoying bug but there are some neat new features here too. ...</description><content:encoded><![CDATA[<p>
  A quick Postr 0.12 release, mainly to fix an annoying bug but there are some
  neat new features here too.
</p>
<ul>
  <li>Update the status bar after uploading</li>
  <li>Add a Switch User menu item</li>
  <li>Add Add/Remove buttons to the image pane</li>
  <li>Install the Nautilus extension to the new extension path</li>
  <li>Don't select groups when the name is clicked</li>
  <li>Don't display errors when posting to moderated groups</li>
  <li>Show a warning on exit if there are images to upload (thanks Germán Póo-Caamaño)</li>
</ul>
<p>
  The <a href="http://burtonini.com/computing/postr-0.12.tar.gz">tarball is
    here</a>, and packages for Debian have been uploaded.
</p>
]]></content:encoded><category domain="http://www.burtonini.com">computers/postr</category><dc:date>2008-04-23T09:30:00Z</dc:date></item><item><title>Postr 0.11</title><guid isPermaLink="false">computers/postr/postr-2008-04-20-16-50</guid><link>http://www.burtonini.com/blog/computers/postr/postr-2008-04-20-16-50</link><description>I finally got around to fixing the very annoying text wrapping problem in postr.dev, I thought I best release Postr ...</description><content:encoded><![CDATA[<p>
  I finally got around to fixing the very annoying text wrapping problem in
  postr.dev, I thought I best release Postr 0.11:
</p>
<ul>
  <li>Add Send To Group options</li>
  <li>Add Privacy and Safety options</li>
  <li>Use a multi-line entry for the Description field</li>
  <li>Show the user's name in the status bar</li>
  <li>Fix the resizing of the preview</li>
</ul>
<p>
  The <a href="http://burtonini.com/computing/postr-0.11.tar.gz">tarball is
    here</a>, and packages for Debian have been uploaded.
</p>
]]></content:encoded><category domain="http://www.burtonini.com">computers/postr</category><dc:date>2008-04-20T15:50:00Z</dc:date></item><item><title>No Iain, I Am Luis Villa</title><guid isPermaLink="false">computers/i-am-luis-2008-04-17-14-40</guid><link>http://www.burtonini.com/blog/computers/i-am-luis-2008-04-17-14-40</link><description>Iain, you are clearly an imposter . And this perfect-sighted intruder , whoever he is, should be hunted down, because ...</description><content:encoded><![CDATA[    <p>
      Iain, you
      are <a href="http://blogs.gnome.org/iain/2008/04/17/i-am-luis-villa/">clearly
      an imposter</a>.  And
      this <a href="http://tieguy.org/blog/2008/04/16/new-headshot/">perfect-sighted
      intruder</a>, whoever he is, should be hunted down, because I am Luis
      Villa!
    </p>
    <p>
      <img src="http://burtonini.com/images/i-am-luis.jpg" alt="I Am Luis!"/>
    </p>
]]></content:encoded><category domain="http://www.burtonini.com">computers</category><dc:date>2008-04-17T13:40:00Z</dc:date></item><item><title>We're Hiring!</title><guid isPermaLink="false">computers/oh-jobs-2008-04-16-14-45</guid><link>http://www.burtonini.com/blog/computers/oh-jobs-2008-04-16-14-45</link><description>Here at OpenedHand Towers we've just announced some more job openings , so if you have skills in any of ...</description><content:encoded><![CDATA[    <p>
      Here at OpenedHand Towers we've just announced some
      more <a href="http://o-hand.com/jobs/">job openings</a>, so if you have
      skills in any of the kernel, X.org, GTK+, Clutter or OpenEmbedded then
      please have a look.  We're also after user interface/interaction
      designers, junior designers (print/web/UI), and have an student internship
      for a programmer.  Pretty much something for everyone!
    </p>
]]></content:encoded><category domain="http://www.burtonini.com">computers</category><dc:date>2008-04-16T13:45:00Z</dc:date></item><item><title>GNOME Mobile Moduleset</title><guid isPermaLink="false">computers/mobile-jhbuild-2008-04-15-16-10</guid><link>http://www.burtonini.com/blog/computers/mobile-jhbuild-2008-04-15-16-10</link><description>I just committed to JHBuild three new modulesets, mobile-2.24 , pimlico and matchbox , so that GNOME people wanting to ...</description><content:encoded><![CDATA[    <p>
      I just committed to JHBuild three new
      modulesets, <tt>mobile-2.24</tt>, <tt>pimlico</tt> and <tt>matchbox</tt>,
      so that GNOME people wanting to develop against
      the <a href="http://gnome.org/mobile/">GNOME Mobile</a> platform can use
      tools they know to build everything they need.
    </p>
    <dl>
      <dt><tt>mobile-2.24</tt></dt>
      <dd><p>This changes GConf and EDS to use the DBus ports, and
	  provides <tt>meta-mobile-platform</tt> which builds the complete
	  platform.</p></dd>

      <dt><tt>pimlico</tt></dt>
      <dd><p>This builds Contacts, Dates and Tasks, providing <tt>meta-pimlico</tt>.</p></dd>

      <dt><tt>matchbox</tt></dt>
      <dd><p>This builds Matchbox Panel, Matchbox Desktop, Matchbox Keyboard and
      Matchbox Window Manager, providing <tt>meta-matchbox</tt>.</p></dd>
    </dl>
    <p>
      Also, <a href="http://pokylinux.org/">Poky</a> is building images nightly
      with the complete platform in, which will let you build and test software
      in a PDA-style environment with QEMU, running on x86 or a number of
      ARM-based devices (such as Nokia N800, Sharp Zaurus or OpenMoko).
    </p>
    <p>
      Last week at the Collaboration Summit in Austin (which I couldn't attend
      for <a href="http://www.burtonini.com/blog/life/baby-2008-04-07-09-50">personal
      reasons</a>) there was a day-long GNOME Mobile meeting, as a result of
      which there is now a long list of packages which need to be considered for
      addition to the Platform (such as HAL, Gypsy and Geoclue), and a few
      changes (such as replacing gnome-vfs with gvfs).  I hope to review the
      proposals fairly shortly, so that we can hopefully make an initial GNOME
      Mobile 2.24 platform release alongside the Desktop release in September.
    </p>
    <p>
      In other
      news, <a href="http://laughingsquid.com/a-cat-playing-the-theremin/">this
	is exactly what the Internet is for</a>.
    </p>
    <p>
      <small>NP: <cite>Blue Moon Station</cite>, Solar Fields</small>
    </p>
]]></content:encoded><category domain="http://www.burtonini.com">computers</category><dc:date>2008-04-15T15:10:00Z</dc:date></item><item><title>Brain Gym</title><guid isPermaLink="false">life/brain-gym-2008-04-10-11-00</guid><link>http://www.burtonini.com/blog/life/brain-gym-2008-04-10-11-00</link><description>Man the lifeboats. The idiots are winning. Last week I watched, open-mouthed, a Newsnight piece on the spread of &quot;Brain ...</description><content:encoded><![CDATA[    <blockquote><p>
	<q>Man the lifeboats. The idiots are winning. Last week I watched,
	  open-mouthed, a Newsnight piece on the spread of "Brain Gym" in
	  British schools. I'd read about Brain Gym before - a few years back,
	  in Ben Goldacre's excellent Bad Science column for this newspaper -
	  but seeing it in action really twisted my rage dial.</q>
    </p></blockquote>
    <p>
      <a href="http://www.guardian.co.uk/commentisfree/2008/apr/07/education">Charlie
      Brooker in The Guardian</a> gets deservedly angry over Brain Gym, after seeing
      an article about it on Newsnight
      (<a href="http://youtube.com/watch?v=M5rH7kDcFpc">1</a>, <a href="http://youtube.com/watch?v=YjRhYP5faTU">2</a>
      on YouTube).  The creator of Brain Gym was <em>destroyed</em> by Paxman,
      rather too easily to be honest.
    </p>
    <p>
      <small>NP: <cite>Voices</cite>, Vangelis (via Last.fm)</small>
    </p>
]]></content:encoded><category domain="http://www.burtonini.com">life</category><dc:date>2008-04-10T10:00:00Z</dc:date></item><item><title>12 Weeks</title><guid isPermaLink="false">life/baby-2008-04-07-09-50</guid><link>http://www.burtonini.com/blog/life/baby-2008-04-07-09-50</link><description>12 weeks and one day, to be precise. Vicky is pregnant!</description><content:encoded><![CDATA[    <p>
      <a class="noline" href="http://www.flickr.com/photos/rossburton/2394765069/" title="12 Weeks">
	<img class="thumbnail" src="http://farm3.static.flickr.com/2073/2394765069_3a4fae6034.jpg" width="500" height="337" alt="12 Weeks" />
      </a>
    </p>
    <p>
      12 weeks and one day, to be precise.
    </p>
    <p>
      Vicky is pregnant!
    </p>
]]></content:encoded><category domain="http://www.burtonini.com">life</category><dc:date>2008-04-07T08:50:00Z</dc:date></item><item><title>Ely</title><guid isPermaLink="false">life/ely-2008-04-02-22-45</guid><link>http://www.burtonini.com/blog/life/ely-2008-04-02-22-45</link><description>Today, we went to Ely. Nice (very small) city, with a rocking cathedral. &gt; &lt;a class=&quot;noline&quot; href=&quot;http: /www.flickr.com/photos/rossburton/2382903929/&quot; title=&quot;Ely Cathedral ...</description><content:encoded><![CDATA[<p>
  Today, we went to Ely.  Nice (very small) city, with a rocking cathedral.
</p>
<p>
  <a class="noline" href="http://www.flickr.com/photos/rossburton/2383737948/" title="Ely Cathedral by Ross Burton, on Flickr">
    <img class="thumbnail" src="http://farm3.static.flickr.com/2379/2383737948_2031d1f550.jpg" width="500" height="333" alt="Ely Cathedral" />
  </a>
  <br/>
  <a class="noline" href="http://www.flickr.com/photos/rossburton/2382903929/" title="Ely Cathedral by Ross Burton, on Flickr">
    <img class="thumbnail" src="http://farm4.static.flickr.com/3217/2382903929_437777164b.jpg" width="500" height="333" alt="Ely Cathedral" />
  </a>
</p>
<p>
  In other news, the new Lightroom 2 beta is <em>very</em> nice.
</p>
]]></content:encoded><category domain="http://www.burtonini.com">life</category><dc:date>2008-04-02T21:45:00Z</dc:date></item><item><title>Dear Interwebs: Secure SMTP Relay Wanted</title><guid isPermaLink="false">computers/mail-2008-03-30-14-22</guid><link>http://www.burtonini.com/blog/computers/mail-2008-03-30-14-22</link><description>I'm looking for a basic SMTP relay which supports SMTP AUTH, TLS, supports the sendmail interface, and has a local ...</description><content:encoded><![CDATA[<p>
  I'm looking for a basic SMTP relay which supports SMTP AUTH, TLS, supports the
  sendmail interface, and has a local mail queue, so that I can send mail from
  my laptop in Evolution (to localhost, or calls sendmail) and the shell
  (calling sendmail) when online or offline.
</p>
<p>
  I need SMTP AUTH and TLS, which means nbsmtp, masqmail, and nullmailer are
  out.  I want a local queue for when I'm not online which means esmtp, ssmtp,
  msmtp, and nullmailer are out (I'm not convinced that msmtp's queue scripts
  are reliable enough).  Surely there must be a simple SMTP relay which will
  reliably manage a queue if the mail cannot be sent!  If not, does anyone know
  of a good guide to configuring Postfix or Exim to do this?
</p>

]]></content:encoded><category domain="http://www.burtonini.com">computers</category><dc:date>2008-03-30T13:22:00Z</dc:date></item><item><title>New Gypsy Release</title><guid isPermaLink="false">computers/gypsy-2008-03-27-16-00</guid><link>http://www.burtonini.com/blog/computers/gypsy-2008-03-27-16-00</link><description>Coding Legend Iain has just released Gypsy 0.6 , the all-new GPS multiplexing daemon which focuses on being lean and ...</description><content:encoded><![CDATA[    <p>
      <abbr title="Gypsy!  Blingtacity! gnome-cd!!">Coding
      Legend</abbr> <a href="http://blogs.gnome.org/iain/">Iain</a> has just
      released <a href="http://gypsy.freedesktop.org">Gypsy 0.6</a>, the all-new
      GPS multiplexing daemon which focuses on being lean and easy to use, and
      not on, erm, putting your GPS on the Internet or something weird.
    </p>
    <p>
      Because I'm fairly lame there are not matching Debian packages yet, but
      I'll get around to that tomorrow.  In other news, a very nice man called
      Ian Lawrence
      wrote <a href="http://www.ianlawrence.info/random-stuff/django-bluetooth-and-gps-on-ubuntu-mobile">a
      buzzword-compliant tutorial</a> where he uses Gypsy to talk to a Bluetooth
      GPS, tests it with
      my <a href="http://www.burtonini.com/blog/computers/gypsy-2007-12-17-10-30">Gypsy
      Status 10-minute hack</a>, and then uses Django to redirect the user to
      the relevant geohash.org page.
    </p>
    <p>
      <small>NP: <cite>Remembranza</cite>, Murcof</small>
    </p>
]]></content:encoded><category domain="http://www.burtonini.com">computers</category><dc:date>2008-03-27T16:00:00Z</dc:date></item></channel></rss>