<?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>philwilson.org</title>
	<atom:link href="http://philwilson.org/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://philwilson.org/blog</link>
	<description>a geek commodity</description>
	<lastBuildDate>Wed, 03 Apr 2013 21:53:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>A Ruby interface to the GatherContent API</title>
		<link>http://philwilson.org/blog/2013/04/a-ruby-interface-to-the-gathercontent-api</link>
		<comments>http://philwilson.org/blog/2013/04/a-ruby-interface-to-the-gathercontent-api#comments</comments>
		<pubDate>Wed, 03 Apr 2013 21:53:08 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[gathercontent]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://philwilson.org/blog/?p=1257</guid>
		<description><![CDATA[GatherContent is an awesome tool for planning, structuring and collaborating on web content (they have a short video demo). They have a read-only API, but only a couple of implementations, so here is mine, in Ruby. The API is read-only and HTTP POST-based, and so I use HTTParty to manage that side of things, and method_missing to emulate the relevant API calls, and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="https://gathercontent.com/" onclick="pageTracker._trackPageview('/outgoing/gathercontent.com/?referer=');">GatherContent</a> is an awesome tool for planning, structuring and collaborating on web content (they have a <a href="https://gathercontent.com/how-it-works" onclick="pageTracker._trackPageview('/outgoing/gathercontent.com/how-it-works?referer=');">short video demo</a>).</p>
<p>They have <a href="http://gathercontent.helpjuice.com/questions/26611-How-do-I-use-the-API" onclick="pageTracker._trackPageview('/outgoing/gathercontent.helpjuice.com/questions/26611-How-do-I-use-the-API?referer=');">a read-only API</a>, but only a couple of implementations, so <a href="https://github.com/pipwilson/gathercontent-api-ruby" onclick="pageTracker._trackPageview('/outgoing/github.com/pipwilson/gathercontent-api-ruby?referer=');">here is mine, in Ruby</a>.</p>
<p>The API is read-only and HTTP POST-based, and so I use <a href="http://httparty.rubyforge.org/" onclick="pageTracker._trackPageview('/outgoing/httparty.rubyforge.org/?referer=');">HTTParty</a> to manage that side of things, and <code>method_missing</code> to emulate the relevant API calls, and then <a href="https://github.com/intridea/hashie" onclick="pageTracker._trackPageview('/outgoing/github.com/intridea/hashie?referer=');">Hashie</a> to convert the returned Hash into an object. It&#8217;s very simple, so give it a try.</p>
]]></content:encoded>
			<wfw:commentRss>http://philwilson.org/blog/2013/04/a-ruby-interface-to-the-gathercontent-api/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hosting your own calendar and contacts directory</title>
		<link>http://philwilson.org/blog/2013/03/hosting-your-own-calendar-and-contacts-directory</link>
		<comments>http://philwilson.org/blog/2013/03/hosting-your-own-calendar-and-contacts-directory#comments</comments>
		<pubDate>Tue, 26 Mar 2013 18:34:04 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[calendar]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[contacts]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://philwilson.org/blog/?p=1251</guid>
		<description><![CDATA[Apparently there is a thing called ownCloud which lets you run, amongst other things, a calendar server and a contact directory, both of which will sync with your android phone and here is a writeup of doing just that. I&#8217;ve not tried it yet, but any option to prise the data away from Google and [...]]]></description>
			<content:encoded><![CDATA[<p>Apparently there is a thing called <a href="https://owncloud.org/" onclick="pageTracker._trackPageview('/outgoing/owncloud.org/?referer=');">ownCloud</a> which lets you run, amongst other things, a calendar server and a contact directory, both of which will sync with your android phone and <a href="http://www.flailingmonkey.com/2013/03/26/moving-contacts-calendar-google/" onclick="pageTracker._trackPageview('/outgoing/www.flailingmonkey.com/2013/03/26/moving-contacts-calendar-google/?referer=');">here is a writeup of doing just that</a>. I&#8217;ve not tried it yet, but any option to prise the data away from Google and to something I own has to at least an option worth trying.</p>
]]></content:encoded>
			<wfw:commentRss>http://philwilson.org/blog/2013/03/hosting-your-own-calendar-and-contacts-directory/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configuring get_iplayer</title>
		<link>http://philwilson.org/blog/2013/03/configuring-get_iplayer</link>
		<comments>http://philwilson.org/blog/2013/03/configuring-get_iplayer#comments</comments>
		<pubDate>Sun, 24 Mar 2013 14:42:20 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bbc]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[iplayer]]></category>

		<guid isPermaLink="false">http://philwilson.org/blog/?p=1240</guid>
		<description><![CDATA[There are lots of ways of setting up get_iplayer. Here&#8217;s mine. It means that filenames work across Windows and Linux, removes underscores from names, never deletes old episodes and downloads episodes into a directory named after the series and names the files with the series&#8217; episode number. Your own options file is in ~/.get_iplayer or [...]]]></description>
			<content:encoded><![CDATA[<p>There are <a href="http://linuxcentre.net/getiplayer/documentation#Filenames%20and%20Directories" onclick="pageTracker._trackPageview('/outgoing/linuxcentre.net/getiplayer/documentation_Filenames_20and_20Directories?referer=');">lots of ways</a> of setting up <a href="http://www.infradead.org/get_iplayer/html/get_iplayer.html" onclick="pageTracker._trackPageview('/outgoing/www.infradead.org/get_iplayer/html/get_iplayer.html?referer=');">get_iplayer</a>. <a href="https://gist.github.com/pipwilson/5232174" onclick="pageTracker._trackPageview('/outgoing/gist.github.com/pipwilson/5232174?referer=');">Here&#8217;s mine</a>.</p>
<p>It means that filenames work across Windows and Linux, removes underscores from names, never deletes old episodes and downloads episodes into a directory named after the series and names the files with the series&#8217; episode number.</p>
<p>Your own <code>options</code> file is in <code>~/.get_iplayer</code> or <code>c:\users\username\.get_iplayer</code> depending on your operating system.</p>
]]></content:encoded>
			<wfw:commentRss>http://philwilson.org/blog/2013/03/configuring-get_iplayer/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The merits of a bug database</title>
		<link>http://philwilson.org/blog/2012/11/the-merits-of-a-bug-database</link>
		<comments>http://philwilson.org/blog/2012/11/the-merits-of-a-bug-database#comments</comments>
		<pubDate>Tue, 06 Nov 2012 21:59:19 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://philwilson.org/blog/?p=1241</guid>
		<description><![CDATA[I just realised that we no longer have a functional bug database at work, meaning we have gone down by a point in the Joel Test. We don&#8217;t produce a single product (unless you count &#8220;the website and the quarter of a million pages it contains&#8221; as a product) and in the past have created [...]]]></description>
			<content:encoded><![CDATA[<p class="alignright"><a href="http://www.flickr.com/photos/adulau/6045026195/" title="Ladybug lost in Echinops Ritro by Alexandre Dulaunoy, on Flickr" onclick="pageTracker._trackPageview('/outgoing/www.flickr.com/photos/adulau/6045026195/?referer=');"><img src="http://farm7.staticflickr.com/6080/6045026195_b682c44475_n.jpg" width="320" height="213" alt="Ladybug lost in Echinops Ritro"></a></p>
<p>I just realised that we no longer have a functional bug database at work, meaning we have gone down by a point in <a href="http://www.joelonsoftware.com/articles/fog0000000043.html" onclick="pageTracker._trackPageview('/outgoing/www.joelonsoftware.com/articles/fog0000000043.html?referer=');">the Joel Test</a>.</p>
<p>We don&#8217;t produce a single product (unless you count &#8220;the website and the quarter of a million pages it contains&#8221; as a product) and in the past have created standalone Trac installs for the larger pieces of software infrastructure we&#8217;ve written, and used the bug tracker in that to manage progress. Typically we then reached either a quality or time threshold and regardless of what bugs were there, and it was time for the next project.</p>
<p>We then never came back to those projects, and the collected bugs and issues would sit there for years, collecting mental dust as we moved onto other projects, or enhancing other bits of the site, all of which had their own bugs too. This is quite a depressing state to be in, and although on rare occassions we bundled up some of this work into &#8220;technical debt&#8221; projects, the mental weight would carry on, and eventually our rapid pace between projects, and an improved in-project process meant that we were meeting our goals on each project, and moving to the next without tracking known issues in any way at all because, y&#8217;know, it served no purpose other than to make us sad.</p>
<p>This has to change.</p>
<p>Clearly we&#8217;re at the point where a different bugtracker per backend software product won&#8217;t cut it. We&#8217;ve tried Jira in the past, and although it does a lot, it&#8217;s probably too much for us. So what should we do instead? My thinking is to use a tool which is set up to track a single project, and we use categorisation and tagging to differentiate what area of the site, what aspect of the site, and what backend tools are relevant &#8211; this should allow us to slice and dice across tens of thousands of lines of JS, Java and PHP and probably millions of lines of HTML, with impunity. Issues can be collated and then bundled into projects which we manage separately. I&#8217;m definitely <em>not</em> thinking about todo-list management software like Trello!</p>
<p>My gut call is to go to <a href="http://lighthouseapp.com/" onclick="pageTracker._trackPageview('/outgoing/lighthouseapp.com/?referer=');">Lightouse</a> &#8211; but I&#8217;ve been out of the game for a while, have you got a recommendation, free or not, which might help us out? Let me know!</p>
<p>(I should note that this all occured to me when looking at <a href="http://careers.stackoverflow.com/jobs/26841/" onclick="pageTracker._trackPageview('/outgoing/careers.stackoverflow.com/jobs/26841/?referer=');">a job opening at BERG</a>. If it&#8217;s not closed by now, <a href="http://careers.stackoverflow.com/jobs/26841/" onclick="pageTracker._trackPageview('/outgoing/careers.stackoverflow.com/jobs/26841/?referer=');">go have a look</a> and work for the lovely, lovely people there!)</p>
]]></content:encoded>
			<wfw:commentRss>http://philwilson.org/blog/2012/11/the-merits-of-a-bug-database/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Raspberry Pi, my media centre at last</title>
		<link>http://philwilson.org/blog/2012/09/raspberry-pi-my-media-centre-at-last</link>
		<comments>http://philwilson.org/blog/2012/09/raspberry-pi-my-media-centre-at-last#comments</comments>
		<pubDate>Fri, 14 Sep 2012 21:55:01 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bbc]]></category>
		<category><![CDATA[raspberrypi]]></category>
		<category><![CDATA[xbmc]]></category>

		<guid isPermaLink="false">http://philwilson.org/blog/2012/09/raspberry-pi-my-media-centre-at-last</guid>
		<description><![CDATA[My Raspberry Pi has arrived, and not only is it one of the nice new rev2 hardware revisions, it&#8217;s also been manufactured in the UK, which if you&#8217;ve followed their trials, you&#8217;ll realise is a big deal. Anyway, mine is here, and one short hunt for a spare SD card later I&#8217;d got the installation [...]]]></description>
			<content:encoded><![CDATA[<p><a title="my raspberry pi is here by Pip, on Flickr" href="http://www.flickr.com/photos/pip/7955114660/" onclick="pageTracker._trackPageview('/outgoing/www.flickr.com/photos/pip/7955114660/?referer=');"><img style="display: inline; float: right" alt="my raspberry pi is here" align="right" src="http://farm9.staticflickr.com/8180/7955114660_db528b2e4b_n.jpg" width="320" height="240" /></a></p>
<p>My Raspberry Pi has arrived, and not only is it one of the nice <a href="http://www.raspberrypi.org/archives/1929" onclick="pageTracker._trackPageview('/outgoing/www.raspberrypi.org/archives/1929?referer=');">new rev2 hardware revisions</a>, it&#8217;s also <a href="http://www.raspberrypi.org/archives/1925" onclick="pageTracker._trackPageview('/outgoing/www.raspberrypi.org/archives/1925?referer=');">been manufactured in the UK</a>, which if you&#8217;ve <a href="http://www.raspberrypi.org/archives/509" onclick="pageTracker._trackPageview('/outgoing/www.raspberrypi.org/archives/509?referer=');">followed their trials</a>, you&#8217;ll realise is a big deal.</p>
<p>Anyway, mine is here, and one short hunt for a spare SD card later I&#8217;d got the installation of RaspBMC, a port of XBMC, started. It took probably about ten minutes to complete, with no intervention from me.</p>
<p>Then I SSHd in (the default username is &#8216;pi&#8217; and the password &#8216;raspberry&#8217;), and set about <a href="http://raspi.tv/2012/get_iplayer-installation-on-raspberry-pi-with-raspbian" onclick="pageTracker._trackPageview('/outgoing/raspi.tv/2012/get_iplayer-installation-on-raspberry-pi-with-raspbian?referer=');">installing get_iplayer using these instructions</a>. I had to also install <code>make</code> and <code>gcc</code> before rtmpdump would build but other than that it all worked perfectly. I plugged in my 500GB hard drive and I now have something which:</p>
<ul>
<li>is a BBC PVR </li>
<li>is a good household-friendly playback device for recorded tv, films and music </li>
<li>can act as an AirPlay server for our iPad, iPhone and iPod touch </li>
<li>uses HDMI-CEC and therefore responds to my normal TV remote </li>
<li>can join my local network and play back media from other devices </li>
<li>probably loads more, I&#8217;ve only had a couple of hours! </li>
</ul>
<p>Next step will be to get a suitable case. Maybe something <a href="http://www.etsy.com/listing/102467745/custom-engraved-bramble-pi-case" onclick="pageTracker._trackPageview('/outgoing/www.etsy.com/listing/102467745/custom-engraved-bramble-pi-case?referer=');">custom etched</a>?</p>
]]></content:encoded>
			<wfw:commentRss>http://philwilson.org/blog/2012/09/raspberry-pi-my-media-centre-at-last/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Logging database content changes in a Play Framework app</title>
		<link>http://philwilson.org/blog/2012/06/logging-database-content-changes-in-a-play-framework-app</link>
		<comments>http://philwilson.org/blog/2012/06/logging-database-content-changes-in-a-play-framework-app#comments</comments>
		<pubDate>Wed, 20 Jun 2012 21:40:48 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[play]]></category>

		<guid isPermaLink="false">http://philwilson.org/blog/?p=1233</guid>
		<description><![CDATA[To do this we use Hibernate Envers. There are 3 easy steps to adding change logging to the data in your existing Play Framework app (I am using 1.2.4 &#8211; version 2 may well be different): Add the library Add the standard configuration Add an annotation to each class where you want to track data [...]]]></description>
			<content:encoded><![CDATA[<p>To do this we use <a href="http://docs.jboss.org/envers/docs/index.html" onclick="pageTracker._trackPageview('/outgoing/docs.jboss.org/envers/docs/index.html?referer=');">Hibernate Envers</a>.</p>
<p>There are 3 easy steps to adding change logging to the data in your existing <a href="http://playframework.org" onclick="pageTracker._trackPageview('/outgoing/playframework.org?referer=');">Play Framework</a> app (I am using 1.2.4 &#8211; version 2 may well be different):</p>
<ol>
<li>Add the library</li>
<li>Add the standard configuration</li>
<li>Add an annotation to each class where you want to track data changes</li>
</ol>
<h2>Add the library in conf/dependencies.yml</h2>
<pre><code>require:
    - play
    - play -&gt; crud
    - org.hibernate -&gt; hibernate-envers 3.6.1.Final:
        exclude:
            - org.hibernate -&gt; hibernate-tools 3.2.0.ga
            - org.beanshell -&gt; bsh 2.0b4
            - freemarker -&gt; freemarker 2.3.8
            - org.hibernate -&gt; jtidy r8-20060801
            - ant -&gt; ant 1.6.5
</code></pre>
<h2>Add the Envers configuration to conf/application.conf</h2>
<pre><code># Hibernate Envers Auditing Library conf
hibernate.ejb.event.post-insert=org.hibernate.ejb.event.EJB3PostInsertEventListener,org.hibernate.envers.event.AuditEventListener
hibernate.ejb.event.post-update=org.hibernate.ejb.event.EJB3PostUpdateEventListener,org.hibernate.envers.event.AuditEventListener
hibernate.ejb.event.post-delete=org.hibernate.ejb.event.EJB3PostDeleteEventListener,org.hibernate.envers.event.AuditEventListener
hibernate.ejb.event.pre-collection-update=org.hibernate.envers.event.AuditEventListener
hibernate.ejb.event.pre-collection-remove=org.hibernate.envers.event.AuditEventListener
hibernate.ejb.event.post-collection-recreate=org.hibernate.envers.event.AuditEventListener
</code></pre>
<h2>Add an annotation to each class you want to audit</h2>
<pre><code>...
import org.hibernate.envers.Audited;
...

@Entity
@Audited
public class Book extends Model {
  public String title;
  public String author;
  public String description;
}
</code></pre>
<p>If you run up your app and make a change to an entity you will see a new table appear in your database. If your entity table is BOOK your new table will be BOOK_AUD. It contains a version reference (a normalised reference to a new <strong>revinfo</strong> table containing the timestamp of that audit entry) and the values of all the fields on the entity after the changes were saved.</p>
<p>You can go wild on the config by auditing only particular fields on an entity (just add @Audited to those fields), or <a href="http://docs.jboss.org/hibernate/envers/3.6/reference/en-US/html/revisionlog.html" onclick="pageTracker._trackPageview('/outgoing/docs.jboss.org/hibernate/envers/3.6/reference/en-US/html/revisionlog.html?referer=');">adding new fields to the audit log</a> (like who made the change or <a href="https://groups.google.com/d/msg/play-framework/Lmxnwokx10k/u_5K4YvJSLoJ" onclick="pageTracker._trackPageview('/outgoing/groups.google.com/d/msg/play-framework/Lmxnwokx10k/u_5K4YvJSLoJ?referer=');">what method was called</a> to do it), and <a href="http://docs.jboss.org/envers/docs/index.html#configuration" onclick="pageTracker._trackPageview('/outgoing/docs.jboss.org/envers/docs/index.html_configuration?referer=');">change the name of table suffix</a>.</p>
<p>It&#8217;s also quite simple to retrieve the list of versions, and this has been written up quite clearly by <a href="http://blog.matthieuguillermin.fr/2011/02/utiliser-envers-avec-play-framework/" onclick="pageTracker._trackPageview('/outgoing/blog.matthieuguillermin.fr/2011/02/utiliser-envers-avec-play-framework/?referer=');">Matthieu Guillermin</a> (it&#8217;s in French but Google Translate does a good job, and you can read the code anyway).</p>
<p>All of this information had already been written in several places, but hopefully this has brought it together in a useful way.</p>
<p>My config changes are from <a href="https://gist.github.com/1148850" onclick="pageTracker._trackPageview('/outgoing/gist.github.com/1148850?referer=');">https://gist.github.com/1148850</a> and <a href="https://gist.github.com/1148852" onclick="pageTracker._trackPageview('/outgoing/gist.github.com/1148852?referer=');">https://gist.github.com/1148852</a> by Marc Deschamps.</p>
]]></content:encoded>
			<wfw:commentRss>http://philwilson.org/blog/2012/06/logging-database-content-changes-in-a-play-framework-app/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Samsung TV SDK &#8211; setting your project path</title>
		<link>http://philwilson.org/blog/2012/03/samsung-tv-sdk-setting-your-project-path</link>
		<comments>http://philwilson.org/blog/2012/03/samsung-tv-sdk-setting-your-project-path#comments</comments>
		<pubDate>Sun, 25 Mar 2012 22:09:08 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[mklink]]></category>
		<category><![CDATA[samsung]]></category>
		<category><![CDATA[tv]]></category>

		<guid isPermaLink="false">http://philwilson.org/blog/?p=1229</guid>
		<description><![CDATA[I have a Samsung Smart TV which means I can write apps for it. The SDK you can download is really a visual editor and a shorcut to launching the emulator &#8211; the apps themselves are mostly written in HTML, JavaScript and CSS. It comes with jQuery, and all-in-all is surprisingly acceptable. The biggest problem [...]]]></description>
			<content:encoded><![CDATA[<p>I have a Samsung Smart TV which means I can write apps for it. <a href="http://www.samsungdforum.com/" onclick="pageTracker._trackPageview('/outgoing/www.samsungdforum.com/?referer=');">The SDK you can download</a> is really a visual editor and a shorcut to launching the emulator &#8211; the apps themselves are mostly written in HTML, JavaScript and CSS. It comes with jQuery, and all-in-all is surprisingly acceptable.</p>
<p>The biggest problem is that your projects <em>must</em> live in the &#8220;C:\Program Files\Samsung\Samsung TV SDK(3.1.1)\apps&#8221; folder. After a brief moment of outrage at not being able to store my code where I want, I found <a href="http://www.peterfriese.de/your-windows-ide-sucks-replace-it-with-your-favorite-editor-on-the-mac/" onclick="pageTracker._trackPageview('/outgoing/www.peterfriese.de/your-windows-ide-sucks-replace-it-with-your-favorite-editor-on-the-mac/?referer=');">this blog post by Peter Friese</a> which reminded me that Windows does actually support symlinks via <a href="http://technet.microsoft.com/en-us/library/cc753194(v=ws.10).aspx" onclick="pageTracker._trackPageview('/outgoing/technet.microsoft.com/en-us/library/cc753194_v=ws.10_.aspx?referer=');">the mklink tool</a> &#8211; so running up <code>command</code> as the local Administrator, going to the Samsung SDK folder, deleting the <code>apps</code> folder (after first moving my code where I wanted it to be!) and typing</p>
<pre><code>mklink /D apps c:\code\samsung_tv_apps
</code></pre>
<p>has fixed my problem!</p>
]]></content:encoded>
			<wfw:commentRss>http://philwilson.org/blog/2012/03/samsung-tv-sdk-setting-your-project-path/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Devices in my house running WebKit</title>
		<link>http://philwilson.org/blog/2012/03/devices-in-my-house-running-webkit</link>
		<comments>http://philwilson.org/blog/2012/03/devices-in-my-house-running-webkit#comments</comments>
		<pubDate>Sun, 25 Mar 2012 07:28:41 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[tv]]></category>
		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://philwilson.org/blog/?p=1225</guid>
		<description><![CDATA[Android phone Android tablet iPod touch iPhone iPad 2 x laptop (Windows Vista) desktop (Ubuntu) TV (Samsung) The browser in my Nintendo DSlite and 3DS is Opera. I don&#8217;t use the desktop version of Google Talk, nor Windows Media Player so my most frequent exposure to Trident is probably via Skype. I almost feel sorry [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li>Android phone</li>
<li>Android tablet</li>
<li>iPod touch</li>
<li>iPhone</li>
<li>iPad</li>
<li>2 x laptop (Windows Vista)</li>
<li>desktop (Ubuntu)</li>
<li>TV (Samsung)</li>
</ul>
<p>The browser in my Nintendo DSlite and 3DS is Opera.</p>
<p>I don&#8217;t use the desktop version of Google Talk, nor Windows Media Player so my most frequent exposure to Trident is probably via Skype. I almost feel sorry for the Microsoft IE team. Almost.</p>
]]></content:encoded>
			<wfw:commentRss>http://philwilson.org/blog/2012/03/devices-in-my-house-running-webkit/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Punished for being a good boy</title>
		<link>http://philwilson.org/blog/2012/02/punished-for-being-a-good-boy</link>
		<comments>http://philwilson.org/blog/2012/02/punished-for-being-a-good-boy#comments</comments>
		<pubDate>Tue, 21 Feb 2012 23:13:00 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[dvd]]></category>
		<category><![CDATA[theboy]]></category>

		<guid isPermaLink="false">http://philwilson.org/blog/?p=1222</guid>
		<description><![CDATA[My son is 2.5 years old. Two of his favourite TV programmes are Timmy Time and Octonauts . There are 78 episodes of Timmy Time and 52 episodes of Octonauts. There is one DVD of Octonauts, which contains eight episodes. Another DVD is due next month containing another eight episodes. This will mean that 31% [...]]]></description>
			<content:encoded><![CDATA[<p>My son is 2.5 years old. Two of his favourite TV programmes are <a href="http://en.wikipedia.org/wiki/Timmy_Time" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Timmy_Time?referer=');">Timmy Time</a> and <a href="http://en.wikipedia.org/wiki/The_Octonauts" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/The_Octonauts?referer=');">Octonauts</a> . There are 78 episodes of Timmy Time and 52 episodes of Octonauts.</p>
<p>There is one DVD of Octonauts, which contains eight episodes. Another DVD is due next month containing another eight episodes. This will mean that 31% of this programme is available to buy.</p>
<p>There are <a href="http://www.aardstore.com/Timmy-Time/DVD/v" onclick="pageTracker._trackPageview('/outgoing/www.aardstore.com/Timmy-Time/DVD/v?referer=');">eight Timmy Time DVDs</a> totalling around 65 episodes. This means that around 83% of this programme is available to buy.</p>
<p>To my knowledge, the BBC have aired 100% of both these series. </p>
<p>A very quick look on popular, er, file distribution sites reveals about 50 episodes of Octonauts (96%), and I think every episode of Timmy Time (100%).</p>
<p>I want to buy stuff, and it isn&#8217;t even possible; yet it is available for free if I download it illegally. It&#8217;s been, what, five years now? Have we really not moved on?</p>
]]></content:encoded>
			<wfw:commentRss>http://philwilson.org/blog/2012/02/punished-for-being-a-good-boy/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Disqus this</title>
		<link>http://philwilson.org/blog/2012/01/disqus-this</link>
		<comments>http://philwilson.org/blog/2012/01/disqus-this#comments</comments>
		<pubDate>Sun, 22 Jan 2012 16:16:20 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[comments]]></category>
		<category><![CDATA[disqus]]></category>
		<category><![CDATA[outsourcing]]></category>
		<category><![CDATA[risk]]></category>

		<guid isPermaLink="false">http://philwilson.org/blog/2012/01/disqus-this</guid>
		<description><![CDATA[It amazes me that people who profess to be interested in conversation, in thoughts and in communities of ideas still use Disqus to host the comments on their sites. Did no-one learn the lessons of a decade ago, when we did this before?]]></description>
			<content:encoded><![CDATA[<p>It amazes me that people who profess to be interested in conversation, in thoughts and in communities of ideas still use <a href="http://disqus.com" onclick="pageTracker._trackPageview('/outgoing/disqus.com?referer=');">Disqus</a> to host the comments on their sites. Did no-one learn the lessons of a decade ago, when we did this before?</p>
]]></content:encoded>
			<wfw:commentRss>http://philwilson.org/blog/2012/01/disqus-this/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
