<?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, 01 May 2012 13:33:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>A Few Kind Words</title>
		<link>http://www.tombh.co.uk/a-few-kind-words</link>
		<comments>http://www.tombh.co.uk/a-few-kind-words#comments</comments>
		<pubDate>Tue, 01 May 2012 13:30:30 +0000</pubDate>
		<dc:creator>tombh</dc:creator>
				<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://www.tombh.co.uk/?p=321</guid>
		<description><![CDATA[&#8220;What I had wanted to do with muscle and meanness had been deftly accomplished with but a few kind words.&#8221; Terry Dobson in Aikido Surprise I&#8217;ve been dumped. What follows is an attempt, mostly for my own benefit, to process the grievance of being professionally exploited. I shan&#8217;t name names, that would be crass, but [...]]]></description>
			<content:encoded><![CDATA[<p class="first-child " style="text-align: center;"><em><span title="&#8220;W" class="cap"><span>&#8220;W</span></span>hat I had wanted to do with muscle and meanness had been deftly accomplished with but a few kind words.&#8221;<br />
</em>Terry Dobson in Aikido Surprise</p>
<p><span id="more-321"></span></p>
<p>I&#8217;ve been dumped.</p>
<p>What follows is an attempt, mostly for my own benefit, to process the grievance of being professionally exploited. I shan&#8217;t name names, that would be crass, but do bear in mind that what I express here will be undoubtedly coloured by a reactionary bias.</p>
<p>Having worked for four months in an office, with some of the finest talent in Bristol, I was, without warning,  in the cold and rain and at 5pm in the day, unceremoniously informed that I needn&#8217;t come in again. There are always two sides to a story and of course I&#8217;ll tell you that I hadn&#8217;t done anything wrong. I hadn&#8217;t done anything wrong, it was merely that they&#8217;d found better people for the job. I was on a probationary freelance agreement, so under the strict letter of the law no offences were made.</p>
<p>Reflecting on it the day after, I recollected an execution scene from one of my favourite films. Like so many of the Coen brother&#8217;s creations, Miller&#8217;s Crossing delivers a refreshingly unexpected and chillingly nuanced portrayal of the darker sides of humanity. The narrative hinges on a crossing, both geographically &#8211; Miller&#8217;s Crossing is a secluded wooded area where key scenes occur &#8211; and psychologically in terms of Tom, the protagonist, who battles, but ultimately capitulates to, the malevolent forces inside him. Enclosed by the benevolent forest foliage of Miller&#8217;s Crossing Tom is aiming his gun at the head of Bernie, who&#8217;s execution will prove Tom&#8217;s loyalty to Caspar, the leader of Tom&#8217;s side in the mafia wars within which he has become embroiled. Bernie is beside himself with fear, but manages to wrench from his awful sobs and tears the plea, &#8220;Look into your heart Tom, look into your heart&#8221;. The tension is horrendous, so Tom&#8217;s decision to free Bernie is massively relieving. We are setup to believe that Tom&#8217;s crossing will be from the insidious violence of a mafia culture to the liberation of an ethically-informed life.</p>
<p>What constitutes the way of the mafia is not hard and fast, it lies on a spectrum who&#8217;s lesser extreme extends into the humbler organisations and institutions we collectively champion and celebrate. Even in our immediate family we&#8217;re confronted with dilemmas of loyalty, bartering in the currency of compliments, gossip and secrecy. It&#8217;s why so many of us can be so readily engaged in the stories of mafia life, it resonates. We know what the good and honourable course of action is but we&#8217;re tempted by quick fixes and shortcuts.</p>
<p>The world of business, at least at a conventional level, does not clothe itself in the garments of the mafia wardrobe, however it does require a certain level of forthrightness, assertiveness and even coldness. &#8216;Never mix business and pleasure&#8217;, we often hear, because one day you may need to negotiate a price on your personal friendships. Yet at the same time, trust and loyalty are central to successfully growing in your market. In the search for making the best contacts and scoring the biggest deals we might consider compromising our civilian principles in order to rise up the ladder of reputation. Although to a grotesquely extreme extent, this is surely what passes through Tom&#8217;s head as he points his gun at Bernie.</p>
<p>So Tom strikes a bargain, Bernie must leave and never be seen again. We start sympathising with Tom, he&#8217;s taken the first step in doing the right thing. But later Bernie returns, he couldn&#8217;t keep away and eventually his and Tom&#8217;s paths cross again. The exact same encounter reoccurs, Tom aiming his barrel at Bernie, who sobs, &#8220;Look into your heart Tom, look into your heart&#8221;. When Tom pulls the trigger you realise how much you&#8217;ve been spoon-fed by the rest of prevailing cinematic narrative, the Coen brothers have played with us, Tom didn&#8217;t have a heart, he was a coward. Tom is actually a pitiful character unable to imagine anything other than the lowest common denominator of a response to his predicament. Real life rarely has Hollywood endings.</p>
<p>How do we imagine a more creative response? Business may well be business, but are the cut-throat cliches of collateral damage really our only options? Can we stand on our own two feet and negotiate the dilemmas of life in a way that both solves hard-edged priorities <em>and</em> retains our integrity. Terry Dobson tells a story about a turning point in his life called &#8216;Aikido Surprise&#8217;, <a title="TerrY Dobson's Essay" href="http://www.examiner.com/article/aikido-surprise-a-powerful-story-of-the-unexpected" target="_blank">you can read his essay in full here</a>. The particular event he recounts happens on a train in Japan at the point in Terry&#8217;s Aikido training where he is aching to try out his skills in real combat. There is a drunken man on this train being verbally and physically abusive, Terry stands up and makes it perfectly clear that he would like to intervene, by puckering his lips and blowing him an insolent kiss. But just at the moment when the drunk was to exercise his inevitable retaliation, an elderly man in his seventies calls out with a beaming smile, then kindly and simply engages the drunk in small talk. Soon, the drunk his crying in the old man&#8217;s lap having opened up to the recent death of his wife. This is Terry&#8217;s lesson, &#8220;what I had wanted to do with muscle and meanness had been deftly accomplished with but a few kind words.&#8221;</p>
<p>Often that which produces the most brutally effective solution need not in itself be brutal.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tombh.co.uk/a-few-kind-words/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Becoming a Python Programmer</title>
		<link>http://www.tombh.co.uk/becoming-a-python-programmer</link>
		<comments>http://www.tombh.co.uk/becoming-a-python-programmer#comments</comments>
		<pubDate>Sat, 31 Mar 2012 23:35:57 +0000</pubDate>
		<dc:creator>tombh</dc:creator>
				<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://www.tombh.co.uk/?p=316</guid>
		<description><![CDATA[I&#8217;ve been working at Potato for 3 months now. They&#8217;re a Python shop and I&#8217;m slowly but surely becoming a Python programmer. It&#8217;s one thing knowing about the existence of a programming language and even dabbling in it now and again, but committing to using it every day is a rather different matter. It forces [...]]]></description>
			<content:encoded><![CDATA[<p class="first-child "><span title="I" class="cap"><span>I</span></span>&#8217;ve been working at <a href="http://p.ota.to" target="_blank">Potato</a> for 3 months now. They&#8217;re a Python shop and I&#8217;m slowly but surely becoming a Python programmer.</p>
<p><span id="more-316"></span></p>
<p>It&#8217;s one thing knowing about the existence of a programming language and even dabbling in it now and again, but committing to using it every day is a rather different matter. It forces you to get to know the language in a much deeper way. Ha, perhaps it&#8217;s a bit like the difference between being friends with someone and living with them! I&#8217;ve seen what Python looks like first thing in the mornings and how it likes to snack on Rice Crispies in the middle of the night.</p>
<p>Before Python I worked with PHP. Python is better then PHP. No questions. But of course it&#8217;s just exciting doing something different, so maybe that&#8217;s a large part of why I think Python&#8217;s better. But it&#8217;s still better anyway. We all know PHP is a bit of hack, with its inconsistencies, bloat and lack of syntactic sugar. Let&#8217;s get the obvious things out the way first; no braces, no EOL delimiter and significant white space. The code just looks tidier, in fact I think there&#8217;s even an elegance to it, a pleasing aesthetic.  It sure does make you wonder why the hell every language doesn&#8217;t do this. Then there&#8217;s deeper differences; everything&#8217;s an object, the Python console, monkey-patching built-in functions and decorators. Python just lends itself more to the logistics of programming.</p>
<p>For balance I should mention the things I miss from PHP; print_r(), die(), passing by value and not having to manually define &#8216;self&#8217; as an argument for instance methods.</p>
<p>But the biggest thing for me is the culture that permeates and surrounds the language. Python has a distinct humanity about it, for instance <a href="http://python-history.blogspot.co.uk/2010/06/import-antigravity.html" target="_blank">the anti-gravity module</a> that, when imported, redirects the system&#8217;s default browser to <a href="http://xkcd.com/353/" target="_blank">the famous XKCD Python cartoon</a>. Technically this is of no use, it&#8217;s merely an Easter Egg, but what it symbolises is the acknowledgement that it is Rice Crispy-addicted humans that do programming. When you spend hours upon hours on the coalface of a project these little touches of humour can make all the difference. Which in turn attracts a similar temperament of coder. The Python community is broad and friendly.</p>
<p>Python isn&#8217;t just a web language, far from it. It&#8217;s also used in desktop application development, scientific applications, education and operating system scaffolding. It&#8217;s flexible, accessible and welcoming. It&#8217;s the kind of language your parents would be proud of if you brought it round for dinner. It&#8217;s sociable and civilised. These are qualities that I highly value, in people and programming languages.</p>
<p>I&#8217;m so lucky to have been given the opportunity to get to know Python. It&#8217;s a real blessing to be able to spend my working days with a mature, sophisticated and humane language. Now, where are those Rice Crispies, I&#8217;m getting withdrawal symptoms.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tombh.co.uk/becoming-a-python-programmer/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Buddhist Geeks Conference 2011</title>
		<link>http://www.tombh.co.uk/the-buddhist-geeks-conference-2011</link>
		<comments>http://www.tombh.co.uk/the-buddhist-geeks-conference-2011#comments</comments>
		<pubDate>Sat, 06 Aug 2011 02:01:45 +0000</pubDate>
		<dc:creator>tombh</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Spirituality]]></category>

		<guid isPermaLink="false">http://www.tombh.co.uk/?p=234</guid>
		<description><![CDATA[&#8220;You are totally double rainbowing my world.&#8221; Nikki Chau (@dragonc) Mosaic of all #bgeeks11 tweeters I was at the first ever Buddhist Geeks conference last week. It was epic. I&#8217;ve been to Buddhisty meetups; retreats, dharma talks and so on, and I&#8217;ve been to geeky meetups; web conferences, usability groups etc. But never have I [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p class="first-child "><span title="&#8220;Y" class="cap"><span>&#8220;Y</span></span>ou are totally double rainbowing my world.&#8221;<br />
<em> Nikki Chau (<a href="http://twitter.com/dragonc" target="_blank">@dragonc</a>)</em></p></blockquote>
<p><span id="more-234"></span></p>
<blockquote>
<p style="text-align: left;">
</blockquote>
<div class="wp-caption aligncenter" style="width: 310px;">
<p><a class="fancybox" rel="attachment" href="http://www.tombh.co.uk/wordpress/wp-content/uploads/2011/08/bg11.jpg"><img class="size-medium wp-image-236  " title="Mosaic of all #bgeeks11 tweeters" src="http://www.tombh.co.uk/wordpress/wp-content/uploads/2011/08/bg11-300x249.jpg" alt="" width="300" height="249" /></a></p>
<p class="wp-caption-text">Mosaic of all #bgeeks11 tweeters</p>
</div>
<p style="text-align: left;">
<p style="text-align: justify;">I was at <a href="http://www.buddhistgeeks.com/conference/" target="_blank">the first ever Buddhist Geeks conference</a> last week. It was epic. I&#8217;ve been to Buddhisty meetups; retreats, dharma talks and so on, and I&#8217;ve been to geeky meetups; web conferences, usability groups etc. But never have I experienced the unity of the two. The &#8216;geek&#8217; in Buddhist Geeks means a few things. Most generally it reflects the sentiment expressed in the <a href="http://web.vee.net/stuff/geek-vs-nerd.html">Jargon File&#8217;s definition</a>,</p>
<blockquote>
<p style="text-align: left;">&#8220;A person who has chosen concentration rather than conformity; one who pursues skill (especially technical skill) and imagination, not mainstream social acceptance. Geeks usually have a strong case of neophilia. Most geeks are adept with computers and treat hacker as a term of respect&#8221;</p>
</blockquote>
<div id="attachment_271" class="wp-caption aligncenter" style="width: 285px"><img class="size-medium wp-image-271 " src="http://www.tombh.co.uk/wordpress/wp-content/uploads/2011/08/rohan_geek-275x300.jpg" alt="" width="275" height="300" /><p class="wp-caption-text">Rohan Gunatillake (@rohan_21awake) — One of the conference organisers</p></div>
<p style="text-align: center;">
<p style="text-align: justify;">So, although &#8220;geeks are adept with computers&#8221;, this isn&#8217;t necessarily their defining characteristic; pride in technical knowledge and ability is also a significant ingredient. You could see this wider understanding echoed in the various titles of the talks, sessions and panels, &#8220;The Science of Enlightenment&#8221;, &#8220;Awakening is an Epic Win?&#8221;, &#8220;Disrupting the Awakening Industry&#8221;, &#8220;The Emerging Face of Buddhism&#8221;, to give just a small selection. Though to be fair there was a generous helping of traditional computing culture in the mix too; it seemed most people had a Twitter account (as the above mosaic testifies) or wrote a blog or developed some funky Mindfulness 2.0 web app. At the very least there was a reliable well of Internet vocabulary to draw on; we&#8217;d all listened to dharma talks online, watched Youtube videos of our favourite teachers, frequented or heard of the various forums and resources, and of course visited buddhistgeeks.com.</p>
<p style="text-align: justify;">I shan&#8217;t go into too much detail about the specifics of the conference events, <a href="http://www.buddhistgeeks.com/2011/08/the-bgeeks11-round-up/" target="_blank">others have documented this well already</a>, instead I&#8217;d like to ruminate more on the symbolic significance of the gathering. I&#8217;d like to start with this tweet;</p>
<p style="text-align: justify;"><img class="aligncenter size-medium wp-image-272" title="rainbow_tweet" src="http://www.tombh.co.uk/wordpress/wp-content/uploads/2011/08/rainbow_tweet-300x177.png" alt="" width="300" height="177" /></p>
<p style="text-align: justify;">If you haven&#8217;t heard of the Double Rainbow meme (or Internet memes at all for that matter) then take a look at <a href="http://knowyourmeme.com/memes/double-rainbow" target="_blank">Know Your Meme&#8217;s entry</a> in their comprehensive &#8216;meme database&#8217;. I find Internet memes truly fascinating, often hilarious and sometimes disturbing. On the surface, the endless torrents of apparently banal and tedious, say, <a href="http://icanhascheezburger.com/">cat pictures</a>, may seem desperately irrelevant and mind-numbing, but I see a deeper truth behind it all. The Web — as Ethan Nichtern pointed out in his Saturday talk, &#8220;The Internet is not your Teacher&#8221; — contains the two extremes of life and everything in between; from the profoundly uplifting to the sickeningly depressing. As someone who spends a lot of time surfing the Net, this ease of access to life&#8217;s poles of significance can lead to what I&#8217;d like to term, an ironic irreverence. When, on a daily basis, you bear witness to the myriad facets of our diverse universe — from the personal, the courageous, the virtuoso, the embarrassing and the political, to the natural, the microscopic, the galactic and the historical  — one develops a certain ennui.</p>
<p style="text-align: justify;">
<div id="attachment_287" class="wp-caption aligncenter" style="width: 235px"><img class="size-medium wp-image-287" title="2011-07-31 07.54.49" src="http://www.tombh.co.uk/wordpress/wp-content/uploads/2011/08/2011-07-31-07.54.49-e1312591317558-225x300.jpg" alt="" width="225" height="300" /><p class="wp-caption-text">The venerable David Tolmie (@dtolmie) eating broccoli</p></div>
<p>The Double Rainbow meme perfectly exemplifies this ironic irreverence — the original video itself doesn&#8217;t, but the meme does. Paul Vasquez, the star of the meme&#8217;s seed, is deeply and genuinely, if not spiritually, moved by the double rainbow he comes across. He is expressing an emotion towards the sublime end of the Internet scale, albeit in a slightly intense and intoxciated fashion. The meme is essentially a riff on this curious mix of emotions. For instance there is <a href="http://www.youtube.com/watch?v=iG8zNSf0c9k&amp;feature=player_embedded" target="_blank">a video parody where someone drives up to a billboard advertising a double burger deal and, in the style of Double Rainbow Man, exclaims in amazement</a>.</p>
<p>Now here I would like to take a, perhaps unexpected, conceptual leap by suggesting that the prevailing sentiment of Internet memes actually reflects a dominant sentiment of awakening, namely equanimity. As spiritual adventurers we tend to come across certain refined (and unrefined) states, yet we are endlessly encouraged to recollect the impermanence, emptiness and unsatisfactoriness of these (and all) states. An awakened attitude is not some kind of permanent double-rainbow rapture (yes you really did just read those combination of words), but rather engages sincerely with <em>each and every</em> state. Meme culture is similar. Ironic irreverence is not a denial of the spectrum of consumable media but rather a sober gesture towards the potential for LITERALLY ANYTHING!!1! (<a href="http://knowyourmeme.com/memes/caps-lock" target="_blank">see the Capslock meme</a>) to trigger curiosity and wonder.</p>
<p style="text-align: justify;">I&#8217;d like to think, though I may be stretching it a bit now, that a version of this down-to-earth attitude is responsible for a greater demand in transparency and integrity from the emerging generation of dharma practitioners. For instance, the upcoming movement of <a href="http://www.pragmaticdharma.com/" target="_blank">Pragmatic Dharma</a> that, amongst many other pragmatic sentiments, lifts the taboo on explicitly delineated paths that provide the basis for asserting one&#8217;s achievement of Enlightenment. Perhaps one caveat that could be levelled at this particular overturned taboo however, is that the accompanying taboo — that Enlightenment doesn&#8217;t actually negate the capacity for someone to be totally immoral and immature — is rarely uncovered in tandem. I don&#8217;t want to unnecessarily focus on this darker stuff, but there was a palpable sense of tension during the Sunday panel discussion, &#8220;The Emerging Face of Buddhism&#8221;, where money and power were discussed. I think the backdrop of recent scandals, such as Genpo Roshi&#8217;s affair, were the proverbial elephants in the room. <a href="http://med.brown.edu/DPHB/faculty/facultypage?id=1197496179" target="_blank">Willougbhy Britton</a>, a researcher into the downsides of meditation, asked a pressing question to the panel about the legal implications of charging for the dharma and how teachers should deal with stricter structures of accountability.</p>
<p style="text-align: justify;">Far from being an uncomfortable detour into disconcerting territory I felt it was commendable to the calibre of Buddhist Geeks and the organisation of the conference that such conversations could be encountered. Equanimity in the face of the sparkly lights and the unsightly shadows.</p>
<p style="text-align: justify;">
<div id="attachment_311" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-311" title="2011-07-29 18.40.36" src="http://www.tombh.co.uk/wordpress/wp-content/uploads/2011/08/2011-07-29-18.40.36-300x225.jpg" alt="" width="300" height="225" /><p class="wp-caption-text">Geeks in action</p></div>
<p style="text-align: justify;">Dialogue is a fundamental cornerstone of Buddhist Geeks, very few other dharma organistaions open up such a diverse conversation. Already engaged in podcasts with teachers from a cross-section of traditions, reader-contributted articles, rich comment threads and social networks, the Geeks can now add conferences to its repertoire. Maybe Buddhist Geeks is a meme? Perhaps the first in a family of liberating memes? The subject came up a few times in the conversations I was having about an &#8216;Enlightment machine&#8217;, a technological device that, through bio-data and user feedback, could lead someone towards the state of liberation. There does certainly seem to be a lot of research pointing in this general direction, for example Kelly McGonigal&#8217;s talk, &#8220;What Science Can Teach Us About Practice&#8221;, on the neuroscience of meditation, has found distinct regions of the brain that are tangibly more active in long-term meditators. However, upon reflection, I&#8217;m sceptical of such a device. The goal of dharma practice has too significant a social aspect to it. If technology is to play a role in the process of spiritually maturing humans I think its form will be less tangible and more concerned with the facilitation of the huge <em>pre-existing community of support around the world</em>.</p>
<p style="text-align: justify;">To meet others that I can so readily relate to is of incalculable value to me. Buddhist Geeks 2011 hasn&#8217;t just animated my practice but it has brought to life and humanised, the Internet.</p>
<p style="text-align: justify;">
<div id="attachment_292" class="wp-caption aligncenter" style="width: 235px"><img class="size-medium wp-image-292" title="2011-07-29 15.29.49" src="http://www.tombh.co.uk/wordpress/wp-content/uploads/2011/08/2011-07-29-15.29.49-e1312594113268-225x300.jpg" alt="" width="225" height="300" /><p class="wp-caption-text">Everyone&#39;s lanyards and booklets (in alphabetical order at that!)</p></div>
<blockquote><p>&#8220;But what does it mean!?&#8221;<br />
<em>Paul Vasquez</em></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.tombh.co.uk/the-buddhist-geeks-conference-2011/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Mounting Rackspace Cloud Files locally</title>
		<link>http://www.tombh.co.uk/mounting-rackspace-cloud-files-locally</link>
		<comments>http://www.tombh.co.uk/mounting-rackspace-cloud-files-locally#comments</comments>
		<pubDate>Tue, 31 May 2011 22:44:16 +0000</pubDate>
		<dc:creator>tombh</dc:creator>
				<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://www.tombh.co.uk/?p=228</guid>
		<description><![CDATA[Since writing this I&#8217;ve discovered Cloudfuse, which, seeing as it&#8217;s designed specifically for the task at hand, might be more suitable. Firstly, let&#8217;s talk about how awesome cloud storage is. Unlimited storage. Okay, well it&#8217;s not infinite obviously, but to all intent and purpose it is. The point really though is that it&#8217;s not about adding [...]]]></description>
			<content:encoded><![CDATA[<p class="first-child "><span title="S" class="cap"><span>S</span></span>ince writing this I&#8217;ve discovered <a href="http://sandeepsidhu.wordpress.com/2011/03/07/mounting-cloud-files-using-cloudfuse-into-ubuntu-10-10-v2/">Cloudfuse</a>, which, seeing as it&#8217;s designed specifically for the task at hand, might be more suitable.</p>
<p><span id="more-228"></span></p>
<p>Firstly, let&#8217;s talk about how awesome cloud storage is.</p>
<p><em>Unlimited storage</em>. Okay, well it&#8217;s not infinite obviously, but to all intent and purpose it is. The point really though is that it&#8217;s not about adding another physical disk to get more space, Rackspace Cloud Files for instance charge 15¢ per GB and that&#8217;s it. There&#8217;s no upper limit and no tiered stages like 20GB, 40GB, 60GB etc. It just expands the more you put on it and you pay just for what you use. Awesome? Yes.</p>
<p><em>Content Delivery Networks</em>. Rackspace Cloud Files specifically uses the <a href="http://www.akamai.com/dl/technical_publications/GloballyDistributedContentDelivery.pdf">Akamai CDN</a> which has over 12,000 servers world-wide replicating content so that it is always served from the nearest and therefore quickest source! Awesome? Yes.</p>
<p>So I&#8217;m talking about <a href="http://www.rackspace.com/cloud/cloud_hosting_products/files/">Rackspace&#8217;s Cloud Files</a> here but other cloud services offer similar features. Now, one drawback with Rackspace&#8217;s offering is that there isn&#8217;t any traditional means by which you can upload to their service, it&#8217;s all done via an, albeit excellent, RESTful API. So something as simple as uploading a file requires several lines of code. But imagine if your cloud account was just another folder on your local filesystem, whether that&#8217;s your workstation or your web server. How doubly awesome would that be? Very.</p>
<p>Enter <a href="https://github.com/chmouel/ftp-cloudfs/">ftp-cloudfs</a> and <a href="http://curlftpfs.sourceforge.net/">curlftpfs</a>, and with a little bit of command line tinkering you have one of the most awesome things you might ever setup on a computer. Ftp-cloudfs is a python wrapper for Rackspace&#8217;s API, pretty standard in itself, but then it throws its own private FTP server into the mix, essentially giving you FTP access to your cloud account. Yes, yes, yes! Now, for the pièce <em>de</em> résistance, the cherry on the cake, the jewel in the crown; curlftpfs and its ability to mount an FTP server as a local folder. Oh. My. Great. God. Alive! So, you have your cloud, with its API that is wrapped by Python, that integrates with a private FTP server, that is mounted by cURL onto a local folder that you can then open up with any old file browser. Drag And Drop into the cloud anyone?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tombh.co.uk/mounting-rackspace-cloud-files-locally/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How I elasticised my web app</title>
		<link>http://www.tombh.co.uk/how-i-elasticised-my-web-app</link>
		<comments>http://www.tombh.co.uk/how-i-elasticised-my-web-app#comments</comments>
		<pubDate>Tue, 31 May 2011 21:28:00 +0000</pubDate>
		<dc:creator>tombh</dc:creator>
				<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://www.tombh.co.uk/?p=223</guid>
		<description><![CDATA[By &#8216;elasticising&#8217; I mean, separating the heavy application logic from the lighter website logic in such a way that under high demand it is a simple matter of firing up new application server clones to cater for the increased load. The other significant benefit of this is that by placing the most significant application load [...]]]></description>
			<content:encoded><![CDATA[<p class="first-child "><span title="B" class="cap"><span>B</span></span>y &#8216;elasticising&#8217; I mean, separating the heavy application logic from the lighter website logic in such a way that under high demand it is a simple matter of firing up new application server clones to cater for the increased load. The other significant benefit of this is that by placing the most significant application load onto a separate server, the web server is dedicated to the sole task of serving web pages.</p>
<p><span id="more-223"></span></p>
<p>The web app in question is <a href="http://frintr.com">http://frintr.com</a>; it creates mosaics from all the profile pictures of your social network friends. The basic elastic concept is as follows;</p>
<ol>
<li>Someone requests a mosaic on the web server, so we gather all the things we need to make it, profile pic URLs, user ID, unique mosaic ID, etc into a nice little JSON package.</li>
<li>We place that JSON package onto a queue.</li>
<li>The application servers poll the queue and, if a package is found, it is removed from the queue and building is begun.</li>
<li>Once the mosaic is built it is FTP&#8217;d back to the web server and a little note is made in a prearranged location saying that a mosaic is finished and waiting to be served.</li>
<li>The web server, via AJAX, polls itself in the prearranged location from step 4, waiting for an application server to place the completion note.</li>
<li>The web server renders the finished mosaic.</li>
</ol>
<p>To create the queue I use <a href="http://redis.io/">Redis</a>, a NoSQL-style database. Crucially it provides atomic operations, which means that when a queue is being polled by multiple servers only one can ever receive the queued item as it is <em>instantly</em> popped from the queue upon request. Redis also provides a server-client paradigm out of the box, so you just fire up a password protected Redis server on the web server and query it remotely from the application servers. Installing and interacting with Redis is easy if you&#8217;re using Debian because the folks over at <a href="http://www.dotdeb.org/">Dotdeb</a> have ready-made packages for it.</p>
<p>Another thing worth mentioning is how to make a daemon, as that&#8217;s the thing that does the constant 24/7 polling of the Redis queue. Making a cron job that runs every minute (which is too slow for a real-time app) or whatever is one thing, but having a script run constantly with the same process ID is something else altogether. Thankfully, PEAR&#8217;s<a href="http://pear.php.net/package/System_Daemon"> System_Daemon</a> library handles all the daemon stuff for you. It evens creates init.d scripts for you that can be run at start up. It&#8217;s a real big deal keeping this running, without it the whole system breaks down. For instance one gotcha I discovered is that the daemon will crash from the fatal error caused by the Redis server being unreachable, when the web server reboots for instance. For now, I&#8217;ve just fixed that bug, but I&#8217;m looking into using <a href="http://mmonit.com/monit/">Monit</a> to manage automatic respawning.</p>
<p>It&#8217;s still a work in progress, but I&#8217;m impressed by how well this method works.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tombh.co.uk/how-i-elasticised-my-web-app/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Underscore Skillswap</title>
		<link>http://www.tombh.co.uk/underscore-skillswap</link>
		<comments>http://www.tombh.co.uk/underscore-skillswap#comments</comments>
		<pubDate>Tue, 26 Oct 2010 10:49:25 +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=194</guid>
		<description><![CDATA[At 7pm, on Tuesday, November 30th in The Pervasive Media Studios, Bristol there&#8217;ll be a traditional Underscore skillswap on the subject of Social Network Application Development. It&#8217;s free! But please book a ticket first from Eventwax first. Since the Web got its 2.0 badge, there&#8217;s been a lot of stuff about social things, Facebook, Twitter, Wikipedia, etc. [...]]]></description>
			<content:encoded><![CDATA[<p class="first-child "><span title="A" class="cap"><span>A</span></span>t 7pm, on Tuesday, November 30th in <a href="http://www.pmstudio.co.uk/about-pervasive-media-studio">The Pervasive Media Studios</a>, Bristol there&#8217;ll be a traditional <a href="http://www.under-score.org.uk/pipermail/underscore/">Underscore</a> skillswap on the subject of <em>Social Network Application Development</em>.</p>
<p><span id="more-194"></span></p>
<p>It&#8217;s free! But please <a href="http://bristolskillswap.eventwax.com/social-network-application-development" target="_blank">book a ticket first from Eventwax</a> first.</p>
<p>Since the Web got its 2.0 badge, there&#8217;s been a lot of stuff about social things, Facebook, Twitter, Wikipedia, etc. We&#8217;ll ask questions like; How significant is the Social Web now? How does one build websites and applications for it? And where is it all going?</p>
<p>We&#8217;re hoping to provide a, somewhat controversial, underlying theme throughout that the disparate and &#8216;walled garden&#8217; Social Web of today is similar to the early unorganised days of email and that open formats, standards and protocols will soon unify our social experience on the Internet.</p>
<h2>Current speakers are;</h2>
<p><strong>Thomas Buckley-Houston</strong><br />
<img class="alignleft" title="Tom" src="http://www.tombh.co.uk/wordpress/wp-content/uploads/2009/11/tomisme2.jpg" alt="" width="150" />Facebook application developer and Open Social Web advocate. <a href="http://tombh.co.uk/about" target="_blank">tombh.co.uk</a></p>
<p style="clear: both;">&nbsp;</p>
<p><strong>Richard Dennys</strong><br />
<img class="alignleft" src="http://www.thelocal.se/blogs/mediasales/files/2010/05/richard.jpg" alt="" width="150" />Digital Marketeer, Principal Consultant at <a href="http://digital-divinty.co.uk" target="_blank">Digital Divinity</a>. Currently helping some big brands with their Facebook strategies.</p>
<p style="clear: both;">&nbsp;</p>
<p><strong>Tom Holder</strong><br />
<img class="alignleft" src="http://a1.twimg.com/profile_images/1140732545/IMG_0186.jpg" alt="" width="150" />Web developer, entrepreneur, and co-founder of <a href="http://simpleweb.co.uk" target="_blank">Simpleweb</a>. Open standards enthusiast, likes <a href="http://en.wikipedia.org/wiki/PubSubHubbub" target="_blank">PubSubHubBub</a> and <a href="http://activitystrea.ms/">Activity Streams</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tombh.co.uk/underscore-skillswap/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Integrity</title>
		<link>http://www.tombh.co.uk/integrity</link>
		<comments>http://www.tombh.co.uk/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 [...]]]></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/integrity/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Frintr</title>
		<link>http://www.tombh.co.uk/frintr</link>
		<comments>http://www.tombh.co.uk/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/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/myspaceid-sdk-and-php-5-3</link>
		<comments>http://www.tombh.co.uk/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 [...]]]></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/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/lenny-nginx-fastcgi-and-symfony</link>
		<comments>http://www.tombh.co.uk/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, [...]]]></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; title: ; notranslate">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; title: ; notranslate">
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; title: ; notranslate">
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/lenny-nginx-fastcgi-and-symfony/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

