<?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>CoffeePowered</title>
	<atom:link href="http://coffeepowered.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>http://coffeepowered.co.uk</link>
	<description>The online ramblings of Paul Stanton</description>
	<lastBuildDate>Mon, 06 Feb 2012 21:59:21 +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>Twig.gr &#8211; How I learned to stop worrying and ship my side projects</title>
		<link>http://coffeepowered.co.uk/2012/02/twig-gr-how-i-learned-to-stop-worrying-and-ship-my-side-projects/</link>
		<comments>http://coffeepowered.co.uk/2012/02/twig-gr-how-i-learned-to-stop-worrying-and-ship-my-side-projects/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 21:59:21 +0000</pubDate>
		<dc:creator>Stanton</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://coffeepowered.co.uk/?p=740</guid>
		<description><![CDATA[I love to mess about with side projects, although I have a very bad habit which I think may be common amongst us in that I have so little free time to spend on the projects that it takes me so long to design and develop them, that I usually end up abandoning them at [...]]]></description>
			<content:encoded><![CDATA[<p>I love to mess about with side projects, although I have a very bad habit which I think may be common amongst us in that I have so little free time to spend on the projects that it takes me so long to design and develop them, that I usually end up abandoning them at various stages while promising myself that I&#8217;ll come back to it later and finish it off, or I have (imho) great ideas that I never even start working on because I think I don&#8217;t have the time but after reading the Steve Jobs biography I had his mantra running around my head for a while.</p>
<blockquote><p>Real artists ship.<br />
<cite>Steve Jobs</cite></p></blockquote>
<p>It doesn&#8217;t matter how long you&#8217;ve spent working on something, or how clever you&#8217;ve been with the design or development if it&#8217;s sitting on a folder on your computer rather than in the hands of real people. I swore to myself that the next idea I had for a side project, I&#8217;d actually get off my ass and do it, however long it took with the little spare time I have, and I&#8217;d get it shipped as quickly as possible. (Shipping an imperfect, unfinished product isn&#8217;t quite what Steve meant, but hey&#8230;)</p>
<h3>The idea</h3>
<p>Every now and again on my Twitter stream, one of the people I follow gets a games console and their friends reply back with their gamer handles so that they can connect on these systems and perhaps play online. I also send out my XBox Live gamertag every now and then to see if any of the people I follow also play the same kind of games as me so that if we&#8217;re ever online at the same time, I can jump into a game with them and play with some familiar faces. It gets wearing to constantly ask your twitter followers for their handles, so I figured I could build something to do this for us.</p>
<blockquote class="twitter-tweet"><p>Idea for a side project, Twitter app where you add your Xbox/PS3/PC gamer ID&#8217;s and see the ID&#8217;s of the people you follow.</p>
<p>— Stanton (@stanton) <a href="https://twitter.com/stanton/status/155199096804741120" data-datetime="2012-01-06T08:08:42+00:00">January 6, 2012</a></p></blockquote>
<p>After sending this tweet I had quite a few replies from interested parties, so as Richard Branson would say, I thought &#8216;Screw it, Let&#8217;s do it&#8221; and got to work. Knowing that my time was limited I decided to develop this rapidly, to a minimum feature set, and with little to no design work more than a basic wireframe. The idea was to get it in people&#8217;s hands as quickly as possible; If it takes off I&#8217;ll devote more time to it, if not then I&#8217;ve not wasted months of work.</p>
<h3>Minimum Viable Product</h3>
<ul>
<li>User Add/Edit/Sign in</li>
<li>Twitter oAuth</li>
<li>XBL &amp; PSN handles</li>
<li>Add/Remove handles</li>
<li>List handles of Twitter friends</li>
<li>Ask user to post link to their friends</li>
</ul>
<p><a href="http://coffeepowered.co.uk/wp-content/uploads/2012/02/250px_1327962302_photo.jpg"><img class="image_left border_off" title="250px_1327962302_photo" src="http://coffeepowered.co.uk/wp-content/uploads/2012/02/250px_1327962302_photo.jpg" alt="Twig.gr screenshot" width="250" height="375" /></a><br />
After scribbling down the &#8216;Minimum Viable Product&#8217; feature set, I grabbed the latest version of <a href="http://cakephp.org">CakePHP</a> and <a href="http://stuffandnonsense.co.uk/projects/320andup/">320 and up</a> and got to work integrating with Twitter, I had to <a href="http://coffeepowered.co.uk/2012/01/oauth-consumer-in-cakephp-2-0-5/">modify the OAuth Consumer component</a> for the latest version of Cake, but with the magic of GitHub I was able to push these changes back to the original author to be integrated into future versions. Within a few days I had a working prototype which I took to the New Adventures conference to get some feedback on while chatting with people at at the pre-party.</p>
<p>One of the hardest things was making the conscious effort not to spend too much time on the design, It&#8217;s ingrained in our industry and culture to put the design of a new product under the microscope and make snap judgements on the quality of a service based on it&#8217;s pixels but with the constraints I&#8217;d placed upon the project, design would have to come later so I threw some very simple colour and layout over the top to at least make it palatable for the users. and after a few evenings of steady coding I checked out the code onto the production server and threw the link onto Twitter.</p>
<h3><a href="http://twig.gr">twig.gr</a></h3>
<p>So <a href="http://twig.gr">twig.gr</a> went live, and now we play the waiting game and to see how it goes, I&#8217;m quite happy for it to grow slowly and organically especially since I don&#8217;t have the means to conduct any kind of social media/marketing campaign for it, I think it&#8217;s one of those kinds of products that works truly by word of mouth. If you add yourself, you&#8217;re likely to tell others to sign up so that you can find them also. If it grows in popularity then I&#8217;ll devote more time to it both from a feature and design point of view, if not, then at least I shipped!</p>
]]></content:encoded>
			<wfw:commentRss>http://coffeepowered.co.uk/2012/02/twig-gr-how-i-learned-to-stop-worrying-and-ship-my-side-projects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OAuth Consumer in CakePHP 2.0.5</title>
		<link>http://coffeepowered.co.uk/2012/01/oauth-consumer-in-cakephp-2-0-5/</link>
		<comments>http://coffeepowered.co.uk/2012/01/oauth-consumer-in-cakephp-2-0-5/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 08:35:50 +0000</pubDate>
		<dc:creator>Stanton</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://coffeepowered.co.uk/?p=728</guid>
		<description><![CDATA[Getting the CakePHP OAuth Consumer to work in CakePHP 2.0.5]]></description>
			<content:encoded><![CDATA[<p>Just a quick post to note some tweaks I had to make to Daniel Hofstetter&#8217;s awesome <a href="http://code.42dh.com/oauth/">OAuth consumer component for CakePHP</a> to get it running in CakePHP 2.0.5</p>
<p>The cakephp_2.0-dev branch was throwing the following error for me when trying to use the Twitter OAuth API.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Consumer twitter_consumer.php not found!</div></td></tr></tbody></table></div>
<p>The relevant changes are available in my <a href="https://github.com/Stanton/oauth-consumer-component/tree/cakephp_2.0.5" title="Github">cakephp_2.0.5 branch on Github</a>.</p>
<h3>Changelog</h3>
<p><i>
<ul>
<li>Rename directories to match new conventions.</li>
<li>Change createConsumer method to use $className rather than $fileName to fix &#8216;Consumer twitter_consumer.php not found!&#8217; exception.</li>
<li>Use App::uses instead of App::import to fix &#8216;Fatal error: Class &#8216;HttpSocket&#8217; not found…&#8217; error.</li>
</ul>
<p></i></p>
<h3>Get the code</h3>
<p><a href="https://github.com/Stanton/oauth-consumer-component/tree/cakephp_2.0.5" title="https://github.com/Stanton/oauth-consumer-component/tree/cakephp_2.0.5">https://github.com/Stanton/oauth-consumer-component/tree/cakephp_2.0.5</a></p>
]]></content:encoded>
			<wfw:commentRss>http://coffeepowered.co.uk/2012/01/oauth-consumer-in-cakephp-2-0-5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Smarter images in Jadu CMS</title>
		<link>http://coffeepowered.co.uk/2011/09/smarter-images-in-jadu-cms/</link>
		<comments>http://coffeepowered.co.uk/2011/09/smarter-images-in-jadu-cms/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 18:17:35 +0000</pubDate>
		<dc:creator>Stanton</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Jadu]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://coffeepowered.co.uk/?p=665</guid>
		<description><![CDATA[An exploration into low impact development within a CMS, building lightweight functionality to improve how we use imagery within web pages that can be replaced as and when the platform evolves.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently been looking at ways to enhance certain content types that we deliver through <a href="http://jadu.net">Jadu CMS</a>, my focus at the moment has been through the use of images within content, whether that be News, Events, Documents or Homepages. This started with a re-alignment of the news section on the <a href="http://www.leeds.ac.uk">University of Leeds&#8217; corporate website</a>.</p>
<h3>Multiple image sizes</h3>
<p>We&#8217;ve traditionally been hampered by the fact that Jadu doesn&#8217;t yet have the ability to generate multiple image sizes from a single base image so if I wanted to have a large document level image, and a smaller thumbnail within a list view, I&#8217;d either have to resize with CSS which results in degraded image quality in some browsers, or have the editors upload multiple versions of each image to the CMS and figure some way to switch between these programatically. Neither of these options were desirable, so we built an image helper that, instead of inserting the <img alt="" /> element directly into the front end script, we pass the image name to the helper, along with the desired attributes such as a specific height and/or width, the helper then resizes the native image, and caches it for future use.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #b1b100;">print</span> imageGenerator<span style="color: #009900;">&#40;</span><span style="color: #000088;">$imageURL</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'alt'</span> <span style="color: #339933;">=&gt;</span> getImageProperty<span style="color: #009900;">&#40;</span><span style="color: #000088;">$imageURL</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'altText'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'class'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'contentimage'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'width'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">340</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>Take the <a href="http://www.leeds.ac.uk/news/30292/press_releases">UoL Press Releases news section</a>, for example, we can now elegantly deliver multiple image sizes depending on our needs, without either the bandwidth overhead of resizing large images, or the administration headache of managing multiple images within the CMS, and the image helper can be used anywhere in our front end templates.</p>
<blockquote><p>we can now elegantly deliver multiple image sizes depending on our needs, without either the bandwidth overhead of resizing large images, or the administration headache of managing multiple images within the CMS</p></blockquote>
<p style="text-align: center;"><a href="http://coffeepowered.co.uk/wp-content/uploads/2011/09/Screen-Shot-2011-09-02-at-18.48.53.png"><img class="size-full wp-image-694 aligncenter" style="border-style: initial; border-color: initial; border-width: 0px;" title="Screen Shot 2011-09-02 at 18.48.53" src="http://coffeepowered.co.uk/wp-content/uploads/2011/09/Screen-Shot-2011-09-02-at-18.48.53.png" alt="" width="520" height="236" /></a></p>
<h3>Image attribution</h3>
<p>The next issue I&#8217;ve been looking into recently is that of image attribution, again, Jadu doesn&#8217;t currently have any options within the multimedia gallery module to attach attribution data to multimedia items. If the UoL wants to use a Creative Commons licensed image, there&#8217;s no way, other than adding the attribution data into the body content. I figured there was a better way to do this.</p>
<p>The Multimedia Module within Jadu is the central place to manage all types of multimedia content, for this example I&#8217;ll focus on images. One of the core concepts of a CMS is that an image only needs to exist once, but can then be included in any other piece of content. The multimedia manager is a relatively recent addition to Jadu CMS, and as such, provides the bare minimum of features required so I needed to find a way to link attribution data to an image without modifying the core CMS code.</p>
<h3>Enter machine tags</h3>
<p>As we can apply tags to each image, this was a perfect place to use machine tags &#8211; a piece of text which contains machine-readable semantic information &#8211; to include the relevant licensing information. Machine tags are composed of three parts; a namespace, a predicate, and a value. For example:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">license:creativecommons=&quot;© 2009 Greg Grossmeier, used under a Creative <br />
Commons Attribution-ShareAlike license: <br />
http://creativecommons.org/licenses/by-sa/3.0/&quot;</div></td></tr></tbody></table></div>
<p>Initially, I hit a brick wall in that the &#8216;tag&#8217; column within the JaduMultimediaTags table was limited to varchar(50), a sensible default for most english word based tags but kills the chance of using machine tags which are typically longer. Frustrated, <a href="http://twitter.com/#!/stanton/status/108904319063048193">I moaned a bit on Twitter</a>, and within minutes had an email from <a href="http://twitter.com/ap49">@ap49</a> at Jadu asking what they could do to help, and later that night they&#8217;d modified the Jadu trunk to change the tag column to varchar(255) which is much more useful, for me at least!</p>
<p>So, armed with our enlarged tag column, I set about writing a function which would parse an images&#8217; tags for our license machine tag, extract the relevant components, and spit out some meaningful markup to the browser which we could style as needed. You can <a href="https://gist.github.com/599db38634c9ba2418d0">get the Image License function from GitHub</a>, in case it&#8217;s of use to anyone.</p>
<p>For the University of Leeds&#8217; corporate site, I wanted to include a small copyright, or creative commons symbol in the corner of the image, which would then expand to show the license detail when hovered over. I chose to use CSS for the hover animations rather than javascript and I&#8217;m quite pleased with the result. Modern browsers get a nicely animated transition and older browsers simply display the information on hover. The license function can be extended to provide the data in different formats depending on the content&#8217;s needs. For a homage widget like the one below, a subtle copyright icon works well, for images, illustrations or figures within a document we may prefer to list all of the attribution data at the foot of the document in a list of references.</p>
<p>Here&#8217;s the attribution implemented on our document image component:<br />
<video src="http://coffeepowered.co.uk/wp-content/uploads/2011/09/attribution.flv.video_.mp4" controls="controls"></video></p>
<h3>Low impact development</h3>
<p>Working in this way, we&#8217;re able to extend the functionality of the CMS without modifying the core product (which would complicate our upgrade cycle) because we&#8217;re making the assumption that these features will eventually be provided natively within the CMS. These functions enhance how we manage and use images, yet are lightweight enough to be stripped out and replaced by native functions if and when they become available.</p>
]]></content:encoded>
			<wfw:commentRss>http://coffeepowered.co.uk/2011/09/smarter-images-in-jadu-cms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://coffeepowered.co.uk/wp-content/uploads/2011/09/attribution.flv.video_.mp4" length="211086" type="video/mp4" />
		</item>
		<item>
		<title>Coursefinder 2010 report</title>
		<link>http://coffeepowered.co.uk/2011/06/coursefinder-2010-report/</link>
		<comments>http://coffeepowered.co.uk/2011/06/coursefinder-2010-report/#comments</comments>
		<pubDate>Thu, 30 Jun 2011 11:49:32 +0000</pubDate>
		<dc:creator>Stanton</dc:creator>
				<category><![CDATA[Coursefinder]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[report]]></category>
		<category><![CDATA[statistics]]></category>

		<guid isPermaLink="false">http://coffeepowered.co.uk/?p=251</guid>
		<description><![CDATA[I've quietly been collecting search data on the University of Leeds' Coursefinder for a while now, and always wanted to pick out some interesting facts and figures, the following is a combination of search and analytics data from the entirety of 2010.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve quietly been collecting search data on the University of Leeds&#8217; Coursefinder for a while now, and always wanted to pick out some interesting facts and figures, the following is a combination of search and analytics data from the entirety of 2010.</p>
<p><img src="http://coffeepowered.co.uk/wp-content/uploads/2011/06/coursefinder_stats.png" alt="Sorry this is an image and not &#039;proper&#039; data, I didn&#039;t have time to do it properly :(" title="Coursefinder 2010 report" width="509" height="337" class="alignnone size-full wp-image-636" /></p>
<p><img src="http://coffeepowered.co.uk/wp-content/uploads/2011/06/coursefinder_stats_search_terms1.png" alt="" title="Search terms" width="555" height="266" class="alignnone size-full wp-image-643" /><br />
<a href="http://coffeepowered.co.uk/wp-content/uploads/2011/06/Screen-shot-2011-06-29-at-15.38.00.png">(large version)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://coffeepowered.co.uk/2011/06/coursefinder-2010-report/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Building a &#8216;killer coursefinder&#8217;</title>
		<link>http://coffeepowered.co.uk/2011/06/building-a-killer-coursefinder/</link>
		<comments>http://coffeepowered.co.uk/2011/06/building-a-killer-coursefinder/#comments</comments>
		<pubDate>Wed, 08 Jun 2011 07:39:06 +0000</pubDate>
		<dc:creator>Stanton</dc:creator>
				<category><![CDATA[Conference]]></category>
		<category><![CDATA[Coursefinder]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Inspiration]]></category>
		<category><![CDATA[coursefinder]]></category>
		<category><![CDATA[jadu]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://coffeepowered.co.uk/?p=610</guid>
		<description><![CDATA[The video from the presentation I delivered at the CISG and Online Information conferences covering the University of Leeds' Course Finder, how and why it was developed, and ultimately, what I think we should be doing to make it truly a 'killer' service.]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://player.vimeo.com/video/24728688?title=0&amp;byline=0&amp;portrait=0" width="560" height="315" frameborder="0"></iframe>
<p><a href="http://vimeo.com/24728688">Killer Course Finder</a> from <a href="http://vimeo.com/jadu">Jadu</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>This is a presentation I delivered at <a href="https://www.ucisa.ac.uk/en/groups/cisg/Events/2010/cisg2010.aspx">CISG 2010</a> in Brighton, and <a href="http://www.online-information.co.uk/online2010/conference.html">Online Information 2010</a> in London late last year. This was my first foray into public speaking and I had an absolute blast and received some great feedback from the attendees. This session covers Coursefinder, probably the project I&#8217;m personally most proud of, and is about 50% what&#8217;s been done so far, and 50% what I&#8217;d love to do next. (I do go on a bit of a rant at 16 minutes in).</p>
<blockquote><p>A university course finder is a phenomenally important tool, the internet makes it possible for a prospective student to evaluate courses from an array of Universities from the comfort of their bedroom, perhaps without ordering a printed prospectus<br />&hellip;perhaps without putting on trousers</p></blockquote>
<p>Big thanks to the guys and girls at <a href="http://www.jadu.net">Jadu </a>for the speaking opportunity and for producing the video.</p>
]]></content:encoded>
			<wfw:commentRss>http://coffeepowered.co.uk/2011/06/building-a-killer-coursefinder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Working to a structured development process</title>
		<link>http://coffeepowered.co.uk/2011/01/working-to-a-structured-development-process/</link>
		<comments>http://coffeepowered.co.uk/2011/01/working-to-a-structured-development-process/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 16:15:25 +0000</pubDate>
		<dc:creator>Stanton</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Project Management]]></category>

		<guid isPermaLink="false">http://coffeepowered.co.uk/?p=570</guid>
		<description><![CDATA[You might work on small projects or large scale developments, you might be the only person involved or you might work with many others, regardless of your situation, having a structured development process is essential.
I work for the University of Leeds as a generalist designer/developer, a recent project of mine has been upgrading our institutional [...]]]></description>
			<content:encoded><![CDATA[<p>You might work on small projects or large scale developments, you might be the only person involved or you might work with many others, regardless of your situation, having a structured development process is essential.</p>
<p>I work for the University of Leeds as a generalist designer/developer, a recent project of mine has been upgrading our institutional Content Management System to the latest version of the software, a task which had an extremely tight timescale which was met by using a structured development process.</p>
<h3>My toolbox</h3>
<p>So let’s set the scene, I work within the Central IT Services’ Web Team and am the technical lead for the University of Leeds’ corporate website (www.leeds.ac.uk), this site runs on top of the Jadu Content Management System and was launched in September 2009. We have just performed a major upgrade of the core Jadu CMS which was turned around in a very short space of time, and it’s this upgrade project which is the basis for this post.</p>
<div id="attachment_576" class="wp-caption aligncenter" style="width: 310px"><a href="http://coffeepowered.co.uk/wp-content/uploads/2011/01/University-of-Leeds1.jpg"><img class="size-medium wp-image-576  " title="University-of-Leeds" src="http://coffeepowered.co.uk/wp-content/uploads/2011/01/University-of-Leeds1-300x239.jpg" alt="" width="300" height="239" /></a><p class="wp-caption-text">University of Leeds (www.leeds.ac.uk)</p></div>
<p>For those of you wanting to know which apps and tools I use, here’s a quick rundown:</p>
<ul>
<li>iMac 21.5″ 3.2GHz Intel Core i3</li>
<li><a href="http://macromates.com/">Textmate</a></li>
<li>Terminal</li>
<li><a href="http://www.mamp.info/en/index.html">MAMP</a> (local Apache/MySQL server)</li>
<li><a href="http://www.sequelpro.com/>Sequel Pro</a> (MySQL OSX user interface)</li>
<li><a href="http://git-scm.com/>GIT</a> (Version Control System)</li>
<li><a href="http://trac.edgewall.org/">Trac</a> (Project Management and Issue Tracking)</li>
</ul>
<h3>Project management tools</h3>
<p>There are a whole host of tools available which will allow you to manage your project, both free and paid-for. Within the Web Team, we use the Open Source ‘Trac’ Project, Trac may not be the prettiest piece of software ever written, but it’s extremely flexible through a plug-in architecture and being open source, we’ve moulded it to fit our exact needs as a team. The key features we use are issue tracking, milestones and source code management.</p>
<blockquote><p>“There are a whole host of tools available which will allow you to manage your project, both free and paid-for.”</p></blockquote>
<p>As well as using Trac internally within our team we have opened up access to a couple of teams within the institution who work with us on the corporate project. The Central Communications team (Comms), for example, have the ability to assign and manage tickets, see the commit history and timeline and read the wiki, but don’t have access to the source code repositories or source browsing facility through Trac.</p>
<h3>local &gt; staging &gt; production (aka develop &gt; debug &gt; deploy)</h3>
<p>There are three separate environments which I use to develop for leeds.ac.uk. Firstly, all of the code I write is done on a local server which runs a complete standalone version of the code and database. This allows me to mess around as much as I want without any risk to the live site and database which runs on the production server where the live version of leeds.ac.uk lives.</p>
<p>In between my local development server and the production server is the ’staging’ server, this is an identical environment to the production server (even running on the same physical hardware) and is accessed through a private URL. By running this staging server I can deploy code for the team to test, confident that this is identical to how the site will operate once deployed to the production server.</p>
<p>The deployment is handled through the GIT version control system which is tied to our Trac system where we maintain a central source code repository (even though it’s not strictly needed with GIT, we still maintain a central repo for ‘disaster planning’), code is pushed from Local to Trac, then from Trac to Staging and ultimately from Trac to Live.</p>
<h3>How it all tied together</h3>
<p>During the upgrade project I worked with our internal project co-ordinator and the Comms team to define a set of milestone dates for the project, such as ‘testing’, ‘pre-launch’, ‘launch’ and ‘post launch’.</p>
<p>We knew the date the site had to launch by was concrete, so worked backwards from there, with the pre-launch milestone set to the start of the week of launch, this contained any issues and tasks that needed to be completed before we could possibly go-live (such as a last minute content-freeze and migration from the currently live site to the upgraded site). Finally, the post-launch milestone allowed me to keep any tasks that weren’t directly related to the launch to be processed afterwards.</p>
<blockquote><p>“We knew the date the site had to launch by was concrete,<br />
so worked backwards from there”</p></blockquote>
<p>We had a thorough round of testing in the weeks running up to launch, the task of testing was performed by Comms who were testing against a ‘release candidate’ build on the Staging server. They worked for a week going through every single page on the Release Candidate build and logged tickets for any bugs, whether they be for differences in layout or differences in content. This is a critical step and their eagle eyes spotted a wide range of issues, from missing/out of date content, to the fact that the breadcrumb trail was 2 pixels further to the right than it should be.</p>
<p>These issues were all classified against a simple priority scale:</p>
<ol>
<li>Blocker (the site can’t possibly go live until this is fixed)</li>
<li>Critical (if this isn’t fixed, people may die)</li>
<li>Major (it’s a big problem, but no-one’s going to die)</li>
<li>Minor (this needs fixing at some point)</li>
<li>Trivial (no-one would probably notice except us)</li>
</ol>
<blockquote><p>“a &#8216;critical&#8217; issue may be seen as one which would cause the institution to cause severe confusion or lose money”</p></blockquote>
<p>If you were to take into account the business considerations, a &#8216;critical&#8217; issue may be seen as one which would cause the institution to cause severe confusion or lose money (such as printing an incorrect emergency phone number). Not all content is created equal, so a content difference on the Press Releases page might be classed as ‘Major’ while a page buried in the bowels of the site with a spelling error might be classed as ‘Minor’ or ‘Trivial’. It’s worth sitting down with the people who are going to be creating most of your tickets and defining what your priorities are to make sure that everything is not logged as high-priority to try and get them finished quicker.</p>
<p>(Based on this project I may move to remove the Blocker priority, as nearly all critical issues could be considered blockers)</p>
<p>I left the team alone for a week to perform their testing, only stepping in to fix any Blocker/Critical issues which would hamper their testing efforts and being on hand to answer any questions they had, after they were satisfied the entire site had been tested, their access to staging was revoked while I worked through all of the tickets assigned to the ‘Testing’ milestone. This process took 3 days for a couple of hundred issues, once the reported issue had been resolved the ticket was re-assigned to the owner for them to recheck the issue, and for them to close the ticket if it was fixed, or fail if it was still present.</p>
<h3>Make your tools work for you</h3>
<p>I am lucky to work with some extremely talented people, including a colleague who installed and maintains our Trac instance and implements some of the weird and wonderful ideas we have to make it more useful for us. One of the most used tweaks was to use the post-receive hooks of GIT to allow us to modify tickets based on the commit message.</p>
<p>For example, I accept Ticket #356 which requires a code change to resolve. I make the required change to the code and commit this to my local repository with the following command:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">git commit <span style="color: #339933;">-</span>m <span style="color: #0000ff;">&quot;Fixes #356 - bug was caused by ... and fixed by ...&quot;</span></div></td></tr></tbody></table></div>
<p>When I next push my changes to Trac, the post-receive hook recognises the ‘Fixes #356′ part of the commit message, adds a comment to the ticket linking to the specific changeset and diff showing exactly what changed, and sets the ticket to ‘testing’ status, which then fires off an email to the ticket owner prompting them to test the fix and close the ticket if it’s resolved.</p>
<p>I also communicated the progress of the project with the testing team by highlighting which version of the code the staging server was currently running:</p>
<div id="attachment_580" class="wp-caption aligncenter" style="width: 580px"><a href="http://coffeepowered.co.uk/wp-content/uploads/2011/01/1H94dp.Screen+shot+2010-09-09+at+16-06-00.jpg"><img class="size-full wp-image-580 " title="1H94dp.Screen+shot+2010-09-09+at+16-06-00" src="http://coffeepowered.co.uk/wp-content/uploads/2011/01/1H94dp.Screen+shot+2010-09-09+at+16-06-00.jpg" alt="" width="570" height="96" /></a><p class="wp-caption-text">Code version</p></div>
<p>This linked through to a summary changelog, which gave an outline of what had changed from version to version, clicking through would list precisely what had changed in the code and which tickets were fixed:</p>
<div id="attachment_582" class="wp-caption aligncenter" style="width: 580px"><a href="http://coffeepowered.co.uk/wp-content/uploads/2011/01/1H974d.Screen+shot+2010-09-09+at+16-06-41.jpg"><img src="http://coffeepowered.co.uk/wp-content/uploads/2011/01/1H974d.Screen+shot+2010-09-09+at+16-06-41.jpg" alt="" title="1H974d.Screen+shot+2010-09-09+at+16-06-41" width="570" height="155" class="size-full wp-image-582" /></a><p class="wp-caption-text">Trac changelog</p></div>
<p>We projected the Trac roadmap screen in our office with an auto-refresh which let us watch the testing milestone gradually reach 100% completion as the Comms team signed off the fixed tickets (I’m a sucker for visualising the size and progress of the task). All of this communication regarding the process of the project was passive, it was only available if and when anyone needed to see it.</p>
<div id="attachment_583" class="wp-caption aligncenter" style="width: 580px"><a href="http://coffeepowered.co.uk/wp-content/uploads/2011/01/700px_1283849005_1.jpg"><img class="size-full wp-image-583" title="700px_1283849005_1" src="http://coffeepowered.co.uk/wp-content/uploads/2011/01/700px_1283849005_1.jpg" alt="" width="570" height="428" /></a><p class="wp-caption-text">Projection of project progress</p></div>
<h3>In conclusion</h3>
<p>It doesn’t matter what tools or software you use as long as you’re able to make them fit around the way you work. If a piece of software gets in the way of how you work then you should seriously consider either changing it, or (if possible) changing the way it works to better suit your needs. If you’re working with other people on a project, communication is essential. By keeping everyone involved up-to date you can reduce the amount of time needed for meetings and reach that magical milestone, getting sign off.</p>
]]></content:encoded>
			<wfw:commentRss>http://coffeepowered.co.uk/2011/01/working-to-a-structured-development-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My year in moblogs</title>
		<link>http://coffeepowered.co.uk/2010/12/my-year-in-moblogs/</link>
		<comments>http://coffeepowered.co.uk/2010/12/my-year-in-moblogs/#comments</comments>
		<pubDate>Tue, 21 Dec 2010 15:44:28 +0000</pubDate>
		<dc:creator>Stanton</dc:creator>
				<category><![CDATA[Photography]]></category>

		<guid isPermaLink="false">http://coffeepowered.co.uk/?p=554</guid>
		<description><![CDATA[As you may know, I run a small niche social site called homeofmuppets, the main feature of the site is the moblog which has been around since 2005 or so. This site has, over the years, become a photo record of my life, as it&#8217;s built around the friends that I know and love in [...]]]></description>
			<content:encoded><![CDATA[<p>As you may know, I run a small niche social site called <a href="http://homeofmuppets.com">homeofmuppets</a>, the main feature of the site is the moblog which has been around since 2005 or so. This site has, over the years, become a photo record of my life, as it&#8217;s built around the friends that I know and love in real life, we use the site to share our experiences around the world, and it&#8217;s amazing to walk back through the years and remember these moments.</p>
<p>This year has been one of massive change and random moments so I thought I&#8217;d highlight some of the high points. Rather than sit here and write, I thought I&#8217;d let the moblogs do the bulk of the talking.</p>
<div class="wp-caption aligncenter" style="width: 549px"><a href="http://www.homeofmuppets.com/moblogs/view/11417"><img class="   " src="http://www.homeofmuppets.com/img/thumbs/moblogs/700px/700px_1262685907_img_9648.jpg" alt="January - We started the year as we ended it, with lots and lots of snow" width="539" height="405" /></a><p class="wp-caption-text">January - We started the year as we ended it, with lots and lots of snow</p></div>
<div class="wp-caption aligncenter" style="width: 549px"><a href="http://www.homeofmuppets.com/moblogs/view/11482"><img class=" " src="http://www.homeofmuppets.com/img/thumbs/moblogs/700px/700px_1265971802_photo.jpg" alt="" width="539" height="405" /></a><p class="wp-caption-text">February - We celebrated 200 episodes of the Boagworld.com podcast with a mammoth live stream from The Barn</p></div>
<div class="wp-caption aligncenter" style="width: 570px"><a href="http://www.homeofmuppets.com/moblogs/view/11527"><img class=" " src="http://www.homeofmuppets.com/img/thumbs/moblogs/700px/700px_1269726499_1.jpg" alt="" width="560" height="420" /></a><p class="wp-caption-text">March - We met a dood from Boyzone</p></div>
<div class="wp-caption aligncenter" style="width: 570px"><a href="http://www.homeofmuppets.com/moblogs/view/11543"><img class="  " src="http://www.homeofmuppets.com/img/thumbs/moblogs/700px/700px_1271323182_1.jpg" alt="" width="560" height="420" /></a><p class="wp-caption-text">March - I finally made the switch!</p></div>
<div class="wp-caption aligncenter" style="width: 570px"><a href="http://www.homeofmuppets.com/moblogs/view/11672"><img class="  " src="http://www.homeofmuppets.com/img/thumbs/moblogs/700px/700px_1277705723_lx3%20jules%20juan%20073.jpg" alt="" width="560" height="315" /></a><p class="wp-caption-text">June - We reunited with old friends from Toronto and Belgium</p></div>
<div class="wp-caption aligncenter" style="width: 570px"><a href="http://www.homeofmuppets.com/moblogs/view/11654"><img src="http://www.homeofmuppets.com/img/thumbs/moblogs/700px/700px_1276295711_mum%20wedding%20057.jpg" alt="" width="560" height="420" /></a><p class="wp-caption-text">June - I married the love of my life</p></div>
<div class="wp-caption aligncenter" style="width: 570px"><a href="http://www.homeofmuppets.com/moblogs/view/11753"><img class=" " src="http://www.homeofmuppets.com/img/thumbs/moblogs/700px/700px_1288812302_.jpg" alt="" width="560" height="462" /></a><p class="wp-caption-text">June - we became parents-to-be</p></div>
<div class="wp-caption aligncenter" style="width: 570px"><a href="http://www.homeofmuppets.com/moblogs/view/11934"><img class=" " src="http://www.homeofmuppets.com/img/thumbs/moblogs/700px/700px_1291304701_9d9a5854a6a5333e8db4c8411601425d_full.jpeg" alt="" width="560" height="418" /></a><p class="wp-caption-text">November - I did my first conference speaking gig</p></div>
<div class="wp-caption aligncenter" style="width: 570px"><a href="http://www.homeofmuppets.com/moblogs/view/11775"><img src="http://www.homeofmuppets.com/img/thumbs/moblogs/700px/700px_1289844302_1.jpg" alt="" width="560" height="746" /></a><p class="wp-caption-text">November - I rocked a tux at my first black-tie dinner</p></div>
<div class="wp-caption aligncenter" style="width: 570px"><a href="http://www.homeofmuppets.com/moblogs/view/11984"><img class=" " src="http://www.homeofmuppets.com/img/thumbs/moblogs/700px/700px_1292775607_1.jpg" alt="" width="560" height="358" /></a><p class="wp-caption-text">December - At the ripe old age of 29, we got our first car!</p></div>
<div class="wp-caption aligncenter" style="width: 570px"><a href="http://www.homeofmuppets.com/moblogs/view/11972"><img src="http://www.homeofmuppets.com/img/thumbs/moblogs/700px/700px_1291971902_photo.jpg" alt="" width="560" height="746" /></a><p class="wp-caption-text">December - The snow &amp; ice descended to usher out 2010</p></div>
]]></content:encoded>
			<wfw:commentRss>http://coffeepowered.co.uk/2010/12/my-year-in-moblogs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Playing with the Lumix LX3</title>
		<link>http://coffeepowered.co.uk/2010/06/playing-with-the-lumix-lx3/</link>
		<comments>http://coffeepowered.co.uk/2010/06/playing-with-the-lumix-lx3/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 19:19:08 +0000</pubDate>
		<dc:creator>Stanton</dc:creator>
				<category><![CDATA[Photography]]></category>
		<category><![CDATA[camera]]></category>
		<category><![CDATA[lumix]]></category>
		<category><![CDATA[lx3]]></category>
		<category><![CDATA[panasonic]]></category>
		<category><![CDATA[photograph]]></category>

		<guid isPermaLink="false">http://coffeepowered.co.uk/?p=497</guid>
		<description><![CDATA[On June 10th I married the love of my life, and as a truly superb wedding present, she bought me a shiny new Lumix LX3 digital camera which I&#8217;ve been getting to grips with over the past few weeks.

The last digital camera I owned was a Canon Ixus 40 which was a nifty little thing [...]]]></description>
			<content:encoded><![CDATA[<p>On June 10th I married the love of my life, and as a truly superb wedding present, she bought me a shiny new Lumix LX3 digital camera which I&#8217;ve been getting to grips with over the past few weeks.</p>
<p><img src="http://coffeepowered.co.uk/wp-content/uploads/2010/06/lx3.jpg" /><br />
The last digital camera I owned was a Canon Ixus 40 which was a nifty little thing but wasn&#8217;t much more than a regular point &#038; shoot. The LX3 is still a compact, but is nestled at the top end and is about as high as you&#8217;d want before making the leap to a DSLR.</p>
<p>The look and feel is gorgeous, the metal body has a retro feel to it and it&#8217;s got a wide angle Leica lens which can shoot in a few different formats, my favourite is definitely the 16:9. The one downside is that there&#8217;s a very small zoom on the lens which is only useful for framing, other than that, I&#8217;m a big fan so I thought I&#8217;d share some sample shots I took before the wedding and on the honeymoon. All of these are unedited and straight from the camera.</p>
<p>I definitely prefer portrait photography to be in black &#038; white and the LX3 has a very nice dynamic B&#038;W mode which ups the contrast for a more moody shot.</p>
<p><a href="http://www.flickr.com/photos/paulstanton/4741474287/" title="P1000943 by paulstanton, on Flickr"><img src="http://farm5.static.flickr.com/4080/4741474287_b741981f51.jpg" width="500" height="281" alt="P1000943"></a></p>
<p><a href="http://www.flickr.com/photos/paulstanton/4742094506/" title="Nat on the London Underground by paulstanton, on Flickr"><img src="http://farm5.static.flickr.com/4119/4742094506_e7b6eb51f1.jpg" width="500" height="281" alt="Nat on the London Underground"></a></p>
<p><a href="http://www.flickr.com/photos/paulstanton/4742299406/" title="P1000175 by paulstanton, on Flickr"><img src="http://farm5.static.flickr.com/4102/4742299406_56cefaea2c.jpg" width="500" height="281" alt="P1000175"></a></p>
<p><a href="http://www.flickr.com/photos/paulstanton/4741672905/" title="P1000219 by paulstanton, on Flickr"><img src="http://farm5.static.flickr.com/4115/4741672905_8ca4333d26.jpg" width="500" height="281" alt="P1000219"></a></p>
<p><a href="http://www.flickr.com/photos/paulstanton/4742311284/" title="P1000232 by paulstanton, on Flickr"><img src="http://farm5.static.flickr.com/4102/4742311284_06f562d169.jpg" width="500" height="281" alt="P1000232"></a></p>
<p>There&#8217;s tons of settings to mess about with the exposure, as well as the ability to shoot in RAW mode to capture all that detail. this 10mp long exposure is <a href="http://www.flickr.com/photos/paulstanton/4741469353/sizes/l/in/photostream/">best viewed LARGE!</a></p>
<p><a href="http://www.flickr.com/photos/paulstanton/4741469353/" title="Singapore at night by paulstanton, on Flickr"><img src="http://farm5.static.flickr.com/4074/4741469353_91d7ec011a.jpg" width="500" height="281" alt="Singapore at night"></a></p>
<p>Colour reproduction is great, and very accurate to the scene</p>
<p><a href="http://www.flickr.com/photos/paulstanton/4742131900/" title="P1010772 by paulstanton, on Flickr"><img src="http://farm5.static.flickr.com/4138/4742131900_79f0e6bfc2.jpg" width="500" height="281" alt="P1010772"></a></p>
<p>And the macro mode is fantastic for those close ups</p>
<p><a href="http://www.flickr.com/photos/paulstanton/4741498545/" title="P1010900 by paulstanton, on Flickr"><img src="http://farm5.static.flickr.com/4100/4741498545_e4f01d5020.jpg" width="500" height="333" alt="P1010900"></a></p>
<p><a href="http://www.flickr.com/photos/paulstanton/4741482559/" title="P1010243 by paulstanton, on Flickr"><img src="http://farm5.static.flickr.com/4142/4741482559_08f92d7b34.jpg" width="500" height="281" alt="P1010243"></a></p>
<p>All in all, I love the camera and I&#8217;m hoping to take it with me quite often to capture some great shots. I might even invest some money as you can trick it out quite a bit with accessories!</p>
<p><a href="http://www.flickr.com/photos/nokton/3106803477/" title="Lumix LX3 fully loaded by Nokton, on Flickr"><img src="http://farm4.static.flickr.com/3292/3106803477_781a544288.jpg" width="500" height="333" alt="Lumix LX3 fully loaded"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://coffeepowered.co.uk/2010/06/playing-with-the-lumix-lx3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Project52 fail</title>
		<link>http://coffeepowered.co.uk/2010/03/project52-fail/</link>
		<comments>http://coffeepowered.co.uk/2010/03/project52-fail/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 15:59:31 +0000</pubDate>
		<dc:creator>Stanton</dc:creator>
				<category><![CDATA[p52]]></category>
		<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://coffeepowered.co.uk/?p=483</guid>
		<description><![CDATA[So at the start of the year I pledged my allegiance to the #p52 movement and aimed to write 1 new blog post per week for a year.
I failed.
So this is where I recant multiple excuses to explain my failure. While I got off to a good start with some posts that generated a fair [...]]]></description>
			<content:encoded><![CDATA[<p>So at the start of the year I pledged my allegiance to the #p52 movement and aimed to write 1 new blog post per week for a year.</p>
<p>I failed.</p>
<p><a href="http://www.flickr.com/photos/jameson42/4210338580/" class="image_left"><img src="http://farm3.static.flickr.com/2704/4210338580_505867fbb2_m.jpg" /></a>So this is where I recant multiple excuses to explain my failure. While I got off to a good start with some posts that generated a fair number of comments everything seems to be happening at once and the amount of &#8216;free&#8217; time I can devote to writing has all but vanished into thin air for a short while. As well as some new projects coming my way in my &#8216;day job&#8217; which I&#8217;ve been working flat-out on for a couple of weeks I&#8217;ve also started to dip my toe back into the freelance waters and have been working on a couple of small projects on an evening as well as off bits of wedding planning here and there and the odd job interview to mix things up a bit leaving very little time to blog. Plus (and I know @garyvee might disagree) there&#8217;s 24, Lost and a whole host of other fine television programming which demand my attention.</p>
<p>I do plan on, and want to write regularly but once a week just doesn&#8217;t seem sustainable for a whole year, life and work will invariably get in the way. I&#8217;d rather take the time to write posts than crack out half-assed ones every week. So I&#8217;m handing in my #p52 membership card and commemorative plate and will be writing when I can from now on.</p>
]]></content:encoded>
			<wfw:commentRss>http://coffeepowered.co.uk/2010/03/project52-fail/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>An analogy for progressive enhancement</title>
		<link>http://coffeepowered.co.uk/2010/02/an-analogy-for-progressive-enhancement/</link>
		<comments>http://coffeepowered.co.uk/2010/02/an-analogy-for-progressive-enhancement/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 09:07:41 +0000</pubDate>
		<dc:creator>Stanton</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[p52]]></category>
		<category><![CDATA[Tips and tricks]]></category>
		<category><![CDATA[analogy]]></category>
		<category><![CDATA[progressive enhancement]]></category>
		<category><![CDATA[sales]]></category>

		<guid isPermaLink="false">http://coffeepowered.co.uk/?p=455</guid>
		<description><![CDATA[As a designer I often have to explain the concept of progressive enhancement and graceful degradation to clients to try and explain why their site doesn&#8217;t look the same in every browser.
Selling concepts
I endured a misspent youth in retail sales and one of the things I&#8217;m good at is finding the best way to sell [...]]]></description>
			<content:encoded><![CDATA[<p>As a designer I often have to explain the concept of progressive enhancement and graceful degradation to clients to try and explain why their site doesn&#8217;t look the same in every browser.</p>
<h3>Selling concepts</h3>
<p>I endured a misspent youth in retail sales and one of the things I&#8217;m good at is finding the best way to sell things to clients, even if it&#8217;s a concept like progressive enhancement rather than a physical product, the concept can be &#8216;sold&#8217; in a way that the client understands and, more importantly, accepts.</p>
<p>Let&#8217;s start with the definition from Wikipedia:</p>
<blockquote><p>Progressive enhancement is a strategy for web design that emphasizes accessibility, semantic mark-up, and external stylesheet and scripting technologies. Progressive enhancement uses web technologies in a layered fashion that allows everyone to access the basic content and functionality of a web page, using any browser or Internet connection, while also providing those with better bandwidth or more advanced browser software an enhanced version of the page.<br /><cite><a href="http://en.wikipedia.org/wiki/Progressive_enhancement">Wikipedia</a></cite></p></blockquote>
<p>While this is a clear and concise definition it does assume a certain level of knowledge and so isn&#8217;t the most ideal method to explain the concept to clients.</p>
<p>I tend to use analogies to explain a lot of things to people, taking something that may be alien to them, such as the differing capabilities of web browsers, and use something they may be familiar with to explain the point. My favourite analogy uses games consoles as a replacement for web browsers.</p>
<h3>my favourite analogy</h3>
<p>So let’s take a popular sports game, Say &#8216;Tiger Woods Golf&#8217;, this game is available on just about every popular games console on the market such as the Nintendo Wii, Xbox 360 and Playstation 3 as well as handheld consoles such as the Nintendo DS, does the game look the same on each console? Absolutely not! It&#8217;s physically impossible and there&#8217;s a clear and defined difference with games consoles, the &#8216;high-end&#8217; consoles like the 360 and PS3 cost the most, and undoubtedly give the best visual representation of the game, with better textures, realistic faces, perfect trees and water effects but the Nintendo Wii, having less power will have blockier graphics, jagged edges and rougher details like trees and water. The games don&#8217;t look exactly the same, but the most important thing is that &mdash; despite these obvious visual differences &mdash; it doesn&#8217;t stop you playing a round of golf.</p>
<p><img src="http://coffeepowered.co.uk/wp-content/uploads/2010/02/tigerwoodsyall.jpg" /><br />
Image showing the difference between the game on the Wii (left) and the 360 (right)</p>
<p>Every client I&#8217;ve ever explained this to has understood the analogy really well. Nearly all own, or have owned games consoles or have children with them and so can understand that a £300 console might give a better overall experience than a £150 console, even if the game costs the same. The game is designed to take advantage of the increased power available in high end machines, and cut back on certain things on low end machines to make sure that you can still do the core task in the game. Everyone will remember owning an older system when they were younger and wouldn&#8217;t expect their Atari, NES or Master System to be able to cope with the latest video games on the market, but they could still get a game that would let them play a round of golf. Even if the balls are square.</p>
<h3>the &#8216;convincers&#8217;</h3>
<p>There&#8217;s a couple of conscious decisions here which help to &#8216;sell&#8217; the analogy, Firstly: games such as Tiger Woods Golf, Fifa Football or Formula 1 are extremely widespread and mainstream, you can be sure that even if your audience isn&#8217;t familiar with a specific game, they know the sport. You can tailor the analogy on-the-fly with the client also, if you know they&#8217;re a football fan, switch to Fifa Football as your reference.</p>
<p>Secondly: I use a sports game as they&#8217;re the most likely to be ported across all major consoles and contain familiar elements which stay consistent regardless of the platform, such as golf courses, race tracks or sports stadiums. It&#8217;s the graphical detail that is the major difference and this is what we&#8217;re using to compare.</p>
<p>Thirdly: sports games attract huge investment and sponsorship and sell and make millions. This helps to sell the fact that even EA Sports, with their millions of dollars can make a game look the same across every console.</p>
<h3>what about you?</h3>
<p>Do you have a favourite analogy? what do you use to explain certain things to clients? It doesn&#8217;t have to be progressive enhancement, hit up the comment box below and let me know!</p>
]]></content:encoded>
			<wfw:commentRss>http://coffeepowered.co.uk/2010/02/an-analogy-for-progressive-enhancement/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

