<?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>James Henstridge &#187; Ubuntu</title>
	<atom:link href="http://blogs.gnome.org/jamesh/tag/ubuntu/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.gnome.org/jamesh</link>
	<description>Random stuff</description>
	<lastBuildDate>Tue, 08 Mar 2011 14:15:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Launchpad code scanned by Ohloh</title>
		<link>http://blogs.gnome.org/jamesh/2009/10/27/launchpad-ohloh/</link>
		<comments>http://blogs.gnome.org/jamesh/2009/10/27/launchpad-ohloh/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 08:48:18 +0000</pubDate>
		<dc:creator>James Henstridge</dc:creator>
				<category><![CDATA[Uncategorised]]></category>
		<category><![CDATA[Bazaar]]></category>
		<category><![CDATA[Launchpad]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/jamesh/?p=448</guid>
		<description><![CDATA[Today Ohloh finished importing the Launchpad source code and produced the first source code analysis report.  There seems to be something fishy about the reported line counts (e.g. -3,291 lines of SQL), but the commit counts and contributor list look about right.  If you&#8217;re interested in what sort of effort goes into producing an application [...]]]></description>
			<content:encoded><![CDATA[<p>Today <a href="http://www.ohloh.net/">Ohloh</a> finished importing the Launchpad source code and produced the first <a title="Launchpad.net Code Analysis" href="https://www.ohloh.net/p/launchpad/analyses/latest">source code analysis report</a>.  There seems to be something fishy about the reported line counts (e.g. -3,291 lines of SQL), but the commit counts and contributor list look about right.  If you&#8217;re interested in what sort of effort goes into producing an application like Launchpad, then it is worth a look.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/jamesh/2009/10/27/launchpad-ohloh/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>More Rygel testing</title>
		<link>http://blogs.gnome.org/jamesh/2009/06/19/more-rygel-testing/</link>
		<comments>http://blogs.gnome.org/jamesh/2009/06/19/more-rygel-testing/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 16:06:19 +0000</pubDate>
		<dc:creator>James Henstridge</dc:creator>
				<category><![CDATA[Uncategorised]]></category>
		<category><![CDATA[Gnome]]></category>
		<category><![CDATA[PlayStation 3]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[UPnP]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/jamesh/?p=436</guid>
		<description><![CDATA[In my last post, I said I had trouble getting Rygel&#8217;s tracker backend to function and assumed that it was expecting an older version of the API.  It turns out I was incorrect and the problem was due in part to Ubuntu specific changes to the Tracker package and the unusual way Rygel was trying [...]]]></description>
			<content:encoded><![CDATA[<p>In my <a title="Ubuntu packages for Rygel" href="http://blogs.gnome.org/jamesh/2009/06/17/ubuntu-packages-for-rygel/">last post</a>, I said I had trouble getting Rygel&#8217;s tracker backend to function and assumed that it was expecting an older version of the API.  It turns out I was incorrect and the problem was due in part to Ubuntu specific changes to the Tracker package and the unusual way Rygel was trying to talk to Tracker.</p>
<p>The Tracker packages in Ubuntu remove the D-Bus service activation file for the &#8220;org.freedesktop.Tracker&#8221; bus name so that if the user has not chosen to run the service (or has killed it), it won&#8217;t be automatically activated.  Unfortunately, instead of just calling a Tracker D-Bus method, Rygel was trying to manually activate Tracker via a StartServiceByName() call.  This would fail even if Tracker was running, hence my assumption that it was a tracker API version problem.</p>
<p>This problem will be fixed in the next Rygel release: it will call a method on Tracker directly to see if it is available.  With that problem out of the way, I was able to try out the backend.  It was providing a lot more metadata to the PS3 so more files were playable, which was good.  Browsing folders was also much quicker than the folder back end.  There were a few problems though:</p>
<ol>
<li>Files are exposed in one of three folders: &#8220;All Images&#8221;, &#8220;All Music&#8221; or &#8220;All Videos&#8221;.  With even a moderate sized music collection, this is unmangeable.  It wasn&#8217;t clear what order the files were being displayed in either.</li>
<li>There was quite a long delay before video playback starts.</li>
</ol>
<p>When the folder back end fixes the metadata and speed issues, I&#8217;d be inclined to use it over the tracker back end.</p>
<p><strong>Video Transcoding</strong></p>
<p>Getting video transcoding working turned out to require a newer GStreamer (0.10.23), the &#8220;unstripped&#8221; ffmpeg libraries and the &#8220;bad&#8221; GStreamer plugins package from multiverse.  With those installed, things worked pretty well.  With these dependencies encoded in the packaging, it&#8217;d be pretty painless to get it set up.  Certainly much easier than setting things up in MediaTomb&#8217;s configuration file.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/jamesh/2009/06/19/more-rygel-testing/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Ubuntu packages for Rygel</title>
		<link>http://blogs.gnome.org/jamesh/2009/06/17/ubuntu-packages-for-rygel/</link>
		<comments>http://blogs.gnome.org/jamesh/2009/06/17/ubuntu-packages-for-rygel/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 04:17:58 +0000</pubDate>
		<dc:creator>James Henstridge</dc:creator>
				<category><![CDATA[Uncategorised]]></category>
		<category><![CDATA[Gnome]]></category>
		<category><![CDATA[Launchpad]]></category>
		<category><![CDATA[PlayStation 3]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[UPnP]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/jamesh/?p=431</guid>
		<description><![CDATA[I promised Zeeshan that I&#8217;d have a look at his Rygel UPnP Media Server a few months back, and finally got around to doing so.  For anyone else who wants to give it a shot, I&#8217;ve put together some Ubuntu packages for Jaunty and Karmic in a PPA here: https://launchpad.net/~jamesh/+archive/upnp Most of the packages there [...]]]></description>
			<content:encoded><![CDATA[<p>I promised <a href="http://zee-nix.blogspot.com/">Zeeshan</a> that I&#8217;d have a look at his <a href="http://live.gnome.org/Rygel">Rygel UPnP Media Server</a> a few months back, and finally got around to doing so.  For anyone else who wants to give it a shot, I&#8217;ve put together some Ubuntu packages for Jaunty and Karmic in a <a href="https://help.launchpad.net/Packaging/PPA">PPA</a> here:</p>
<ul>
<li><a href="https://launchpad.net/~jamesh/+archive/upnp">https://launchpad.net/~jamesh/+archive/upnp</a></li>
</ul>
<p>Most of the packages there are just rebuilds or version updates of existing packages, but the Rygel ones were done from scratch.  It is the first Debian package I&#8217;ve put together from scratch and it wasn&#8217;t as difficult as I thought it might be.  The tips from the &#8220;Teach me packaging&#8221; workshop at the Canonical All Hands meeting last month were quite helpful.</p>
<p>After installing the package, you can configure it by running the &#8220;rygel-preferences&#8221; program.  The first notebook page lets you configure the transcoding support, and the second page lets you configure the various media source plugins.</p>
<p>I wasn&#8217;t able to get the <a href="http://projects.gnome.org/tracker/">Tracker</a> plugin working on my system, which I think is due to Rygel expecting the older Tracker D-Bus API.  I was able to get the folder plugin working pretty easily though.</p>
<p>Once things were configured, I ran Rygel itself and an extra icon showed up on my PlayStation 3.  Getting folder listings was quite slow, but apparently this is limited to the folder back end and is currently being worked on.  It&#8217;s a shame I wasn&#8217;t able to test the more mature Tracker back end.</p>
<p>With <a title="Linear pulse code modulation" href="http://en.wikipedia.org/wiki/Linear_pulse_code_modulation">LPCM</a> transcoding enabled, I was able to successfully play a <a href="http://xiph.org/vorbis/">Vorbis</a> file on the PS3.  With transcoding disabled, I wasn&#8217;t able to play any music &#8212; even files in formats the PS3 could handle natively.  This was apparently due to the folder backend not providing the necessary metadata.  I didn&#8217;t have any luck with MPEG2 transcoding for video.</p>
<p>It looks like Rygel has promise, but is not yet at a stage where it could replace something like MediaTomb.  The <a href="http://live.gnome.org/Rygel/MediaServerSpec">external D-Bus media source</a> support looks particularly interesting.  I look forward to trying out version 0.4 when it is released.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/jamesh/2009/06/17/ubuntu-packages-for-rygel/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>django-openid-auth</title>
		<link>http://blogs.gnome.org/jamesh/2009/04/14/django-openid-auth/</link>
		<comments>http://blogs.gnome.org/jamesh/2009/04/14/django-openid-auth/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 08:25:56 +0000</pubDate>
		<dc:creator>James Henstridge</dc:creator>
				<category><![CDATA[Uncategorised]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Launchpad]]></category>
		<category><![CDATA[OpenID]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/jamesh/?p=426</guid>
		<description><![CDATA[Last week, we released the source code to django-openid-auth.  This is a small library that can add OpenID based authentication to Django applications.  It has been used for a number of internal Canonical projects, including the sprint scheduler Scott wrote for the last Ubuntu Developer Summit, so it is possible you&#8217;ve already used the code. [...]]]></description>
			<content:encoded><![CDATA[<p>Last week, we released the source code to <a href="https://launchpad.net/django-openid-auth">django-openid-auth</a>.  This is a small library that can add <a href="http://openid.net/">OpenID</a> based authentication to <a href="http://www.djangoproject.com/">Django</a> applications.  It has been used for a number of internal Canonical projects, including the sprint scheduler <a title="Scott James Remnant" href="http://www.netsplit.com/">Scott</a> wrote for the last Ubuntu Developer Summit, so it is possible you&#8217;ve already used the code.</p>
<p>Rather than trying to cover all possible use cases of OpenID, it focuses on providing OpenID Relying Party support to applications using Django&#8217;s <a title="User authentication in Django" href="http://docs.djangoproject.com/en/dev/topics/auth/">django.contrib.auth</a> authentication system.  As such, it is usually enough to edit just two files in an existing application to enable OpenID login.</p>
<p>The library has a number of useful features:</p>
<ul>
<li>As well as the standard method of prompting the user for an identity URL, you can configure a fixed OpenID server URL.  This is useful for deployments where OpenID is being used for single sign on, and you always want users to log in using a particular OpenID provider.  Rather than asking the user for their identity URL, they are sent directly to the provider.</li>
<li>It can be configured to automatically create accounts when new identity URLs are seen.</li>
<li>User names, full names and email addresses can be set on accounts based on data sent via the <a href="http://openid.net/specs/openid-simple-registration-extension-1_1-01.html">OpenID Simple Registration</a> extension.</li>
<li>Support for <a href="https://launchpad.net/">Launchpad</a>&#8216;s Teams OpenID extension, which lets you query membership of Launchpad teams when authenticating against Launchpad&#8217;s OpenID provider.  Team memberships are mapped to Django group membership.</li>
</ul>
<p>While the code can be used for generic OpenID login, we&#8217;ve mostly been using it for single sign on.  The hope is that it will help members of the Ubuntu and Launchpad communities reuse our authentication system in a secure fashion.</p>
<p>The source code can be downloaded using the following <a href="http://bazaar-vcs.org/">Bazaar</a> command:</p>
<blockquote>
<pre>bzr branch lp:django-openid-auth</pre>
</blockquote>
<p>Documentation on how to integrate the library is available in the <tt>README.txt</tt> file.  The library includes some code written by <a href="http://simonwillison.net/">Simon Willison</a> for <a href="http://code.google.com/p/django-openid/">django-openid</a>, and uses the same licensing terms (2 clause BSD) as that project.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/jamesh/2009/04/14/django-openid-auth/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Streaming Vorbis files from Ubuntu to a PS3</title>
		<link>http://blogs.gnome.org/jamesh/2008/10/30/upnp-ps3/</link>
		<comments>http://blogs.gnome.org/jamesh/2008/10/30/upnp-ps3/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 02:35:40 +0000</pubDate>
		<dc:creator>James Henstridge</dc:creator>
				<category><![CDATA[Uncategorised]]></category>
		<category><![CDATA[DLNA]]></category>
		<category><![CDATA[PlayStation 3]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[UPnP]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/jamesh/?p=376</guid>
		<description><![CDATA[One of the nice features of the PlayStation 3 is the UPNP/DLNA media renderer.  Unfortunately, the set of codecs is pretty limited, which is a problem since most of my music is encoded as Vorbis.  MediaTomb was suggested to me as a server that could transcode the files to a format the PS3 could understand. [...]]]></description>
			<content:encoded><![CDATA[<p>One of the nice features of the PlayStation 3 is the <a href="http://www.upnp.org/">UPNP</a>/<a href="http://www.dlna.org/">DLNA</a> media renderer.  Unfortunately, the set of codecs is pretty limited, which is a problem since most of my music is encoded as Vorbis.  <a href="http://mediatomb.cc/">MediaTomb</a> was suggested to me as a server that could transcode the files to a format the PS3 could understand.</p>
<p>Unfortunately, I didn&#8217;t have much luck with the version included with Ubuntu 8.10 (Intrepid), and after a bit of investigation it seems that there isn&#8217;t a released version of MediaTomb that can send PCM audio to the PS3.  So I put together a package of a subversion snapshot in <a href="https://launchpad.net/~jamesh/+archive">my PPA</a> which should work on Intrepid.</p>
<p>With the newer package, it was pretty easy to get things working:</p>
<ol>
<li>Install the <tt>mediatomb-daemon</tt> package</li>
<li>Edit the <tt>/etc/mediatomb/config.xml</tt> file and make the following changes:
<ul>
<li>Change the <tt>&lt;protocolInfo/&gt;</tt> line to set <tt>extend="yes"</tt>.</li>
<li>In the <tt>&lt;extension-mimetype&gt;</tt> section, uncomment the line to map &#8220;avi&#8221; to &#8220;video/divx&#8221;.  This will get a lot of videos to play without problem.</li>
<li>In the <tt>&lt;mimetype-upnpclass&gt;</tt> section, add a line to map &#8220;application/ogg&#8221; to &#8220;object.item.audioItem.musicTrack&#8221;.  This is needed for the vorbis files to be recognised as music.</li>
<li>In the <tt>&lt;mimetype-contenttype&gt;</tt> section add a line to map &#8220;audio/L16&#8243; to &#8220;pcm&#8221;.</li>
<li>On the <tt>&lt;transcoding&gt;</tt> element, change the <tt>enabled</tt> attribute to &#8220;yes&#8221;.</li>
<li>Add the settings from <a href="http://mediatomb.cc/dokuwiki/transcoding:transcoding#play_station_3_pcm_support">here</a> to the <tt>&lt;transcoding&gt;</tt> section.</li>
</ul>
</li>
<li>Edit the <tt>/etc/default/mediatomb</tt> script and set INTERFACE to the network interface you want to advertise on.</li>
<li>Restart the mediatomb daemon.</li>
<li>Go to the web UI (try opening <tt>/var/lib/mediatomb/mediatomb.html</tt> in a web browser), and add the directories you want to export.</li>
<li>Test things on the PS3.</li>
</ol>
<p>Things aren&#8217;t perfect though.  As MediaTomb is simply piping the transcoded audio to the PS3, it doesn&#8217;t implement seeking on such files, and it seems that the PS3 won&#8217;t even let you pause a stream that doesn&#8217;t allow seeking.  With a less generalised transcoding backend, it seems like it should be trivial to support seeking in an uncompressed PCM stream though, since the byte offsets can be trivially mapped to sample numbers.</p>
<p>The other problem I found was that none of the recent music I&#8217;d ripped showed up.  It seems that they&#8217;d been ripped with the <tt>.oga</tt> file extension rather than <tt>.ogg</tt>.  This change appears to have been made in <a title="Bug 543306 – Use oga (Ogg Vorbis, audio) as the default extension extension for adding music to collection" href="http://bugzilla.gnome.org/show_bug.cgi?id=543306">bug 543306</a>, but the reasoning seems suspect: the <a title="MIME Types and File Extensions" href="http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions">guidelines from Xiph</a> indicate that the files generated by this encoding profile should continue to use the <tt>.ogg</tt> file extension.</p>
<p>I tried adding some extra mappings to the MediaTomb configuration file to recognise the files without success, but eventually decided to just rename them and fix the encoding profile locally.</p>
<p><strong>A Perfect Media Server</strong></p>
<p>While MediaTomb mostly works for me, it doesn&#8217;t do everything I&#8217;d like.  A few of the things I&#8217;d like out of a media server include:</p>
<ol>
<li>No need to configure things via a web UI.  In fact, I could do without a web UI all together – something nicely integrated into the desktop would be nice.</li>
<li>No need to set model specific settings in the configuration file.  Ideally it would know how to talk to common players by default.</li>
<li>Supports transcoding and seeking within transcoded files.  Preferably knows what needs transcoding for common players.</li>
<li>Picks up new files in real time.  So something inotify based rather than periodic reindexing.</li>
<li>A virtual folder tree for music based on artist/album metadata. A plain folder tree for other media would be fine.</li>
<li>Cached video thumbnails would be nice too.  The build of MediaTomb in my PPA includes support for thumbnails (needs to be enabled in the config file), but they aren&#8217;t cached so are slow to appear.</li>
</ol>
<p>Perhaps <a href="http://zee-nix.blogspot.com/">Zeeshan</a>&#8216;s media server will be worth trying out at some point.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/jamesh/2008/10/30/upnp-ps3/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Prague</title>
		<link>http://blogs.gnome.org/jamesh/2008/05/19/prague/</link>
		<comments>http://blogs.gnome.org/jamesh/2008/05/19/prague/#comments</comments>
		<pubDate>Mon, 19 May 2008 15:14:05 +0000</pubDate>
		<dc:creator>James Henstridge</dc:creator>
				<category><![CDATA[Uncategorised]]></category>
		<category><![CDATA[Gnome]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/jamesh/2008/05/19/prague/</guid>
		<description><![CDATA[I arrived in Prague yesterday for the Ubuntu Developer Summit.  Including time spent in transit in Singapore and London, the flights took about 30 hours. As I was flying on BA, I got to experience Heathrow Terminal 5. It wasn&#8217;t quite as bad as some of the horror stories I&#8217;d heard.  There were definitely aspects [...]]]></description>
			<content:encoded><![CDATA[<p>I arrived in Prague yesterday for the <a href="https://wiki.ubuntu.com/UDS-Intrepid">Ubuntu Developer Summit</a>.  Including time spent in transit in Singapore and London, the flights took about 30 hours.</p>
<p>As I was flying on BA, I got to experience <a href="http://en.wikipedia.org/wiki/Heathrow_Terminal_5_building">Heathrow Terminal 5</a>. It wasn&#8217;t quite as bad as some of the horror stories I&#8217;d heard.  There were definitely aspects that weren&#8217;t forgiving of mistakes.  For example, when taking the train to the &#8220;B&#8221; section there was a sign saying that if you accidentally got on the train when you shouldn&#8217;t have it would take 40 minutes to get back to the &#8220;A&#8221; section.</p>
<p>It is also quite difficult to find water fountains in the terminal, which is inexcusable given that they don&#8217;t let people bring their own water bottles.</p>
<p>I had been a bit worried that they&#8217;d lose my bag, but it arrived okay in Prague.  <a href="http://mumak.net/">Jonathan</a> was not so lucky.</p>
<p>As well as the Ubuntu and Canonical folks, there are a bunch of Gnome developers here, including <a href="http://blogs.gnome.org/desrt">Ryan</a>, <a href="http://www.murrayc.com/blog">Murray</a>, <a href="http://blogs.gnome.org/ovitters">Olav</a>, <a href="http://blog.fubar.dk/">David</a> and <a href="http://0pointer.de/blog">Lennart</a>.  It will be an interesting week.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/jamesh/2008/05/19/prague/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Weird GNOME Power Manager error message</title>
		<link>http://blogs.gnome.org/jamesh/2007/11/19/weird-gnome-power-manager-error-message/</link>
		<comments>http://blogs.gnome.org/jamesh/2007/11/19/weird-gnome-power-manager-error-message/#comments</comments>
		<pubDate>Sun, 18 Nov 2007 23:08:39 +0000</pubDate>
		<dc:creator>James Henstridge</dc:creator>
				<category><![CDATA[Uncategorised]]></category>
		<category><![CDATA[Gnome]]></category>
		<category><![CDATA[gnome-power-manager]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/jamesh/2007/11/19/weird-gnome-power-manager-error-message/</guid>
		<description><![CDATA[Since upgrading to Ubuntu Gutsy I&#8217;ve occasionally been seeing the following notification from GNOME Power Manager: I&#8217;d usually trigger this error by unplugging the AC adapter and then picking suspend from GPM&#8217;s left click menu. My first thought on seeing this was &#8220;What&#8217;s a policy timeout, and why is it not valid?&#8221; followed by &#8220;I [...]]]></description>
			<content:encoded><![CDATA[<p>Since upgrading to <a href="https://wiki.ubuntu.com/GutsyGibbon">Ubuntu Gutsy</a> I&#8217;ve occasionally been seeing the following notification from GNOME Power Manager:</p>
<p align="center"><img src="http://blogs.gnome.org/jamesh/files/2007/11/gnome-power-manager-popup.png" alt="GNOME Power Manager notification" /></p>
<p>I&#8217;d usually trigger this error by unplugging the AC adapter and then picking suspend from GPM&#8217;s left click menu.</p>
<p>My first thought on seeing this was &#8220;What&#8217;s a policy timeout, and why is it not valid?&#8221; followed by &#8220;I don&#8217;t remember setting a policy timeout&#8221;.  Looking at <a href="http://bugzilla.gnome.org/show_bug.cgi?id=492132">bug 492132</a> I found a pointer to the <tt>policy_suppression_timeout</tt> gconf value, whose description gives a bit more information.</p>
<p>Apparently the timeout is designed to ignore spurious messages from the hardware after a resume &#8212; you wouldn&#8217;t want to process a left over &#8220;suspend&#8221; message immediately after resuming from suspend after all.  This does bring up a few questions though:</p>
<ol>
<li>While ignoring &#8220;please suspend&#8221; messages shortly after performing a suspend makes sense, why ignore &#8220;please suspend&#8221; messages after an &#8220;on battery power message&#8221;?</li>
<li>While messages from the hardware might be spurious, surely picking an option from GPM&#8217;s menu is not.  I guess such suspend requests are being mixed in with hardware suspend requests before the point where the policy timeout is checked.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/jamesh/2007/11/19/weird-gnome-power-manager-error-message/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>On the way to Boston</title>
		<link>http://blogs.gnome.org/jamesh/2007/10/27/on-the-way-to-boston/</link>
		<comments>http://blogs.gnome.org/jamesh/2007/10/27/on-the-way-to-boston/#comments</comments>
		<pubDate>Sat, 27 Oct 2007 03:43:55 +0000</pubDate>
		<dc:creator>James Henstridge</dc:creator>
				<category><![CDATA[Uncategorised]]></category>
		<category><![CDATA[Launchpad]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/jamesh/2007/10/27/on-the-way-to-boston/</guid>
		<description><![CDATA[I am at Narita Airport at the moment, on the way to Boston for some of the meetings being held during UDS. It&#8217;ll be good to catch up with everyone again. Hopefully this trip won&#8217;t be as eventful as the previous one to Florida]]></description>
			<content:encoded><![CDATA[<p>I am at <a href="http://en.wikipedia.org/wiki/Narita_International_Airport" title="Narita International Airport">Narita Airport</a> at the moment, on the way to Boston for some of the meetings being held during <a href="https://wiki.ubuntu.com/UDS-Boston">UDS</a>.  It&#8217;ll be good to catch up with everyone again.</p>
<p>Hopefully this trip won&#8217;t be as eventful as the <a href="http://blogs.gnome.org/jamesh/2007/08/29/in-florida/">previous one to Florida</a> <img src='http://blogs.gnome.org/jamesh/wp-content/mu-plugins/tango-smilies/tango/face-smile.png' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/jamesh/2007/10/27/on-the-way-to-boston/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Schema Generation in ORMs</title>
		<link>http://blogs.gnome.org/jamesh/2007/09/28/orm-schema-generation/</link>
		<comments>http://blogs.gnome.org/jamesh/2007/09/28/orm-schema-generation/#comments</comments>
		<pubDate>Fri, 28 Sep 2007 10:05:04 +0000</pubDate>
		<dc:creator>James Henstridge</dc:creator>
				<category><![CDATA[Uncategorised]]></category>
		<category><![CDATA[Launchpad]]></category>
		<category><![CDATA[Storm]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/jamesh/2007/09/28/orm-schema-generation/</guid>
		<description><![CDATA[When Storm was released, one of the comments made was that it did not include the ability to generate a database schema from the Python classes used to represent the tables while this feature is available in a number of competing ORMs. The simple reason for this is that we haven&#8217;t used schema generation in [...]]]></description>
			<content:encoded><![CDATA[<p>When <a href="https://storm.canonical.com/">Storm</a> was released, one of the comments made was that it did not include the ability to generate a database schema from the Python classes used to represent the tables while this feature is available in a number of competing <a href="http://en.wikipedia.org/wiki/Object-relational_mapping" title="Object-relational mapping">ORMs</a>.  The simple reason for this is that we haven&#8217;t used schema generation in any of our ORM-using projects.</p>
<p>Furthermore I&#8217;d argue that schema generation is not really appropriate for long lived projects where the data stored in the database is important.  Imagine developing an application along these lines:</p>
<ol>
<li>Write the initial version of the application.</li>
<li>Generate a schema from the code.</li>
<li>Deploy one or more instances of the application in production, and accumulate some data.</li>
<li>Do further development on the application, that involves modifications to the schema.</li>
<li>Deploy the new version of the application.</li>
</ol>
<p>In order to perform step 5, it will be necessary to modify the existing database to match the new schema.  These changes might be in a number of forms, including:</p>
<ul>
<li>adding or removing a table</li>
<li>adding or removing a column from a table</li>
<li>changing the way data is represented in a particular column</li>
<li>refactoring one table into two related tables or vice versa</li>
<li>adding or removing an index</li>
</ul>
<p>Assuming that you want to keep the existing data, it isn&#8217;t enough to simply represent the new schema in the updated application: we need to know how that new schema relates to the old one in order to migrate the existing data.</p>
<p>For some changes like addition of tables, it is pretty easy to update the schema given knowledge of the new schema.  For others it is more difficult, and will often require custom migration logic.  So it is likely that you will need to write a custom script to migrate the schema and data.</p>
<p>Now we have two methods of building the database schema for the application:</p>
<ol>
<li>generate a schema from the new version of the application.</li>
<li>generate a schema from the old version of the application, then run the migration script.</li>
</ol>
<p>Are you sure that the two methods will result in the same schema?  How about if we iterate the process another 10 times or so?  As a related question, are you sure that the database environment your tests are running under match the production environment?</p>
<p>The approach we settled on with Launchpad development was to only deal with migration scripts and not generate schemas from the code.  The migration scripts are formulated as a sequence of SQL commands to migrate the schema and data as needed.  So to set up a new instance, a base schema is loaded then patched up to the current schema.  Each patch leaves a record in the database that it has been applied so it is trivial to bring a database up to date, or check that an application is in sync with the database.</p>
<p>When the schema is not generated from the code, it also means that the code can be simpler.  As far as Python ORM layer is concerned, does it matter what type of integer a field contains?  Does the Python code care what indexes or constraints are defined for the table?  By only specifying what is needed to effectively map data to Python objects, we end up with easy to understand code without annotations that probably can&#8217;t specify everything we want anyway.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/jamesh/2007/09/28/orm-schema-generation/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Upgrading to Ubuntu Gutsy</title>
		<link>http://blogs.gnome.org/jamesh/2007/09/24/gutsy-upgrade/</link>
		<comments>http://blogs.gnome.org/jamesh/2007/09/24/gutsy-upgrade/#comments</comments>
		<pubDate>Mon, 24 Sep 2007 08:59:23 +0000</pubDate>
		<dc:creator>James Henstridge</dc:creator>
				<category><![CDATA[Uncategorised]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/jamesh/2007/09/24/gutsy-upgrade/</guid>
		<description><![CDATA[I got round to upgrading my desktop system to Gutsy today. I&#8217;d upgraded my laptop the previous week, so was not expecting much in the way of problems. I&#8217;d done the original install on my desktop back in the Warty days, and the root partition was a bit too small to perform the upgrade. As [...]]]></description>
			<content:encoded><![CDATA[<p>I got round to upgrading my desktop system to <a href="https://wiki.ubuntu.com/GutsyGibbon">Gutsy</a> today.  I&#8217;d upgraded my laptop the previous week, so was not expecting much in the way of problems.</p>
<p>I&#8217;d done the original install on my desktop back in the Warty days, and the root partition was a bit too small to perform the upgrade.  As there was a fair bit of accumulated crud, I decided to do a clean install.  Things mostly worked, but there were a few problems, which I detail below:</p>
<p><strong>Dual Head Configuration</strong></p>
<p>With previous releases, I was using the Radeon driver&#8217;s MergedFB mode, as it gives a better user experience than the traditional Xinerama code (3D acceleration on both heads, better performance, etc).  After moving adding the MergedFB options to xorg.conf, I was just getting the same image cloned on both displays.</p>
<p>Looking at the X server log file, there was a message saying that MergedFB support had been removed in favour of RandR 1.2 support.  And it was possible to get dual head working with the <tt>xrandr</tt> command line tool:</p>
<blockquote>
<pre>xrandr --output VGA-0 --right-of DVI-0</pre>
</blockquote>
<p>It was good to know that dual-head still worked, but  I didn&#8217;t want to reconfigure this every time I restarted the machine.  I didn&#8217;t find much information on how to configure the initial RandR configuration on the X.org website, but did find a <a href="http://www.intellinuxgraphics.org/dualhead.html" title="How to setup Dual Head for Intel Graphics with RandR 1.2">useful guide on the Intel Linux Graphics website</a>.  While the guide was aimed at the Intel driver, it had enough information to get things configured for the Radeon driver. The main difference was in the naming of the outputs.  Below is a an excerpt of my configuration file that configures things the way I had them previously:</p>
<blockquote>
<pre>Section "Device"
        Identifier      "ATI Technologies Inc RV280 [Radeon 9200 SE]"
        Driver          "ati"
        BusID           "PCI:1:0:0"
        Option          "monitor-DVI-0" "Sony SDM-S74 [1]"
        Option          "monitor-VGA-0" "Sony SDM-S74 [2]"
EndSection

Section "Monitor"
        Identifier      "Sony SDM-S74 [1]"
        Option          "DPMS"
        HorizSync       30-65
        VertRefresh     50-75
        Option          "LeftOf"        "Sony SDM-S74 [2]"
EndSection

Section "Monitor"
        Identifier      "Sony SDM-S74 [2]"
        Option          "DPMS"
        HorizSync       30-65
        VertRefresh     50-75
EndSection

Section "Screen"
        Identifier      "Default Screen"
        Device          "ATI Technologies Inc RV280 [Radeon 9200 SE]"
        Monitor         "Sony SDM-S74 [1]"
        DefaultDepth    16
        SubSection "Display"
                Modes           "1280x1024" "1024x768" "800x600" "640x480"
                Virtual         2560 1024
        EndSubSection
EndSection</pre>
</blockquote>
<p>I had originally tried setting the VGA monitor to be &#8220;RightOf&#8221; the monitor connected to the DVI, but that left me with the desktop in clone mode.  The main difference I&#8217;ve noticed with this configuration compared to my previous one is that the GDM login prompt displays on the right hand head (VGA) rather than the left hand head (DVI).</p>
<p><strong>Window Shadows Don&#8217;t Render</strong></p>
<p>Desktop Effects were enabled by default after the install (and on the live CD). While some effects seemed to work, the shadows on the panel and drop down menus were rendered as opaque grey boxes around the windows. I ended up just disabling the effects to clear up the problem.</p>
<p>This bug had already been reported as <a href="https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-ati/+bug/141304" title="White boxes instead of shadows on ATI 9600 (radeon driver)">bug 141304</a> (which may be the same as <a href="https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/116808" title="White boxes instead of shadows on Intel 945 (-intel driver)">bug 116808</a>).</p>
<p><strong>Firefox Crashes on Startup</strong></p>
<p>When I tried to start firefox, it would momentarily display a window and then crash.  This appears to be <a href="https://bugs.launchpad.net/ubuntu/+source/firefox/+bug/133124" title="MASTER [GUTSY] firefox crashed [@pixman_compositeGeneral] [@_cairo_pixman_composite] [@_cairo_image_surface_composite] from libcairo">bug 133124</a>, and seems to only occur on AMD64 systems.  The problem appears to be in the <tt>ubuntulooks</tt> theme engine, and switching to a different control theme makes the problem go away, but hopefully it&#8217;ll get fixed for the final release.</p>
<p><strong>Problems Rendering Ligatures in Firefox</strong></p>
<p>The problems rendering ligatures in firefox seem to be back again.  This problem was never really fixed, but was worked around by removing the ligature table entries from the DejaVu fonts.  With the ligature table entries back, the symptoms have returned.  This is <a href="https://bugs.launchpad.net/ubuntu/+source/firefox/+bug/37828" title="Text rendered incorrectly in presence of ligatures and justified text">bug 37828</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/jamesh/2007/09/24/gutsy-upgrade/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  blogs.gnome.org/jamesh/tag/ubuntu/feed/ ) in 0.40744 seconds, on Feb 10th, 2012 at 8:33 pm UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 10th, 2012 at 9:33 pm UTC -->
