<?xml version="1.0" ?> 
			<!-- RSS generated by http://www.stevetucker.co.uk/ on Saturday 04th February 2012 03:17:08PM -->
			<rss version="2.0">
			<channel>
				<title>Steve Tucker</title>
				<link>http://www.stevetucker.co.uk/</link>
				<description>Web design and development techniques by Steve Tucker</description>
				<language>en-uk</language>
				<copyright>Copyright (c) 2012 Steve Tucker</copyright>
				<item>
					<title>GWO Dynamic Section Variations Function</title>
					<description>&lt;p&gt;I've recently began working heavily with Google Website Optimiser, particularly on the technical and advanced side of testing, inline with improving the effectiveness our our e-commerce websites for clients.&lt;/p&gt;

&lt;p&gt;On my travels I recently discovered the &lt;a href=&quot;http://www.gwotricks.com/&quot;&gt;blog of Eric Vasilik&lt;/a&gt;, the techincal lead of &lt;abbr title=&quot;Google Website Optimiser&quot;&gt;GWO&lt;/abbr&gt;. Particular of interest is &lt;a href=&quot;http://www.gwotricks.com/2009/05/server-side-dynamic-section-variations.html&quot;&gt;this article&lt;/a&gt; which demonstrates an ingenious method of being able to dynamically generate variations in GWOs multivariate tests (a common problem for many testers).&lt;/p&gt;

&lt;p&gt;To both speed up and clean up the process of working with this method I wrote the following PHP script that you may find useful.&lt;/p&gt;

&lt;h3&gt;The script&lt;/h3&gt;
&lt;pre&gt;
&amp;lt;?php
/*
This function allows the insertion of dynamic sections as explained in this article: http://www.gwotricks.com/2009/05/server-side-dynamic-section-variations.html
It accepts a minimum of 3 arguments, the first MUST be the section name. All others thereafter are section values
*/
function insert_gwo_sections() {

	if (func_num_args() &amp;lt; 2) return false;
	
	$arguments = func_get_args();
	
	static $section_number;
	$section_number++;
	
	$section_name = $arguments[0];
	array_shift($arguments);
	
	ob_start();
	foreach ($arguments as $key=&amp;gt;$section_value) {
	
		if ($key==0) { ?&amp;gt;
			&amp;lt;!-- utmx section name=&amp;quot;&amp;lt;?php echo $section_name; ?&amp;gt;&amp;quot; --&amp;gt;
			&amp;lt;script&amp;gt;
				var GWO_Section&amp;lt;?php echo $section_number; ?&amp;gt; = utmx(&amp;quot;variation_number&amp;quot;, &amp;quot;&amp;lt;?php echo $section_name; ?&amp;gt;&amp;quot;);
				if (GWO_Section&amp;lt;?php echo $section_number; ?&amp;gt; != undefined &amp;amp;&amp;amp; GWO_Section&amp;lt;?php echo $section_number; ?&amp;gt; != 0) document.write('&amp;lt;no' + 'script&amp;gt;');
			&amp;lt;/script&amp;gt;
			&amp;lt;?php echo $section_value; ?&amp;gt;
			&amp;lt;/noscript&amp;gt;
		&amp;lt;?php }
		else { ?&amp;gt;
			&amp;lt;script&amp;gt;
				if (GWO_Section&amp;lt;?php echo $section_number; ?&amp;gt; == &amp;lt;?php echo $key; ?&amp;gt;) document.write('&amp;lt;/noscript a=&amp;quot;');
			&amp;lt;/script&amp;gt;&amp;lt;!--&amp;quot;&amp;gt;
			&amp;lt;?php echo $section_value; ?&amp;gt;
			&amp;lt;script&amp;gt;document.write('&amp;lt;'+'!'+'-'+'-')&amp;lt;/script&amp;gt;--&amp;gt;
		&amp;lt;?php }
	}
	return ob_get_clean();
}
?&amp;gt;
&lt;/pre&gt;

