<?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/"
	xmlns:georss="http://www.georss.org/georss" >

<channel>
	<title>Even the wrong words seem to rhyme &#187; wordpress</title>
	<atom:link href="http://www.kevinblake.co.uk/tag/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kevinblake.co.uk</link>
	<description>a blog-life by Kevin Blake</description>
	<lastBuildDate>Thu, 13 May 2010 22:27:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Rescuscitating AMM with Amazon Web Service signed requests</title>
		<link>http://www.kevinblake.co.uk/rescuscitating-amm-with-amazon-web-service-signed-requests/656/</link>
		<comments>http://www.kevinblake.co.uk/rescuscitating-amm-with-amazon-web-service-signed-requests/656/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 12:19:39 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[amm]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.kevinblake.co.uk/rescuscitating-amm-with-amazon-web-service-signed-requests/656/</guid>
		<description><![CDATA[A few days ago Amazon added a requirement to their AWS that all requests to the service be signed, lest they be rejected. I&#8217;ve been using Sozu&#8217;s excellent Amazon Media Manager plugin for a while now to manage the currently reading list on this blog. It&#8217;s been a great way to keep track of exactly [...]]]></description>
			<content:encoded><![CDATA[<p>A few days ago Amazon added a requirement to their AWS that all <a href="http://docs.amazonwebservices.com/AWSECommerceService/latest/DG/index.html?rest-signature.html" target="_blank">requests to the service be signed</a>, lest they be rejected.  I&#8217;ve been using Sozu&#8217;s excellent <a href="http://www.sozu.co.uk/software/amm/" target="_blank">Amazon Media Manager plugin</a> for a while now to manage the currently reading list on this blog.  It&#8217;s been a great way to keep track of exactly what I have read (avoiding the need to, like, remember), as well as masking my illiteracy by pasting a giant list of what is commonly known as airport trash.</p>
<p>Unfortunately, this is one plugin that hasn&#8217;t been updated in quite a while (after all, if ain&#8217;t broke&#8230;), so it broke.  Being the sort of developer that&#8217;s quite happy to pick up a block of php and hack it until it works, I stumbled across this blog entitled &#8216;<a href="http://mierendo.com/software/aws_signed_query/" target="_blank">Amazon® AWS HMAC signed request using PHP</a>&#8216;, which has a function to download.</p>
<p>So to fix AMM:</p>
<p>1. <a href="http://mierendo.com/software/aws_signed_query/aws_signed_request.zip">Download that file</a>, and copy the contents into the bottom of amm_parser.php.</p>
<p>2.  In the same file (amm_parser.php), replace your _setUrl function with this one:</p>
<div id="wpshdo_1" class="wp-synhighlighter-outer"><div id="wpshdt_1" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_1"></a><a id="wpshat_1" class="wp-synhighlighter-title" href="#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.kevinblake.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Print code"><img border="0" style="border: 0 none" src="http://www.kevinblake.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.kevinblake.co.uk/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.kevinblake.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;"><pre class="php" style="font-family:monospace;"><span class="kw2">function</span> <span class="sy0">&amp;</span>_setUrl<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
	<span class="co1">//Build URL from base URL and other required parameters</span>
	<span class="kw1">switch</span> <span class="br0">&#40;</span><span class="re0">$this</span><span class="sy0">-&gt;</span>_locale<span class="br0">&#41;</span> <span class="br0">&#123;</span>				
		<span class="kw1">case</span> <span class="st_h">'uk'</span><span class="sy0">:</span>
			<span class="re0">$region</span> <span class="sy0">=</span> <span class="st_h">'co.uk'</span><span class="sy0">;</span>
			<span class="kw1">break</span><span class="sy0">;</span>
		<span class="kw1">case</span> <span class="st_h">'de'</span><span class="sy0">:</span>
			<span class="re0">$region</span> <span class="sy0">.=</span> <span class="st_h">'de'</span><span class="sy0">;</span>
			<span class="kw1">break</span><span class="sy0">;</span>
		<span class="kw1">case</span> <span class="st_h">'jp'</span><span class="sy0">:</span>
			<span class="re0">$region</span> <span class="sy0">.=</span> <span class="st_h">'co.jp'</span><span class="sy0">;</span>
			<span class="kw1">break</span><span class="sy0">;</span>
		<span class="kw1">case</span> <span class="st_h">'fr'</span><span class="sy0">:</span>
			<span class="re0">$region</span> <span class="sy0">.=</span> <span class="st_h">'fr'</span><span class="sy0">;</span>
			<span class="kw1">break</span><span class="sy0">;</span>
		<span class="kw1">case</span> <span class="st_h">'ca'</span><span class="sy0">:</span>
			<span class="re0">$region</span> <span class="sy0">.=</span> <span class="st_h">'ca'</span><span class="sy0">;</span>
			<span class="kw1">break</span><span class="sy0">;</span>
		<span class="kw1">case</span> <span class="st_h">'us'</span><span class="sy0">:</span>
		<span class="kw1">default</span><span class="sy0">:</span>
			<span class="re0">$region</span> <span class="sy0">=</span> <span class="st_h">'com'</span><span class="sy0">;</span>
			<span class="kw1">break</span><span class="sy0">;</span>
	<span class="br0">&#125;</span>
	<span class="re0">$public_key</span> <span class="sy0">=</span> <span class="st0">&quot;&lt; &lt; Your Access Key ID &gt;&gt;&quot;</span><span class="sy0">;</span>
	<span class="re0">$private_key</span> <span class="sy0">=</span> <span class="st0">&quot;&lt; &lt; Your Secret Access Key &gt;&gt;&quot;</span><span class="sy0">;</span>
	<span class="re0">$url</span> <span class="sy0">=</span> aws_signed_request<span class="br0">&#40;</span><span class="re0">$region</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span>
			<span class="st0">&quot;Operation&quot;</span><span class="sy0">=&gt;</span> <span class="st0">&quot;ItemSearch&quot;</span><span class="sy0">,</span>
			<span class="st0">&quot;Keywords&quot;</span> <span class="sy0">=&gt;</span> <span class="re0">$this</span><span class="sy0">-&gt;</span>_parameters<span class="br0">&#91;</span>Keywords<span class="br0">&#93;</span><span class="sy0">,</span>
			<span class="st0">&quot;ResponseGroup&quot;</span><span class="sy0">=&gt;</span><span class="re0">$this</span><span class="sy0">-&gt;</span>_parameters<span class="br0">&#91;</span>ResponseGroup<span class="br0">&#93;</span><span class="sy0">,</span>
			<span class="st0">&quot;SearchIndex&quot;</span> <span class="sy0">=&gt;</span> <span class="re0">$this</span><span class="sy0">-&gt;</span>_parameters<span class="br0">&#91;</span>SearchIndex<span class="br0">&#93;</span><span class="sy0">,</span>
			<span class="st0">&quot;AssociateTag&quot;</span> <span class="sy0">=&gt;</span> <a href="http://www.php.net/urlencode"><span class="kw3">urlencode</span></a><span class="br0">&#40;</span><span class="re0">$this</span><span class="sy0">-&gt;</span>_associate_tag<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">,</span>
			<span class="re0">$public_key</span><span class="sy0">,</span> <span class="re0">$private_key</span><span class="br0">&#41;</span><span class="sy0">;</span>
	<span class="kw1">return</span> <span class="re0">$url</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>3.  Oddly enough, this new method requires a private secret key which Amazon recommends to not give to anyone.  So I&#8217;m not going to post mine here, even though it&#8217;s required for the plugin to work.  So before I ponder that particular nugget of madness, you&#8217;ll need to <a href="https://aws-portal.amazon.com/gp/aws/developer/account/index.html" target="_blank">sign up for an AWS developer account</a>, and find your own keys via the <a href="https://aws-portal.amazon.com/gp/aws/developer/account/index.html?ie=UTF8&#038;action=access-key" target="_blank">Access Identifiers</a> page.  These need to be added into the function above.</p>
<p>That should be enough to get you back up and running again, although selfishly I&#8217;ve only really tested it for my needs alone.  So please let me know if it works, or fails miserably.</p>
<p>For all the legal bits, I&#8217;m not at all affiliated with Amazon or Sozu &#8211; so please use at your own risk <img src='http://www.kevinblake.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevinblake.co.uk/rescuscitating-amm-with-amazon-web-service-signed-requests/656/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Travel map &#8211; countries visited</title>
		<link>http://www.kevinblake.co.uk/travel-map-countries-visited/460/</link>
		<comments>http://www.kevinblake.co.uk/travel-map-countries-visited/460/#comments</comments>
		<pubDate>Sun, 22 Mar 2009 17:14:04 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[geotagging]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google maps]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[travel]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.kevinblake.co.uk/?p=460</guid>
		<description><![CDATA[I&#8217;ve been looking for a good countries visited map for quite some time. There&#8217;s something satisfying about painting the world red (or in this case, orange), and something humbling about seeing massive chunks of the planet untouched. So since we&#8217;re approaching April and I&#8217;m getting the inevitable itchy feet again, I&#8217;ve gone hunting. Up until [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been looking for a good countries visited map for quite some time.  There&#8217;s something satisfying about painting the world red (or in this case, orange), and something humbling about seeing massive chunks of the planet untouched.  So since we&#8217;re approaching April and I&#8217;m getting the inevitable itchy feet again, I&#8217;ve gone hunting.</p>
<p>Up until now, <a href="http://www.world66.com/community/mymaps" target="_blank">World66</a> had seemed my only option.  But in the Age of Google, posting images for this sort of thing seems a bit of a letdown.  Fortunately <a href="http://www.29travels.com/" target="_blank">29travels</a> have just the thing with their Google Map version.</p>
<div style="padding:5px;text-align:center"><iframe width="575" height="300" frameborder="1" scrolling="no" marginheight="0" style="border:solid 1px black;margin:0 auto;" marginwidth="0" src="http://www.29travels.com/getmap.php?j=ALATBACYCZDEESFRGBHRISITMKMTMENLNOPLSITRUSVAVN&#038;c=cc41c9f2&#038;w=575&#038;h=300"></iframe></div>
<p>Pretty cool but it&#8217;s a shame there doesn&#8217;t seem to be an option to edit the map.  But, a quick look at the iframe source, and you can see it&#8217;s pretty easy to hack in any new countries as you visit.  Providing you know the right country codes of course.</p>
<p><code><a href="http://www.29travels.com/getmap.php?j=ALATBACYCZDEESFRGBHRISITMKMTMENLNOPLSITRUSVAVN&amp;c=cc41c9f2&amp;w=575&amp;h=300" target="_blank">http://www.29travels.com/getmap.php?<strong>j=ALATBACYCZDEESFRGBHRISITMKMTMENLPLSITRUSVAVN</strong>&amp;c=cc41c9f2&amp;w=575&amp;h=300</a></code></p>
<p>That query string is a long list of 2-digit country codes.  So, if you know the code for the country you want to add, just adding it to the string will provide all the highlighting you need.  For example Australia = AU</p>
<p><code><a href="http://www.29travels.com/getmap.php?j=ALATBACYCZDEESFRGBHRISITMKMTMENLPLSITRUSVAVNAU&amp;c=cc41c9f2&amp;w=575&amp;h=300" target="_blank">http://www.29travels.com/getmap.php?j=ALATBACYCZDEESFRGBHRISITMKMTMENLPLSITRUSVAVN<strong>AU</strong>&amp;c=cc41c9f2&amp;w=575&amp;h=300</a></code></p>
<p>Who wants to package this up into a WordPress plugin for me? <img src='http://www.kevinblake.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevinblake.co.uk/travel-map-countries-visited/460/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Code highlighting, and the magic of LINQ</title>
		<link>http://www.kevinblake.co.uk/code-highlighting-and-the-magic-of-linq/182/</link>
		<comments>http://www.kevinblake.co.uk/code-highlighting-and-the-magic-of-linq/182/#comments</comments>
		<pubDate>Sun, 22 Feb 2009 14:37:19 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[geshi]]></category>
		<category><![CDATA[linq]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[web design]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.kevinblake.co.uk/?p=182</guid>
		<description><![CDATA[I&#8217;ve had a small block of code in my drafts folder for quite some time now, just looking for an excuse to publish it.  I&#8217;ve been using LINQ a lot in the past 6 months, and it&#8217;s one of the recent additions to the language that&#8217;s made me think twice before using PHP or Perl [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had a small block of code in my drafts folder for quite some time now, just looking for an excuse to publish it.  I&#8217;ve been using <abbr title="Language Integrated Query">LINQ</abbr> a lot in the past 6 months, and it&#8217;s one of the recent additions to the language that&#8217;s made me think twice before using PHP or Perl for my own projects (despite the existence of <a href="http://www.codeplex.com/PHPLinq" target="_blank">PHPLinq</a>).</p>
<blockquote><p>HIM: LINQ&#8217;s like pringles<br />
ME: only makes sense after drugs?<br />
HIM: once you pop you can&#8217;t stop</p></blockquote>
<p>But I didn&#8217;t really want to write a full post on LINQ.  It seemed dull.  It&#8217;d been done before.  It&#8217;s old news.</p>
<p>So I picked up the <a href="http://www.fractalizer.ru/freeware-projects/wordpress-plugins/wp-synhighlight/" target="_blank">WP-SynHighlight</a> extension for WordPress.  Which gives some rather cool code-highlighting through <abbr title="Generic Syntax Highlighter">GeSHi</abbr>.</p>
<p>So here&#8217;s some highlighted stylised C# LINQ demonstrating how simple it is to combine LINQ to SQL with LINQ to XML data sources.<br />
<div id="wpshdo_2" class="wp-synhighlighter-outer"><div id="wpshdt_2" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_2"></a><a id="wpshat_2" class="wp-synhighlighter-title" href="#codesyntax_2"  onClick="javascript:wpsh_toggleBlock(2)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_2" onClick="javascript:wpsh_code(2)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.kevinblake.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_2" onClick="javascript:wpsh_print(2)" title="Print code"><img border="0" style="border: 0 none" src="http://www.kevinblake.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.kevinblake.co.uk/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.kevinblake.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_2" class="wp-synhighlighter-inner" style="display: block;"><pre class="csharp" style="font-family:monospace;">var answers <span class="sy0">=</span> <span class="br0">&#40;</span>from a <span class="kw1">in</span> poll.<span class="me1">Descendants</span><span class="br0">&#40;</span><span class="st0">&quot;AnswerSet&quot;</span><span class="br0">&#41;</span>.<span class="me1">Descendants</span><span class="br0">&#40;</span><span class="st0">&quot;Answer&quot;</span><span class="br0">&#41;</span>
join aCount <span class="kw1">in</span> dbVotes
on a.<span class="me1">Attribute</span><span class="br0">&#40;</span><span class="st0">&quot;id&quot;</span><span class="br0">&#41;</span>.<span class="me1">Value</span>  equals aCount.<span class="me1">AnswerId</span>.<span class="me1">ToString</span><span class="br0">&#40;</span><span class="br0">&#41;</span> into aJoined
from o <span class="kw1">in</span> aJoined.<span class="me1">DefaultIfEmpty</span><span class="br0">&#40;</span><span class="br0">&#41;</span>
select <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> <span class="br0">&#123;</span>
id <span class="sy0">=</span> a.<span class="me1">Attribute</span><span class="br0">&#40;</span><span class="st0">&quot;id&quot;</span><span class="br0">&#41;</span>.<span class="me1">Value</span>,
percentage <span class="sy0">=</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>o <span class="sy0">==</span> <span class="kw1">null</span> <span class="sy0">?</span> 0 <span class="sy0">:</span> o.<span class="me1">VotesCount</span><span class="br0">&#41;</span> <span class="sy0">/</span> dbVotes.<span class="me1">Sum</span><span class="br0">&#40;</span>b <span class="sy0">=&gt;</span> b.<span class="me1">VotesCount</span>.<span class="me1">GetValueOrDefault</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>  <span class="sy0">*</span> 100<span class="br0">&#41;</span>,
count <span class="sy0">=</span> o <span class="sy0">==</span> <span class="kw1">null</span> <span class="sy0">?</span> 0 <span class="sy0">:</span> o.<span class="me1">VotesCount</span>, text <span class="sy0">=</span> a.<span class="me1">Value</span>
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></p>
<p>Now if only Microsoft would release LINQ to XSD out of preview.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevinblake.co.uk/code-highlighting-and-the-magic-of-linq/182/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using SVN to manage your WordPress install</title>
		<link>http://www.kevinblake.co.uk/using-svn-to-manage-your-wordpress-install/251/</link>
		<comments>http://www.kevinblake.co.uk/using-svn-to-manage-your-wordpress-install/251/#comments</comments>
		<pubDate>Sat, 27 Sep 2008 23:16:50 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.kevinblake.co.uk/?p=251</guid>
		<description><![CDATA[I use SVN to manage both this blog and the Blakepics Gallery2 installation.  Using the version control software as a means of keeping my own sites&#8217; shared components up to date is horribly convenient once you get through the initial attempts of &#8220;shit, I&#8217;ve broken it again&#8221;. WordPress have full instructions for setting up your [...]]]></description>
			<content:encoded><![CDATA[<p>I use SVN to manage both this blog and the Blakepics Gallery2 installation.  Using the version control software as a means of keeping my own sites&#8217; shared components up to date is horribly convenient once you get through the initial attempts of &#8220;shit, I&#8217;ve broken it again&#8221;.</p>
<p>WordPress have <a href="http://codex.wordpress.org/Installing/Updating_WordPress_with_Subversion" target="_blank">full instructions for setting up your blog with SVN</a>.  I&#8217;d recommend sticking to the &#8216;Tracking Stable Version&#8217; section and controlling your upgrades rather than checking out the trunk and risking an unstable install.  This basically comes down to a single command to be run within your wwwroot.</p>
<p><code>svn co http://svn.automattic.com/wordpress/tags/2.6.2 .</code></p>
<p>When a new version is released, you can switch to that with:</p>
<p><code>svn sw http://svn.automattic.com/wordpress/tags/2.6.3</code></p>
<p>What they don&#8217;t mention, is you can do exactly the same with your plugins using the repository here&#8230;</p>
<ul>
<li><a href="http://plugins.svn.wordpress.org/" target="_blank">http://plugins.svn.wordpress.org/</a></li>
</ul>
<p>For example, find the plugin you want, and checkout to your plugin folder:</p>
<p><code>svn co http://plugins.svn.wordpress.org/share-this/tags/2.3/ share-this</code></p>
<p>As before, you can switch to new releases (make sure you&#8217;re in that plugin directory first) with:</p>
<p><code>svn sw http://plugins.svn.wordpress.org/share-this/tags/2.3/</code></p>
<p>And should you forget the URL you&#8217;ve got it from (like when you see there&#8217;s an upgrade available, running &#8216;svn status&#8217; in that directory should help you out.</p>
<p>Once you get the hang of it, it really saves so much more time than that slow download, unzip, copy process you&#8217;re probably all used to, and you stand a much better chance at maintaining your own modifications without rewriting them all the time <img src='http://www.kevinblake.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevinblake.co.uk/using-svn-to-manage-your-wordpress-install/251/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter &#8211; Now the machines are syndicating us</title>
		<link>http://www.kevinblake.co.uk/twitter-now-the-machines-are-syndicating-us/197/</link>
		<comments>http://www.kevinblake.co.uk/twitter-now-the-machines-are-syndicating-us/197/#comments</comments>
		<pubDate>Tue, 12 Aug 2008 19:45:57 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[xbox 360]]></category>

		<guid isPermaLink="false">http://www.kevinblake.co.uk/?p=197</guid>
		<description><![CDATA[&#8230; that was syndication for the sake of it. That&#8217;s what I said, word for word. Then a colleague pointed out that I could have twitter automatically update from my blog or Blakepics. And all hell broke loose. I didn&#8217;t like Twitter as another way of updating my blog, or having it throw up all [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_198" class="wp-caption alignright" style="width: 112px"><a href="http://www.kevinblake.co.uk/wp-content/uploads/2008/08/rssx.gif" rel="lightbox"><img class="size-thumbnail wp-image-198" title="RSS" src="http://www.kevinblake.co.uk/wp-content/uploads/2008/08/rssx.gif" alt="" width="102" height="102" /></a><p class="wp-caption-text">RSS recursion is not a toy</p></div>
<blockquote><p>&#8230; that was syndication for the sake of it.</p></blockquote>
<p>That&#8217;s what I said, word for word.  Then <a href="http://twitter.com/mcunnington" target="_blank">a colleague</a> pointed out that I could have twitter <a href="http://twitterfeed.com/" target="_blank">automatically update</a> from my blog or Blakepics.  And all hell broke loose.</p>
<p>I didn&#8217;t like Twitter as another way of updating my blog, or having it throw up all over my Facebook status every time I opened up my Twitter-enabled fridge.  But reaching out to new audiences, and the potential to bombard mobile phone networks every time I bounce from one country to the next&#8230; Well suddenly it&#8217;s become quite cool.</p>
<p>And yes, I admit &#8211; I was tempted to install the application to <a href="http://www.joystiq.com/2007/05/15/twitter-your-xbox-360-gamertag/" target="_blank">syndicate my Xbox 360 status</a> as well.  But I&#8217;m not sure I&#8217;m ready to spam everyone that much.  Yet.</p>
<blockquote><p>&#8220;Kevin has just been killed by a bunny rabbit on Halo 3.  Again&#8221;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.kevinblake.co.uk/twitter-now-the-machines-are-syndicating-us/197/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Why don&#8217;t you try the homepage?  Idiot.</title>
		<link>http://www.kevinblake.co.uk/why-dont-you-try-the-homepage-idiot/170/</link>
		<comments>http://www.kevinblake.co.uk/why-dont-you-try-the-homepage-idiot/170/#comments</comments>
		<pubDate>Mon, 31 Mar 2008 20:48:06 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[web design]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.kevinblake.co.uk/?p=170</guid>
		<description><![CDATA[I recently read &#8220;The Inmates are Running the Asylum&#8221; by the father of VB, Alan Cooper. He spends quite a while arguing the case against obnoxious interfaces that make life difficult for your users. Quite right too. I highly recommend the read if you&#8217;re involved in any kind of user interface. Actually, I highly recommend [...]]]></description>
			<content:encoded><![CDATA[<p>I recently read &#8220;<a href="http://www.amazon.co.uk/exec/obidos/ASIN/0672326140/puzzlebox-21/" target="_blank">The Inmates are Running the Asylum</a>&#8221; by the father of VB, Alan Cooper.  He spends quite a while arguing the case against obnoxious interfaces that make life difficult for your users.   Quite right too.   I highly recommend the read if you&#8217;re involved in any kind of user interface.   Actually, I highly recommend it anyway &#8211; empower yourself with the knowledge that things don&#8217;t have to be this way.</p>
<p>Anyway, my small part towards eliminating frustration and annoyance was to try and <a href="http://www.alistapart.com/articles/perfect404" target="_blank">create the perfect 404 page</a>.  And I know what you&#8217;re going to say&#8230; If you desire perfection, why would anyone ever even <strong>see </strong>your 404 page.  Well you&#8217;re quite right, but it doesn&#8217;t hurt to be defensive about these sort of things.  Accidents happen and believe it or not, not all of them are entirely my fault.  Sometimes.</p>
<p>I&#8217;m not going to link to it here, because my 404 page automatically emails me whenever there&#8217;s a broken internal link.  Frankly I could do without the hassle.  That&#8217;s step one, and here are some more.</p>
<ul>
<li><strong>Tell the user what&#8217;s wrong</strong>.  If they&#8217;ve come from another site (do this by checking the referrer URL), let them know which site, and that the link was broken at that end.  If they haven&#8217;t &#8211; chances are it&#8217;s a bookmark / favourite.  Tell the user that.  The term &#8217;404&#8242; is not helpful &#8211; telling the user what happened, is.</li>
<li><strong>Recent Posts</strong>.  It&#8217;s a blog.  If you&#8217;re here, you&#8217;re most likely reading one of the latest five posts.  If you&#8217;re applying this to your own non-blog site, list your most changed popular pages.</li>
<li><strong>Search</strong>.  If you&#8217;re looking for something and I&#8217;ve already failed to find it, searching seems more appropriate than to keep doing what you&#8217;re doing.</li>
<li><strong>Possible matches</strong>.  You&#8217;ve got a URL &#8211; use it.  So I try to guess at what the user was hoping to find <a href="http://wasabi.pbwiki.com/Related%20Entries" target="_blank">based on what&#8217;s in the URL</a>.  If you&#8217;ve got some decent <acronym title="Search Engine Optimisation">SEO</acronym> going on, chances are this will do better than you think.</li>
<li><strong>Other helpful links</strong>.  The homepage is generally a good starting point, and well, I don&#8217;t have a site map.  But if I did &#8211; this would be another good thing to include.</li>
<li><strong>Google Cache</strong> &#8211; Google maintains a cache, so why not make some use of it and point your visitors at it to hunt for your missing URL.  This might not be exactly what you want for your site, but they could find it on their own anyway so stop being difficult.</li>
<li><strong>Tags</strong>.  All my posts are tagged, and provide a nice overview of what the posts are about, so let&#8217;s include those.</li>
</ul>
<p>Turn your 404 page into a jump-board rather than a brick wall &#8211; or your readers are just going to find something better to do.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevinblake.co.uk/why-dont-you-try-the-homepage-idiot/170/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fixing wordpress RSS XML parsing errors</title>
		<link>http://www.kevinblake.co.uk/fixing-wordpress-rss-xml-parsing-errors/152/</link>
		<comments>http://www.kevinblake.co.uk/fixing-wordpress-rss-xml-parsing-errors/152/#comments</comments>
		<pubDate>Sat, 20 Oct 2007 17:21:52 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.kevinblake.co.uk/technology/fixing-wordpress-rss-xml-parsing-errors/152/</guid>
		<description><![CDATA[WordPress RSS feeds can be annoying. Really annoying. If you install a bad plugin, theme, or even edit some of the existing php files you might find your RSS feeds start getting this parsing error. XML Parsing Error: xml declaration not at start of external entity Line Number 3, Column 1:&#60;?xml version="1.0" encoding="UTF-8"?&#62; You might [...]]]></description>
			<content:encoded><![CDATA[<p>WordPress RSS feeds can be annoying.  Really annoying.  If you install a bad plugin, theme, or even edit some of the existing php files you might find your RSS feeds start getting this parsing error.</p>
<p><code>XML Parsing Error: xml declaration not at start of external entity<br />
Line Number 3, Column 1:&lt;?xml version="1.0" encoding="UTF-8"?&gt;</code></p>
<p>You might find that <a href="http://www.wynia.org/wordpress/2006/01/19/rss-feeds-broken-wordpress-plugins-and-duct-tape-solutions/">enabling output buffering for your RSS feeds</a> might sort you out, as suggested by J Wynia.  But unfortunately it didn&#8217;t do it for me.</p>
<p>So, go to the source and fix up the files causing you problems, with the following perl script.  It will check each of your php files for any that have extra line feeds at the start, or end &#8211; and remove them.  You&#8217;ll need SSH / command line access for this, as well as perl installed.</p>
<p>Use it at your own risk.  It worked for me, but is otherwise untested &#8211; so, make a backup first <img src='http://www.kevinblake.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<ul>
<li> <a href="/code-samples/fix-rss-xml-spacing.txt">Perl script: Fix line spacing</a></li>
</ul>
<h2>Instructions</h2>
<ol>
<li>Backup your wordpress installation</li>
<li>Download the script to the root directory of your wordpress installation.</li>
<li>cd to your installation directory.</li>
<li>Run the script: <em>perl fix-rss-xml-spacing.txt.</em></li>
<li>Fingers crossed, your RSS feeds will now work again (and hopefully, so will the rest of your blog).</li>
</ol>
<p>Good luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevinblake.co.uk/fixing-wordpress-rss-xml-parsing-errors/152/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>This site is designed for the Wii &#8230; seriously.</title>
		<link>http://www.kevinblake.co.uk/this-site-is-designed-for-the-wii-seriously/104/</link>
		<comments>http://www.kevinblake.co.uk/this-site-is-designed-for-the-wii-seriously/104/#comments</comments>
		<pubDate>Tue, 08 May 2007 21:16:23 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[wii]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.puzzlebox.co.uk/?p=104</guid>
		<description><![CDATA[Hot on the tail of Google Labs with their updated RSS reader now supporting the Wiimote, in almost eyebrow-raising excitement &#8211; I wanted to congratulate this Michael Bolin guy on his Wiimote javascript libraries. So I did a little more digging, and I found a nice little Wii WordPress plugin that detects if you&#8217;re using [...]]]></description>
			<content:encoded><![CDATA[<p>Hot on the tail of Google Labs with their updated <a target="_blank">RSS reader now supporting the Wiimote</a>, in almost eyebrow-raising excitement &#8211; I wanted to congratulate this Michael Bolin guy on his <a href="http://www.bolinfest.com/wii/" target="_blank">Wiimote javascript libraries</a>.</p>
<p>So I did a little more digging, and I found a nice little <a href="http://wiinintendo.net/2006/12/27/wordpress-wii-edition-plugin/" target="_blank">Wii WordPress plugin</a> that detects if you&#8217;re using a Wii and displays the site accordingly.  Nice big text, easy to navigate links, perfect for that in the armchair browsing we all wish we could do.</p>
<p>That&#8217;s all very well, but it doesn&#8217;t make much of Michael Bolin&#8217;s library.  So I did what any self-respecting web developer would do, and hacked the two together in the dirtiest quickest way possible.  So if you&#8217;ve got a Wii &#8211; try it out&#8230;  Go to blog.puzzlebox.co.uk in Opera and see the layout especially designed for you.  Click on an article to read it, and while you&#8217;re there, hit the Left and Right buttons of the d-pad, and you&#8217;ll skip between the articles as well.</p>
<p>Now then, about that Wii keyboard &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevinblake.co.uk/this-site-is-designed-for-the-wii-seriously/104/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
