<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
	<channel>
		<title>Jason Cartwright</title>
		<link>http://www.jasoncartwright.com</link>
		<description>Jason Cartwright's Blog</description>
		<language>en-gb</language>
		<copyright>Jason Cartwright</copyright>

		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		<generator>Blogwright</generator>
		<managingEditor>mail@jasoncartwright.com</managingEditor>
		<webMaster>mail@jasoncartwright.com</webMaster>
		<ttl>120</ttl>
		<image> 
			<title>Jason Cartwright</title> 
			<url>http://static.flickr.com/23/34190590_0487c3924a_s.jpg</url> 
			<link>http://www.jasoncartwright.com</link> 
			<width>75</width> 
			<height>75</height> 
		</image>
			
			
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/JasonCartwright" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
			<title>getFavicon</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/mzUtAa9_L5k/getfavicon</link>
			<content:encoded><![CDATA[
				<p>I've been using <a href="http://www.google.com/s2/favicons?domain=www.jasoncartwright.com">Google's favicon fetching API</a> to illustrate links on the <a href="http://play.tm/wire/">play.tm wire</a> and jasoncartwright.com for a while now, and it's been working fairly well. When given a domain the Google system returns a PNG of the domain's icon. The problem was that Google's system appears to rely on the favicon being at example.com/favicon.ico, which isn't always the case.</p>

<p>Some sites, for whatever reason, choose to place the favicon somewhere different and reference it from a <code>&lt;link&gt;</code> tag in the <code>&lt;head&gt;</code> of their pages. To find the URL of the favicon you therefore have to (expensively) download the entire HTML page, and parse it.</p>

<p>Frustrated by the limitations of the Google API I decided to solve the problem using Google App Engine, by creating <a href="http://getfavicon.appspot.com">getFavicon</a>.</p>

<p>The first problem I came across was when just requesting the <code>/favicon.ico</code> file. Lots of people having poorly configured web servers that return a variety of exotic HTTP response codes, or even a 200 and zero byte body. It's quite annoying to deal with all these exceptions.</p>

<p>To retrieve a favicon specified in the site's HTML I've used the superb <a href="http://www.crummy.com/software/BeautifulSoup/">BeautifulSoup</a> to do this. This library hugely simplifies the parsing of HTML, but still doesn't completely solve finding the correct URL of the favicon. The <code>&lt;link rel=&quot;&quot;&gt;</code> value varies greatly - "shortcut", "icon", "shortcut icon" and "favicon" are all values I've seen.</p>

<p>Of course, all this page & icon downloading and parsing is pretty heavy, so a two-tier cache is used - memcache for a rapid, temporary store and AppEngine's datastore for a slower, persistent store. It works well, and keep the app ticking over quickly. Well over 90% of the icons served come from a cache.</p>
			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/mzUtAa9_L5k" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2009/11/getfavicon</feedburner:origLink></item>
					
		<item>
			<title>webmytop - MySQL monitoring tool</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/BrVvxduH0g8/webmytop_mysql_monitoring_tool</link>
			<content:encoded><![CDATA[
				<p>A few years ago I made an ASP.net version of Jeremy Zawodny's <a href="http://jeremy.zawodny.com/mysql/mytop/">mytop</a> tool, to use monitoring the MySQL servers that power <a href="http://play.tm">play.tm</a>.</p>

<p>The tool consists of two simple parts - some general uptime, number of query, etc stats and the process list MySQL generates with the query  "show processlist".</p>

<p>The idea was to make it web-based and have the stats updating in near-realtime using AJAX. It worked a treat and many a poorly coded query has been reoptimised after this tool shows it up churning a machine.</p>

<p>Things have moved on since - now my language of choice is PHP and AJAX is all done through jQuery, so it was time for an update. I also figured that other people may be interested in using it, so we opensourced it.</p>

<img src="http://webmytop.googlecode.com/files/wmt.png" alt="mywebtop screenshot"/>

<p>You can find the source and download packages over here at <a href="http://code.google.com/p/webmytop/">code.google.com/p/webmytop</a>.</p>
			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/BrVvxduH0g8" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2008/10/webmytop_mysql_monitoring_tool</feedburner:origLink></item>
					
		<item>
			<title>Simple PHP execution time monitoring</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/mSX3Atq4DYo/simple_php_execution_time_monitoring</link>
			<content:encoded><![CDATA[
				<p>We've all heard about optimising the user's experience <a href="http://www.stevesouders.com/blog/">on the client-side</a>, but what about on the server?</p>

<p>When building out <a href="http://play.tm">play.tm</a> we decided we needed a tool that broke down how the PHP script generated the page and displayed how long each element took to generate. We could then optimise the worst performing code. We called it 'speedtrap'. So, here is the code:</p>

<p>In the top of your page:</p>
<pre><code>
$st_StartTime = microtime(true);
$speedTraps = array();
</code></pre>

<p>The function:</p>
<pre><code>
function speedTrap($trapName) {
	global $st_StartTime,$speedTraps;
	$difference = microtime(true) - $st_StartTime;
	$speedTraps[$trapName]=$difference;
}
</code></pre>

<p>At every point where you want put a speedtrap, with a description of what has happened in the code:</p>
<pre><code>
speedTrap("Done some part of the page");
</code></pre>

<p>Then, at the end of the page call this function:</p>
<pre><code>
function speedTrapBars() {
	
	global $siteVars,$speedTraps;
	
	if ($siteVars['showSpeedTrap']) {
	
		?&gt;
		&lt;h1&gt;SpeedTrap!&lt;/h1&gt;
		&lt;dl id=&quot;speedtrap&quot;&gt;
		&lt;?
	
		$lastValue = 0;
	
		foreach ($speedTraps as $key =&gt; $value) {
			?&gt;
				&lt;dt&gt;&lt;?=$key?&gt;&lt;/dt&gt;
				&lt;dd style=&quot;width:&lt;?=round($value*1000)?&gt;px&quot;&gt;&lt;span&gt;&lt;?=round(($value-$lastValue)*1000,3)?&gt;ms&lt;/span&gt;&lt;/dd&gt;
			&lt;?
			$lastValue = $value;
		}
		?&gt;
		&lt;dt&gt;Server Done&lt;/dt&gt;
		&lt;dd class=&quot;last&quot; style=&quot;width:&lt;?=round($lastValue*1000)?&gt;px&quot;&gt;&lt;?=$lastValue*1000?&gt;ms&lt;/dd&gt;
		&lt;?
		echo &quot;&lt;/dl&gt;&quot;;
	
	}
	
}
</code></pre>

<p>But wait! There's more! Some bonus CSS:</p>
<pre><code>
#speedtrap {
	font-size:1.1em;
	margin:5px;
}
#speedtrap dt, #speedtrap dd {
	float:left;
	margin-bottom:1px;
}
#speedtrap dt {
	width:100px;
	clear:left;
}
#speedtrap dd {
	background:lightgray;
	padding:2px;
}
#speedtrap .last {
	background:gray;
}
</code></pre>
			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/mSX3Atq4DYo" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2008/10/simple_php_execution_time_monitoring</feedburner:origLink></item>
					
		<item>
			<title>Blog Redesign</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/SzMLRNODSsw/blog_redesign</link>
			<content:encoded><![CDATA[
				<p>After several years with a questionable design aesthetic and some dodgy markup my blog has remerged with a fresh look, more content and some technical optimisations.</p>

<p>The most striking change is the activity feed on the left of the homepage. I've been playing with lifestreaming services for a while and none of the aggregators I've used have cut it. Then came <a href="http://friendfeed.com">FriendFeed</a>. The combination of quick updates, a high number of supported services, large user community (including many of my friends) and arguably most importantly a quick and simple <a href="http://friendfeed.com/api">API</a> makes using this service a no brainer. This <a href="http://friendfeed.com/api/feed/user/jason?format=xml">simple feed</a> is processed by an XSLT script and then displayed (with some help from CSS, and jQuery -  more on that later). The XSLT is pretty straightforward and is available for <a href="http://jasoncartwright.com/xslt/friendfeed.xslt">download</a>. You'll probably want to customise it for your needs, but drop me a line if you do use it and make the source available, if possible.</p>

<p>There are a couple of tools I've used to augment the lifestream. First is the favicon. This is pulled in using a Google service that I probably shouldn't be hotlinking. The XSLT puts an image in the HTML pointing to http://www.google.com/s2/favicons?domain=[domainname], <a href="http://www.google.com/s2/favicons?domain=en.wikipedia.org">for example</a>. This returns the favicon for the domain in question (yes, I know the "Content-Type" header is wrong - maybe we'll see that fixed at some point). Should the system know that a favicon doesn't exist it will display a generic earth icon. Very useful. Perhaps I can get that header bug fixed at some point - along with maybe getting it sent as a GIF or PNG rather than a JPG... a poor choice I'd say, but I'm sure there is a reason.</p>

<p>The mouseover functionality is provided by my javascript library of choice: <a href="http://jquery.com">jQuery</a>. Not much to say here, it's really good and really fast. The twist is that it is hosted centrally at Google. This <a href="http://googleajaxsearchapi.blogspot.com/2008/05/speed-up-access-to-your-favorite.html">new service</a> (as of a few days ago) provides a standard URL for the version of jQuery I'm interested in, which is really cool because that URL may (with increasing probability, as more webmasters catch on) already be cached on the user's machine therefore saving the 17kb or so hit the library costs.</p>

<p>I've not had comments on my blog before, mainly to save the time of moderating them or dealing with spam. In the past some people have criticised me for harping on about Web 2.0 technologies then not having the basic visitor interaction of blog comments on my own site. So, time to fix this and the solution came in the form of <a href="http://disqus.com">disqus</a> - a hosted comment system that when you place little widgets on pages allows users to comment on those URLs. Initially I was wary of putting someone else's javascript on the page, forcing a system on my blog readers, and giving the ownership of the comment text to a third party, but disqus did a good job of winning me over. The key paragraph was in this <a href="http://disqus.com/help/">help page</a>:</p>

<blockquote><p>Who owns the comments? Short answer: You do.</p></blockquote>

<p>I've seen occasional 500 Internal Server Errors from disqus, but other than that they are rock solid. A decent API gives you access to the comments made too - which is just the ticket should I decide to move away from it.</p>

<p>Not much has changed on the backend of the blog, it's still written in ASP.net which was the quickest solution for the Windows boxes the site is hosted on. ASP.net's solid caching functionality keeps everything ticking over, not stressing the MySQL boxes that hold the data or hitting web APIs too often.</p>

<p>One other small point is that I no longer obfuscate the HTML and CSS behind the blog. As a web developer I probably get more people peeping at the source code than is usual, to see what I'm up to. Minimalistic and less descriptive client-side code makes the source less readable and therefore understandable but the benefit is a decrease in transmission size. However the benefit is so small on a tiny site like this when the content is gzipped its not worth losing the readability over.</p>

<p>So, come back in a few months when I get bored of this design and code!</p>

			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/SzMLRNODSsw" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2008/6/blog_redesign</feedburner:origLink></item>
					
		<item>
			<title>MADDness</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/KsMW1MeA8hU/maddness</link>
			<content:encoded><![CDATA[
				<p class="info">Article first appeared <a href="http://play.tm/story/17912">here</a>, and was edited by <a href="http://luke.play.tm">Luke</a>.</p>

<p>The high profile release of Grand Theft Auto IV this week has seen a number of groups use the inevitable publicity for their own means. Newspapers, online sites (yes, including this one) and blogs eager for pageview-generating stories about the hit title lap up stories from pressure groups, hoping to ride in on the search results or the Digg/Slashdot/Reddit homepages the masses consume. This potent and symbiotic relationship is well documented, and at no time is it more visible than during a big event - and GTA IV will probably be the biggest we'll see this year.</p>

<p>Not the least publicity hungry of these parties is, of course, our old friend Mr Jack Thompson. He waded in with a typically unmeasured rant calling the 18/Mature (depending on jurisdiction) rated game "the gravest assault upon children in this country [the USA] since polio". So far, so predictable.</p>

<p>The inclusion of a drink driving element to GTA IV also brought it to the attention of an organisation called "Mothers Against Drink Driving" who promptly put out a statement saying "MADD is calling on the Entertainment Software Ratings Board to reclassify Grand Theft Auto IV as an Adults Only game, a step up from the current rating of Mature and for the manufacturer to consider a stop in distribution - if not out of responsibility to society then out of respect for the millions of victims/survivors of drunk driving."</p>

<p>This 'feature' sees the main character patronise a bar, then the game allows you to drive afterwards. Driving whilst in this state is inevitably difficult with the car becomeing understandably very difficult to control. The police also take an interest and give chase when they see your drunken antics. All quite realistic then, and probably not a good thing to be doing as it doesn't even aid the main aim of the game - to work your way up the criminal career ladder.</p>

<p>So who is this pressure group? Mothers Against Drink Driving (MADD) was set up in the 1980's by Candice Lightner with the laudable aim of reducing drink driving in the United States, a country that has a one of the worse drunk driving accident rates in the developed world. After forming, the organisation rapidly turned prohibitionist, and began advocating less liberal policies tackling issues with alcohol in general rather than just drink driving, such as raising the drinking age. Civil liberty groups also criticised the organisation for advocating alcohol interlock devices factory-installed in all new cars. It has also been pointed out that there is a potential conflict of interests between MADD and some of it's bottle industry partners, causing MADD to refrain from advocating increased taxes on distilled spirits.</p>

<p>Lightner left the group in 1985 saying that it "has become far more neo-prohibitionist than I had ever wanted or envisioned. I didn't start MADD to deal with alcohol. I started MADD to deal with the issue of drunk driving".</p>

<p>Thompson often calls GTA a "murder simulator", so it is ironic to hear that MADD, critical of the drink driving depicted in the game, themselves ran a drink driving "simulator". Started in 1988, in partnership with Chrysler and the US Department of Transport, MADD rigged a Dodge Neon car to simulate driving whilst drunk. A computer took the driver's weight and a hypothetical number of drinks, then delayed the steering and braking accordingly. Naturally some safety measures were employed like a trained driver with a brake pedal in the passenger seat, but what they created was effectively a full-size real-life drink driving simulator. This was sent around hundreds of US schools and college campuses and driven by hundreds of thousands of students.</p>

<p>So, it's acceptable to drive a deliberately impaired full-size car around but not alright to simulate the same thing on a game console? The hypocrisy here is troubling, especially when its digested so fervently by media with their own interests to serve. Whilst nobody is arguing that the group's core aim is not admirable, how can we take them seriously if over-zealous statements like this are made, especially when MADD have already set their own precedent when it comes to acts of 'simulation'. Your comments, as ever, are appreciated.</p>
			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/KsMW1MeA8hU" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2008/5/maddness</feedburner:origLink></item>
					
		<item>
			<title>What Apple should have done, by ASUS</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/JK23KdFiTS8/what_apple_should_have_done_by_asus</link>
			<content:encoded><![CDATA[
				<p class="info">Article first appeared <a href="http://tech.tm/story/20">here</a>, and was edited by <a href="http://luke.play.tm">Luke</a>.</p>

<p>With all the hype surrounding the Macworld Expo and coverage Stevie's keynote has produced, you could be forgiven for believing that the Macbook Air is the be-all and end-all of the petite laptop market.</p>

<p>Sure, its going to be a solid product with all the traits of expert engineering that makes Apple systems highly buyable even when sold at their higher-than-norm premium price point. The MagSafe power cable, the magnetic screen hinge, the solid hardware-software integration are all going to be there. However, the key selling point appears to just be a kudos factor that probably won't affect the average consumer - the thinness. Whilst it might be an excellent bragging right when it comes to your mates in the office, I fail to see how this translates to making the Macbook Air a fundamentally better product. It will take up marginally less room in your bag (and you won't need those Firewire devices or ethernet cable due to lack of ports) and weigh less, but will it make it more usable? Probably not - it still won't fit properly on an aircraft tray table.</p>

<p>This knowledge and the intense <a href="http://en.wikipedia.org/wiki/Reality_distortion_field">reality distortion field</a> a Stevenote produces have hyped the Macbook Air - but we're already beginning to see the backlash from differing opinions. Aside from the obvious speed hit Apple have taken by using the tiny iPod-style 1.8" disk (although the much faster SSD is available for $999 more), and the sparsity of ports available, the main problem I see is still the size.</p>

<p>The solution should have been to make the form factor smaller, not just take the Macbook to Weight Watchers. This would mean that you could fit pretty much all the standard ports onto the product and still make it lighter. With all the dimensions practically the same as a normal laptop, can it justify the lack of functionality the thinness apparently necessitates.</p>

<p>One company has done this, and it's all looking rather good. ASUS, better known for making motherboards, has produced the "Eee". Now, I said the "Wii" was a stupid name, and I've not lived it down since Nintendo hit gold with that product. I fear I'm going to make the same mistake here - Eee is a ridiculous name.</p>

<p>This subnotebook is pretty darned small. The 7" screen is in a 225 × 165 × 350mm case and weighs just 0.92kg. Lets compare this to the Macbook Air with a 13.3" screen sitting in a 227 x 324 x 194mm case, weighing 1.36Kg. The main problem with this tiny screen is that it can only support upt o 800x480 resolution, and this falls short of Windows XP's 800x600 minimum stated requirement. This is not to say that the machine can't run XP, it can, but with the incredibly annoying screen scrolling.</p>

<p>Processing juice comes via a 900Mhz Intel Celeron chip (clocked to 800mhz on the lowest spec model), with upto 1Gb of RAM. Storage is provided by 4 or 8Gb solid state disks. You'll probably have more storage on your iPod, unfortunately. Connectivity is via all the usual suspects. Somehow ASUS have managed to cram 3 USB ports onto this sucker, alongside a MMC/SD card reader, 10/100 ethernet, mic and headphone jacks and a VGA port. 802.11b/g also features, and is probably going to be the main connection method you'll use, to take advantage of the small device's size.</p>

<p>The solution to the screen scrolling problem is to bundle the hardware with a version of Linux (Xandros) with rather useful versions of OpenOffice, Firefox, Skype, and links to freebie online services such as Wikipedia and Google Docs. This is all tied together with a clean, custom, tab-based UI. All very impressive, and excellent for the average home user. An enthusiast-class user will however have it all wiped as soon as the machine is unpacked and their favorite flavor of Linux installed in a jiffy without, it should be noted, paying the Windows 'tax'.</p>

<p>Speaking of money - did I mention that these beauties cost from as little as 215 GBP or 300 USD? Its not a fair comparison, but the Macbook Air starts at 1200 GBP or 1800 USD. Little wonder ASUS have shipped 300,000 in the last year.</p>

<p>The big news however is that ASUS plan to sell several <em>million</em> units in 2008, by making an updated versions of this device. In what must be a design and manufacturing nightmare they are going to be producing 7, 8 and 8.9" models the biggest of which will apparently feature a touch screen. The fan from the older range will be removed, due to the use of more efficient Merom-class Intel processors, resulting in a 36% drop in power consumption, and we can expect a hike in SSD size. A version of the machine with WiMax also demoed recently. Presumably ASUS will have noticed the Windows screen resolution problem and will take action on that front.</p>

<p>Expect these puppies out in April, beware Apple.</p>
			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/JK23KdFiTS8" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2008/5/what_apple_should_have_done_by_asus</feedburner:origLink></item>
					
		<item>
			<title>Content Findability: keyword, not URL</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/XxZJoRxBG9s/content_findability_keyword_not_url</link>
			<content:encoded><![CDATA[
				<p>In making a purchasing decision a buyer will go through a process often expressed as "AIUAPR". This acronym stands for the phases a buyer almost always moves through before laying out the cash...</p>

<ol>
	<li>Awareness</li>
	<li>Interest</li>
	<li>Understanding</li>
	<li>Attitudes</li>
	<li>Purchase</li>
	<li>Repeat Purchase</li>
</ol>

<p>Despite the rise of the internet and all the hype surrounding Google etc there is still no advertising medium quite as good at raising awareness for the average consumer as TV. Other advertising mediums such as radio, outdoor and ambient media still have their niches in ad buyer's media mixes, however along with TV all these often fail at the "Interest" stage and have almost definitely finished being consumed before the potential buyer has hit "Understanding". This is why infomercials and home shopping channels whose revenue depends on people handing over the cash there and then spend so long describing each apparently simple (and usually crap) product.</p>

<p>Therefore the best way to ensure your "Awareness" and "Interest" spend is more likely to be converted into a sale, by moving the buyer down this decision chain, is to provide more information than you can fit in the average TV/radio/outdoor advert.  A website of course can fulfill this task well by conveying a lot more information about a product than these traditional adverts ever can - often presenting such information in a more persuasive form with interactivity.</p>

<p>The problem therefore is getting your potential customer to traverse from offline to online - the advertising time is expensive and URLs you have to convey to users are complicated beasts...</p>

<p>h-t-t-p-colon-forwardslash-forwardslash-w-w-w-dot-your-brand-dot-co-uk</p>

<p>Marketeers, rightly, become particularly hung up on conveying their URL if their product is purchasable at the website or, even worse, the URL <em>is</em> the product. This usually results in inane adverts where the URL is repeatedly barked at the user, and inevitably people take the piss on YouTube...</p>

<p><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/zpccxyuDOY0&rel=1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/zpccxyuDOY0&rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object></p>

<p>There are ways to optimise the URL, of course - such as reducing the length by not mentioning the "http://" and/or "www.", or use of mobile shortcodes to request information. The use of branding slogans as URLs is also prevalent - a practice I always think is quite shortsighted and appears to usually be the advertising agency getting wrapped up in the campaign not seeing the bigger picture of their customer's brand.</p>

<p>Recently I've been seeing everyone from criminals to the government giving prompts to use search engines with specific keywords, rather than just giving a URL, in order to get their audience to more in-depth content that supports the agenda they are pushing. Just as companies use the limited information put in adverts to seed interest in a product, this new breed of advert is aiming to provide a simple pointer further their influence by getting people to seek out more data.</p>

<p>Here are some examples...</p>

<p><strong>Act on CO2</strong></p>

<p><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/XO7KaepcKIw&rel=1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/XO7KaepcKIw&rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object></p>

<p>The UK government's "Act on CO2" campaign spans several mediums - most notably quite a few high-profile TV spots. Note at the end, the call to action is "Search online for 'Act on CO2'" rather than a URL.</p>

<p><strong>Grassroots Protests</strong></p>

<p><a style="margin:10px" href="http://www.flickr.com/photos/24316473@N00/2188680252/"><img src="http://farm3.static.flickr.com/2402/2188680252_e49586b981.jpg" alt="Google Building 7"></a></p>

<p>"Building 7" is a reference to 7 World Trade Center, a building that was destroyed in the terrorist attacks on 11th September 2001. Conspiracy theorists argue that the building was reduced to rubble in a controlled demolition, then the media covered this fact up. Whatever you think of these theories - the use of 'google' as a <a href="http://en.wikipedia.org/wiki/Google_(verb)">verb</a> is interesting as it provides a simple shortcut to show that the information is available online, and it's many locations (over <a href="http://www.google.com/search?q=building%207">67m search results</a> at the time of writing - with <a href="http://wtc7.net">wtc7.net</a>, the top one).</p>

<p><img src="http://jasoncartwright.com/contentimages/tazbar.gif" alt="Google Tazbar" /></p>

<p>In this example, a protest auction on eBay, the person pushing information has used a reference to web search over a URL, or even a link. This may be because their HTML skills aren't very good - but the result is arguably just as persuasive.</p>

<p><img src="http://jasoncartwright.com/contentimages/sci.jpg" alt="Scientology Protest" /></p>

<p>Here we can see a Scientology protester holding a sign promoting anti-Scientologist content. Apologies for the quality of the video capture - I can't read it either</p>

<p>So what is the upshot of this? The first of the obvious risk of the user not making it to the content you expected them to. A Googlebombing (or just some shrewd SEO) by someone with a different agenda could modify the search results. This is arguably quite difficult as the original website will probably be linked to more often by higher quality sources than an alternative or opposing website - as they have the head start.</p>

<p>One way people can hijack your advertising is the use of sponsored links. On Google in the UK we can <a href="http://www.google.co.uk/search?q=act%20on%20co2">see this</a>, where people advertising carbon offsetting and wind turbines have advertised. Interestingly, the last link is some chancer with the completely unrelated tyre puncture protection product. Obviously the people who have shelled out for the TV adverts have more financial clout than your average sponsored link buyer - so they can easily outbid anyone with different motives.</p>

<p>It's impressive to see advertisers of the legitimate and (arguably) illegitimately using this technique to move buyers down the purchase decision chain - after all, it is how users find content organically on the net.</p>








			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/XxZJoRxBG9s" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2008/2/content_findability_keyword_not_url</feedburner:origLink></item>
					
		<item>
			<title>New BBC Homepage</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/iN5eH_jbBDY/new_bbc_homepage</link>
			<content:encoded><![CDATA[
				<p>The BBC have launched their new homepage that has been in beta for the last few months - it looks and feels great. To get this out the door through the restrictive BBC standards and ancient infrastructure is one hell of an achievement. Good work.</p>

<p>However, the customisability of the page is completely knobbled by the lack of content and some basic persistence problems. The page lacks fundamental functionality that even the most basic Pageflakes-a-like customisable homepage has baked in.</p>

<p>For starters, the layout isn't saved in anything other than your cookie so I have to customise the page on every machine I use. This persistence problem gets even worse when you try and use other BBC systems. When I enter my postcode to customise the homepage, this information doesn't appear to be used to modify the content on any other site, and I still get asked for my postcode or place name elsewhere - /weather, /whereilive, and the customisable news homepage (a competing homepage... on the same site - only at the BBC!) for example.</p>

<p>The other problem is the lack of third-party content. Again, pretty much every other customisable homepage on the web allows you to develop widgets/gadgets/whatever that are dumped on the page in the positions you require. Gadgets are even going social now - with open specs like OpenSocial actively encouraging widget reuse across the web. Not so at the BBC, no external gadgets are allowed (not even basic external RSS feeds), and you can't repurpose the "gadgets" they use for use elsewhere.</p>

<p>Some of the content on the page seems a little pointless - I can't add stock quotes in the money section (even though the BBC has the content on the news site), and some blocks just consist of a link. The BBC's flagship iPlayer content is just a linked image to /iplayer - not very persuasive.</p>

<p>The upshot is that the design is great and it gives one of the UK's biggest sites a fresh feel, but all the space (and download time?) used by the customisation controls is wasted because the user can't make the page their own, like they are used to elsewhere. Don't even think about adding Sky's news, your mate's blogs, or anything more useful. Here is our news feed... Auntie knows best. </p>
			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/iN5eH_jbBDY" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2008/2/new_bbc_homepage</feedburner:origLink></item>
					
		<item>
			<title>8 Facts About Me Meme</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/B3Abqm6SuMc/8_facts_about_me_meme</link>
			<content:encoded><![CDATA[
				<p>I don't usually go in for these chain letter, MySpace style questions about yourself things, but as I've been tagged in one by non-other than <a href="http://www.cubicgarden.com/blojsom/blog/cubicgarden/just+life/?permalink=8-Random-Facts-About-Me-tagging-meme.html">the big man himself Mr Forrester</a>, I'll do this one. He called me "a funny geezer" too.</p>

<p>Here are the rules...</p>

<blockquote>
	<ol>
	<li>Each player starts with eight random facts/habits about themselves.</li>
<li>People who are tagged need to write a post on their own blog (about their eight things) and post these rules.</li>
<li>At the end of your blog, you need to choose eight people to get tagged and list their names.</li>
<li>Don’t forget to leave them a comment telling them they’re tagged, and to read your blog.</li>
</ol></blockquote>

<p><strong>I was born on Friday 13th</strong>. This is the standard 'fact about myself' I roll out in those team building things - I'm sure more a few people have heard me say this one several times. It's usually accompanied by a chorus of "well, that figures" afterwards.</p>

<p><strong>My grandma has more IT qualifications than I do</strong>. People I work with find this one a bit strange - I have no A-Levels or degree. I got my break at a dotcom in 1999, thanks to two reprobates called Ross and Kevin. Getting a gig at Google was difficult without a degree, but thankfully they gave me a chance too. My grandma has a City & Guilds qualification in some practical IT skills - good on her.</p>

<p><strong>I'm from Devon</strong>. Its a great place, as long as you're not young. I got out just in time to save my sanity, as the only way to make any money is to run a hotel or cater for tourists in some way. Perhaps I'll retire there. I'm also half-Cornish, and was christened there.</p>

<p><strong>My dad makes ice-cream for a living</strong>. Not strictly about me, but its a good'un. He makes <a href="http://flickr.com/photos/jasoncartwright/tags/icecream/">italian style ice cream</a> in Devon, which is a lot of fun but jolly hard work. I <a href="http://flickr.com/photos/jasoncartwright/31716215/">go and help him out</a> as a holiday from tapping at a keyboard some summers. </p>

<p><strong>I like Brixton</strong>. I moved to Brixton about 2 years ago, and I think its a great place.  Despite the incredible amounts of bad publicity the place gets, it has quite a community feel and some fantastic places to <a href="http://www.google.co.uk/maps/ms?hl=en&gl=uk&ie=UTF8&msa=0&msid=110849792392933080548.00043b97216b707a7c179">eat and be entertained</a>. </p>

<p><strong>I can't drive</strong>. To people I know who don't live in London and don't know what an Oyster card is this is tantamount to social and employment suicide. I tried to learn, and got two majors on the test - squealing the tires on a left-hander, then forcing another car off the road made up the chap's mind. I'll learn again another time.</p>

<p><strong>I enjoy talking about politics</strong>. Particularly US politics for some reason - if there was a version of Heat magazine that featured Gordon Brown and George Bush in the place of Amy Winehouse and Britney Spears (perhaps "Calefaction" magazine?) then I'd buy it. In fact, there is... Today in Parliament on Radio 4 and in podcast form.</p>

<p><strong>I hate flying but love traveling</strong>. Flying with me involves watching me sweat like a nutter, hearing me let out little yelps, and feeling me crush your hand as I grip it like my life depends on it. This irrational fear is the bain of my enjoyment of every holiday that involves planes. Sat in the seat I constantly have to listen to the engine noise and feel if we're rising or falling in a ridiculous attempt to have some control over what is happening. This came to a head on a flight in a <a href="http://flickr.com/photos/jasoncartwright/2117104764">small plane in Malaysia</a> where coming into land I actually believed I was going to die and strained a muscle tensing myself in the seat.</p>

<p>That's me done. Here are the next ones...</p>

<ul>
	<li><a href="http://luke.play.tm">Luke</a></li>
	<li><a href="http://www.one-word.co.uk">James</a> - although I'm not sure how it will work with his one word shtick</li>
	<li><a href="http://yukiloves.blogspot.com/">Yuki</a></li>
	<li><a href="http://iamseb.com">Seb</a></li>
	<li><a href="http://andypiper.wordpress.com">Andy</a></li>
</ul>

<p>Gosh darned it, that's it.</p>

			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/B3Abqm6SuMc" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2008/1/8_facts_about_me_meme</feedburner:origLink></item>
					
		<item>
			<title>eBay Items</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/lBwFLe8E6pc/ebay_items</link>
			<content:encoded><![CDATA[
				<p>I've gone and done a bit of early spring cleaning, and the result is a load of stuff <a href="http://search.ebay.co.uk/_W0QQfgtpZ1QQfrppZ25QQsassZjasoncart">on eBay</a>.</p>

<p>Alternatively, checkout the rather cool widget...</p>

<p><object width="355" height="355"><param name="movie" value="http://togo.ebay.co.uk/togo/seller.swf" /><param name="flashvars" value="base=http://togo.ebay.co.uk/togo/&lang=en-gb&seller=jasoncart" /><embed src="http://togo.ebay.co.uk/togo/seller.swf" type="application/x-shockwave-flash" width="355" height="355" flashvars="base=http://togo.ebay.co.uk/togo/&lang=en-gb&seller=jasoncart"></embed></object></p>
			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/lBwFLe8E6pc" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2007/12/ebay_items</feedburner:origLink></item>
					
		<item>
			<title>iPlayer Disappointment </title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/sP8SByPQv30/iplayer_disappointment</link>
			<content:encoded><![CDATA[
				<p>Surfing around some blogs I came across Adam Bowie's <a href="http://www.adambowie.com/weblog/archive/002293.html">post</a> about Charlie Brooker's Screenwipe. I'm a big Brooker fan, from back in the day when people bought these paper objects called magazines and Charlie wrote in PC Zone through to TV Go Home, Nathan Barley and now this BBC Four series.</p>

<p>Anyhow, Adam referenced the <a href="http://www.bbc.co.uk/iplayer/page/item/b008kgt9.shtml?filter=txdate%3A22-12&filter=txslot%3Aevening&scope=iplayerlast7days&start=4&version_pid=b008kgt4">iPlayer URL</a> of Brooker's end of year special of Screenwipe which I'd really like to see but missed due to being on <a href="/blog/entry/2007/12/im_in_malaysia">holiday</a>. I'd heard that the Flash version of iPlayer was released so I readied myself for a dose of Charlie's rantings to be streamed to my Mac and clicked the link. It wasn't to be. "Charlie Brooker's Screenwipe is no longer available - sorry!" the error message says. All very well - the rights aren't cleared for the BBC to stream this after 7 days, I understand that, but ultimately I'm very disappointed. </p>

<p><img src="/contentimages/iplayererror.gif" alt="iPlayer error"/></p>

<p>However, lets compare this experience to performing a search for the title shown in iPlayer: <a href="http://www.google.com/search?q=Charlie+Brooker%27s+Screenwipe+Review+of+the+Year">Charlie Brooker's Screenwipe Review of the Year</a>.</p>

<p><img src="/contentimages/screenwiperesults.gif" alt="Screenwipe results" style="border:1px solid grey" /></p>

<ul>
	<li>1st result: Indirect YouTube link.</li>
	<li>2nd &amp; 3rd results: Direct YouTube links, and "More results from www.youtube.com" link</li>
	<li>6th result: bbc.co.uk/programmes link, without iPlayer embed (because it wouldn't work, presumably) listing that I can view the programme on BBC Four at absurd times in the early morning.</li>
	<li>7th result: torrent site</li>
</ul>

<p>The "More results from www.youtube.com" <a href="http://www.google.com/search?q=site:www.youtube.com+Charlie+Brooker%27s+Screenwipe+Review+of+the+Year">link</a> then gives me over <strong>600</strong> Screenwipe videos. The top 3 are the exact result I'm looking for (and they work - I eventually watched the show with my dinner from these URLs), but it also gives me last year's review of the year!</p>

<p>Whilst iPlayer has failed to be able to show me the programme that has been broadcast 8 days ago, the combination of YouTube and Bittorrent have been able to give me exactly what I was after instantly. It then allowed me to browse every Screenwipe programme that has ever been made, faster and in higher quality than iPlayer provides, <em>and</em> I could have done it whilst still on holiday. There are also user-editted clips, user comments, and user ratings.</p>

<p>BBC iPlayer: Making the unmissable, missable.</p> 
			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/sP8SByPQv30" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2007/12/iplayer_disappointment</feedburner:origLink></item>
					
		<item>
			<title>I'm in Malaysia</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/Tb8jRT79cPc/im_in_malaysia</link>
			<content:encoded><![CDATA[
				<p>The tour of Hong Kong, Kuala Lumpur, Pangkor Laut, and Georgetown has begun. Have some photos below, or there are more over at <a href="http://flickr.com/photos/jasoncartwright/">Flickr</a>.</p>

<p><a href="http://www.flickr.com/photos/jasoncartwright/2106563884/" title="2IFC by Jason Cartwright, on Flickr"><img src="http://farm3.static.flickr.com/2117/2106563884_15e9a05234.jpg" width="333" height="500" alt="2IFC" /></a></p>

<p><a href="http://www.flickr.com/photos/jasoncartwright/2106559640/" title="Apartments by Jason Cartwright, on Flickr"><img src="http://farm3.static.flickr.com/2159/2106559640_b11bb2d559.jpg" width="333" height="500" alt="Apartments" /></a></p>

<p><a href="http://www.flickr.com/photos/jasoncartwright/2108662048/" title="Indoor Roller Coaster by Jason Cartwright, on Flickr"><img src="http://farm3.static.flickr.com/2386/2108662048_6fbdcd5f1f.jpg" width="500" height="333" alt="Indoor Roller Coaster" /></a></p>

<p><a href="http://www.flickr.com/photos/jasoncartwright/2116347805/" title="Beached by Jason Cartwright, on Flickr"><img src="http://farm3.static.flickr.com/2268/2116347805_7d2f11dd22.jpg" width="333" height="500" alt="Beached" /></a></p>

<p><a href="http://www.flickr.com/photos/jasoncartwright/2116942745/" title="Pangkor Laut Beach by Jason Cartwright, on Flickr"><img src="http://farm3.static.flickr.com/2198/2116942745_42bc56e506.jpg" width="500" height="114" alt="Pangkor Laut Beach" /></a></p>
			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/Tb8jRT79cPc" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2007/12/im_in_malaysia</feedburner:origLink></item>
					
		<item>
			<title>XHTML Mobile sites are easy</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/mBoWnPXm_HM/xhtml_mobile_sites_are_easy</link>
			<content:encoded><![CDATA[
				<p>Over at play.tm we've made a mobile site, at <a href="http://m.play.tm">m.play.tm</a>. This was made possible by a few different technologies and conventions all coming together. Google Adsense for Mobile for monentisation, XHTML Mobile for the markup, and the apparent de-facto standard of putting mobile sites on the subdomain m.[yourdomainname].</p>

<p>With all our content in the a database its no problem to output it to the simplified version of XHTML for use on mobile browsers, the design process was simple too - you can't display much on a tiny phone screen. Google Adsense adverts on non-mobile sites are embedded in the page using Javascript. The JS is executes and passes the page's URL to the script and Google's server-side code spits out the relevant ads (using Google's crazily complex algorithms to get to best ads, undoubtedly).</p>

<p>Mobiles can't usually execute Javascript, and the extra HTTP call creates added latency, which mobile pages are sensitive to. To get around this Google mobile ads are added to the page server-side, using whatever scripting language you choose. I guess Google figure that if you're savvy enough to create a mobile site then you are savvy enough to understand server-side scripting. Unfortunately Google only provide Perl, PHP, JSP and ASP v3 samples. As the main page generating parts of play.tm are written in ASP.net I created this function (based on the ASP v3 function Google provides), which of course you are welcome to copy and probably improve for your implementation (a mention and link would be nice though!):</p>

<pre wrap="hard">
function showGoogleAd(url)
	Dim googleTime, googleDt, googleScheme, googleHost,googlePubId
	
	googlePubId = "ca-mb-pub-xxxxxxxxxxxxxxxxxxxx"
	
	googleTime = DateDiff("s", "01/01/1970 00:00:00", Now())
	googleDt = (1000 * googleTime) + System.Math.Round(1000 * (Timer - Int(Timer)))
	googleScheme = "http://"
	if StrComp(Request.ServerVariables("HTTPS"), "on") = 0 Then googleScheme = "https://"
	googleHost = Server.URLEncode(googleScheme & url)
	
	Dim googleAdUrl, googleAdOutput
	googleAdUrl = "http://pagead2.googlesyndication.com/pagead/ads?ad_type=text&" & googlePubId & "&dt=" & googleDt & "&format=mobile_double" & "&host=" & googleHost & "&ip=" & Server.URLEncode(Request.ServerVariables("REMOTE_ADDR")) & "&markup=xhtml&oe=utf8&output=xhtml&ref=" & Server.URLEncode(Request.ServerVariables("HTTP_REFERER")) & "&url=" & googleHost & "&useragent=" & Server.URLEncode(Request.ServerVariables("HTTP_USER_AGENT"))
	
	Dim googleWebClient as New WebClient()
	googleAdOutput = googleWebClient.DownloadString(googleAdUrl)
	response.write (googleAdOutput)
	
end function
</pre>

<p>The upshot of this is that whilst it is still early days for building up our mobile readership and for Google's Adsense for Mobile Content programme we've found a new way of monetising our content. The upfront cost in developing this the mobile site was small as it just reuses a lot of existing code and infrastructure and it is incredibly simple in terms of design (the CSS file is just a few lines long) and content (simple markup).</p>


			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/mBoWnPXm_HM" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2007/12/xhtml_mobile_sites_are_easy</feedburner:origLink></item>
					
		<item>
			<title>Content delivery: insource or outsource</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/bMeU-aV5ujU/content_delivery_insource_or_outsource</link>
			<content:encoded><![CDATA[
				<p>Its all gone a bit negative around here (<a href="/blog/entry/2007/9/itvcom_what_are_they_doing">abusing ITV</a>, <a href="/blog/entry/2007/9/bbc.co.uk_2.0_why_it_isnt_happening">dismissing bbc.co.uk 2.0</a>, and listing <a href="/blog/entry/2007/11/when_urls_go_bad">crap URLs</a>), so I think I should write a bit about what I'm up to.</p>

<p>In the constant scaling battle that is running a large and growing content site a key decision is to choose where you put components of your systems. Do you insource, outsource or a mixture of the both?</p>

<p>So, on <a href="http://play.tm">play.tm</a> we've recently been moving around quite a few pieces of this jigsaw. To give a bit of background - we've got several million pages of content ranging from text to images to video, and we deliver this to around a million users a month. We're a small company where budgets are tight, but we operate in a competitive marketplace where expectation of the user experience are high. Most visitors have broadband, are experienced digital natives and we're competing with everyone from the world's largest media conglomerates to individual bloggers for their eyeballs and ultimately advertising revenue. To minimise budgets and maximise quality of user experience we are constantly striving to improve our technical infrastructure to punch above our weight.</p>

<p>I've talked <a href="/blog/entry/2007/3/cachefly_review">before</a> about <a href="http://www.cachefly.com">Cachefly</a>. We've been gradually moving play.tm CSS, Javascript and furniture images over to their CDN in order to speed up the site for users who may be far away from our London-based origin webfarm. The high cost of storage means that this works well for the small most hit upon files - we host just 5mb of files there, but it is hit on millions of times a day. However, it becomes too expensive to host <a href="http://play.tm/storytype/images">content images</a> (we have gigs of them) and <a href="http://play.tm/storytype/videos">videos</a> (again, gigs of them and growing very fast). The only problem we've found with Cachefly is on some Asian connections the latency isn't much better than that to our London server farm. Anycast seemingly doesn't do its job properly and routes those users to San Jose, rather than the probably optimal Tokyo POP. On the whole though this service dramatically improves the speed (and scalability) of our site, particularly in off-beat locations, making us (anecdotally) faster than the competition whilst having an (arguably) more richly designed site.</p>

<p>Images and video are indeed a different game. Very large amounts of storage are required, making CDNs prohibitively expensive due the fact that they need to replicate your content over many POPs. Also, bandwidth on CDNs can be pricey. With next-gen consoles (well, the PS3 and Xbox 360) capable of outputting HD content, the screenshots and video from these games are increasingly of a very high resolution and therefore file size. Also, there is the cultural change that PR companies are becoming more aware of the internet as a medium to distribute video - and therefore are producing and distributing more of it. The upshot of this is a storage nightmare, what we need is inexpensive storage, bandwidth and most importantly the ability to increase the amount of storage available.</p>

<p>In comes <a href="http://aws.amazon.com/s3">S3</a>, a web service from Amazon. Simple Storage Solution (SSS, or S3) allow you to store and transmit files with a simple model of paying for only what you use. So, we could purchase a big array of disks, the server(s) and software to make them spin, networking gear to make them communicate and the bandwidth for them to talk to the outside world. Problem here is that there is a huge upfront cost to buy all the storage we think we may need for years to come - we could get the planning wrong, and we'll probably only be utilitising a fraction of its capacity to begin with. S3 on the other hand allows us to pay for only what we use - GB storage per month, any bandwidth used, and a very small cost per HTTP transaction. Most importantly there is no limit on the amount of files we can store (if there is, it's ridiculously high), and as a bonus the service won't degrade if we get busy. This solution isn't the best for all usecases, but for our videos it works a treat.</p>

<p>One other area of the site we've outsourced is the RSS feed delivery. We found that RSS feed hits made up a very large proportion of the hits on the site - up to 50 hits/sec. Whilst we did our best to cache the script's output the capacity of the webheads could certainly be used for something more interesting than pushing this XML. The solution came in the form of <a href="http://www.feedburner.com">Feedburner</a> - this Google owned service takes a pre-existing feed and "burns" it, producing a copy that can be delivered to the end user. Since Google bought Feedburner they made their "Pro" services free, allowing access to lots of interesting analytics and to "burn" the feeds to a domain name of your choosing. As we already had many people using the feeds we opted to setup a new feed origin, let Feedburner get its content from there, then redirect all the old users to the burnt feed. It worked really well, and as a bonus Feedburner provide us with a load of detailed stats we previously didn't have access to. Feedburner's pinging service took another process off our boxes too.</p>
			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/bMeU-aV5ujU" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2007/12/content_delivery_insource_or_outsource</feedburner:origLink></item>
					
		<item>
			<title>When URLs go bad</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/AP-1DVYBxMc/when_urls_go_bad</link>
			<content:encoded><![CDATA[
				<p>We all know what makes a good URL. Its got to be hackable, meaningful, short, and most importantly its got to <a href="http://www.w3.org/Provider/Style/URI ">never, ever, change</a>. But what happens when people get it wrong? &lt;voice type="tvhost"&gt;Join me in a journey around the world of bad URLs...</p>

<p><a href="http://www.ft.com/cms/s/0/4dc9d2ba-9f2e-11dc-8031-0000779fd2ac.html?nclick_check=1">http://www.ft.com/cms/s/0/4dc9d2ba-9f2e-11dc-8031-0000779fd2ac.html?nclick_check=1</a></p>

<p>CMS? Why do I care that a page is generated from a CMS? Does that identifier really need to be 36 characters long? Are the FT expecting to generate 36^36 (or more?) articles/pages in its lifetime? Just six characters (6^36 = 2.1bn) would probably cover it. You could push the boat out, go wild, and do seven (7^36 = 78.3bn).</p>

<p><a href="http://prettymuchanyblog.com/archive/2007/12/31/the_blog_post_title/">http://prettymuchanyblog.com/archive/2007/12/31/the_blog_post_title/</a></p>

<p>This one has been hacking me off for a while. Many blogging systems put the permalinks to posts in an archive directory by default. To me, archiving implies something of historical interest that has been set aside from the main bulk of the posts. The URL could be used as an identifier of what we're actually expecting - a blog post, so why not make the link yourblog.com/post/2007/12/31/the_blog_post_title/ ?</p>

<p><a href="http://iplayersupport.external.bbc.co.uk/cgi-bin/bbciplayer.cfg/php/enduser/std_alp.php?p_cv=1.3&cat_lvl1=3&p_cats=3&p_new_search=1&p_sid=il25D1Si&p_accessibility=0&p_redirect=&p_lva=42">http://iplayersupport.external.bbc.co.uk/cgi-bin/bbciplayer.cfg/php/enduser/std_alp.php<br/>?p_cv=1.3&cat_lvl1=3&p_cats=3&p_new_search=1&p_sid=il25D1Si&p_accessibility=0&p_redirect=&p_lva=42</a></p>

<p>BBC URLs are usually of the beautiful form bbc.co.uk/[whatever], but this disgraceful effort breaks all the rules (I've had to break it in half to fit the page).</p>

<ul>
    <li>Stupid domain name - nobody cares where your server is!</li>
    <li>Technology specific - cgi-bin, cfg, php (twice!), can you fit any more technology identifiers in there?</li>
    <li>Ridiculous number of variables in the querystring, are they really all needed?</li>
</ul>

<p>Why this URL can't be the following, we'll probably never know: http://www.bbc.co.uk/iplayer/support/finding_programmes/</p>

<p><a href="http://www.livedepartureboards.co.uk/ldb/sumdep.aspx?T=DMK&S=VIC">http://www.livedepartureboards.co.uk/ldb/sumdep.aspx?T=DMK&S=VIC</a></p>

<p>National Rail Enquiries are renowned for having a crap website, even with <a href="http://www.dracos.co.uk">Matt Somerville</a> seemingly giving them free consultancy and showing them how to do it properly with the beautiful <a href=" http://traintimes.org.uk">traintimes.org.uk</a>. Checkout this URL porn: <a href=" http://traintimes.org.uk/VIC/DMK">http://traintimes.org.uk/VIC/DMK</a>, for the same page as above.</p>

<p>So, it seems what the National Rail people have tried to do is make a shortcut to get live departure information by registering and using livedepartureboards.co.uk. All very well, I know I like to check the train times before I walk out of the office into the rain. Problem is they then appear to have bodged it onto their nationarail.co.uk site.  The result is repeating what site your on (the "ldp" directory - which I assume means Live Departure Boards) and a messed up interface. Users have been, rightly, drilled to realise that a domain name represents one site, which makes the "National Rail Enquiries" branding seem strange. Even worse clicking on "Home" takes you to the NRE homepage. The LDB homepage is a crap HTML redirect.</p>

<p><a href="http://www-935.ibm.com/services/us/gbs/bus/html/bcs_financialmgmt.html?re=bcs_home">http://www-935.ibm.com/services/us/gbs/bus/html/bcs_financialmgmt.html?re=bcs_home</a><br/>
<a href="http://h71028.www7.hp.com/enterprise/cache/19054-0-0-225-121.html">http://h71028.www7.hp.com/enterprise/cache/19054-0-0-225-121.html</a></p>

<p>Are the www-936 and h71028.www7 parts really necessary? It would be much better if these IT giants put these systems behind some clever load balancing system so that everything gets served from www.[companyname].com. Much less confusing, much more friendly.</p>
			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/AP-1DVYBxMc" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2007/11/when_urls_go_bad</feedburner:origLink></item>
					
		<item>
			<title>bbc.co.uk 2.0: Why it isn't happening and shouldn't happen</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/uO3sFxUF1S4/bbc.co.uk_2.0_why_it_isnt_happening</link>
			<content:encoded><![CDATA[
				<p class="info">Bit of background: I've recently quit the BBC after 3 years in the New Media dept (now called Future Media & Technology), and now work for Google. This is all my personal point of view.</p>

<p>Due to the unique way the <a href="http://www.bbc.co.uk">BBC</a> is funded it is rapidly becoming obsolete in the brave new world of the friction-free innovation that Web 2.0 affords. They are hanging in there, and respect for doing so, but for how long will the corporations online efforts be able to continue to do so?</p>

<p>The BBC's <a href="http://www.bbc.co.uk/bbctrust/framework/charter.html">royal charter</a> allows the BBC to exist, and was granted in 1927. It's been revised and re-granted every 10 years and says that the BBC "public purposes" are as follows:</p>

<blockquote>
<ol style="list-style:lower-alpha">
	<li>sustaining citizenship and civil society;</li>
	<li>promoting education and learning;</li>
	<li>stimulating creativity and cultural excellence;</li>
	<li>representing the UK, its nations, regions and communities;</li>
	<li>bringing the UK to the world and the world to the UK;</li>
	<li>in promoting its other purposes, helping to deliver to the public the benefit of emerging communications technologies and services and, in addition, taking a leading role in the switchover to digital television.</li>
</ol>
</blockquote>

<p>All this is wrapped up in the BBC's "educate, inform and entertain" remit, and is delivered to an undeniable and probably unique quality - just look at <a href="http://www.bbc.co.uk/radio4/today/">Radio 4's Today programme</a>, <a href="http://news.bbc.co.uk">bbc.co.uk/news</a> and the <a href="http://www.bbc.co.uk/children">children's offerings</a>. I think we can summarise the BBC's reason for existence and funding via the charter with these assumptions:</p>

<ul>
	<li>TV &amp; Radio costs a fortune to produce and distribute, therefore should be funded centrally</li>
	<li>Good content has to be free from commercial and government control</li>
	<li>New digital mediums need promoting</li>
	<li>It's difficult to get content from abroad and to influence abroad</li>
	<li>The long-tail of identities and communities can't be catered for in a mass-market commercial product</li>
</ul>

<p>Whilst good TV and radio content still costs a lot of money to produce, distribution is now free or almost free. <a href="http://www.youtube.com">YouTube</a> or the like, or P2P software replace expensive transmitter networks. Will we at some point see wholesale distribution of TV over IP? Probably, and radio to a lesser extent. Do new digital mediums need promoting anymore? <a href="http://www.sky.com">Sky</a> and <a href="http://www.channel4.com">Channel 4</a> are promoting HD and IP delivery of TV alright, and DAB is full of <a href="http://www.mediauk.com/radio/platforms/dab">decent commercial stations</a> now. Needless to say, its commercial interests that are driving innovation online. International influence is a doddle on the relatively borderless internet, and likewise longtails of small communities can be represented online to far greater extent than the charter envisages for the BBC's task.</p>

<p>The BBC's license fee funding is based on a broadcast model. The cost of producing and distributing the programme is fixed, and there is little or no variable costs that are acquired per user. A programme costs the same whether 10 or 10,000,000 people watch it. This 'push' broadcast model fits the BBC and its fairly fixed budget perfectly. Moving online we see a different model happening - a service here has both fixed and variable costs. First you need to develop the service in the first place (the fixed cost) then deliver it (the variable cost) - using servers and bandwidth, which have a cost-per-user. Whilst you can reduce the variable costs by driving the cost of each 'pull' transaction down by using cheap peering and the latest hardware and software - the cost is probably always going there (more on that later).</p>

<p>Commercial organisations (at least the good ones embracing the internet) find it easy to turn a profit from the variable costs of each user - it then just becomes a race to profitability by getting as many users as possible to cover your fixed costs.</p>

<p>One argument against this line of thought is that the tech will decrease in cost faster than the number of users will increase, therefore the BBC will just need to keep investing in new technology until the cost per user is so negligible it doesn't matter. Problem is that increasingly complex user expectations from online services mean that this will never happen. We're already seeing that the people using the technology the most efficiently (Google for example) are the most successful. The moment a new technique for decreasing the cost of these transactions (be it <a href="http://en.wikipedia.org/wiki/Moore's_law">Moore's law</a>, an equivalent such as <a href="http://en.wikipedia.org/wiki/Mark_Kryder">Kryder's law</a>, open source free software or a programming technique) a new cost comes along in the form of user expectation. Will this happen forever? Probably not, but we're a long way away from ubiquitous computing power and storage.</p>

<p>It's not just about computing juice though. Lets drag this blog post back to the BBC's problem with some examples. <a href="http://www.flickr.com">Flickr</a> take my money, but it sure doesn't cost them $25 to serve my photos out for a year, which is probably the case for 99.9% of paying users. Posters to the BBC's <a href="http://news.bbc.co.uk/sport1/hi/606/default.stm">606 messageboard</a> however did cost more in variable costs (technical and moderation costs) than the fixed cost that was allocated to the service. Dramatically so in fact, causing the site to have to be scaled back and restructured (much to the user's disgust) in order to stay alive. Upshot is that while a service like Flickr just needs to keep plugging away adding users to cover the cost of their employee's wages, the BBC has a substandard service and <a href="http://www.kuro5hin.org/story/2006/6/2/44443/14303">a load of pissed off licence fee payers</a>.</p>

<p>This fixed vs variable income model brings about probably insurmountable cultural differences between successful internet businesses and the BBC as well. Auntie likes to have few, big, expensive, milestone projects to burn the cash in a predictable manner, whereas the more flexible internet industry takes a gamble on many small, inexpensive, iterative projects. "Please fail very quickly — so that you can try again" says Google's CEO Eric Schmidt. It's pretty much proven that a more agile, open and iterative approach produces services to a higher quality, and also to a release cycle length that the feature-clamouring user now rightly expects.</p>

<p>Moving away from the economic analysis of the situation facing the BBC, we can see the tide already turning. The BBC was an innovator in radio (<a href="http://en.wikipedia.org/wiki/2LO">2LO</a> - in beta 1922, v1.0 when licenced in 1923) then TV (BBC Television Service - beta from 1929, v1.0 release 1946) but not now in the online age. <a href="http://anytime.sky.com">Sky Anytime</a>, <a href="http://www.channel4.com/4od">4OD</a>, and <a href="http://www.itv.com">ITV.com</a>'s video revamp have all launched before the BBC's <a href="http://www.bbc.co.uk/iplayer">iPlayer</a> service (iMP beta 2005, iPlayer in beta, v1.0 not released at time of writing) showing commercial efforts in this field have trumped the BBC. One person working on the project called it <a href="http://www.theregister.co.uk/2007/09/18/iplayer_rose/">"worse than boo.com"</a>. With the lead now lost, how can they pull it back?</p>

<p>Well, they have formed a Web 2.0 department to drive development of bbc.co.uk 2.0. This bizarre structure defeats the purpose of the sea-change they are trying to accomplish. Does Yahoo, Google, or any innovating startups have a Web 2.0 team? Of course not - the idea is ridiculous - they <em>are</em> Web 2.0.</p>

<p>Lets go through the some of the principals of Web 2.0 and the BBC...</p>

<ul>
	<li>Rich user experience: archaic BBC tech standards say that you can't rely on javascript/flash to deliver content, and pages need to be below 200kb in size. Buh bye innovative user interfaces, widgets/gadgets, Google or Yahoo Maps style interface, or YouTube for that matter.</li>
	<li>User as contributor: BBC requires moderation of content before publishing it - see above for 606 example.</li>
	<li>Participation, not publishing - as above.</li>
	<li>Enable the long tail - BBC tech has limited ability to cater for large amount of content in the first place. CMSs are disparate and clunky, content distribution network is run off one single, overloaded computer (!).</li>
	<li>Radical trust - this simply doesn't happen at the BBC, see 606. Not even to employee's, see first point.</li>
</ul>

<p>All this seems very negative, and I suppose it is. The BBC is a big, easy target - but let me just point out the areas where I would defend the BBC. News and children's content is awesome, and with its non-commercial interest the BBC delivers the best services there are in these areas - even online. The problem I have is the BBC scrabbling to keep up in a trendy sub-sector of the industry where it's fundamental design makes it impossible to do so.</p>

			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/uO3sFxUF1S4" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2007/9/bbc.co.uk_2.0_why_it_isnt_happening</feedburner:origLink></item>
					
		<item>
			<title>itv.com - what are they doing?</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/owgOCGjBHd4/itvcom_what_are_they_doing</link>
			<content:encoded><![CDATA[
				<p>I went to itv.com the other day, not quite sure why, but I did. The first promo image was about Wayne Rooney's injury, which I was interested in so decided to give it a click...</p>

<p><img src="/contentimages/rooney1.jpg" alt="itv.com"/></p>

<p>That took me to the sport site (itv.com/Sport - capital letters in the URL, and linking to default.html for whatever reason) with same promo, so I click it again...</p>

<p><img src="/contentimages/rooney2.jpg" alt="itv.com"/></p>

<p>Then I'm on the football site (at itv-football.co.uk - not itv.com/sport/football, or itv-football.com) with yet another promo.</p>

<p><img src="/contentimages/rooney3.jpg" alt="itv.com"/></p>

<p>I'm getting hacked off at this point, but want to see it through, and thank god the click of this promo goes to the article...</p>

<p><img src="/contentimages/rooney4.jpg" alt="itv.com"/></p>

<p>Other annoyances include...</p>

<ul>
	<li>Some top nav item links open in a new window, and others don't</li>
	<li>Some promos open in new windows, and other don't. This is particually annoying when it causes two video streams to play at the same time</li>
	<li>Feedback form asks for your browser and OS - don't they know that already?</li>
	<li>Most of the video doesn't work on a Mac. Why?</li>
	<li>The dating site (not that I'm interested) is whitelabeled into ITV dating and FriendsReunited dating. Why bother?</li>
	<li>Some content is needlessly written out using Javascript - presumably so that it can be updated centrally. Weird.</li>
</ul>
			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/owgOCGjBHd4" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2007/9/itvcom_what_are_they_doing</feedburner:origLink></item>
					
		<item>
			<title>Flash Video Embedding</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/oH-gKH9ifOw/flash_video_embedding</link>
			<content:encoded><![CDATA[
				<p>Yay! It works...</p><object width="600" height="338"><param name="movie" value="http://play.tm/f/player.swf"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><param name="FlashVars" value="flv=http://v.cdn.play.tm/22871_1_1.flv&amp;onclick=http://play.tm/gallery/22871/football-manager-live/video/1/&amp;startimage=http://i.cdn.play.tm/v/150/22871_1.jpg&amp;margin=0&amp;showstop=1&amp;showvolume=1&amp;showtime=1&amp;showopen=0&amp;top1=http://play.tm/i/f/vo.png|510|5"><embed src="http://play.tm/f/player.swf" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="600" height="338" flashvars="flv=http://v.cdn.play.tm/22871_1_1.flv&amp;onclick=http://play.tm/gallery/22871/football-manager-live/video/1/&amp;startimage=http://i.cdn.play.tm/v/150/22871_1.jpg&amp;margin=0&amp;showstop=1&amp;showvolume=1&amp;showtime=1&amp;showopen=0&amp;top1=http://play.tm/i/f/vo.png|510|5"></object>
			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/oH-gKH9ifOw" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2007/6/flash_video_embedding</feedburner:origLink></item>
					
		<item>
			<title>Cachefly Review</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/DZC7GcsSipo/cachefly_review</link>
			<content:encoded><![CDATA[
				<p>I first heard of <a href="http://www.cachefly.com">Cachefly</a> when they sponsored the diggnation podcast. I was impressed at the download speed of the popular podcast, and did a few tests on their network from various locations around the globe.</p>
 
<p>For those who don't understand what a CDN is here is a brief overview. Delivery of data on the internet is hindered by distance. The further your data travels to get to the person who requested it the more likely it is to be slowed down (called lag) or lost (called packet loss) by points in various networks that are overloaded or experiencing technical difficulties. There is also an inherent lag in the network caused by the sheer distance its travelling. For instance, its difficult to get the lag between the east coast of America to London below about 70-80 milliseconds. Doesn't sound like much, but it all adds up if your requestor is making hundreds of requests. CDNs get around this my placing the data people may request in many different locations around the globe, and then pointing requestors to the nearest copy. The biggest CDNs claim to run networks on the "edge of the internet", where through partnerships with consumer ISPs they serve content directly from the ISP's own network.</p>
 
<p>So, I had a few hours spare the other weekend and decided to take them up on their free trial month offer to ease the load on <a href="http://play.tm">play.tm</a>. Sign up was easy, and the account was setup instantly - FTP, admin tools and the hostname (which is ferrago.cachefly.net). Very impressive. So I got straight on to FTPing up the files.</p>
 
<p>I'd decided to put the simplest of the site's files on Cachefly - all of the CSS, Javascript includes and static page furniture images. This stuff doesn't take up much disk space (a large cost at Cachefly as they replicate the files onto multiple sets of storage) and doesn't change very often - yet it makes up a very large proportion of the volume of HTTP requests to site. It was a quick win to FTP it all up, then change some variables in the site's config files. The only real negative point on the hosting came up here - in order for the files you're FTPing up to become available at your hostname you have to end the FTP connection. This is annoying, and I'm not sure why you have to do it. It caught me out FTPing one set of files - and I couldn't figure out why they didn't become available.</p>
 
<p>The stats tools provided by Cachefly are good - showing all the data you would expect from log files, in a useful interface. I love the POP view that lets you see where your files were served from. Its all live information as well, which is impressive for such a distributed system.</p>
 
<p>In summary then - it all works rather well. The choice of the files to put up was simple given the high prices we would have been paying for them to host the hundreds of gigs of content images and videos. The stats show that a large proportion of hits are served away from our London server farm, so the benefits are obvious. I recommend their service without hesitation.</p>
			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/DZC7GcsSipo" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2007/3/cachefly_review</feedburner:origLink></item>
					
		<item>
			<title>So, I bought a MacBook</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/41k0PPY8Xrs/so_i_bought_a_macbook</link>
			<content:encoded><![CDATA[
				<p>The other month my dodgy old Dell laptop (purchased for £250 many years ago) was feeling the pain, with numerous physical and performance problems. It served me very well especially considering it was only had a 1.2Ghz chip and 256mb RAM, plus the harsh environments it was subjected to - ranging from rubbish Thai power supplies, an Asahi-fuelled tour of Japan, BarCamps, trains, planes and several datacentre floors. In it's favour was that it was very small and I didn't care much about it getting scratched or broken, on the downside was the shockingly poor battery life and the annoying sticky-outty wifi card that had to be installed.</p>
 
<p>It was time for it to go as it simply didn't cut it anymore.</p>
 
<p>My mate Luke and I trundled off to the Apple store to have a look at what was on offer and walked out with a couple of the £749 white Macbooks (minus 6% BBC discount).</p>
 
<p>Overall, I'm very impressed with it. Very impressed indeed. The overwhelming feeling is that everything just works - wifi, webcam, software installs the lot. I'm also surprised how much software I play with on Windows has a Mac version. Firefox and all the handy extensions work, Skype (version 2, but not 3 yet), Foldershare, Terminal Services client (with minor limitations), MySQL GUI Tools - the lot.</p>
 
<p>Battery life is excellent, the close-lid standby is quick and easy. WinXP's standby and hibernate never seemed to work correctly for me - leading to distrust and me never using them. The power cable design is in two pieces allowing you to leave part under the table rather than scrambling under there to unplug it - just little things like that make it so much easier to use. Also, while we're talking about the power cable - the magnetic connector has already saved a huge repair bill from me being clumsy in a Hong Kong hotel room.</p>

<p>Wifi and bluetooth just work - a revelation for a Windows devotee. Dead easy to use with zero hassle. Very impressive.</p>

<p>There doesn't seem to be much freeware around, but cheap independent software can be bought for less than $20. This is often produced by a one man show, and is of an excellent quality. As far as OS X goes - I'm surprised by the features I use. The F9 to F11 window moving keys are superb, but the dashboard is too slow and clumbersome to be of use to me. Saying this though - the MySQL monitor widget that came with the MySQL GUI tools is very cool - even though it refuses to remember my login details. FTP in finder works a treat, and the help files are useful for a Mac newbie such as myself.</p>

<p>So - I'll probably give another update in a few months time, with any teething problems. Jason on Mac out.</p>
			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/41k0PPY8Xrs" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2007/2/so_i_bought_a_macbook</feedburner:origLink></item>
					
		<item>
			<title>SVG thoughts</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/qQQ0FBl14EI/svg_thoughts</link>
			<content:encoded><![CDATA[
				<p>Is it me or is the development of SVG features in browsers painfully slow? Whilst Flash continues to seemingly take over the world delivering insane amounts of content for YouTube, MySpace etc, SVG is little more than a tech demo with people going nuts over a &lt;filter&gt; tag being put into Gecko 1.9 alpha releases.</p>
			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/qQQ0FBl14EI" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2007/1/svg_thoughts</feedburner:origLink></item>
					
		<item>
			<title>Separation of Content, Design and Behaviour - when it goes bad</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/8EpbngxOw7M/separation_of_content_design_and_behaviour</link>
			<content:encoded><![CDATA[
				<p>So, you know the deal - anything a client side developer (HTML monkey, Javascript hacker, CSS stylista... whatever you call yourself) produces should be <abbr title="divided">divvied</abbr> up into separate technology specific files - with the only references between those files being the includes, and the DOM references.</p>
 
<p>The benefits of this approach arn't immediately obvious but the learning curve is small (we all use these technologies most days if your in the biz - its just structuring your work differently) so the only change you need to make is a cultural one. Once your done though - you can start separating your workforce into more focused disciplines, allowing specialisation to improve the quality of your overall product. Not to mention that when a marketing bod/boss/designer asks for a change you should only have to fiddle with one bit of code - coding nirvana.</p>
 
<p>This technique (or techniques, depending on how you look at it) is covered very well in these A List Apart articles:</p>
 
<ul>
    <li>http://alistapart.com/articles/behavioralseparation</li>
    <li>http://alistapart.com/articles/separationdilemma</li>
</ul>
 
<p>So, how does this work in relation to a CMS?</p>
 
<p>In a standard CMS, all of your 'content' is held in a structure (be it XML, a database or some other kind of flat file) then it is transformed out when published onto whatever platforms you desire - WML for crap mobiles, HTML or XHTML for the browser, RSS for your feedreaders, CSVs for use in spreadsheets, XML for other syndication etc etc.</p>
 
<p>Problems occur when you then try and incorporate presentational data in that 'content'. In a CMS I've worked on one requirement was to have the content editor be able to position images and quotes around paragraphs of the body text of a page. This required the content to contain presentational information - the content editor's layout choices. So the data that ties quote 2 with paragraph 4 (for example) is regarded as content, but is actually just a presentational detail.</p>
 
<p>The XML looks something like this (very simplified)...</p>
 
<pre>&lt;images&gt;
    &lt;image ref="12345678" src="/whatever.jpg" height="100" width="100" alt="whatever"/&gt;
&lt;/images&gt;
&lt;image_placement&gt;
    &lt;placement&gt;
        &lt;image_ref="12345678"&gt;
        &lt;para&gt;3&lt;/para&gt;
        &lt;align&gt;left&lt;/align&gt;
    &lt;/placement&gt;
&lt;/image_placement&gt;</pre>
 
<p>Not ideal.</p>
 
<p>It gets worse when you then have to publish this to a page. Like good little developers we put all our presentational information in the CSS - no problem. The CMS then pulls in the correct CSS for the correct page. No proble... uh ho - how does the CSS know where to put paragraph 3's quote? We could use an inline style or add a class to the quote, which the CSS would use to put it left or right.</p>
 
<p>The class solution is the obvious frontrunner - it increases cacheability as well as being more maintainable. Here the debate begins: what do we call the class? Given that it will only ever be used to move an item to the left, the obvious choice is calling it "left". However as we all know - a class or ID reference shouldn't imply the style that is placed on it. Taken to the extreme - if you call your class "red", then what happens when your marketing bod/boss/designer asks for it to be green. You're in trouble.</p>
 
<p>So candidates for these two class names put forward were...</p>
 
<ul>
    <li>"left" and "right"</li>
    <li>"l" and "r"</li>
    <li>"position1" and "position2"</li>
    <li>"p1" and "p2"</li>
</ul>
 
<p>Which is best? Here is the disappointment - I don't know. On one hand you have the maintainability of "left" and "right" - any developer approaching the code knows what is going on straight away. However with this method you're shooting yourself in the foot for alternative versions of the page or if the change comes in to move images on the right to the left or vice-versa. The argument for ignoring the "not implying style in a class/id" rule is that any left/right changes should happen in the XML or transforming language, not the CSS.</p>
 
<p>I lean towards calling it "left" and "right", but I can see both sides of the arguement. In the first sites we did using this XML, this is what we did, but then it got changed to "position-a" and "position-b" in a subsequent release of the XSLT.</p>
			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/8EpbngxOw7M" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2007/1/separation_of_content_design_and_behaviour</feedburner:origLink></item>
					
		<item>
			<title>BarCamp London 2006</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/M4W9aH6XgmA/barcamp</link>
			<content:encoded><![CDATA[
				<p><a href="http://barcamp.org/BarCampLondon" style="float:right;margin:10px;"><img src="http://barcamp.org/f/barcamplondon_button.gif" alt="BarCampLondon Sep 2-3" /></a> Went to this the other day. Lots of fun. Checkout the coverage.</p>

<ul>
<li><a href="http://www.razorshine.com/index.php?tag=barcamplondon">http://www.razorshine.com/index.php?tag=barcamplondon</a></li>
<li><a href="http://aralbalkan.com/category/barcamplondon/">http://aralbalkan.com/category/barcamplondon/</a></li>
<li><a href="http://www.thewatchmakerproject.com/journal/362/barcamp-london-day-one">http://www.thewatchmakerproject.com/journal/362/barcamp-london-day-one</a></li>
<li><a href="http://mattrink.co.uk/index.php?tag=barcamplondon06">http://mattrink.co.uk/index.php?tag=barcamplondon06</a></li>
<li><a href="http://geekswithblogs.net/waterbaby">http://geekswithblogs.net/waterbaby</a></li>
<li><a href="http://niquimerret.com/">http://niquimerret.com/</a></li>
<li><a href="http://davidsmalley.com/blog/">http://davidsmalley.com/blog/</a></li>
<li><a href="http://noodlesinmysandals.com/blog/">http://noodlesinmysandals.com/blog/</a></li>
</ul>
			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/M4W9aH6XgmA" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2006/9/barcamp</feedburner:origLink></item>
					
		<item>
			<title>MetaWeather Beta Launch</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/Qf6VfiCfdJo/metaweather_beta_launch</link>
			<content:encoded><![CDATA[
				<p>My blog has cooled down a bit recently (as if it was 'hot' beforehand), as I've spent most of my spare time moving house and getting <a href="http://www.metaweather.com">MetaWeather</a> going.</p>
<p>The concept is pretty simple. It's a weather data aggregator, that goes out and acquires weather information from sources (primarily XML, or all XML, depending on how you look at it - more later) and then calculates the average weather.</p>
<p>Seemed nice and simple on the face of it, and it was to a degree (weather pun intended), however were are some complexities I encountered...</p>
<p><em>Datasources - getting XML</em></p>
<p>The first problem to solve was acquiring the data. This is done by consuming XML over HTTP from various outlets over the web.</p>
<p>One source I particularly wanted to use data from was the BBC, mainly because I work for them, and also because I'm interested in the backstage.bbc.co.uk initiative. Problem is that the BBC don't obviously publish their weather data as XML. I presume this is because of licensing issues with the <a href="http://www.met-office.gov.uk/">Met Office</a> - but they continue to assure backstagers that it is coming. Quite a few apps available around the web use BBC weather data, the biggest of which appears to be the Konfabulator widget (mentioned on the backstage.bbc.co.uk site <a href="http://backstage.bbc.co.uk/ideas/archives/2005/07/konfabulator_wi.html">here</a>). A quick shifty through the code (which turns out to be some nice digestible javascript) reveals that they are in fact consuming the BBC's WAP site for data.</p>
<p>Now, I think WAP is crap (so does <a href="http://www.useit.com/alertbox/20001210.html">Jacob</a> - the buying a newspaper bit is hilarious) and I've never used the BBC WAP site before (I have however used the far superior <a href="http://www.bbc.co.uk/mobile">mobile</a> site). It seems WAP is valid XML, and contains quite a bit of weather data. It needs some string manipulation to get the readings out, but most of the legwork can be done via XPaths.</p>
<p>Weather.com has well thought out <a href="http://www.weather.com/services/xmloap.html">web service</a>, although the registration on their site is a little hard to find - probably because they aren't making any money from it (or at least, not much). Not much to say there - it just works.</p>
<p><a href="http://www.weather.gov/">Weather.gov</a> is a site run by NOAA who appear to the equivalent of the Met Office, on steroids - presumably because they actually have weather (proper weather, we're talking <a href="http://news.bbc.co.uk/1/hi/in_depth/americas/2005/hurricane_katrina/default.stm">city levelling stuff</a>) in the US. As opposed to perpetual drizzle over London. NOAA offers a variety of XML goodies via their site, including an interesting interpretation of the use of RSS (if not exactly per spec, I'd argue) in this feed system. Weather Underground presents its data in a similar way.</p>
<p>I've not found any other free sources yet, but I'm working on it. Accuweather is another large site, but it appears they have a view on free weather data that <a href="http://yro.slashdot.org/article.pl?sid=04/06/27/0216251&amp;mode=thread&amp;tid=103&amp;tid=126&amp;tid=95&amp;tid=99">isn't exactly consummate</a> with the aims of this project.</p>
<p><em>Standardising the data</em></p>
<p>Once I've got hold of the data sources the problem of storage occurs. We'll have to standardise the data so we can store it, then later compare it.</p>
<p>The data is recorded with a 'fetch date' and an 'applicable date'. Data with the same or similar (within a specified time period) 'fetch date' and 'applicable date' are called 'observations'. Readings with an applicable date in the future are therefore 'forecasts'. I suppose data with an applicable date in the past could is archived data. As its not much data we're talking about (and I have a fair amount of database juice to play with) I'm not destroying any data.</p>
<p>Most of the measurements are pretty straightforward to standardise. Temperature is held in centigrade, wind speed in MPH, wind direction in degrees - all fairly easily converted from various formats in which the sources are delivered - Fahrenheit, KPH or a compass point as examples. I'll probably post all these conversion functions online at some point.</p>
<p>However the most important data is the hardest to tie down - what we've called the 'Weather State'. This is often presented to us as a short string such as 'Showers' or 'Sunny', but more often than not its more complicated. Most weather sources offer an icon to go with this data - a much more machine readable and workable way of dealing with this problem than text designed to be read by a human. It is this data that we use to determine the weather state.</p>
<p>If I was an IA (information architect), I'd be referring to the different sets of source's data as 'controlled vocabularies'. MetaWeather has its own controlled vocab, and we also hold a big fat thesaurus. This thesaurus is a mapping of the different source's entire vocab to MetaWeather's. So for example... WeatherUnderground may call a particular weather state "Light Snow Showers" however MetaWeather will simplify this to just "Snow" in our controlled vocab. MetaWeather does sometimes take into account states that may be in between two in it's controlled vocab. For instance - a simple example -  "Showers" is between "Clear" and "Rain". However, I'm not an IA, and this is a really simple example of controlled vocab with not a lot of data.</p>
<p>Some problems arise with this when you get to the nitty gritty of some source's data. For instance a source may return "Heavy Volcanic Ash", "Unknown Precipitation" or something equally crazy. In this case, we just disregard the weather state from this source - after all we have other sources to get data from, and these states don't occur very often.</p>
<p><em>Average Wind Direction</em></p>
<p>Wind direction is held in the database in degrees, and as such represents a problem in calculating the average. For example if one forecaster predicts a 10<sup>o</sup> wind and another a 350<sup>o</sup> gust then the mathematical average will be 180<sup>o</sup>, not 0<sup>o</sup>.</p>
<p>The solution was to combine the wind speed with the wind direction and convert it into a vector. Painful attempts to remember GCSE maths lessons ensued along with roping in of workmates to explain the vagaries of radians and trig functions. I've still to understand this fully in the context of this project, and therefore haven't implemented it yet. The rubbish average wind direction works for the moment, with a note explaining its inaccuracy.</p>
<p><em>Predictability</em></p>
<p>Predictability is a measure of how different forecasters predictions of the weather are. The calculation is pretty straightforward, and just involves getting the standard deviation of the weather state values and converting that into a percentage. Eventually I'll hope to get a whole weather predictability as opposed to just the weather state, by averaging the percentage deviations across other readings, which will probably give us a better view on the predictions.</p>
<p>So thats it for now. I've got a lot more to do on this - loading more locations, more sources and probably knocking up an API to present all the data.</p>
			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/Qf6VfiCfdJo" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2006/2/metaweather_beta_launch</feedburner:origLink></item>
					
		<item>
			<title>Common RSS Mistakes</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/-8DGnPeMSdA/common_rss_mistakes</link>
			<content:encoded><![CDATA[
				<p>The ubiquitous syndication format RSS is based on the XML file format, and as such has some strict rules that need to be followed to maximise its usability, to stick to guidelines, and even just make it work. Here are some common mistakes...</p>

<p><em>MIME type</em><br/>
MIME types are rarely an issue that a web developer comes up against, as it's often handled without user intervention by the web server software. Your standard Apache or IIS config will include mapping for common file formats to their MIME types. In Apache this will usually be done through the mime.types file and in IIS it's covered in the IIS Manager properties, or the properties of an individual website.</p>

<p>However, RSS is often served...</p>

<ul>
<li>Through a scripting language like PHP or ASP</li>
<li>With an unrecognised and not configured by default format like ".rss"</li>
<li>Without a file extension</li>
</ul>

<p>In these cases the page is often served with a MIME type other than "text/xml" as it should be done. The result of this is that the page is displayed as plain text. Not a big deal, but not ideal.</p>

<p>The solution depends on how your generating your RSS feeds. If your generating them on the fly from a script then the fix is easy. In PHP use...</p>

<pre>header("Content-Type: text/xml");</pre>

<p>In ASP or ASP.net use...</p>

<pre>Response.ContentType = "text/xml"</pre>

<p>If your generating the feed to the server then you can just save the file with the file format .xml, then this (in Apache and IIS at least) will be served with "text/xml". If you can't save the file with this extension, then your going to have to find out how to set the MIME type correctly for the extension you choose.</p>

<p><em>Content in description</em><br/>
This one really gets on my nerves. The <a href="http://backend.userland.com/rss091#whatIsAnLtitemgt">RSS 0.91</a>, <a href="http://web.resource.org/rss/1.0/spec#s5.5.3">RSS 1.0</a> and <a href="http://blogs.law.harvard.edu/tech/rss#hrelementsOfLtitemgt">RSS 2.0</a> specs clearly state that the description node should be filled with a "synopsis", or "brief description/abstract" of the item, rather than the whole content of the item. If you really want to stick the whole content in your feed then use &lt;content:encoded&gt; as described <a href="http://web.resource.org/rss/1.0/modules/content/">here</a>. Arguably you shouldn't really put HTML in the description either. However nobody says you can't, I suppose.</p>

<p><em>Lack of links to the feed</em><br/>
You should advertise your RSS feeds in a couple of ways...</p>

<ul>
<li>Using the de facto standard bright orange button</li>
<li>Putting the <code>&lt;link rel="alternative"&gt;</code> construction in every page on your site, or at least just your homepage</li>
</ul>

<p><em>Not using &lt;category&gt; and &lt;comments&gt;</em><br/>
Not really a mistake, but people should definitely make use of these elements more. I see people putting comment counts, and category names in the &lt;title&gt;. Very annoying.</p>

			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/-8DGnPeMSdA" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2005/12/common_rss_mistakes</feedburner:origLink></item>
					
		<item>
			<title>The Tim Westwood Drinking Game</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/so8Z-DscH7A/tim_westwood_drinking_game</link>
			<content:encoded><![CDATA[
				<p><a href="http://en.wikipedia.org/wiki/Tim_Westwood">Tim Westwood</a> presents the rap show on <a href="http://www.bbc.co.uk/radio1">Radio 1</a> on Friday and Saturday nights. Alledgedly the inspiration behind Ali G, he is a white guy immersed in the predominately black culture of hip-hop and rap music.</p> 

<p>Tim's catchphrases, and his show's timeslot make it perfect for a drinking game.</p>

<p>Rules of the game are simple. Take a drink (shot or swig) whenever...</p>

<ul>
	<li>Tim says any of the following...
		<ul>
			<li>"Man this joint is crazy"</li>
			<li>"Lets go baby"</li>
			<li>"Damn, thats what I'm talking about"</li>
			<li>"Damn, thats the way it goes down"</li>
			<li>"Its a good look"</li>
			<li>"Its a bad look"</li>
			<li>"That's what we does"</li>
			<li>"Understand that"</li>
		</ul>
	</li>
	<li>Tim pimps a gig he is doing in a seemingly random, un-hiphop, crap town such as Swindon, Banbury, Slough, or Enfield</li>
	<li>Tim plugs a TV show he is on</li>
</ul>
			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/so8Z-DscH7A" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2005/11/tim_westwood_drinking_game</feedburner:origLink></item>
					
		<item>
			<title>DIVless rethinking</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/6lvH_-2fMVQ/divless_rethinking</link>
			<content:encoded><![CDATA[
				<p class="info">This is a follow up to the post made previously: <a href="/blog/entry/2005/10/why_a_divless_page">Why a divless page</a></p>

<p>When I first developed the HTML for this blog, I used no DIVs. Several things have happened to make me reassess this approach since I wrote the HTML and blog entry.</p>

<p>The first was in the development of the HTML, when I realised that I couldn’t put H tags in the DT. This was a big problem as most pages (particularly the homepage) contain a lot of text, and breaking this up into navigable areas for screenreaders should have been my aim. In the end I ignored the problem, and left it as it was. I did have a fairly decent H structure anyhow, although not for the bulk of the interesting bits of the page.</p>

<p>The second thing to happen was a conversation with a work colleague. He suggested that a list of blog entries were not a list of definitions. Now, I’m still unsure about this. The W3C says that a DL...</p>

<blockquote><p>consist of two parts: a term and a description</p></blockquote>

<p>A blog post title and the post's text? A recent visit to my workplace by <a href="http://www.molly.com">Molly(.com)</a> suggested otherwise, however. <a href="http://www.stuffandnonsense.co.uk">Andy Clarke</a> described how he had successfully used a definition list in a product listing. Using the DT as the product heading, then the product’s image and details in DDs.  So, I guess this depends on your interpretation of the standard.</p>

<p>I also had an email from a guy called Frank Olieu. He took me up on the statement in which I suggested that you should use some DIVs for the basic layout of a page. Here is what he said...</p>

<blockquote><p>I just bumped into your divless page, which I found refreshing and inspiring…</p>

<p>But allow me a question...<br/>
You wrote:</p>

<p>(...) The solution is to use divs only when semantically meaningful markup is not possible. For example, if a design calls for a fixed width centred design, your going to have to wrap the lot in a div. (...)</p>

<p>... If I get it right, you could achieve the same thing by styling the /body/ element itself, even with borders if required. The only drawback I can think of, is that it would probably not work in anything prior to IE 5.5...
I've been making some experiments with divless layout for some time, using a styled body as the main container, and the browsers (*) I tested with could cope with that.</p>

<p>Here is a "quick and dirty" mock up : <a href="http://www.design.olieu.net/files/divless.html"> http://www.design.olieu.net/files/divless.html</a>, where even the /html/ element is styled! (it's partly in Danish but easy to figure out...)</p>

<p>What is your opinion? Would it be "safe" to use in real life?</p>

<p>(*) browsers: Firefox 1.07, IE6, Opera 8.5, Konqueror.</p></blockquote>

<p>Well, some browser support not withstanding, it seems that you can style up the HTML and BODY tags enough to produce <a href="http://www.design.olieu.net/files/divless.html">a decently laid out page</a> without the DIVs I guessed you would need. Good work Frank!</p>

<p>Back to his question though - is it 'safe' on a public website? My answer to this was "it depends". If it's your techie focused blog your doing it on, then by all means go right ahead and do it, after testing the hell out of it. It's a nice little tech demonstration. However, I did say that he probably shouldn't use it for any much more than this. If your developing the next Google, a consumer e-commerce site (reliant on sales conversions) or any other kinds of mainstream web resource, then I would steer well clear. Best stick in a few DIVs - the cost of losing 5-10% (at a guess, perhaps more?) of your visitors because the page renders incorrectly (or worst case, not at all!) is too high when the only benefit is a bit less code and the kudos of pulling it off!</p>

<p>So, what was the verdict on this matter? Did I relent and stick some DIVs in? Kind of. </p>

<p>My homepage was getting too big (over 30k of HTML, and growing). I had not really thought out the navigation, and all the blog entries full text was clogging up the page increasing download time and obscuring the content right at the bottom. Because most (all?) of my posts are not timely, as in it doesn’t really matter which order you read then in, I figured this was a bad thing. I also had the screenreader issue mentioned above.</p>

<p>The solution therefore was to leave the 'Blog' section of the page as a definition list and only place the first paragraph on indexes. This, I believe makes the blog list much more like I think a definition list should be. This approach also got around an IE bug where the text was going over the left boundary of the DD if there were lots of long DD’s in the page. Very strange, but no longer happening.</p>

<p>So, no DIVs yet - but I'm certainly thinking about it for the blog entry pages.</p>
			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/6lvH_-2fMVQ" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2005/11/divless_rethinking</feedburner:origLink></item>
					
		<item>
			<title>Absolute positioning ain't that bad</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/JV7XQnof4s0/absolute_positioning_aint_that_bad</link>
			<content:encoded><![CDATA[
				<p>Absolute positioning has a bad rep from its misuse in the early days of CSS, and misunderstanding of how it works</p>

<p>The most common CSS misinterpretation I’ve seen is the fallacy that everything absolutely positioned must be positioned relative to the body of the page - 0,0. The fact of the matter is that an element is absolutely positioned relative to the nearest <code>position:relative</code> parent. I guess people came to this misunderstanding through not having any relatively positioned elements on the page, and then attempting to use absolute positioning. For the record, I’ve made this mistake. If you look hard enough you’ll find it still on the net - although the page does work well, just with huge pixel values!</p>

<p>So therefore cleverly laid out elements positioned relatively (I'm thinking the general page layout), and provide a structure for the absolutely positioned elements below it to hang off.</p>

<p>One other misunderstanding is that you have to use pixels to absolutely position an element. Not so - em's work well, as do percentages.</p>

<p>One problem I've encountered with absolutely positioned elements is the uncontrollable length. I've often found it difficult to position something underneath an absolutely positioned element because of the seemingly uncontrollable tendency of the content inside to overrun and overlap the content in the element below.</p>

<p>An upside of absolute positioning I’ve thought of is the rendering speed. Having absolute values must surely give more hints to the client as to the position of elements. I'd imagine this isn’t completely true if these elements are inside a relative element, where that element’s position isn't known until the page is displayed. Someone is bound to correct me, but it must help right? Anyhow - rendering speed isn’t that much of a consideration with modern browsers and computers when taken into consideration with the latency of the delivery of the page.</p>
			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/JV7XQnof4s0" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2005/11/absolute_positioning_aint_that_bad</feedburner:origLink></item>
					
		<item>
			<title>Gaming: Persistent scoring, and fair team play</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/Jqm8QjQwJnw/persistent_scoring_and_fair_team_play</link>
			<content:encoded><![CDATA[
				<p class="info">Article first appeared <a href="http://www.ferrago.com/story/6839">here</a>, and was edited by <a href="http://www.ferrago.com/author/Luke%20Guttridge">Luke</a>
		</p>
	<p>Very rarely do I get addicted to a game, but Battlefield 2 has me well and truly hooked. Team Fortress Classic, Counter-Strike (and CS: Source), Simcity, Half-Life 2 have all had me in their clutches, but this addiction is worse, much worse - its based around an MMORPG levelling and rewards system. Now I know what the guys who call Everquest 'Evercrack' are trying to weans themselves off.</p>
	<p>Battlefield 2 requires you to register with EA, and in return they track your progress in ranked online games awarding you ranks for general achievement, and medals for training on specific tasks. All this behind the scenes technology is run by Gamespy, who interestingly offer up all of your stats in an XML format. A variety of tools (such as <a href="http://www.bf2s.com">BF2S.com</a>) are available online to consume these stats outside the game. Very cool indeed... the techie in me loves this. Here is my <a href="http://bf2s.com/player/jasoncart/"> woeful combat effort</a>. This competitive, rolling, MMORPG-like centralised ranking and scoring system has its drawbacks though, especially in a game that requires teamplay to master individual maps.</p>
	<p>The most prized asset for the competitive, ranking-sensitive Battlefield 2 player are the helicopters. These fearsome death machines are almost ludicrously overpowered, in the right hands. They feature a gunnery position with a nasty cannon (best for troop takedown), and TV-guided missiles (best for vehicles). The pilot, whose job is to grapple with the newbie unfriendly control system, and powerful engine also has access to a bank of effective-in-quantity missiles. Newbies inevitably do get hold of them sometimes, to disastrous effect - they are pretty difficult to fly until you get your head around the control system. I'm reminded of a driving school car around my way that says "Everyone had to learn once!" on the back.</p>
	<p>The sought-after nature of these monsters causes the spawn spots beside them to be crowded with hopeful 'copter pilots who proceed to the heli spawn point and tap E (the enter vehicle key) rapidly. Some take it further. Teamkilling is prevalent in Battlefield 2, and most of the deliberate attempts happen around the helicopters. The most common form appears to be a player in the sniper class killing the person inside the chopper, than taking their place. Other methods of removing a player from the valued war machine is to take the heli to the edge of the map and dip the 'offender' out of the combat area. This causes them to lose health and eventually die, enforcing the map rules. Very clever, but very annoying. Other techniques range from 'verbal' abuse over the text or voice chat, and initiating pointless (more on that in the next imminently) kick votes.</p>
	<p>What makes this situation worse is the frankly awful in-game kicking system. Most decent Counter-Strike servers have an admin around to call upon, or actually witness in-game offences, and failing that a decent service to report offenders instantly or after the game. Not so in most BF2 servers, particularly the official ones, it must be noted. The game relies on a stupidly flawed voting system to give griefers the boot. I've never seen this work, ever, even on the most blatant teamkillers.</p>
	<p>This system requires a certain percentage of the server's population to answer a poorly displayed "ALL IN CAPITAL LETTERS" question. This percentage (I'm unsure as to the actual amount) usually means that twenty-odd people (on a 64 player server) must understand and respond to the kick vote in a certain amount of time. It never happens - I've never seen someone kicked. Of course, getting away with the 'crime' makes the cocky little blighters more confident, and the behaviour spreads like wildfire as people see the opportunity or defend themselves.</p>
	<p>I mentioned previously that the game requires teamwork to conquer the map. This is only true of course if the opposing team are not in the same disarray as yours! Squads of different classed players is undoubtedly the way EA designed the game to be played. 'Support' and 'Medic' class troops are designed to backup the heavy hitters, and they do so well - getting rewarded with points for healing and re-supply work in the same way as the guys with the big guns get them for doing the messy work on the front line. A good working team will, however, probably never achieve the kinds of scores a skilful heli pilot and gunner will, hence the competition for the choppers. This is a real disappointment for the people who try to play the game as it is meant to be played (no Nvidia bungs here, honest).</p>
	<p>The other trouble is people 'harvesting' ranking as you may expect people to do in MMORPGs. These exploits mainly revolve around the 'Support' and 'Medic' classes, where two people on a server deliberately kill each other, then use the medic tools to revive them and score points - repeatedly. These issues were thankfully addressed in the latest patch (1.03). This kind of behaviour is undoubtedly linked to the scoring system. Having your point score stored for eternity and being ranked in full view of the rest of the game (or indeed the world, as you can see above) causes people to take the game a lot more seriously. This is great for EA, or the fair play minded gamers that make up 95% of the server users - I know I enjoy being 'promoted' to the next rank. However this TKing minority, coupled with poor controls on player kicking, spoils the game for everyone. Gaming (some would say hacking, or 'working') the game and its rules is part of the fun, to a degree, but when I sit down for a nice evening-long game of BF2, I don't expect to have it wrecked by someone else, just like I don't expect it when sitting down to watch TV or consume other forms of entertainment.</p>
	<p>Where next for MMORPG-like scoring in other genres, then? I'm getting nervous already...</p>
			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/Jqm8QjQwJnw" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2005/11/persistent_scoring_and_fair_team_play</feedburner:origLink></item>
					
		<item>
			<title>What Flickr Needs</title>
			<link>http://feedproxy.google.com/~r/JasonCartwright/~3/pajccxOdPLU/what_flickr_needs</link>
			<content:encoded><![CDATA[
				<p>Flickr is without doubt the best 'web application' I've used. The point on which a web <em>site</em> becomes a web <em>application</em> is a little unclear to me at the moment, but we'll stick with application for the time being. It seems the gratuitous use of AJAX tech is the main driver for HTML based tools to be called web applications these days - Web 2.0 people tell me :-)</p>

<p>So what is so great about it huh? Well the main (and somewhat fluffy) overall reason its so good is the style is purveys. You know these guys are a class act - every part of the design and interface is almost (more on that later!) perfectly crafted. Its also rather fast, particularly on a broadband connection. I dread to think of the infrastructure these guys have in place to handle the crazy numbers of images and transactions they are dealing with. All this is for a the measly fee of $25 (£14 odd) a YEAR for the crazy 2Gb upload a month.</p>

<p>However all is not perfect in the land of Flickr. Regular 'Flickr Massages' occur, where the site is taken offline, presumably for database maintenance. Since being bought by the behemoth Yahoo Inc things have got better but they still happen too often. Even with some of the <a href="http://jeremy.zawodny.com/">finest practical MySQL minds</a> around they can't keep the app going 24/7. There are also features missing that users have been clamouring for....</p>

<p>Sets of sets is my pet peeve. Most people have large sets (custom groups of photos) of, in my example, photos of a particular holiday. These become unwealdingly large and pretty difficult to navigate after you have more than say 50-100 photos in them. The solution therefore is to break them up into a nested hierarchy of sets with, for example, "<a href="http://www.flickr.com/photos/jasoncartwright/sets/750984/">Thailand 2005</a>" having subsets of "Bangkok" and "Phuket" etc. Purists argue that you can use the tagging system can be used to do this - a search for <a href="http://www.flickr.com/photos/jasoncartwright/search/text:bangkok+thailand/">"Thailand Bangkok"</a> solves the situation, they say. Whilst I do like the tagging system - it doesn't cut it for this task of arranging my photos, by my definition, to the potential audience. Yes people can search - but I want to build a structure that shows them through the photos as well. Stewart (Flickr co-founder) has replied to a <a href="http://www.flickr.com/forums/ideas/2078/">monster thread</a> on the Flickr forums stating that the feature is coming.</p>

<p>My other want of Flickr is better panoramic image handling. It seems that many cameras come with software packages that allow the stitching of multiple images to form panoramas. Some cameraphones (including all new SonyEricssons from the K700i upwards) come with panorama creation on the fly, with some very <a href="http://www.flickr.com/photos/evilcoffee/search/tags:k750i/">impressive results</a>. My stitching software of choice is <a href="http://www.cs.ubc.ca/~mbrown/autostitch/autostitch.html">Autostitch</a>, which works a treat, as <a href="http://www.flickr.com/photos/jasoncartwright/sets/925625/">you can see</a>.</p>

<p>So, what can Flickr do to help? When you upload to Flickr it creates several different versions of the image in different sizes. Now, these work great when the image is a standard 4:3 photo (which 95% of photos on Flickr are, I'd imagine). However things get a bit out of shape when you stick images on there that are much, much wider than they are higher. By out of shape, I don't mean distorted (they are far too clever for that), although some images appear to be of a slightly <a href="http://static.flickr.com/30/42249337_6e05e07397_s.jpg">overly optimised</a>. The problem occurs when you get to the photo's page - the image is <a href="http://www.flickr.com/photos/jasoncartwright/42249337/in/set-925625/">pretty unusable</a> due to the weird dimensions.</p>

<p>Flickr used to use a flash interface on this photo page - and I propose they should bring it back, or make it optional or automatic per account, image set, or individual image. The flash app could load a slightly larger version of the image, and allow the viewer to scroll around inside it. If they think they have moved away from flash for displaying images like this, then a CSS based solution could be possible - with a horizontal scrollbar (bit of a usability no-no I know) and/or some clever image moving javascript. </p>

			
			<img src="http://feeds.feedburner.com/~r/JasonCartwright/~4/pajccxOdPLU" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://jasoncartwright.com/blog/entry/2005/10/what_flickr_needs</feedburner:origLink></item>
					
			</channel>
		</rss>