&lt;h3&gt;Example Usage&lt;/h3&gt;
&lt;p&gt;This function accepts a minimum of 3 arguments. The first &lt;strong&gt;must&lt;/strong&gt; be the name of the section. The following arguments (however many you require) are the variations you require. The function will sort everything out for you, leaving you more time to design your test and requiring less time to implement it. An example of a multivariate testing using the above function can be seen below:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;?php
$name = 'Steve';
echo insert_gwo_sections('headline','&amp;lt;h2&amp;gt;Hello '.$name.'&amp;lt;/h2&amp;gt;','&amp;lt;h2&amp;gt;Howdie, '.$name.'!&amp;lt;/h2&amp;gt;','&amp;lt;h2&amp;gt;Hi there '.$name.'&amp;lt;/h2&amp;gt;');
?&amp;gt;
&lt;/pre&gt;

&lt;p&gt;I originally posted this article on my business blog, found &lt;a href=&quot;http://becomeremarkable.co.uk/blog/web-design/google-website-optimiser-dynamic-section-variations-function/&quot;&gt;here&lt;/a&gt;.</description>
					<link>http://www.stevetucker.co.uk/gwo-dynamic-section-variations-function.htm</link>
					<guid isPermaLink="true">http://www.stevetucker.co.uk/gwo-dynamic-section-variations-function.htm</guid>
					<author>Steve Tucker - contact@stevetucker.co.uk</author>
					<pubDate>Thu, 01 Jan 1970 00:00:00 GMT</pubDate>
				</item>
				<item>
					<title>innerXHTML in Google and Firefox Suggest!</title>
					<description>&lt;p&gt;Yesterday I noticed, to the satisfaction of the geek within me, that the term '&lt;strong&gt;innerXHTML&lt;/strong&gt;' now appears as a suggestion in the Firefox search bar, and in &lt;a href=&quot;http://www.google.com/webhp?complete=1&amp;hl=en&quot; title=&quot;Google Suggest&quot;&gt;Google suggest&lt;/a&gt;! I know for a fact that this wasn't so a few short weeks ago, because I'd been checking every once in a while. Now I know there are other bits 'n' pieces out there named innerXHTML, and I don't think this &lt;em&gt;suggestion&lt;/em&gt; came about solely because of the existence of &lt;a href=&quot;innerxhtml.htm&quot; title=&quot;innerXHTML&quot;&gt;my innerXHTML&lt;/a&gt;, but I do feel I've played a part. Either way I must admit to being pretty chuffed.&lt;/p&gt;

