<?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>tom bh &#187; Computing</title>
	<atom:link href="http://www.tombh.co.uk/category/computing/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tombh.co.uk</link>
	<description>Making websites</description>
	<lastBuildDate>Tue, 27 Jul 2010 12:54:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Integrity</title>
		<link>http://www.tombh.co.uk/2010/07/integrity/</link>
		<comments>http://www.tombh.co.uk/2010/07/integrity/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 11:42:07 +0000</pubDate>
		<dc:creator>tombh</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Musings]]></category>
		<category><![CDATA[Spirituality]]></category>

		<guid isPermaLink="false">http://www.tombh.co.uk/?p=168</guid>
		<description><![CDATA[Sandalwood is considered the epitome of excellence, imparting fragrance even to the axe that cuts it.

The Hindu Vedas
Sandalwood
Are you good at what you do? Or are you just good at appearing to be good at what you do? Those who fall into the former category are the Sandalwoods of this world. Those who fall into [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p class="first-child "><span title="S" class="cap"><span>S</span></span>andalwood is considered the epitome of excellence, imparting fragrance even to the axe that cuts it.</p></blockquote>
<p><span id="more-168"></span></p>
<p style="text-align: right;"><em>The Hindu Vedas</em></p>
<h2>Sandalwood</h2>
<p>Are you good at what you do? Or are you just good at <em>appearing</em> to be good at what you do? Those who fall into the former category are the Sandalwoods of this world. Those who fall into the latter category are good at what they do (or appear to be anyway) in only very specific circumstances.</p>
<p>In most disciplines, generally speaking, we have control over both the context in which our work is encountered and by whom. If we lack the skill to solve the problem laid out to us then it is possible for us to manipulate the context, and thus the problem, into one which we <em>do</em> know how to solve. Or failing that maybe we can borrow someone else&#8217;s solution, tweak it a little and attempt to ensure that none of the original problem solver&#8217;s fans see what you&#8217;ve done. It all comes down to our ability to authentically respond to the utterly unique nuances of an individual problem. What differentiates the master from the amateur is that the master can conjure, seemingly from nowhere, a response that is as unique as the problem, perfectly matching, without shortage or excess, the precise nature of the question posed to them. The amateur however, struggles and must fall back on mere mannerisms, clichés and set-pieces.</p>
<p>There&#8217;s absolutely nothing wrong with being an amateur, it is a most worthy stage to find oneself, the concern is those that habit this phase yet claim, whether implicitly or explicitly, to be otherwise. The work of a master is a joy to behold, it oozes confidence, it invites scrutiny at every turn, no detail has been left unaccounted for. To achieve such a level of mastery one&#8217;s skill must have been truly taken to heart, to have saturated every facet of one&#8217;s life. Such a person spares not a single thought for how their solution might be criticised by others, because they know it is self-consistent in every aspect.</p>
<p>If you have expended any of your energy on the appearance of your solution — rather than on the core of the solution itself — then you will inevitably squirm and whine when faced with critical scrutiny; the inherent contradiction in it will be exposed and there is truly nothing uglier. However when the axe of scrutiny slices at the work of true skill then there is nothing to fear, not a single aspect of its nature could ever reveal discrepancy. In fact the deeper the axe penetrates, the sweeter the scent of integrity that wafts through the air.</p>
<h2>Real-life Human Beings</h2>
<p>I&#8217;m not against the whole Web 2.0 bandwagon, in fact I quite like the term and what it stands for. Let me just distil one feature of this widely recognised paradigm shift; namely the relocation of the web&#8217;s centre of gravity from the privileged elite of rich and clever developers to the everyman of good, honest and humble users. Facebook, Wikipedia, Blogs, Youtube, Twitter; it&#8217;s all about the <em>users</em> creating that which we find most engaging and valuable on the Net. Now the interesting thing here is that complimentary to this user-centered shift there&#8217;s been a simultaneous increase in the authenticity of the Net as a genuine medium of expression — we can date, make friends, lose friends, chat, hate, laugh and cry all the more easily because we can <em>express</em> ourselves all the more easily, warts and all. However, there&#8217;s something historical — and perhaps internally cultural — about the Net that encourages a re-imagination of our identities; think alter egos, exotic username handles, fantasy worlds and such like.</p>
<p>So whereas you hear a lot about the Net becoming more and more a social phenomenon, you hear very little about the Net as a bastion of the benefits of being involved in a society. In fact, more often you hear the opposite; parents complaining that their children don&#8217;t spend enough time with real children, for example. I would like to think however, that this is not so much a symptom of the Net itself, but more a reflection of the human desire to appear in the best possible light. The Net, more than any other medium, allows us to control both the context of how we are perceived and who perceives us and many of us choose to take advantage of this fact. Which I believe means we can choose otherwise.</p>
<p>Instead of re-inventing ourselves in cyberspace we are allowed to just be ourselves, to be real-life human beings. We don&#8217;t need to hide or censor anything. In fact, on the Net honesty is recognised as a valuable currency  just as much as it is everywhere else. The deciding factor isn&#8217;t so much the medium or the context through which we choose to express ourselves but the <em>intention</em> that we cultivate within our own inner worlds. We have a choice to actually <em>be a likeable person</em>, rather than just <em>appear</em> to be a likeable person. This is a personal and universal choice and one that applies unconditionally, no matter the context.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tombh.co.uk/2010/07/integrity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Frintr</title>
		<link>http://www.tombh.co.uk/2010/07/frintr/</link>
		<comments>http://www.tombh.co.uk/2010/07/frintr/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 09:25:38 +0000</pubDate>
		<dc:creator>tombh</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Mill Grist]]></category>

		<guid isPermaLink="false">http://www.tombh.co.uk/?p=170</guid>
		<description><![CDATA[A week ago today I launched Frintr. It&#8217;s a project, of my own inception, that I&#8217;ve been working on for 10 months. The basic gist is that you create a mosaic of your own profile picture from all the smaller profile pictures of your friends from Facebook, Twitter and Myspace, which you can then have [...]]]></description>
			<content:encoded><![CDATA[<p class="first-child "><span title="A" class="cap"><span>A</span></span> week ago today I launched <a href="http://www.frintr.com" target="_blank">Frintr</a>. It&#8217;s a project, of my own inception, that I&#8217;ve been working on for 10 months. The basic gist is that you create a mosaic of your own profile picture from all the smaller profile pictures of your friends from Facebook, Twitter and Myspace, which you can then have printed and sent to you as a poster. So not only has the project been technically difficult in terms of web development, but it&#8217;s also been a huge learning curve in terms of setting up my own business and cultivating an authentic brand. What&#8217;s more, even though the site is now live, there is still plenty more work to be done.</p>
<p><span id="more-170"></span></p>
<p>I&#8217;ve learnt so much, there must be a dozen or more blog posts I could write about my adventures; Facebook/Twitter/Mysapce Connect authentication, the Symfony framework, Nginx, Linux logging and statistics graphing, GIT versioning, user-testing, branding, business planning, Image Magick, print fulfilment, Service Level Agreements,  time management, global patenting, self-discipline, creativity and patience! I thought about writing about things as they happened but time had the better of me (well apart from the last couple of posts about the Myspace SDK and Nginx).</p>
<p>So in some ways I feel like a new man, having been through the furnace of such an involved process. My skills have been stretched and my confidence increased, I&#8217;ve a different perspective on the depth of my resources and what they can be put to achieve. And I&#8217;m still hungry for more!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tombh.co.uk/2010/07/frintr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySpaceID SDK and PHP 5.3</title>
		<link>http://www.tombh.co.uk/2010/03/myspaceid-sdk-and-php-5-3/</link>
		<comments>http://www.tombh.co.uk/2010/03/myspaceid-sdk-and-php-5-3/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 16:33:36 +0000</pubDate>
		<dc:creator>tombh</dc:creator>
				<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://www.tombh.co.uk/?p=160</guid>
		<description><![CDATA[If you&#8217;re trying to get the MyspaceID SDK working in PHP 5.3 then you&#8217;re going to need the updated version of the Janrain OpenID library instead of the version that it ships with as default.

You&#8217;ll know your version of the OpenID library is a problem because you&#8217;ll get lots of these errors;
Deprecated: Assigning the return [...]]]></description>
			<content:encoded><![CDATA[<p class="first-child "><span title="I" class="cap"><span>I</span></span>f you&#8217;re trying to get the MyspaceID SDK working in PHP 5.3 then you&#8217;re going to need the updated version of the Janrain OpenID library instead of the version that it ships with as default.</p>
<p><span id="more-160"></span></p>
<p>You&#8217;ll know your version of the OpenID library is a problem because you&#8217;ll get lots of these errors;</p>
<p><code>Deprecated: Assigning the return value of new by reference is deprecated</code></p>
<p>Once you&#8217;ve downloaded the updated library from <a href="http://sourcecookbook.com/en/recipes/60/janrain-s-php-openid-library-fixed-for-php-5-3-and-how-i-did-it">here</a>, just copy the /Auth folder (nothing else is needed) and replace the /Auth folder  in the MySpaceID SDK.</p>
<p><strong>However!</strong> You will also need to retain the /Auth/OpenID/OAuth.php file from the MySpaceID SDK as the updated  Janrain version doesn&#8217;t include it, just copy it over.</p>
<p>Happy days :D</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tombh.co.uk/2010/03/myspaceid-sdk-and-php-5-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lenny, Nginx, FastCGI and Symfony</title>
		<link>http://www.tombh.co.uk/2010/03/lenny-nginx-fastcgi-and-symfony/</link>
		<comments>http://www.tombh.co.uk/2010/03/lenny-nginx-fastcgi-and-symfony/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 10:19:47 +0000</pubDate>
		<dc:creator>tombh</dc:creator>
				<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://www.tombh.co.uk/?p=153</guid>
		<description><![CDATA[Running Apache on 256MB of RAM is not ideal and when I started worrying that my VPS might not be able to cope with sudden spikes in traffic I decided to give Nginx a shot.

This isn&#8217;t a concise tutorial, I mainly just want to share my Nginx config that got Symfony URL rewrites going, but [...]]]></description>
			<content:encoded><![CDATA[<p class="first-child "><span title="R" class="cap"><span>R</span></span>unning Apache on 256MB of RAM is not ideal and when I started worrying that my VPS might not be able to cope with sudden spikes in traffic I decided to give Nginx a shot.</p>
<p><span id="more-153"></span></p>
<p>This isn&#8217;t a concise tutorial, I mainly just want to share my Nginx config that got Symfony URL rewrites going, but here&#8217;s the basic idea;</p>
<h2>Don&#8217;t panic about downtime!</h2>
<p>It&#8217;s possible to run Nginx and Apache side by side on different ports so that you can migrate your vhost configs in your own time. Follow a tutorial <a href="http://www.ubuntugeek.com/using-nginx-as-a-reverse-proxy-to-get-the-most-out-of-your-vps.html">like this</a>.</p>
<h2>Packages</h2>
<p><strong>Nginx</strong></p>
<p>Debian Lenny currently only provides the older version 6 of Nginx, I can&#8217;t find any repos that offer the newer, stable version 7, so you&#8217;ll want to compile it yourself, not to worry, it&#8217;s very straightforward thanks to <a href="http://www.myatus.co.uk/2009/09/07/compiling-nginx-on-debian-ubuntu/">Myatu&#8217;s excellent tutorial</a>. I&#8217;d highly reccomend installing the Debian Nginx v6 package first in order to get the init scripts which aren&#8217;t supplied when compiling from source ‒ by compiling you are then simply replacing the binary.</p>
<p><strong>FastCGI</strong></p>
<p>You might come across a lot of people that say you need to rip some <em>spawn-php</em> package from Lighttpd, don&#8217;t bother. If you&#8217;re prepared to be running PHP 5.3 just get php-fpm from the DotDeb repo;</p>
<pre class="brush: bash;">deb http://php53.dotdeb.org stable all</pre>
<p>I already had php5 installed from the official Debian repos so I just did an <em>aptitude update</em> and <em>upgrade</em> and then installed <em>php5-fpm</em>.</p>
<p>Now you want to place this config inside the server{} definition of your Nginx configs, I&#8217;ve placed mine inside each individual /etc/nginx/sites-available config, but I&#8217;d hope there was some way of doing it more globally.</p>
<pre class="brush: bash;">
location ~ \.php($|/)
        {
                set  $script     $uri;
                set  $path_info  &quot;&quot;;

                if ($uri ~ &quot;^(.+\.php)(/.+)&quot;) {
                        set  $script     $1;
                        set  $path_info  $2;
                }

                fastcgi_pass 127.0.0.1:9000;
                fastcgi_param SCRIPT_FILENAME /your/web/root$script;
                fastcgi_param SCRIPT_NAME $script;
                #fastcgi_param PATH_INFO $fastcgi_script_name;
                include /etc/nginx/fastcgi_params;
        }
</pre>
<h2>Symfony Rewrite Rules</h2>
<p>Now this was by far the hardest bit for me, there&#8217;s very little definitive advice on this out there and it took a lot of trial and error to get this running exactly right, but here is what is working for me. Please note I think that it is important that this works in combination with the above FastCGI config above (also place within server{} defs);</p>
<pre class="brush: bash;">
location / {
          root   /your/web/root;
          index  index.php;

            if (-f $request_filename) {
              expires max;
              break;
            }

            if ($request_filename !~ &quot;\.(js|htc|ico|gif|jpg|png|css)$&quot;) {
              rewrite ^(.*) /index.php last;
            }

        }
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.tombh.co.uk/2010/03/lenny-nginx-fastcgi-and-symfony/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inserting unicode characters on Linux</title>
		<link>http://www.tombh.co.uk/2010/02/inserting-unicode-characters-on-linux/</link>
		<comments>http://www.tombh.co.uk/2010/02/inserting-unicode-characters-on-linux/#comments</comments>
		<pubDate>Sat, 13 Feb 2010 11:43:52 +0000</pubDate>
		<dc:creator>tombh</dc:creator>
				<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://www.tombh.co.uk/?p=143</guid>
		<description><![CDATA[If all you want to do is insert a special character like an em dash (—) or an ellipsis (…) in Linux you don&#8217;t need any special programs like scim or kcharselect, you simply;

Hold down CTRL+SHIFT+U and a little underlined u will appear
Type the unicode hexadecimal number for the character, eg 2014 for an em [...]]]></description>
			<content:encoded><![CDATA[<p class="first-child "><span title="I" class="cap"><span>I</span></span>f all you want to do is insert a special character like an em dash (—) or an ellipsis (…) in Linux you don&#8217;t need any special programs like <em>scim</em> or <em>kcharselect</em>, you simply;<span id="more-143"></span></p>
<ol>
<li>Hold down <strong>CTRL+SHIFT+U</strong> and a little underlined <span style="text-decoration: underline;"><strong>u</strong></span> will appear</li>
<li>Type the unicode hexadecimal number for the character, eg 2014 for an em dash</li>
<li>Press space and your character will magically appear!</li>
</ol>
<p>A <a href="http://www.alanwood.net/demos/ansi.html">reference like this</a> will help you find the corresponding hex digit for your character.</p>
<p>It&#8217;s amazing how such a simple and useful tool like this is so hard to find out about. I stumbled across this after hours of googling and even then it was tucked away half way through some comments :(</p>
<p><em>BTW, I did this on Debian Linux KDE4, so your mileage may vary.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tombh.co.uk/2010/02/inserting-unicode-characters-on-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>#uksnow timelapse</title>
		<link>http://www.tombh.co.uk/2010/01/uksnow-timelapse/</link>
		<comments>http://www.tombh.co.uk/2010/01/uksnow-timelapse/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 13:32:05 +0000</pubDate>
		<dc:creator>tombh</dc:creator>
				<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://www.tombh.co.uk/?p=119</guid>
		<description><![CDATA[I love snow, it makes everywhere look so beautiful and clean, plus it disrupts all those boring things like work and school. So I also love Ben Marsh&#8217;s Twitter mashup that plots #uksnow tagged tweets onto a map. Watching Ben&#8217;s map I itched to see the ebb, flow and movement of the tweets across the [...]]]></description>
			<content:encoded><![CDATA[<p class="first-child "><span title="I" class="cap"><span>I</span></span> love snow, it makes everywhere look so beautiful and clean, plus it disrupts all those boring things like work and school. So I also love <a href="http://uksnow.benmarsh.co.uk" target="_blank">Ben Marsh&#8217;s Twitter mashup</a> that plots #uksnow tagged tweets onto a map. Watching Ben&#8217;s map I itched to see the ebb, flow and movement of the tweets across the country, did they form perceivable fronts that reflected the paths of weather systems?</p>
<p><span id="more-119"></span></p>
<p>So I did a little research, realised it was within my skill level, and started building. Three days and some late nights later, <em>et voila</em>;</p>
<p><a href="http://uksnow.tombh.co.uk"><img class="size-full wp-image-121 alignnone" title="timelapse_screen" src="http://www.tombh.co.uk/wordpress/wp-content/uploads/2010/01/timelapse_screen.jpg" alt="timelapse_screen" width="480" height="328" /></a></p>
<p><a href="http://uksnow.tombh.co.uk" target="_blank">Go check it out »</a></p>
<h2>The basic recipe</h2>
<ul>
<li>1 x <a href="http://code.google.com/apis/maps/documentation/">Google Maps API</a>, version 2, client-side.</li>
<li>1 x <a href="http://code.google.com/apis/maps/articles/phpsqlgeocode.html">Google geocoding API</a>, server-side.</li>
<li>3 x Cron jobs.</li>
<li>2 x cached MySQL tables of Twitter search data.</li>
<li>1 x helping of jQuery.</li>
</ul>
<h2>Twitter Search</h2>
<p>First pre-heat your Twitter search archive as soon as possible because you can only really search about a week into the past, beyond that tweets become lost to the search engine.</p>
<p>Twitter&#8217;s search API is dead easy to use, though I must say it took me a while to realise that it didn&#8217;t need an API key. My number one tip would be to just use the &#8220;Advanced search&#8221; option on their website to prototype your search and then just copy the resulting URL from your address bar as the working template for your code. Now, in order to overcome their limitation of 100 results per request you&#8217;re going to need to get the smallest ID from the first result set and pass that as the &#8220;max_id&#8221; argument to the second query. This way you can &#8220;walk&#8221; all the way back to the very oldest results that Twitter supplies.</p>
<p>No-one really knows what the quota is for search API requests, though they do say it is generous, I&#8217;ve never hit it anyway.</p>
<h2>Geocoding</h2>
<p>So once you&#8217;ve collected a bunch of tweets — I did this through cron jobs (though all the APIs here will work client-side as well) — you&#8217;ll want to regex for postcodes and get some lat/long co-ordinates through geocoding. Again, Google&#8217;s geocoding API doesn&#8217;t actually need an API key, it&#8217;ll let you just query it anyway, but bear in mind that you have 15,000 requests per day. Here&#8217;s the PHP function I used;</p>
<pre class="brush: php;">

function getLatLong($postcode){
  global $geo_delay;

  $request_url = &quot;http://maps.google.co.uk/maps/geo?output=xml&amp;q=&quot; . urlencode($postcode) . &quot;&amp;gl=gb&quot;;

  if( FALSE === $xml = @simplexml_load_file($request_url) ) return 'again';

  $status = $xml-&gt;Response-&gt;Status-&gt;code;
  if (strcmp($status, &quot;200&quot;) == 0){
    // Successful geocode
    $coordinates = $xml-&gt;Response-&gt;Placemark-&gt;Point-&gt;coordinates;
    return split(&quot;,&quot;, $coordinates);
  }else if( (strcmp($status, &quot;620&quot;) == 0) || (strcmp($status, &quot;403&quot;) == 0) ){
    // sent geocodes too fast
    $geo_delay += 1000;
    return 'again';
  }else{
    // failure to geocode
    return FALSE;
  }
}
</pre>
<h2><strong>The Google Map</strong></h2>
<p>Getting the map on there is dead easy, all I&#8217;ve got is;</p>
<pre class="brush: jscript;">

map = new GMap2(document.getElementById(&quot;map&quot;));
map.setMapType(G_SATELLITE_MAP);
map.addControl(new GLargeMapControl3D());
map.addControl(new GMapTypeControl());
map.addMapType(G_PHYSICAL_MAP);
map.enableScrollWheelZoom();
map.enableContinuousZoom();
map.setCenter(new GLatLng(54.16243396806781, -3.955078125), 5);
</pre>
<p>Then for adding a snowflake I have a little helper function;</p>
<pre class="brush: jscript;">

function createMarker(point, handle, content, score) {

    var icon = new GIcon();
    var marker = new GMarker(point, icon);

    var size = parseInt( (3 * score) + 5);
    var middle = parseInt( size / 2 );
    icon.image = &quot;/images/snow10.png&quot;;
    icon.iconSize = new GSize(size, size);
    icon.iconAnchor = new GPoint(middle, middle);
    icon.infoWindowAnchor = new GPoint(5, 1);

    var html = '&lt;img class=&quot;profile_pic&quot; src=&quot;http://spiurl.appspot.com/' + handle + '&quot; /&gt;&lt;div class=&quot;tweet_body&quot;&gt;' + content + '&lt;/div&gt;';
    GEvent.addListener(marker, &quot;click&quot;, function(){
        marker.openInfoWindowHtml(html);
    });
    return marker;
}
</pre>
<p>And then you simply do this to get a flake on the map;</p>
<pre class="brush: jscript;">

var point = new GPoint(flakes[count]['lng'], flakes[count]['lat']);
var marker = createMarker(point, flakes[count]['handle'], flakes[count]['content'], flakes[count]['score']);
map.addOverlay(marker);
</pre>
<p>That flakes[] array is the one that stores all the data that I&#8217;ve been archiving from Twitter searches. It&#8217;s a JSON encoded MySQL result set. So then all I&#8217;ve done is iterate over the entire array plotting each tweet and removing it once it&#8217;s 60 mins older than the newest.</p>
<h2>Serving Suggestion</h2>
<p>I&#8217;m still yet to iron out some performance issues, it seems that there is a bit of stuttering when the map contains 1000+ tweets. Doing some Firebug profiling it looks at first glance to be to do with the way I&#8217;m locating rendered flakes using jQuery&#8217;s CSS selector. Recent webkit browsers certainly fair better here.</p>
<p>Of course the UI is just icing on the cake, but I&#8217;d heartily recommend the jQuery UI plugin that gives you very usable sliders out of the box.</p>
<p>Best served with a warm Rioja.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tombh.co.uk/2010/01/uksnow-timelapse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Facebook, MySpace &amp; Twitter Connect Buttons</title>
		<link>http://www.tombh.co.uk/2009/12/facebook-myspace-twitter-connect-buttons/</link>
		<comments>http://www.tombh.co.uk/2009/12/facebook-myspace-twitter-connect-buttons/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 11:27:18 +0000</pubDate>
		<dc:creator>tombh</dc:creator>
				<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://www.tombh.co.uk/?p=91</guid>
		<description><![CDATA[
  


I needed to create these custom signin buttons for a recent project, you might like to use them in yours. They&#8217;re based on Rogie King&#8217;s work over at Komodo and so are licensed under the same Creative Commons license, which means they are free to use as long as you acknowledge the original [...]]]></description>
			<content:encoded><![CDATA[<div style="margin-left:100px" class="centered">
<img class="alignleft size-full wp-image-92" title="facebook_signin" src="http://www.tombh.co.uk/wordpress/wp-content/uploads/2009/12/facebook_signin.png" alt="facebook_signin" width="88" height="39" /> <img class="alignleft size-full wp-image-93" title="myspace_signin" src="http://www.tombh.co.uk/wordpress/wp-content/uploads/2009/12/myspace_signin.png" alt="myspace_signin" width="88" height="39" /> <img class="alignleft size-full wp-image-94" title="twitter_signin" src="http://www.tombh.co.uk/wordpress/wp-content/uploads/2009/12/twitter_signin.png" alt="twitter_signin" width="88" height="39" />
</div>
<p class="first-child "><span id="more-91"></span></p>
<p><span title="I" class="cap"><span>I</span></span> needed to create these custom signin buttons for a recent project, you might like to use them in yours. They&#8217;re based on Rogie King&#8217;s work over at <a href="http://www.komodomedia.com/blog/2009/06/sign-in-with-twitter-facebook-and-openid/">Komodo</a> and so are licensed under the same <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons license</a>, which means they are free to use as long as you acknowledge the original author and use the same license.</p>
<p><a href="http://www.tombh.co.uk/wordpress/wp-content/uploads/2009/12/signin_buttons.zip">Download a Zip of all three</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tombh.co.uk/2009/12/facebook-myspace-twitter-connect-buttons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cyberpilgrimage</title>
		<link>http://www.tombh.co.uk/2009/12/cyberpilgrimage/</link>
		<comments>http://www.tombh.co.uk/2009/12/cyberpilgrimage/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 01:14:47 +0000</pubDate>
		<dc:creator>tombh</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Spirituality]]></category>

		<guid isPermaLink="false">http://www.tombh.co.uk/?p=74</guid>
		<description><![CDATA[I suspect there are many who would find it odd that religion and the Internet appear in the same sentence, let alone the same word. Yet I&#8217;m sure most would agree that the Internet is having profound effects on the world and that we are only just seeing the start of it. To remind ourselves [...]]]></description>
			<content:encoded><![CDATA[<p class="first-child "><span title="I" class="cap"><span>I</span></span> suspect there are many who would find it odd that religion and the Internet appear in the same sentence, let alone the same word. Yet I&#8217;m sure most would agree that the Internet is having profound effects on the world and that we are only just seeing the start of it. To remind ourselves of why the Internet might have more relevance to religion than we might otherwise first think let&#8217;s begin by looking back to the other great paradigm shifts in media technology.</p>
<p><span id="more-74"></span></p>
<p><a href="http://en.wikipedia.org/wiki/Orality">Walter Ong and Jack Goody</a> argue that even the technologies of orality and literacy dramatically effected the way humans thought and lived. Perhaps obviously the very fact of structured language and speech provides unprecedented and powerful tools for the transmission of knowledge, even before writing, memory served as a worthy vehicle for trans-cultural and trans-temporal communication. Then with literacy we have books — artifacts that, I think, uncoincidentally play pivotal roles in all the major world religions. And penultimately we have the printing press, let me quote Clay Shirky from his inspiring TED talk, <a href="http://www.ted.com/talks/clay_shirky_on_institutions_versus_collaboration.html"><em>Institutions Versus Collaboration</em></a>,</p>
<blockquote><p>&#8220;The printing press precipitated 200 years of chaos, moving from a world where the Catholic Church was [...] an organising political force, to the <a href="http://en.wikipedia.org/wiki/Treaty_of_westphalia">Treaty of Westphalia</a> when we finally knew what the new unit was, the nation state.&#8221;</p></blockquote>
<p>Essentially what Shirky is saying is that the printing press was central to the precedent of governance that separated church from state and provided the religious freedoms that so many of us take for granted today. Therefore here we have, not only an evolution in the character of religion, but also in the organisational principles within which most of the world&#8217;s  nations are contained.</p>
<p>Of course, this is a very brief overview of our media epochs, but you get the picture. Hopefully this might have perked your interest for a sight of religion&#8217;s and the Internet&#8217;s crossing of paths.  However, for myself, being in the process of forging a career from making websites and thus entrusting my very livelihood to the Internet, articles like <a href="http://www.usask.ca/relst/jrpc/art21%282%29-Cyberpilgrimage.html" target="_blank"><em>Cyberpilgrimage: A Study of Authenticity, Presence and Meaning in Online Pilgrimage Experiences</em></a><em> </em>by fellow alumni and friend from Lampeter University Connie Hill-Smith, doubly prick my ears.</p>
<p>One of the first issues that Connie (it&#8217;s just too weird referring to a friend by their surname!) tackles in her article is the lack of scholarship, and perhaps even reluctance, pertaining to pilgrimage&#8217;s relationship with the Internet. In fact the article&#8217;s remit is very much an attempt at an initial step towards counteracting any inertia that might, as Connie fears, &#8220;undermine serious engagement with the subject and indeed,  						with the Internet as a religiously <em>experiential</em>, and not just <em> expressive</em>, medium&#8221;. Her first, and perhaps most important appeal, is towards the idea of pilgrimage as metaphor; an already accepted notion that &#8216;real&#8217;, physical pilgrimage is as much about an internal journey as an external one. If the classical stages of pilgrimage; getting there, arriving and returning, each posses a corresponding internal state of mind then we can begin to see how carefully thought out and creative multimedia experiences like Youth For Christ&#8217;s <a href="http://www.yfc.co.uk/labyrinth/online.html" target="_blank"><em>Online Labyrinth</em></a> might offer something of the sacred journey.</p>
<p>This internalisation of pilgrimage&#8217;s centre of gravity really gets me thinking about how we commonly perceive the average user interacting with the Internet, therefore; the solitary viewer locked into a transfixed embrace with a keyboard and screen. Is this image actually accurate? Because if one considers the recent data from the <a href="http://www.itu.int/newsroom/press_releases/2009/39.html" target="_blank">International Telecommunications Union</a>, then the answer is very much no, as the number of mobile devices capable of connecting to the Internet surpassed the number of desktop devices in mid 2008. Which raises the tantilising prospect of also being able to appeal to the <em>external</em>isation of the Internet <em>as well as</em> the internalisation of pilgrimage as a means of highlighting the common ground that is cyberpilgrimage.</p>
<p>An example. Earlier this year comedian <a href="http://www.bbc.co.uk/programmes/b00m3z1f" target="_blank">Eddie Izzard undertook 43 marathons in 51 days circumnavigating the British Isles</a>, raising over £300, 000 for the charity Sports Relief. With his iPhone strapped to his shoulder for the duration, he shared his adventure using Twitter; keeping the world (including me) constantly up to date with 140 character tweets, pictures, video and GPS co-ordinates <a href="http://twitter.com/eddieizzard/status/3162754684" target="_blank">such as this</a>. Apart from being deeply inspired by Eddie&#8217;s sincere effort, dedication and fitness, the experience was for me surprisingly participatory. Being a full time web developer means spending much of my time hooked up to the Internet and so I was able to watch his progress as it happened. But I wasn&#8217;t just participating in Eddie&#8217;s run, but equally in the community of thousands that were also following his fortunes. For every tweet of Eddie&#8217;s there&#8217;d be many more in response, so that one very much felt included in a multi-directional conversation, reminisent in both feedback and also in pace of the real face to face world.  When Eddie mentioned the name of a village he was passing through or uploaded a worthy panoramic, there&#8217;d <em>always</em> be someone that said &#8216;I know that place!&#8217;, or &#8216;that&#8217;s where I live&#8217;. People would come out to meet him waving banners and even jog a while with him. Everyday was different, sometimes he&#8217;d find it really hard and tweet pictures of his blisters, whilst other days were easier, perhaps some charismatic celebrity had been running with him that day.</p>
<p>If you&#8217;re thinking, &#8220;but that&#8217;s not a bonafide pilgrimage&#8221;, I would for a start disagree, but also point you to similar interactions carried out on the more archetypal pilgrimage of the Camino De Santiago by <a href="http://twitter.com/gospain?max_id=6541813466&amp;page=95&amp;twttr=true" target="_blank">Damian Corrigan</a> or <a href="http://www.tangodiva.com/blog/category/gadgets-gizmos-gear/" target="_blank">Christina Santos</a>. What&#8217;s apparent here, I hope, is the way in which, by virtue of the Internet, an unarguably external journey, whilst remaining essentially true to its original form, is tangibly evolved into something new. Significantly, allowing a loosening of the common understanding of how we interact with the Internet, returns the possibilities of using existing pilgrimage theories and frameworks, such as <a href="http://en.wikipedia.org/wiki/Liminality">communitas and liminality</a>, without substantial alterations. And so now the really interesting question is; does Twitter enhance the pilgrim&#8217;s experience or dilute it? But I think that&#8217;s a discussion for anther time.</p>
<p>Going back to the more conventional view of Internet usage there are two more concepts in Connie&#8217;s article that intrigue me; co-location and physicalisation. Co-location is essentially the circumstance of being aware that one is doing something at the same time as someone else yet in a separate location, clearly this is pertinent to such activities as ritual and worship. Physicalisation is the making physical of otherwise abstract words, thoughts, pictures and so on, for example if you tweet a prayer to <a href="http://twitter.com/theKotel">@theKotel</a>, he will print it out and place it on the Western Wall in Jerusalem. Both concepts work towards highlighting the ability of the Internet to effect a more palpable sense of presence, that one is not merely interacting with an inert machine but that the machine is actually facilitating real engagement with the real world and real people. This &#8216;real engagement&#8217; strikes me as being very similar in description to the principles of the so-called <a href="http://en.wikipedia.org/wiki/Web_2.0">Web2.0</a>. Roughly speaking Web2.0 refers to the user-centred shift that has occurred in recent years following the &#8216;Dotcom Bubble&#8217; — Internet content is increasingly social (think Facebook, MySpace and Twitter) and increasingly user-created (think Youtube, Wikipedia and Blogs). Where <em>social</em> corresponds to co-location and <em>user-created</em> corresponds to physicalisation.</p>
<p>Though not directly related to pilgrimage, a remarkable and romantic example of the possibilities opened up by Web2.0 comes from the photo sharing site <a href="http://www.flickr.com/">Flickr</a>. On the 21st of January 2009, <a href="http://www.flickr.com/groups/inauguration2009/discuss/72157612791848529/">Michael David Murphy asked members of Flickr whether they had, by some stroke of coincedence, managed to capture an image of him proposing to his <em>fiancée</em></a> amongst the crowds of the inauguration ceremony of Barack Obama. Quite incredibly some days later Flickr user <em>egoody</em> had indeed caught <a href="http://www.flickr.com/photos/glenncara/3219164928/">the moment</a> on camera and had posted the shot on the site. Now this is quite an unusual achievement for a Web2.0 site, I wouldn&#8217;t want to give the impression otherwise, but what I want to bring to attention is how the previously mentioned factors of co-location and physicalisation work together with a subject matter as sensitive and as worthy of dignity as anything sacred.</p>
<p>When you consider the prominence of Web2.0 sites and the accompanying shift that their approach is bringing to the Internet as a whole, you can see how concepts such as co-location and physicalisation are becoming more and more fundamental ingredients rather than occasional edge cases. And as such we can see how the Internet is increasingly becoming a place towards which people are entrusting more of that which they consider most precious. This coupled with the Mobile Internet and ubiquitous connection provides a convincing argument for the significance that the Internet might play in pilgrimage and religious affairs as a whole.</p>
<p>Which reminds me that the future isn&#8217;t always where you think it is, I&#8217;ll end with Clay Shirky again;</p>
<blockquote><p>&#8220;<a href="http://www.meetup.com/"><em>Meet Up</em></a> is a service founded so that users can find people in their local area who share their interests and affinities and actually have real world meetings offline in a cafe or a pub or what have you. When Scott Heiferman founded <em>Meet Up</em> he thought it would be used by trainspotters or cat-fanciers, classic affinity groups; the inventors don&#8217;t know what their invention is. Number one group on <em>Meet Up</em> right now? Most chapters, in most cities with the most active members? <em>Stay at home moms</em>. In the suburbanised, dual income United States <em>stay at home moms</em> are actually missing the social infrastructure that comes from extended family and local small scale neighborhoods. So they&#8217;re reinventing it using these tools. <em>Meet Up</em> is the platform but the value here is the social infrastructure. If you want to know what technology is going to change the world don&#8217;t pay attention to 13 year old boys, pay attention to young mothers, because they haven&#8217;t got an ounce of support for technology that does not materially make their lives better. This is so much more important than XBox but it&#8217;s a lot less glitzy. I think this is a revolution.&#8221;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.tombh.co.uk/2009/12/cyberpilgrimage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What if Facebook was as open as Linux?</title>
		<link>http://www.tombh.co.uk/2009/05/what-if-facebook-was-as-open-as-linux/</link>
		<comments>http://www.tombh.co.uk/2009/05/what-if-facebook-was-as-open-as-linux/#comments</comments>
		<pubDate>Mon, 04 May 2009 22:40:33 +0000</pubDate>
		<dc:creator>tombh</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Musings]]></category>

		<guid isPermaLink="false">http://www.tombh.co.uk/?p=27</guid>
		<description><![CDATA[It all started with one simple thought, &#8220;I like the way that Facebook keeps me in touch with my friends, but I don&#8217;t like that it is a multi-million dollar, commercial business. Surely there must be another way?&#8221;

So after a little bit of Google research I was tremendously excited to find an already established and [...]]]></description>
			<content:encoded><![CDATA[<p class="first-child "><span title="I" class="cap"><span>I</span></span>t all started with one simple thought, &#8220;I like the way that Facebook keeps me in touch with my friends, but I don&#8217;t like that it is a multi-million dollar, commercial business. Surely there must be another way?&#8221;</p>
<p><span id="more-27"></span></p>
<p>So after a little bit of Google research I was tremendously excited to find an already established and earnest movement towards, what is in many ways, an &#8216;open Facebook&#8217;. Now, that&#8217;s not to say that what is beginning to stir is a Facebook clone, merely wearing &#8216;open&#8217; clothes, it&#8217;s a little more complex than that; in fact I think it would be more appropriate to understand it as a paradigm shift in the way we interact with others on the internet.</p>
<p>To comprehend what&#8217;s going on I think firstly we need to recollect the whole, for want of a better term, &#8216;Web 2.0&#8242; revolution. We, the humble web user, now help create the vast diversity of content found on the internet. From Wikipedia to Youtube, we are no longer mere consumers of information but authors, editors, commentators and directors. This &#8216;new&#8217; web is important here for two reasons; one, it means we leave traces of our activity for all to see and two, it inspires practical and productive grass roots, bottom-up collaboration.</p>
<p>Let&#8217;s take a look at these traces of activity us web citizens are making. For instance, this blog entry, it&#8217;s a record of my current thinking and feelings, then there&#8217;s Flickr for photos, Youtube for videos, Twitter for microbloging, Facebook for social networking, Digg for bookmarks, a forum on programming here, a comment on someone&#8217;s podcast there and this is just a fraction of the possibilities, the actual list is overwhelmingly enourmous. And this is where we arrive at the first and perhaps most significant aspect of the emerging &#8216;open Facebook&#8217;; what if we could track all of a person&#8217;s activity and be notified of it through an ever updated feed, just like on the real Facebook&#8217;s news feed, except even for events outside of Facebook? Well, you can and you&#8217;ve actually been able to do so for a quite a few years already, it&#8217;s called &#8216;lifestreaming&#8217; and there&#8217;s <a href="http://www.readwriteweb.com/archives/35_lifestreamin_apps.php" target="_blank">a proliferation of services that help you accomplish this</a>. Perhaps the best of these is <a href="http://friendfeed.com/about/" target="_blank">FriendFeed</a>, currently allowing you to aggregate up to 56 web services.</p>
<p>In fairness I must point out that Facebook have actually recently implemented lifestreaming functionality, for instance you can add your Flickr stream or your blog&#8217;s RSS feed so that any activity from those sources appears in your <em>friend&#8217;s</em> feeds. And I like that, I prefer Flickr&#8217;s community and photo management interface to Facebook&#8217;s and I prefer my Wordpress blog to Facebook&#8217;s mediocre note system. Yet now Facebook lets my friends keep up with this activity without each of them having to tirelessly subscribe to numerous and unintuitive RSS feeds (Tip: Facebook also allows you to filter off the specific activities of friends that you&#8217;d rather not hear about, not that I find any of my freind&#8217;s activities boring!).</p>
<p>In fact, double credit must be given to Facebook because they have actually gone a step futher towards the new open social paradigm by opening up each user&#8217;s stream to outside applications using an open standard (yes, <em>not</em> a Facebook developed standard!) called <a href="http://activitystrea.ms/">Activity Streams</a>. This means that should an application receive permission from you, the owner of a stream, then it can take all the activity from your Facebook news feed and do what it likes with it; display it on your desktop, mash it up with other streams, filter it, the sky&#8217;s the limit.</p>
<p>Okay, so this is pretty exciting, what if all web services had the ability to broadcast user&#8217;s activity in this universally recognised Activity Stream standard? What if all social networks spoke the same language? What if you didn&#8217;t have to go to MySpace to find out what one bunch of friends were up to, then go to Twitter to speak to another portion and then finally return to Facebook to get the latest on your remaining web contacts? Wow! That would be something wouldn&#8217;t it.</p>
<p>Well, there&#8217;s only one real hurdle now and that&#8217;s identification. It&#8217;s one thing registering with a site and validating yourself with a password, but how do we get all sites to recognise those credentials? We need something like an <a href="http://openid.net/">OpenID</a>. You can get a taste for what a unified login experience might be like on my blog here; if you&#8217;re a Facebook user then you can login to my website by clicking on the big &#8220;Facebook Connect&#8221; button at the bottom of this post, whereby any comments you make will be automatically approved and displayed along with your current profile picture which links back to your Facebook page so people can find out more about you.</p>
<p>I think one of the main reasons why this whole &#8216;open Facebook&#8217;, or open social networking concept is so important and also why it&#8217;s going to work is that, like I indicated at the beginning of the post, it is not a <em>replacement</em> for Facebook or any other network or service for that matter. Rather, it is a way of bringing them all together and allowing users to freely choose their online identity without being restricted to the limitations of any one single service or network. An open Activity Stream standard and OpenID protocol that becomes universally accepted across the entire internet will both provide new and richer ways of interacting but still allow us to enjoy the very same social network experinces we currently enjoy. In the words of evolutionary theorist <a href="http://en.wikipedia.org/wiki/Ken_Wilber">Ken Wilber</a>, an open social network will, like all evolutions, <a href="http://books.google.com/books?id=svCgg2VVR5oC&amp;pg=PA52&amp;lpg=PA52&amp;dq=transcend+and+include]&amp;source=bl&amp;ots=-EAk0oHa8a&amp;sig=7iSSpq6uq9DIdeJ6GQw9v-n88Bw&amp;hl=en&amp;ei=l2r_SaK8A6ORjAfussC0Aw&amp;sa=X&amp;oi=book_result&amp;ct=result&amp;resnum=10#PPA16,M1">transcend and include</a> that which precedes it.</p>
<h2>Blogography</h2>
<p>These are some of the notable sources which aided my research on this subject;</p>
<ul>
<li><a href="http://diso-project.org/">DiSo Project</a></li>
<li><a href="http://factoryjoe.com/blog/">FactoryCity — This can all be made better. Ready? Begin.</a></li>
<li><a href="http://www.davidrecordon.com/action-stream-archive.html">David Recordon</a></li>
<li><a href="http://willnorris.com/blog">Will Norris — Thoughts on Identity, OpenID, WordPress, and Life</a></li>
<li><a href="http://www.opensocial.org/">OpenSocial &#8211; It&#8217;s Open. It&#8217;s Social. It&#8217;s up to you.</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.tombh.co.uk/2009/05/what-if-facebook-was-as-open-as-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RSS feeds per user in Wordpress</title>
		<link>http://www.tombh.co.uk/2009/05/rss-feeds-per-user-in-wordpress/</link>
		<comments>http://www.tombh.co.uk/2009/05/rss-feeds-per-user-in-wordpress/#comments</comments>
		<pubDate>Mon, 04 May 2009 21:25:34 +0000</pubDate>
		<dc:creator>tombh</dc:creator>
				<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://www.tombh.co.uk/?p=21</guid>
		<description><![CDATA[Googled for a while expecting to find some plugin to do this, but no luck. So here&#8217;s a quick hack;
Open up /wp-includes/feed-rss2.php and at about line 35, after where it starts the while() loop, add;

&#60;?php
if ( isset( $_GET['author'] ) ) :
if ( get_the_author_ID() != $_GET['author'] ) continue;
endif;
?&#62;

You will now be able to create feeds on [...]]]></description>
			<content:encoded><![CDATA[<p class="first-child "><span title="G" class="cap"><span>G</span></span>oogled for a while expecting to find some plugin to do this, but no luck. So here&#8217;s a quick hack;</p>
<p>Open up /wp-includes/feed-rss2.php and at about line 35, after where it starts the while() loop, add;</p>
<p><span id="more-21"></span></p>
<p><code>&lt;?php<br />
if ( isset( $_GET['author'] ) ) :<br />
if ( get_the_author_ID() != $_GET['author'] ) continue;<br />
endif;<br />
?&gt;<br />
</code></p>
<p>You will now be able to create feeds on a per user basis via, the URL</p>
<p><code>www.mysite.com/?feed=rss2&amp;author=[author_id]</code></p>
<p>The surest way to get a user/author&#8217;s ID is in the admin backend under &#8220;Users&#8221;, if you hover over a username the ID will be in the URL.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tombh.co.uk/2009/05/rss-feeds-per-user-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
