<?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"
	>

<channel>
	<title>Rob Bradford's Weblog</title>
	<atom:link href="http://www.robster.org.uk/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://www.robster.org.uk/blog</link>
	<description>The monkey with the keyboard!</description>
	<pubDate>Sat, 13 Jun 2009 16:04:53 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.1</generator>
	<language>en</language>
			<item>
		<title>A little bit more RESTful</title>
		<link>http://www.robster.org.uk/blog/2009/06/13/a-little-bit-more-restful/</link>
		<comments>http://www.robster.org.uk/blog/2009/06/13/a-little-bit-more-restful/#comments</comments>
		<pubDate>Sat, 13 Jun 2009 16:04:53 +0000</pubDate>
		<dc:creator>robster</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.robster.org.uk/blog/?p=89</guid>
		<description><![CDATA[So my last blog post about my work on web services integration: GNOME web services integration: Introducing librest was quite some time ago. Apologies, things have been pretty busy with Moblin. 
There are two traditional models for parsing XML, SAX and DOM based methods. These are both pretty heavyweight technologies but for the work i&#8217;m [...]]]></description>
			<content:encoded><![CDATA[<p>So my last blog post about my work on web services integration: <a href="http://www.robster.org.uk/blog/2009/02/13/introducing-librest/">GNOME web services integration: Introducing librest</a> was quite some time ago. Apologies, things have been pretty busy with <a href="http://www.moblin.org/">Moblin</a>. </p>
<p>There are two traditional models for parsing XML, SAX and DOM based methods. These are both pretty heavyweight technologies but for the work i&#8217;m doing on web services I want something a bit lighter and a bit simpler to <b>extract just the information I care about</b>. Inspired by the <a href="http://www.crummy.com/software/BeautifulSoup/">Beautiful Soup</a> HTML screen-scraping library I sought to build an API that lets you trivially find the content you are looking for.</p>
<p>Here is an example:</p>
<pre>
n = rest_xml_node_find (root, “photo”);
while (n)
{
  title = rest_xml_node_find (n, “title”);
  printf (“%s”, title->content);
  n = n->next;
}
</pre>
<p>Fundamentally the libREST XML parsing strategy turns the XML into a tree of nodes, where a node can have siblings (accessed through a next pointer) or childen (stored in a hash of child tag name to node). This combined with a simple tree walking function (rest_xml_node_find) results in very minimalistic code for extracting just the content you care about.</p>
<p>You can find the source code for libREST in <a href="http://git.moblin.org/cgit.cgi/librest/">git</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.robster.org.uk/blog/2009/06/13/a-little-bit-more-restful/feed/</wfw:commentRss>
		</item>
		<item>
		<title>GNOME 3.0</title>
		<link>http://www.robster.org.uk/blog/2009/04/02/gnome-30/</link>
		<comments>http://www.robster.org.uk/blog/2009/04/02/gnome-30/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 20:01:03 +0000</pubDate>
		<dc:creator>robster</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.robster.org.uk/blog/?p=75</guid>
		<description><![CDATA[I really like the 3.0 plan. There are two extra areas in particular that i&#8217;d like to see us attack:
Firstly (the smaller of the two) i&#8217;d like to see a revamping of the Evolution client libraries, ECal &#038; EBook, in particular ECalComponent is horrible. The work that Chris and I have been doing on libjana [...]]]></description>
			<content:encoded><![CDATA[<p>I really like the <a href="http://live.gnome.org/ThreePointZero/Plan">3.0 plan</a>. There are two extra areas in particular that i&#8217;d like to see us attack:</p>
<p>Firstly (the smaller of the two) i&#8217;d like to see a revamping of the Evolution client libraries, ECal &#038; EBook, in particular ECalComponent is horrible. The work that <a href="http://chrislord.net/">Chris</a> and I have been doing on <a href="http://svn.gnome.org/viewvc/jana/trunk">libjana</a> is showing some of the direction that such a library for accessing calendaring could go. This requires an ABI &#038; API break to do this effectively (hence being a 3.0 thing.) </p>
<p><a href="http://www.burtonini.com">Ross</a> has also been doing sterling work on the server side of things by migrating the eds-dbus fork into the mainline. This is now basically just waiting on the migration to git and a double review of the calendaring code.</p>
<p>The second and more significant thing that I care about is that I think we need to bring web services closer into the desktop. I&#8217;ve been persuaded that desktop applications are not dead but I think we need compelling, transparent and easy ways to integrate with &#8220;cloud&#8221; services. In particular we are entering an age of &#8220;almost always on&#8221; connectivity. Many people already find little use for their computers if they are not connected to the Internet. However since the omnipresent and omni-reliable 3G/wireless/wimax utopia is not yet with us we live in a world where we get connectivity in bursts as we travel, socialise and live. Our platform should cunningly pull down interesting content when the user is on cheap and reliable connectivity which they can then peruse when offline or on an expensive and unreliable connection.</p>
<p>A project that Ross and I have been working on at Intel to bring social networks to the desktop/mobile is called <a href="http://git.moblin.org/cgit.cgi/mojito/">Mojito</a>. I&#8217;ll cover this in more detail soon.</p>
<p><center><br />
<a href="http://www.flickr.com/photos/recbradford/2659623854/" title="Ross inspecting the wall by Rob Bradford, on Flickr"><img src="http://farm4.static.flickr.com/3109/2659623854_d05ef39e6a.jpg" width="500" height="333" alt="Ross inspecting the wall" /></a><br />
<i>Our hero: Ross Burton</i><br />
</center></p>
]]></content:encoded>
			<wfw:commentRss>http://www.robster.org.uk/blog/2009/04/02/gnome-30/feed/</wfw:commentRss>
		</item>
		<item>
		<title>London GNOME Beer v2.2</title>
		<link>http://www.robster.org.uk/blog/2009/02/24/london-gnome-beer-v22/</link>
		<comments>http://www.robster.org.uk/blog/2009/02/24/london-gnome-beer-v22/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 10:32:34 +0000</pubDate>
		<dc:creator>robster</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.robster.org.uk/blog/?p=71</guid>
		<description><![CDATA[Just a reminder that London GNOME Beer (v2.2) will be happening this Friday. Add your name to the wiki here.
]]></description>
			<content:encoded><![CDATA[<p>Just a reminder that London GNOME Beer (v2.2) will be happening this Friday. Add your name to the wiki <a href="http://live.gnome.org/LondonBeer/Version2.2">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.robster.org.uk/blog/2009/02/24/london-gnome-beer-v22/feed/</wfw:commentRss>
		</item>
		<item>
		<title>GNOME web services integration: Introducing librest</title>
		<link>http://www.robster.org.uk/blog/2009/02/13/introducing-librest/</link>
		<comments>http://www.robster.org.uk/blog/2009/02/13/introducing-librest/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 16:05:22 +0000</pubDate>
		<dc:creator>robster</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.robster.org.uk/blog/?p=64</guid>
		<description><![CDATA[When OpenedHand was first acquired by Intel I was asked to look into ways of making it easier to access web services from within GLIBish (i.e. Clutter &#038; GTK) applications. We figured that as web services more important to the users of Moblin, and thus by extension, GNOME we needed some way to help developers [...]]]></description>
			<content:encoded><![CDATA[<p>When OpenedHand was first acquired by Intel I was asked to look into ways of making it easier to access web services from within GLIBish (i.e. Clutter &#038; GTK) applications. We figured that as web services more important to the users of Moblin, and thus by extension, GNOME we needed some way to help developers access them.</p>
<p>So, I did some research, read up on <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">RESTful</a>. And thought yay, lots of services are claiming to be RESTful, let&#8217;s see if we can come up with some kind of service description language that we can autogenerate code from (ala, dbus-glib). Turns out that very few services actually adhere to this RESTful definition and my attempts to produce some kind of description language resulted in more lines of XML than code, hmmm.</p>
<p>Anyway, I persevered and looked at building an API that I would fine easy to drive RESTful web services with. After a few iterations I decided upon designing something with a somewhat Cairo-esque API. </p>
<p><center><br />
<a href="http://www.flickr.com/photos/recbradford/3249610757/"><br />
<img src="http://farm4.static.flickr.com/3471/3249610757_a2a6e2fe95.jpg" /><br />
</a><br />
<i>Marco thinking RESTful thoughts.</i><br />
</center></p>
<p>The API is comprised of two parts, the first half is for making the requests (and is based on libsoup.) Here is an example:</p>
<pre>
  proxy = rest_proxy_new ("http://www.flickr.com/services/rest/", FALSE);
  call = rest_proxy_new_call (proxy);
  rest_proxy_call_add_params (call,
                              "method", "flickr.test.echo",
                              "api_key", "<insert api key here>",
                              "format", "xml",
                              NULL);
  rest_proxy_call_run (call, NULL, NULL); /* obviously can do async instead */
  payload = rest_proxy_call_get_payload (call);
  len = rest_proxy_call_get_payload_length (call);
</pre>
<p>Easy, huh? Anyway, enough rambling for today&#8217;s blog post, next week i&#8217;ll talk about the <i>really</i> interesting stuff we&#8217;re (<a href="http://www.burtonini.com">Ross</a> and I) are working on to make parsing XML fun (yes, really, honestly, <i>fun</i>.)</p>
<p>Oh and and the source code can be found <a href="http://git.moblin.org/cgit.cgi/librest/">in git</a> and it&#8217;s licensed under LGPLv2.1, etc etc. (Yes, we have too many libraries, when mature perhaps we can move this into libsoup.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.robster.org.uk/blog/2009/02/13/introducing-librest/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Lazy web: iPod Shuffle</title>
		<link>http://www.robster.org.uk/blog/2008/07/24/lazy-web-ipod-shuffle/</link>
		<comments>http://www.robster.org.uk/blog/2008/07/24/lazy-web-ipod-shuffle/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 10:07:07 +0000</pubDate>
		<dc:creator>robster</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.robster.org.uk/blog/2008/07/24/lazy-web-ipod-shuffle/</guid>
		<description><![CDATA[My iRiver T60 has died after only 6 months of occasional use. This sucks. But since this is my 3rd MP3 player in ~ 2 years I feel i&#8217;m somewhat cursed in my ability to lose/break them. So my question is this: If I go into John Lewis (because it&#8217;s easy to take back if [...]]]></description>
			<content:encoded><![CDATA[<p>My iRiver T60 has died after only 6 months of occasional use. This sucks. But since this is my 3rd MP3 player in ~ 2 years I feel i&#8217;m somewhat cursed in my ability to lose/break them. So my question is this: If I go into John Lewis (because it&#8217;s easy to take back <del>if</del> when it stops working) on Saturday and buy a shiny shiny iPod shuffle and turn myself into a complete sell-out will it *just* work with Rhythmbox 0.11.5? Will it just work or will I need to find a Mac to activate it or something painful like that?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.robster.org.uk/blog/2008/07/24/lazy-web-ipod-shuffle/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Clutter 0.8 Packages</title>
		<link>http://www.robster.org.uk/blog/2008/07/13/clutter-08-packages/</link>
		<comments>http://www.robster.org.uk/blog/2008/07/13/clutter-08-packages/#comments</comments>
		<pubDate>Sun, 13 Jul 2008 11:17:22 +0000</pubDate>
		<dc:creator>robster</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.robster.org.uk/blog/2008/07/13/clutter-08-packages/</guid>
		<description><![CDATA[Packages for Clutter 0.8 have been uploaded to the Debian archive and to the OpenedHand Debian repository. There are packages available for Debian unstable and Ubuntu hardy (no gutsy i&#8217;m afraid, glib is too old.)
And in completely unrelated news thanks to everyone involved in the organisation of GUADEC: Good work guys!
]]></description>
			<content:encoded><![CDATA[<p>Packages for Clutter 0.8 have been uploaded to the Debian archive and to the <a href="http://debian.o-hand.com">OpenedHand Debian repository</a>. There are packages available for Debian unstable and Ubuntu hardy (no gutsy i&#8217;m afraid, glib is too old.)</p>
<p>And in completely unrelated news thanks to everyone involved in the organisation of GUADEC: Good work guys!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.robster.org.uk/blog/2008/07/13/clutter-08-packages/feed/</wfw:commentRss>
		</item>
		<item>
		<title>GUADEC Flickr group</title>
		<link>http://www.robster.org.uk/blog/2008/07/11/guadec-flickr-group/</link>
		<comments>http://www.robster.org.uk/blog/2008/07/11/guadec-flickr-group/#comments</comments>
		<pubDate>Fri, 11 Jul 2008 06:47:06 +0000</pubDate>
		<dc:creator>robster</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.robster.org.uk/blog/2008/07/11/guadec-flickr-group/</guid>
		<description><![CDATA[Despite a couple of false starts with the Flickr group (thanks Claudio for nudging me), the group should now be ready to accept your photos!
]]></description>
			<content:encoded><![CDATA[<p>Despite a couple of false starts with the Flickr group (thanks <a href="http://www.gnome.org/~csaavedra/news-2008-07.html#D11">Claudio</a> for nudging me), the group should now be ready to accept your photos!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.robster.org.uk/blog/2008/07/11/guadec-flickr-group/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Patchsquad BOF [Updated]</title>
		<link>http://www.robster.org.uk/blog/2008/07/10/patchsquad-bof/</link>
		<comments>http://www.robster.org.uk/blog/2008/07/10/patchsquad-bof/#comments</comments>
		<pubDate>Thu, 10 Jul 2008 15:10:07 +0000</pubDate>
		<dc:creator>robster</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.robster.org.uk/blog/2008/07/10/patchsquad-bof/</guid>
		<description><![CDATA[Since Kristian&#8217;s excellent GTK State of the Union talk was today his slot is now available for a Patchsquad BOF. So that&#8217;s tomorrow at 11am. Thanks Behdad for allowing us to grab this.
A little background on the idea of a Patchsquad: Primarily the idea is to reduce the workload of maintainers by commenting, not reviewing, [...]]]></description>
			<content:encoded><![CDATA[<p>Since Kristian&#8217;s excellent GTK State of the Union talk was today his slot is now available for a Patchsquad BOF. So that&#8217;s tomorrow at 11am. Thanks Behdad for allowing us to grab this.</p>
<p>A little background on the idea of a <a href="http://live.gnome.org/PatchSquad">Patchsquad</a>: Primarily the idea is to reduce the workload of maintainers by commenting, <b>not reviewing</b>, patches that are waiting in Bugzilla. This may include testing, checking for obvious issues and gentle pestering of maintainers. Lucas held a BOF last year to introduce the idea that was well attended and a lot said but interest seems to have twindled. Myself and Diego want to try reinvigorate the idea!</p>
<p><b>Update: Whoops! Looks like we haven&#8217;t got that slot afterall. If you&#8217;re interested in the Patchsquad pleas some along and speak to either Diego or myself.</b></p>
]]></content:encoded>
			<wfw:commentRss>http://www.robster.org.uk/blog/2008/07/10/patchsquad-bof/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Oh the pain</title>
		<link>http://www.robster.org.uk/blog/2008/05/16/oh-the-pain/</link>
		<comments>http://www.robster.org.uk/blog/2008/05/16/oh-the-pain/#comments</comments>
		<pubDate>Fri, 16 May 2008 00:04:46 +0000</pubDate>
		<dc:creator>robster</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.robster.org.uk/blog/2008/05/16/oh-the-pain/</guid>
		<description><![CDATA[Lesson for today: avoid situations such that the GObject dispose vfunc gets called on the same object  from different threads interleaved with each other. Bad things happen.
]]></description>
			<content:encoded><![CDATA[<p>Lesson for today: avoid situations such that the GObject dispose vfunc gets called on the same object  from different threads interleaved with each other. Bad things happen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.robster.org.uk/blog/2008/05/16/oh-the-pain/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Blood, Sweat and Tea on the radio</title>
		<link>http://www.robster.org.uk/blog/2008/04/04/blood-sweat-and-tea-on-the-radio/</link>
		<comments>http://www.robster.org.uk/blog/2008/04/04/blood-sweat-and-tea-on-the-radio/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 21:32:08 +0000</pubDate>
		<dc:creator>robster</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.robster.org.uk/blog/2008/04/04/blood-sweat-and-tea-on-the-radio/</guid>
		<description><![CDATA[I&#8217;ve just finished listening to the broadcast of a radio play based on Blood, Sweat and Tea a collection of posts from by favourite blog Random Acts of Reality. Random Acts is written by &#8220;Tom Reynolds&#8221; (a pseudonym) an EMT with the London Ambulance service. I guess I enjoy reading this blog so much because [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just finished listening to the broadcast of a radio play based on <a href="http://www.amazon.co.uk/Blood-Sweat-Tea-Adventures-Inner-city/dp/1905548230">Blood, Sweat and Tea</a> a collection of posts from by favourite blog <a href="http://randomreality.blogware.com/">Random Acts of Reality</a>. Random Acts is written by &#8220;Tom Reynolds&#8221; (a pseudonym) an EMT with the London Ambulance service. I guess I enjoy reading this blog so much because it shows an insight into the lives of members of an essential but very much unappreciated occupation. Well worth adding to your daily blog intake.</p>
<p><a href="http://www.bbc.co.uk/radio/aod/shows/rpms/radio4/fridayplay.ram">Direct listen again link.</a> Playing in the browser is all garbled :-/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.robster.org.uk/blog/2008/04/04/blood-sweat-and-tea-on-the-radio/feed/</wfw:commentRss>
<enclosure url="http://www.bbc.co.uk/radio/aod/shows/rpms/radio4/fridayplay.ram" length="0" type="audio/x-pn-realaudio" />
		</item>
	</channel>
</rss>