&lt;p&gt;Similarly '&lt;strong&gt;eyeplot.com&lt;/strong&gt;' (the web address of &lt;a href=&quot;http://www.eyeplot.com&quot; title=&quot;My web design company&quot;&gt;my company&lt;/a&gt;) is now also appearing as a suggestion too. In fairness you need to pretty much spell out the name before you get the suggestion, but hey? At least it shows promise!&lt;/p&gt;

&lt;p&gt;Oh, and on a side note it's my 24th birthday today too, so presents/cards/lapdancers please send to my address via post. Cheers ;)&lt;/p&gt;</description>
					<link>http://www.stevetucker.co.uk/innerxhtml-in-google-and-firefox-suggest.htm</link>
					<guid isPermaLink="true">http://www.stevetucker.co.uk/innerxhtml-in-google-and-firefox-suggest.htm</guid>
					<author>Steve Tucker - contact@stevetucker.co.uk</author>
					<pubDate>Thu, 01 Jan 1970 00:00:00 GMT</pubDate>
				</item>
				<item>
					<title>iPlayer Petition Result</title>
					<description>&lt;p&gt;Some of you may have heard of the recent iPlayer petition, either &lt;a href=&quot;social-gathering-and-iplayer-petition.htm&quot; title=&quot;iPlayer Petition&quot;&gt;via me&lt;/a&gt; or other sources. To briefly explain, the iPlayer (which is &lt;strong&gt;not&lt;/strong&gt; associated with &lt;a href=&quot;http://www.apple.com&quot; title=&quot;Apple&quot;&gt;Apple&lt;/a&gt;) is a new service soon to become available by the &lt;abbr title=&quot;British Broadcasting Association&quot;&gt;BBC&lt;/abbr&gt;. Unforutnately however the BBC had only intended to release the iPlayer in a Windows-only format. Not very fair for all us Mac and Linux &lt;abbr title=&quot;Television&quot;&gt;TV&lt;/abbr&gt; license payers.&lt;/p&gt;

&lt;p&gt;The iPlayer petition was simply in response to this intention, and arguing that the format should be made available on a greater number of operating systems than just Microsoft Windows. Here are the official details:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The BBC plans to launch an on-demand tv service which uses software that will only be available to Windows users. The BBC should not be allowed to show commercial bias in this way, or to exclude certain groups of the population from using its services. The BBC say that they provide 'services for everyone, free of commercial interests and political bias'. Locking the new service's users into Microsoft Windows whilst ignoring those members of society who use other operating systems should does not fit in with the BBC's ethos and should not be allowed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Well, after several months of silence I (along with everyone else who signed the petition I assume) finally received this e-mail from the 10 Downing Street office:&lt;/p&gt;

&lt;blockquote cite=&quot;10 Downing Street&quot;&gt;
&lt;p&gt;The Government set up the BBC Trust to represent the interests of licence fee payers, and to ensure good governance of the BBC.
&lt;br /&gt;
&lt;br /&gt;
The BBC Trust has responsibility for ensuring that the correct degree of scrutiny is given to all proposals from the BBC Executive for new services (such as the iPlayer) and any significant changes to existing services. To fulfill this duty, the Trust conducted a Public Value Test on the BBC Executive's proposals to launch new on-demand services, including BBC iPlayer. This included a public consultation and a market impact assessment by Ofcom.
&lt;br /&gt;
&lt;br /&gt;
In the case of the iPlayer, following the consultation, the Trust noted the strong public demand for the service to be available on a variety of operating systems. The BBC Trust made it a condition of approval for the BBC's on-demand services that the iPlayer is available to users of a range of operating systems, and has given a commitment that it will ensure that the BBC meets this demand as soon as possible. They will measure the BBC's progress on this every six months and publish the findings. &lt;cite&gt;10 Downing Street&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And there you have it. Whether this post affects you directly or not, it's nice to know that we can still make a difference :)&lt;/p&gt;</description>
					<link>http://www.stevetucker.co.uk/iplayer-petition-result.htm</link>
					<guid isPermaLink="true">http://www.stevetucker.co.uk/iplayer-petition-result.htm</guid>
					<author>Steve Tucker - contact@stevetucker.co.uk</author>
					<pubDate>Thu, 01 Jan 1970 00:00:00 GMT</pubDate>
				</item>
				<item>
					<title>Website to Telephone Services</title>
					<description>&lt;p&gt;Okay; Both me and my business partner Jay are in a competition against the two other guys in my office. The competition is to set up two opposing companies each and see who can make the most profit in a given timeframe (and I'm speaking of single-to-double figure pounds here, not hundreds or thousands - to be honest I reckon the winner will be the one to break even).&lt;/p&gt;

&lt;p&gt;Anyway we're both building websites for our new businesses (I'll post links here later), but one of the enemy has built into his site a feature which has really impressed me - and won't tell me how it's done. Here's what happens:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;User enters his/her telephone number and clicks a button on the website.&lt;/li&gt;
&lt;li&gt;Website contact 3rd party provider via &lt;abbr title=&quot;HyperText Transfer Protocol&quot;&gt;HTTP&lt;/abbr&gt; POST, passing telephone number and short message.&lt;/li&gt;
&lt;li&gt;3rd party provider &lt;strong&gt;calls&lt;/strong&gt; user's landline or mobile telephone delivering the message in an automated voice.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Problem is the guy in my office refuses to tell me who the 3rd party provider is - and I cannot find another.&lt;/p&gt;

&lt;p&gt;I wouldn't be all that fussed except that I can see this system being of use in an upcoming future project. I've searched the internet high and low and &lt;a href=&quot;http://www.c1sms.com/products.php&quot; title=&quot;Send SMS messages to various recipients&quot;&gt;this website&lt;/a&gt; is the closest I can find. It uses &lt;abbr title=&quot;Short Message Service&quot;&gt;SMS&lt;/abbr&gt;, but I'm not convinced that this is the correct method as you're ultimately relying on landline recipients possessing a text-compatible phone, or using line providers such as &lt;abbr title=&quot;British Telecom&quot;&gt;BT&lt;/abbr&gt; who have text-to-voice translators. I think there's got to be a dedicated provider for this service, though I would be happy to settle for the latter if it turns out there isn't one.&lt;/p&gt;

&lt;p&gt;Anyhow I just thought I'd open it up. If anyone can point me in the direction of a website they think could help, or give any advice then I'd be greatly appreciative. Cheers all :)&lt;/p&gt;</description>
					<link>http://www.stevetucker.co.uk/website-to-telephone-services.htm</link>
					<guid isPermaLink="true">http://www.stevetucker.co.uk/website-to-telephone-services.htm</guid>
					<author>Steve Tucker - contact@stevetucker.co.uk</author>
					<pubDate>Thu, 01 Jan 1970 00:00:00 GMT</pubDate>
				</item>
				<item>
					<title>Gravatar Personal Server</title>
					<description>&lt;p&gt;Gravatar Personal Server is a piece of software I wrote several months ago designed to combat the problem of slow-loading Gravatar images from the struggling &lt;a href=&quot;http://www.gravatar.com&quot; title=&quot;Gravatar Website&quot;&gt;Gravatar server&lt;/a&gt;. The software is essentially a caching system that stores Gravatar images on your server for later retrieval. In essence this turns your server into a miniature personal Gravatar server, so should gravatar.com become sluggish in operation (as was the case in the latter half of 2006) then your site will not suffer so badly.&lt;/p&gt;

&lt;p&gt;The process of how the software works can be seen to the left.&lt;/p&gt;

&lt;img src=&quot;http://www.stevetucker.co.uk/media/page_content/gravatarps_diagram.gif&quot; alt=&quot;Diagram of the Gravatar Personal Server operational process&quot; title=&quot;Diagram of the Gravatar Personal Server operational process&quot; /&gt;

&lt;h3&gt;Requirements&lt;/h3&gt;

&lt;p&gt;The Gravatar &lt;abbr title=&quot;Personal Server&quot;&gt;PS&lt;/abbr&gt; engine is written in the open source scripting language &lt;abbr title=&quot;PHP Hypertext Preprocessor&quot;&gt;PHP&lt;/abbr&gt;. Additionally it also utilises features of the &lt;a href=&quot;http://www.boutell.com/gd/&quot; title=&quot;GD Graphics Library homepage&quot;&gt;GD Graphics Library&lt;/a&gt;. Both resources are mandatory but are also very popular on Linux servers, so if you're running one then it's pretty likely you'll be good to go.&lt;/p&gt;

&lt;h3&gt;Software Setup&lt;/h3&gt;
&lt;p&gt;The software engine is built as a class, and is hence very easy to setup and use, even if you possess very little knowledge of PHP. First upload gravatarPS.php (free download available at the bottom of the page) to an appropriate directory on your web server. Create a new PHP file called something like 'render_gravatar.php' - this is your instantiation script. It does not matter where this file is located in relation to the main engine, so long as you don't store it in a protected directory. Before the software will run correctly you'll need to provide a location to store cached Gravatar images; create a new directory on your filesystem and make sure you give it #777 access permissions so that the caching process is not hindered by any server read/write permissions.&lt;p&gt;

&lt;p&gt;Next open the 'render_gravatar.php' file you created and paste into it the following code:&lt;/p&gt;

&lt;pre class=&quot;inset&quot;&gt;
&amp;lt;?php

//-----------------------------EDIT THESE--------------------------------------------------------------------------
require_once('includes/gravatarPS.php'); // The local location of the Gravatar PS Engine, in relation to this file
$cache_directory = 'media/gravatars/';   // The relative location of your cache directory, with trailing slash '/'
$refresh_period = 604800;                // The lifespan of your cached Gravatar images in seconds. Default 1 week.
//-----------------------------------------------------------------------------------------------------------------

$gravatar = new gravatarPS($_GET,$cache_directory,$refresh_period);
$gravatar-&gt;render();
?&amp;gt;
&lt;/pre&gt;

&lt;p&gt;With the area I've identified for editing you should be setting the following variables:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The local filepath of the Gravatar PS engine.&lt;/li&gt;
&lt;li&gt;The local filepath of the cache directory you created.&lt;/li&gt;
&lt;li&gt;The refresh period in seconds. This is an optional variable, see below for details.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The last variable you can set is the refresh period. This identifies the lifespan of cached Gravatar images before expiry. The length of this time period is entirely up to you; long time periods can lead to out-of-date Gravatar images but less reliance on gravatar.com server. To the contrary a short lifespan will mean your cached gravatars are regularly updated, but will require much heavier reliance on the Gravatar server. By default I've given the software a cache expiry of one week (604800 seconds).&lt;/p&gt;

&lt;h3 class=&quot;subtitle&quot;&gt;Integration&lt;/h3&gt;
&lt;p&gt;Now you've set up the Gravatar engine on your server all there's left to do is integrate it into your site's comments. This process is just about identical to connecting directly with gravatar.com. Where as with the latter you may set up a link like this:&lt;/p&gt;

&lt;pre class=&quot;inset&quot;&gt;http://www.gravatar.com/avatar.php?gravatar_id=53c24b66ce4df799cb8bd1f4ee43bd1d&amp;amp;size=32&amp;amp;default=http://www.stevetucker.co.uk/default_gravatar.gif&lt;/pre&gt;

&lt;p&gt;with Gravatar PS you simply direct the very same query (everything after the question mark) to the 'render_gravatar.php' instantiation page you created on your server:&lt;/p&gt;

&lt;pre class=&quot;inset&quot;&gt;&lt;strong&gt;/render_gravatar.php&lt;/strong&gt;?gravatar_id=53c24b66ce4df799cb8bd1f4ee43bd1d&amp;amp;size=32&amp;amp;default=http://www.stevetucker.co.uk/default_gravatar.gif&lt;/pre&gt;

&lt;p&gt;And that's it. Gravatar PS will kick into action and manage all of your Gravatar requests automatically, caching images loaded from gravatar.com and relocating them on next call. Using the software should provide you with notably faster page loading times, particularly when the main gravatar.com server lags. On a larger scale if enough people adopt this system then it will radically reduce the weight put on the main gravatar.com server and benefit everyone.&lt;/p&gt;

&lt;p&gt;I've released the Gravatar PS source code under the &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-sa/3.0/&quot;&gt;Creative Commons Attribution-Share Alike 3.0  License&lt;/a&gt;. You can download a copy if it below.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;media/projects/gravatarps/gravatarPS.zip&quot; title=&quot;Gravatar PS script&quot;&gt;&lt;img src=&quot;http://www.stevetucker.co.uk/http://www.stevetucker.co.uk/media/icons/download.gif&quot; style=&quot;display:inline; margin:0 5px 0 0;&quot; alt=&quot;Download Icon&quot; /&gt;Download Gravatar PS .zip &lt;small&gt;(v1.1)&lt;/small&gt;&lt;/a&gt;&lt;/p&gt;</description>
					<link>http://www.stevetucker.co.uk/gravatar-personal-server.htm</link>
					<guid isPermaLink="true">http://www.stevetucker.co.uk/gravatar-personal-server.htm</guid>
					<author>Steve Tucker - contact@stevetucker.co.uk</author>
					<pubDate>Thu, 01 Jan 1970 00:00:00 GMT</pubDate>
				</item>
				<item>
					<title>innerXHTML v0.4 Released</title>
					<description>&lt;p&gt;It's been, like, 11 days since I made my last entry here, but it feels like much longer. Oh so much stuff to do, and so little time - you know how it is :)&lt;/p&gt;

&lt;p&gt;Anyway, if you happen to be interested in &lt;abbr title=&quot;Document Object Model&quot;&gt;DOM&lt;/abbr&gt; scripting then you may be interested to know that I've release &lt;abbr title=&quot;Version&quot;&gt;v&lt;/abbr&gt;0.4 of the innerXHTML tool, which comes with couple of new little time-saving features, and a workaround to a bug processing 'on' events in Internet Explorer (surprise, surprise). Feel free to read the &lt;a href=&quot;page-innerxhtml.php&quot; title=&quot;innerXHTML release notes&quot;&gt;release notes&lt;/a&gt;, particularly the &lt;a href=&quot;page-innerxhtml.php#release0-4&quot; title=&quot;innerXHTML v0.4 specific&quot;&gt;new bit&lt;/a&gt;, and take a copy for yourself to love and cherish.&lt;/p&gt;

&lt;p&gt;In the meantime I plan to write again on here very shortly (like, in the next couple of days or so), and to those whose blogs I read on a regular basis I'll be back to my old tricks (leaving you naff comments, etc) very soon ;)&lt;/p&gt;
&lt;p&gt;Later.&lt;/p&gt;</description>
					<link>http://www.stevetucker.co.uk/innerxhtml-v0-4-released.htm</link>
					<guid isPermaLink="true">http://www.stevetucker.co.uk/innerxhtml-v0-4-released.htm</guid>
					<author>Steve Tucker - contact@stevetucker.co.uk</author>
					<pubDate>Thu, 01 Jan 1970 00:00:00 GMT</pubDate>
				</item>
				<item>
					<title>Social Gathering and iPlayer Petition</title>
					<description>&lt;p&gt;Firstly I'm pleased to say that the web designer's get together in Huddersfield yesterday turned out really well. We topped the last attendance count with 12 people turning up on the night, which was great. Additionally the evening setting, venue (and beer) proved a winning combo. Sadly I didn't take any snaps or I'd have posted them here, but maybe next time :)&lt;/p&gt;

&lt;p&gt;Secondly I found this via &lt;a href=&quot;http://joshuaink.com/&quot; title=&quot;John Oxton at Joshuaink&quot;&gt;Mr Oxton&lt;/a&gt;. Get yourself signed:&lt;br /&gt;&lt;a href=&quot;http://petitions.pm.gov.uk/iplayer/&quot; title=&quot;Help prevent the BBC iPlayer television service from becomming Windows only.&quot;&gt;http://petitions.pm.gov.uk/iplayer/&lt;/a&gt;&lt;/p&gt;</description>
					<link>http://www.stevetucker.co.uk/social-gathering-and-iplayer-petition.htm</link>
					<guid isPermaLink="true">http://www.stevetucker.co.uk/social-gathering-and-iplayer-petition.htm</guid>
					<author>Steve Tucker - contact@stevetucker.co.uk</author>
					<pubDate>Thu, 01 Jan 1970 00:00:00 GMT</pubDate>
				</item>
			</channel>
		</rss>
