<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>rwec.co.uk</title>
	<atom:link href="http://rwec.co.uk/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://rwec.co.uk/blog</link>
	<description>Rowan&#039;s World, Et Cetera</description>
	<lastBuildDate>Sun, 27 Nov 2011 19:13:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>REAMDE: A Review</title>
		<link>http://rwec.co.uk/blog/2011/11/reamde-a-review/</link>
		<comments>http://rwec.co.uk/blog/2011/11/reamde-a-review/#comments</comments>
		<pubDate>Sun, 27 Nov 2011 19:13:17 +0000</pubDate>
		<dc:creator>Rowan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[book review]]></category>
		<category><![CDATA[neal stephenson]]></category>
		<category><![CDATA[reamde]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://rwec.co.uk/blog/?p=218</guid>
		<description><![CDATA[For my birthday, my sister's fiancé gallantly lugged all the way from California a pre-publication copy of Neal Stephenson's latest novel, "REAMDE". At just short of a thousand pages, it must have taken a fair chunk of his luggage allowance, and like a 3-hour movie, you can't help but feel that a book that long [...]]]></description>
			<content:encoded><![CDATA[<p>For my birthday, my sister's fiancé gallantly lugged all the way from California a pre-publication copy of Neal Stephenson's latest novel, "REAMDE". At just short of a thousand pages, it must have taken a fair chunk of his luggage allowance, and like a 3-hour movie, you can't help but feel that a book that long might have benefited from a stricter editor. Certainly, Stephenson's love of technical detail, and tendency to throw all his ideas into one pot, is very much in evidence. And yet I found myself utterly unable to put it down all the way through.<br />
<span id="more-218"></span></p>
<p>After an exhausting week's reading, I found that I had reached half-way through the book, but only a week of action had taken place. Actually, that's not quite true, as there's plenty of words spent on background information, including one particularly awkward flashback to fill in the back-story of a newly introduced character. Not that the passage itself isn't enjoyable, but since we don't meet the character in the present tense until we know her entire history, it feels a bit like Stephenson is saying "oh, sorry, there's something I meant to mention earlier; don't worry, I'll get back to the action in a minute, you'll see".</p>
<p>And in a sense, that is this book's main flaw: there are simply too many stories and ideas crammed together, which might have been better left to stand on their own merits. The online world of T'Rain, for instance, is a brilliant piece of SF invention, and the politics surrounding it would have made an intriguing novel – but this is not that novel, so Stephenson hurriedly tidies the sub-plot away to make room for the real action.</p>
<p>And what action! I've never read a book involving so many guns (or at least, so many guns given such prominent and specific descriptions &emdash; Stephenson jokingly acknowledges one Deric Ruhl as "ballistics copy editor"), but nor have I read another book which concludes with a chase involving a woman being chased by a bunch of jihadists, being chased by an IT entrepreneur and a Chinese peasant, being chased by the rearguard of the jihadists, being chased by a secret service agent, being chased by a mountain lion. The action scenes, and the tangled webs which bring together its motley cast, are the real focus of this book, and they work brilliantly.</p>
<p>Apart from the sheer quantity of prose, there are other signs that this book is not as carefully edited as it could be. I read recently that <a href="http://www.jasperfforde.com/featurestn6.html">Jasper Fforde uses the scrollbar and find facility</a> on his word processor to check that he hasn't left key concepts or characters unmentioned for too long; had Stephenson used the same technique, I wouldn't have been nearly as lost when he suddenly reintroduced the nickname "Dodge" after consistently referring to the character as Richard for about 800 pages. A similar slip has a character recognised as "Olivia" after making great play, some 200 pages earlier, of her refusal to give out that name.</p>
<p>My final criticism would be that having introduced a deliberately diverse range of characters, thrown together by fate in the strangest combinations, Stephenson insists on arranging them neatly into romantic pairs. A bit of sexual tension, and some romantic motivation, help drive the story along, and maybe I'm just being cynical, but having nearly every character end up with a love interest seemed more unbelievable &emdash; and unnecesary &emdash; than all the other coincidences in the novel.</p>
<p>But these are minor niggles, and are almost forcibly overwhelmed by the twisting drama. If you start the book expecting a novel about near-future cyberspace politics, you'll enjoy the first couple of hundred pages, then find yourself lost; if you expect an action-packed thriller, it will be the other way around.  Maybe, if you're a die-hard thriller reader, you'll find it fails to live up to that genre. But maybe, like me, you'll find it an immensely enjoyable romp, but reach the end feeling that the parts of the mixture are not quite blended.</p>
]]></content:encoded>
			<wfw:commentRss>http://rwec.co.uk/blog/2011/11/reamde-a-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cached Redirects Considered Harmful (and how browsers can fix them)</title>
		<link>http://rwec.co.uk/blog/2011/10/cached-redirects-considered-harmful/</link>
		<comments>http://rwec.co.uk/blog/2011/10/cached-redirects-considered-harmful/#comments</comments>
		<pubDate>Sun, 09 Oct 2011 20:57:18 +0000</pubDate>
		<dc:creator>Rowan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA["cached redirects"]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[caching]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[redirect]]></category>
		<category><![CDATA[redirects]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://rwec.co.uk/blog/?p=200</guid>
		<description><![CDATA[There are a lot of URLs out there on the Web; and a pretty big number of those URLs are either alternative names for something, or old locations that have been superseded. So "redirects" from one URL to another are a common feature of the web, and have been for many years. But recently, the [...]]]></description>
			<content:encoded><![CDATA[<p>There are a lot of URLs out there on the Web; and a pretty big number of those URLs are either alternative names for something, or old locations that have been superseded. So "redirects" from one URL to another are a common feature of the web, and have been for many years. But recently, the way these redirects behave has been changing, because performance-conscious browser developers have started caching redirects, rather than re-requesting them from the server every time.</p>
<p>In theory, this makes perfect sense, but in practice, it causes web developers like me a lot of pain, because nothing "permanent" is actually <em>that</em> permanent. I'm not saying no browser should ever cache a redirect, but I do have a few suggestions of ways they could be a little more helpful about it.<br />
<span id="more-200"></span></p>
<h2>The Technology</h2>
<p>Let's be clear what we're talking about - <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3">the HTTP/1.1 specification defines a class of status codes grouped as "Redirection" statuses</a>, in the range 3xx. The main candidate for browser caching is status code 301, which the specification labels "Moved Permanently". The specification specifically states that "this response is cacheable unless indicated otherwise" - that is, unless the response also includes headers specifically relating to cache control, a User Agent can assume that it's OK to cache this response and not re-request the original URL. It doesn't go into any more detail, and neither this nor the next sentence (about "clients with link editing capabilities") is couched in the standard RFC form of "User Agents MAY ..." (let alone "SHOULD"), but the clear message is "this old URI is irrelevant, just use the new one".</p>
<p>So, newer versions of Firefox, Chrome, and <a href="http://blogs.msdn.com/b/ie/archive/2010/07/14/caching-improvements-in-internet-explorer-9.aspx">Internet Explorer</a> have all started "obeying" this part of the standard, and opting to cache all HTTP 301 responses if not told otherwise.</p>
<h2>The Problem</h2>
<p>So, what's the big problem? Well, the fact that a "resource has been assigned a new permanent URI" doesn't mean that there won't be some point in time where someone wants to use the old URI for something else. Worse, people have an unhelpful habit of changing their decisions later.</p>
<p>Consider this scenario:</p>
<ol>
<li>A  company has a product called a "Thingummy™", with a description at http://example.com/thingummy/</li>
<li>They decide that the name is too unwieldy, so re-brand it as "Widget™". Knowing that <a href="http://www.w3.org/Provider/Style/URI">cool URIs don't change</a>, the developers permanently redirect the old URL to the new page about the same product, at http://example.com/widget/ Old links remain valid, and direct customers to the information they were looking for.</li>
<li>A couple of years down the line, the company decides to boost sales by releasing a "classic" version of the Widget™ under the old Thingummy™ brand. They put up a new page at http://example.com/thingummy/ Sadly, some customers continue being redirected to http://example.com/widget/ by their browsers' cache.</li>
<li>With Thingummies™ massively out-selling Widgets™, the company comes full circle, and abandons the new brand. The developers put in a redirect that permanently points http://example.com/widget/ back to http://example.com/thingummy/. At this point, <strong>all hell breaks loose</strong>. Well, maybe not, but customers trying to access the product page find mysterious messages on their screen about "infinite redirects". Management are not impressed.</li>
</ol>
<div>
<h2>How Permanent is "Permanently"?</h2>
<p>The biggest problem in all this is that developers seem to have taken the word "permanent" rather too literally. The Random House dictionary lists 4 definitions of permanent; the first is:</p>
<blockquote><p>existing perpetually; everlasting, especially without significant change</p></blockquote>
<p>In theory, this seems a reasonable definition, but in reality <strong>nothing lasts forever</strong>. Nothing physical, nothing electronic, and certainly not the structure of a website. So clearly, when the HTTP specification says "a new permanent URI", it doesn't actually expect you to guarantee its perpetual existence. Let's try the second definition:</p>
<blockquote><p>intended to exist or function for a long, indefinite period without regard to unforeseeable conditions</p></blockquote>
<p>Ah, now that's more like it - by that definition, a 301 status indicates a redirect which will remain valid for "a long, indefinite period", unless there are "unforeseeable conditions".</p>
<p>I did a quick test earlier, using Firefox 7 to visit a URL which returned a 301 status and no cache instructions, then inspecting the resulting cache entry using the built-in "about:cache page". Among the details is this - "expires: No expiration time". That's pretty permanent, by the first definition.</p>
<p>Effectively, having once seen that 301 response, it is not going to request the original URL <strong>ever</strong>, simply because the web developer didn't mention an expiry date, because they didn't <em>foresee</em> any conditions in which they would want to change the decision. (And I thought 24-hour <abbr title="Time To Live">TTL</abbr>s on <abbr title="Domain Name System">DNS</abbr> entries were annoying...)</p>
<p style="padding-left: 30px;"><span style="color: #008000;"><strong>&rarr; Suggestion 1: Cache entries for an unadorned 301 response should have a reasonable default life time, not last forever.</strong></span></p>
<p style="padding-left: 30px;"><span style="color: #800000;">&rarr; Filed as <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=696595">Mozilla Bugzilla Bug 696595</a></span></p>
<h2>Chasing your own Tail</h2>
<p>If you're foolish enough to have created an immortal redirect, or unlucky enough to have inherited one, you might find yourself wanting to put a new redirect pointing back the other way, as in my example above. But if you do, any browser which saw (and cached) the old redirect will simply see the new one <em>as well</em>, and follow both back and forth, back and forth, back and forth ... until eventually it decides there's an infinite loop and throws the user an error.</p>
<p>So instead, you have to resort to all sorts of <a href="http://getluky.net/2010/12/14/301-redirects-cannot-be-undon/">confusing workarounds to keep everything working</a>.</p>
<p>But the browser <em>knows</em> something is wrong, and it's not the user's fault, it's bad data in the browser cache (depending how you look at it, that's the web developers fault, but a browser that doesn't cut developers some slack won't get very far rendering real-world HTML...)</p>
<p style="padding-left: 30px;"><strong><span style="color: #008000;">&rarr; Suggestion 2: When an infinite redirect is detected, try skipping the cache.</span></strong></p>
<p style="padding-left: 30px;"><span style="color: #800000;">&rarr; Filed as <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=696646">Mozilla Bugzilla Bug 696646</a></span></p>
</div>
<h2>Escaping the Trap</h2>
<p>The first hurdle for developers is that it's not obvious what the hell is going on, even when they're just testing out a few different URL schemes in their development copy. I think <a href="http://forums.mozillazine.org/viewtopic.php?f=38&amp;t=621842">whatever unacceptable language this developer used on MozillaZine</a> probably sums up the feeling most of us had when first encountering this invisible magic.</p>
<p>But even once you've figured it out, it's not that obvious what to do about it - <a href="http://www.sadev.co.za/content/redirected-down-one-way-clearing-internet-explorer-host-redirect-cache">do you do a deep clean of the browser's cache every time something's not quite right?</a> I see a sledgehammer approaching a nut. And if you've released your mistake to a non-technical user, perhaps on a preview version of the site, you're going to have to talk them through this process as well.</p>
<p>Caching is a pain sometimes, but it's been around for a long time, and we have UIs for dealing with it. The most common of these is the <a href="http://en.wikipedia.org/wiki/Wikipedia:Bypass_your_cache">"hard refresh"</a> - hold down Ctrl, or Shift, and hit the reload button or keyboard shortcut, and the cache is by-passed completely and content is reloaded. Brilliant. Oh, but it only reloads the <em>page you're looking at</em>, not the URI you originally requested, so it's useless for cached redirects.</p>
<p style="padding-left: 30px;"><span style="color: #008000;"><strong>&rarr; Suggestion 3: Make a "hard refresh" request the original URI navigated to, not the one currently being viewed.</strong></span></p>
<p style="padding-left: 30px;"><span style="color: #800000;">&rarr; Filed as <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=696650">Mozilla Bugzilla <abbr title="Request For Enhancement">RFE</abbr> 696650</a></span></p>
<h2>Doing the Right Thing</h2>
<p>Apparently, what we're all doing wrong, as developers, is not sending appropriate cache headers along with the 301 status code. If you're writing, say, a PHP script, and using <tt>header('Location: foo')</tt>, you should probably be doing it in some kind of wrapper function, so you can make up your own default expiry, and make sure you send a whole bunch of control headers whenever you redirect.</p>
<p>But a lot of redirects are not written in a rich server-side scripting language, they use specific tools built into the web server, like Apache's incredibly powerful mod_rewrite. I just checked, and <a href="http://httpd.apache.org/docs/trunk/mod/mod_rewrite.html">there is no function in the latest version of mod_rewrite</a> that lets you control caching, or send arbitrary HTTP headers, when it generates a 301 response. I'm sure there are ways of stringing together a whole bunch of Apache directives to achieve the desired effect, but it would take me a while to come up with the right combination, and it would look a mess.</p>
<p style="padding-left: 30px;"><span style="color: #008000;"><strong>&rarr; Suggestion 4: Web server redirect functions, such as mod_rewrite, should build in control over caching headers.</strong></span></p>
<p style="padding-left: 30px;"><span style="color: #800000;">&rarr; Posted to <a href="http://httpd.apache.org/lists.html#http-dev">Apache HTTPD dev list</a></span></p>
<h2>Inconsistent Behaviour</h2>
<p>Finally, let's assume we're using a tool for our redirects that lets us control the cache headers, and we don't have any old immortal redirects to avoid infinite loops with. All is fine, and the browsers will do the right thing and save us some network traffic, right?</p>
<p>Well, according to <a href="http://www.stevesouders.com/blog/2010/07/23/redirect-caching-deep-dive/">this test result table from someone who is<em> in favour</em> of redirect caching</a>, probably not. Like everything out there in web land, you have to deal with every browser handling things just a little bit differently. Combinations which <em>should</em> work might or might not actually be reliable across browsers.</p>
<p>Even client-side caching of standard resources is, as <a href="http://blogs.atlassian.com/developer/2007/07/when_caching_is_not_caching.html#comment-109589">one comment I just came upon puts it</a> "a bit of a black art"</p>
<p style="padding-left: 30px;"><span style="color: #008000;"><strong>&rarr; Suggestion 5: Somebody needs to work out what the most common scenarios for redirect caching actually are, and how to achieve them.</strong></span></p>
<h2>Conclusion</h2>
<p>My gut instinct the first, second, and twelfth times I ran up against redirect caching was that it was stupid, and the browser developers should take it out immediately. But I do see that it makes sense, and could save a lot of unnecessary network traffic and server load. So instead, all I ask is that people don't brush the problems off with "oh, well, you should have known what <em>permanent</em> means", and look at how to make redirect caching work in the real world.</p>
<hr />
Update 2011-10-23: Bugs / <abbr title="Request For Enhancement">RFE</abbr>s filed against Firefox and Apache. I am less certain of how to test and report other browsers' behaviour.</p>
]]></content:encoded>
			<wfw:commentRss>http://rwec.co.uk/blog/2011/10/cached-redirects-considered-harmful/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Why I Hate Shopping</title>
		<link>http://rwec.co.uk/blog/2011/06/why-i-hate-shopping/</link>
		<comments>http://rwec.co.uk/blog/2011/06/why-i-hate-shopping/#comments</comments>
		<pubDate>Fri, 17 Jun 2011 12:58:36 +0000</pubDate>
		<dc:creator>Rowan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[advertising]]></category>
		<category><![CDATA[choice]]></category>
		<category><![CDATA[compromise]]></category>
		<category><![CDATA[consumerism]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[shopping]]></category>

		<guid isPermaLink="false">http://rwec.co.uk/blog/?p=197</guid>
		<description><![CDATA[I've never been very good at spending money. I'm lucky enough to have always had money to spend, but it often ends up sitting in the bank, unused. It's not that I don't know what I want or need to spend it on - for a geek, I have remarkably few shiny gadgets - but [...]]]></description>
			<content:encoded><![CDATA[<p>I've never been very good at spending money. I'm lucky enough to have always had money to spend, but it often ends up sitting in the bank, unused. It's not that I don't know what I want or need to spend it on - for a geek, I have remarkably few shiny gadgets - but simply that <strong>I don't like shopping</strong>.</p>
<p><span id="more-197"></span></p>
<p>When I was little, I used to like choosing things like digital watches, or my parents' new fridge or washing machine. I would go round all the shops, making notes on the candidates to be bought - I found some of them when I was clearing out a cupboard recently. I think it was my attempt to introduce a kind of scientific order into the chaos that is modern shopping - I guess you could call it the "Money Supermarket" method.</p>
<p>My least favourite kind of shopping is shoe shopping, closely followed by clothes shopping, both of which utterly defy this "scientific" analysis - other than price, there aren't any variables you can line up in a comparison grid. A pair of shoes either fits or not, as does a pair of trousers (judging by the stock in the shops, I must be the skinniest man in Eastbourne...); the rest is down to personal opinion - the problem being that my opinion when looking at a t-shirt in a shop is generally "oh, look, it's a t-shirt", which doesn't get me very far.</p>
<p>I have managed by a series of flukes never to buy a mobile phone, and consequently baffle my friends by always having out-dated and under-powered phones; and what kind of a geek uses his netbook as his only PC for 7 months simply because he hasn't got round to buying or building a replacement desktop? For one thing, there are simply <em>too many</em> variables to analyse, and I don't have the enthusiasm I had when I was 13 to sit there tabulating them all. But on top of that, the sheer quantity of hype and advertising around mobile phones makes me want to run away - the very idea of walking into Phones4U gives me the shudders, such is the unintended effect of their relentless marketing.</p>
<p>I have a general theory that <strong>everything in life is ultimately about compromise</strong> (well, probably not quite everything; I'm willing to compromise on that point...), and modern shopping is no exception. Generally, unless you are the richest person in the world, you will not be able to order something tailor-made to your exact requirements; but (in the Western / Developed World at least) you'll probably have a fair few options to choose from. But that means there's going to be pros and cons to weigh up, and ultimately you have to decide which compromise you like best or hate least. </p>
<p>Trying to turn all that hype, and all those compromises into a quantifiable, logical system - which is, most of the time, how my mind works - is tiring, and ultimately futile: eventually, you just have to plump for something, and live with it. Which is why I still haven't bought a smartphone.</p>
]]></content:encoded>
			<wfw:commentRss>http://rwec.co.uk/blog/2011/06/why-i-hate-shopping/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Top 10 Things Not To Do with Links</title>
		<link>http://rwec.co.uk/blog/2011/06/top-10-bad-web-links/</link>
		<comments>http://rwec.co.uk/blog/2011/06/top-10-bad-web-links/#comments</comments>
		<pubDate>Sun, 12 Jun 2011 19:06:02 +0000</pubDate>
		<dc:creator>Rowan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[hyperlinks]]></category>
		<category><![CDATA[link]]></category>
		<category><![CDATA[links]]></category>
		<category><![CDATA[pet hates]]></category>
		<category><![CDATA[rant]]></category>
		<category><![CDATA[satire]]></category>
		<category><![CDATA[top 10]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://rwec.co.uk/blog/?p=185</guid>
		<description><![CDATA["Hyperlinks" are probably the single most important thing on the World Wide Web. They are, affter all, what the "web" is woven from; they are what makes it something more than the document retrieval systems that came before.

And yet, some people seem to do their utmost to make all the hyperlinks in their documents entirely useless. Here are my Top 10 Things Not To Do with Links...]]></description>
			<content:encoded><![CDATA[<p>"Hyperlinks" are probably the single most important thing on the World Wide Web. They are, affter all, what the "web" is woven from; they are what makes it something more than the document retrieval systems that came before.</p>
<p>And yet, some people seem to do their utmost to make all the hyperlinks in their documents entirely useless. Here are my Top 10 Things Not To Do with Links...<br />
<span id="more-185"></span></p>
<div id="bad_link_demo">
<ol>
<li>Don't have any. Refer to other websites by name, mention other blog posts, but leave your article entirely unlinked to the outside world, as though you've scanned it in from a typewriter.</li>
<li>Don't include any links or footnote markers in the main text, but at the end of the page have a long "useful links" section, sorted alphabetically by URL.</li>
<li>Only ever link to homepages of other sites, never the article you're talking about. It's also important not to mention the exact title of the article, or your readers would be able to find it too easily.</li>
<li class="invisible_links">Make your links <a href="http://www.thisamericanlife.org/radio-archives/episode/178/Superpowers">invisible</a> until hovered over, so that your article becomes a <a href="http://www.kingdomofloathing.com/">point-and-click adventure</a> where readers have to guess where links <em>might</em> be.</li>
<li class="fading_links">When hovered over, make your links <a href="http://www.flickr.com/photos/debbcollins/5021251012/">fade into the background</a>, to test your readers memory skills.</li>
<li>Automatically link random <a href="http://rwec.co.uk/blog/tag/language">words</a> in the middle of unrelated sentences <a href="http://rwec.co.uk/q/wherefore">because</a> it's good for <abbr title="Search Engine Optimisation">SEO</abbr>. Make these look identical to <a href="http://www.positioniseverything.net/explorer.html">genuinely useful links</a> so that readers learn to ignore all inline links on your site (see point 1).</li>
<li>Use advertising software that automatically <a class="irritating_advert" href="http://www.youtube.com/watch?v=5pidokakU4I">picks<span class="dodgy_popup_content"><img src="http://rwec.co.uk/media/blog/link-thumbs/picks.png" alt="" /></span></a> keywords out of your text to <a class="irritating_advert" href="http://www.travisperkins.co.uk/">turn<span class="dodgy_popup_content"><img src="http://rwec.co.uk/media/blog/link-thumbs/turn.jpeg" alt="" /></span></a> into fake links which pop up an advert on top of the whole page when hovered over.</li>
<li class="link_thumbs">Install code that pops up a "preview" of any link the reader hovers over. This should preferably be easy to activate <span class="dodgy_popup_trigger">by mistake, <a href="http://tlipsum.appspot.com/">incredibly slow to load</a><span class="dodgy_popup_loading"><img title="P L E A S E    W A I T" src="http://rwec.co.uk/media/blog/link-thumbs/loading.gif" alt="P L E A S E    W A I T" /></span><span class="dodgy_popup_content"><img src="http://rwec.co.uk/media/blog/link-thumbs/essay.png" alt="Sorry, what's alt text for? I'm told I have to have some!" /></span>, and too</span> small to be in any way useful.</li>
<li>In a sentence which refers to a particular article, put the link not around the article reference, but around other parts of the sentence, crossing between <a href="http://specgram.com/">clauses so that the link</a> text makes no grammatical sense.</li>
<li><a class="external text" rel="nofollow" href="http://en.wikipedia.org/w/wiki.phtml?title=Hyperlink&amp;oldid=8089525">Link</a> <a class="mw-redirect" title="Every" href="http://en.wikipedia.org//wiki/Every">every</a> <a title="Word" href="http://en.wikipedia.org/wiki/Word">word</a> <a class="mw-redirect" title="In" href="http://en.wikipedia.org/wiki/In">in</a> <a class="mw-redirect" title="The" href="http://en.wikipedia.org/wiki/The">the</a> <a title="Text" href="http://en.wikipedia.org/wiki/Text">text</a> <a class="mw-redirect" title="To" href="http://en.wikipedia.org/wiki/To">to</a> <a title="A" href="http://en.wikipedia.org/wiki/A">a</a> <a title="Different" href="http://en.wikipedia.org/wiki/Different">different</a> <a title="Page" href="http://en.wikipedia.org/wiki/Page">page</a>, <a class="mw-redirect" title="Making" href="http://en.wikipedia.org/wiki/Making">making</a> <a title="Sentences" href="http://en.wikipedia.org/wiki/Sentences">sentences</a> <a class="mw-redirect" title="Unreadable" href="http://en.wikipedia.org/wiki/Unreadable">unreadable</a>.</li>
</ol>
</div>
<p><script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" type="text/javascript"></script> </p>
<p><script type="text/javascript">
jQuery(function(){
	jQuery('#bad_link_demo a.irritating_advert')
		.bind('mouseenter', function() {
			jQuery(this).find('.dodgy_popup_content').show();
		} )
		.bind('mouseleave', function() {
			jQuery(this).find('.dodgy_popup_content').hide();
		} );
	var dodgy_timeout;
	jQuery('#bad_link_demo .dodgy_popup_trigger')
		.bind('mouseenter', function() {
			jQuery(this).find('.dodgy_popup_loading').show();
			var $this = jQuery(this);
			dodgy_timeout = setTimeout( function()
			{
				$this.find('.dodgy_popup_loading').hide();
				$this.find('.dodgy_popup_content').show();
			}, Math.floor(Math.random()*25000) + 5000 );
		} )
		.bind('mouseleave', function() {
			clearTimeout(dodgy_timeout);
			$(this).find('.dodgy_popup_loading').hide();
			$(this).find('.dodgy_popup_content').hide();
		} );
});</script></p>
]]></content:encoded>
			<wfw:commentRss>http://rwec.co.uk/blog/2011/06/top-10-bad-web-links/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>&#8220;A Permanent Cleggocracy&#8221; &#8211; Or Not: Dissecting an Anti-AV Cartoon</title>
		<link>http://rwec.co.uk/blog/2011/04/dissecting-a-no2av-cartoon/</link>
		<comments>http://rwec.co.uk/blog/2011/04/dissecting-a-no2av-cartoon/#comments</comments>
		<pubDate>Sat, 09 Apr 2011 15:52:21 +0000</pubDate>
		<dc:creator>Rowan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Alternative Vote]]></category>
		<category><![CDATA[AV]]></category>
		<category><![CDATA[cartoon]]></category>
		<category><![CDATA[cleggocracy]]></category>
		<category><![CDATA[democracy]]></category>
		<category><![CDATA[fud]]></category>
		<category><![CDATA[politics]]></category>
		<category><![CDATA[voting]]></category>
		<category><![CDATA[voting reform]]></category>
		<category><![CDATA[yes2av]]></category>

		<guid isPermaLink="false">http://rwec.co.uk/blog/?p=172</guid>
		<description><![CDATA[This week, the first campaign leaflets started coming through for the Borough Council Elections, and, more interestingly, the voting system referendum. One of the Conservative "newsletters" featured this eye-catching cartoon, headlined "A.V. = A Permanent Cleggocracy". I was immediately sceptical, but the more I looked at it, the more I realised how utterly wrong this [...]]]></description>
			<content:encoded><![CDATA[<p>This week, the first campaign leaflets started coming through for the Borough Council Elections, and, more interestingly, the voting system referendum. One of the Conservative "newsletters" featured this eye-catching cartoon, headlined "A.V. = A Permanent Cleggocracy". I was immediately sceptical, but the more I looked at it, the more I realised how utterly wrong this cartoon is.</p>
<p><a href="http://rwec.co.uk/media/blog/cleggocracy-full.jpeg"><img style="padding: 0;" title="Source: intouch with Old Town Ward, Eastbourne Conservative Party; click for larger image" src="http://rwec.co.uk/media/blog/cleggocracy-overview.jpeg" alt="A.V. = A Permanent Cleggocracy cartoon from Conservative Election leaflet" /></a><br />
<span id="more-172"></span></p>
<h2>Cleggocracy</h2>
<p>Firstly, let's summarise this cartoon: "Cleggocracy" is depicted as a Frankenstein's monster, with Cameron, Milliband, and someone I don't recognise in the pocket of a giant Nick Clegg. The message is that if we say Yes to AV, you'll get messy, unpopular, Lib Dem coalition governments; if we say No, our proud democratic traditions will survive, and next time we'll be sensible and vote the Tories in properly. At least, I think that's what it's trying to say...</p>
<h2>Student Fee Rises are Clegg's Fault</h2>
<p><img class="alignright" src="/media/blog/cleggocracy-fees.jpeg" alt="" width="200" height="103" /><br />
This is what first caught my eye: among the discarded sheets of paper (why are they discarded and torn anyway?) representing the policies the "Cleggocracy" of AV will bring in is "More Student Fees Rises". So, according to this cartoon <strong>a strong Tory government would not have raised fees</strong> - that's Clegg's fault for forcing a coalition on them, and something we can expect more of under AV. Correct me if I'm wrong, but isn't that <strong>exactly the opposite of true</strong>?</p>
<h2>Parliamentary Democracy requires a Strong Government</h2>
<p><img class="alignright" src="/media/blog/cleggocracy-gravestone.jpeg" alt="" width="150" height="204" /><br />
The next thing I found myself questioning was the gravestone, which is labelled "Parliamentary Democracy R.I.P. 2011". Now, the rest of the cartoon appears to be arguing that what this country needs is a strong, Tory, government, and none of this namby-pamby coalition guff. So why is <em>Parliamentary</em> Democracy, which surely implies consensus and compromise, being mourned? Presumably, this has slipped in from a different cartoon, about the perils of electing a government by Proportional Representation - a very different question, and not one being asked by this referendum.</p>
<h2>Ramsay Who?</h2>
<p><img class="alignright" src="/media/blog/cleggocracy-ramsay.jpeg" alt="" width="200" height="96" /><br />
The piece of paper that makes least sense to me is the one on the far right, which is headed "Ramsay MacDonald Supported AV, 1931 - THAT SAYS IT ALL!" Does it? Personally, I know nothing about Ramsay MacDonald, or the politics of 1931 - like most voters, I wasn't born at the time - and I'm not sure I need or want to.</p>
<p>Of course, the cheap tit for tat response would be "Nick Griffin Opposes AV - <em>That</em> Says It All!". Oh, and Mussolini made the trains run on time. Sorry, what were we talking about again?</p>
<h2>Loathed Lib Dems</h2>
<p><img class="alignright" src="/media/blog/cleggocracy-policy-book.jpeg" alt="" width="150" height="117" /></p>
<p>The Nick Clegg monster in the cartoon is holding a book titled "Policies the British People Loathe" - clearly everyone reading the cartoon is assumed to vote Tory, and loathe the Lib Dems. This leaflet was distributed in Eastbourne, which has indeed <a title="Parliamentary results, nicely laid out on Wikipedia" href="http://en.wikipedia.org/wiki/Eastbourne_(UK_Parliament_constituency)">had Tory MPs for 98 of the last 100 years</a>; and the County Council is under Conservative control.</p>
<p>But at the 2010 general election, <a title="BBC 2010 Election Coverage" href="http://news.bbc.co.uk/nol/shared/election2010/results/constituency/b56.stm">the Lib Dem candidate took the seat, with 47% of the vote</a>. And the Borough Council ward of Old Town, to which this leaflet was targeted, is<a title="Eastbourne Borough Council - Old Town Ward" href="http://www.eastbourne.gov.uk/council/councillors/wards/?Ward=6"> currently represented entirely by Lib Dem councillors</a>, and has been even under Conservative majorities. So who exactly are the staunch Tory-supporting Lib Dem-loathing voters being targeted here?</p>
<h2>Can you have a Positive No Campaign?</h2>
<p>This cartoon may not be as disingenuous as the <a href="http://www.newstatesman.com/blogs/steven-baxter/2011/02/voting-system-baby-gets">notorious "vote no or the baby gets it" posters</a>, but it doesn't stand up to much scrutiny. In the software world, companies like Microsoft are often accused of using "FUD" to discredit their competitors - not outright lies, nothing that could easily be called libellous, but enough to spread Fear, Uncertainty, &amp; Doubt. Notably, FUD works best if you are trying to maintain the status quo, as people's natural fear of change acts in your favour. But it does rather suggest a lack of confidence in your own advantages.</p>
<p>So, philosophical question time: Is negative campaigning inevitable if you are campaigning for a No vote in a referendum?</p>
<hr />
<p>PS: Somebody posted <a href="http://twitpic.com/410ag5">this cartoon of a filled-out AV ballot paper</a> on Twitter. It makes no sense, because <strong>you don't have to rank every candidate</strong>. So in reality, it would look <a href="http://imm.io/4OQK">more like this (with and without AV)</a>. Either the person that made that cartoon didn't understand how AV works, or it's more FUD.</p>
]]></content:encoded>
			<wfw:commentRss>http://rwec.co.uk/blog/2011/04/dissecting-a-no2av-cartoon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Goodbye Burgess Hill!</title>
		<link>http://rwec.co.uk/blog/2011/01/goodbye-burgess-hill/</link>
		<comments>http://rwec.co.uk/blog/2011/01/goodbye-burgess-hill/#comments</comments>
		<pubDate>Fri, 28 Jan 2011 17:40:01 +0000</pubDate>
		<dc:creator>Rowan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://rwec.co.uk/blog/?p=167</guid>
		<description><![CDATA[After 5 years of the slow and often stressful commute, my office finally moves from Burgess Hill to Brighton this weekend.. So, it's Goodbye Burgess Hill! Goodbye to the 07:57 Southern Service to London Victoria — and goodbye to the crowded 08:18 when I missed it! Goodbye to "the delayed 18:09 service" home, and the [...]]]></description>
			<content:encoded><![CDATA[<p>After 5 years of the slow and often stressful commute, my office finally moves from Burgess Hill to Brighton this weekend..</p>
<p>So, it's <strong>Goodbye Burgess Hill</strong>!</p>
<ul>
<li>Goodbye to the 07:57 Southern Service to London Victoria — and goodbye to the crowded 08:18 when I missed it!</li>
<li>Goodbye to "the delayed 18:09 service" home, and the confusing service to Seaford, Eastbourne, and Ore</li>
<li>Goodbye "customers for Glynde, Berwick, Cooksbridge, or Plumpton", who <em>weren't</em> always travelling in the correct part of the train.</li>
<li>Goodbye to Wivelsfield station, and the steep walk into town.</li>
<li>Goodbye to the young families of Noel Rise, who greeted me each morning — and who grew up before my eyes!</li>
<li>Goodbye to the headless eagle, the milk depot, and the dewy spider-webs on the fence — but goodbye too to the constant digging of the road!</li>
<li>Goodbye to the Martletts, and Market Place</li>
<li>Goodbye to the sandwich shops, the greengrocer's stall, and the 50p bookshop</li>
<li>Goodbye to the Post Office, and churchyard</li>
<li>Goodbye to the park, with its abstract modern sculpture, its muddy fields, and its basketball hoop</li>
<li>Goodbye to the Railway, the Jacob's, &amp; the Potter's</li>
<li>Goodbye Disco Carpets, and hairdressers downstairs</li>
<li>Goodbye to you all - maybe I'll come and visit someday. But then again, maybe not. <tt>;)</tt></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://rwec.co.uk/blog/2011/01/goodbye-burgess-hill/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Internet Splinternet &#8211; an Optimist&#8217;s IPv6 Daydream</title>
		<link>http://rwec.co.uk/blog/2011/01/internet-splinternet-an-optimists-ipv6-daydream/</link>
		<comments>http://rwec.co.uk/blog/2011/01/internet-splinternet-an-optimists-ipv6-daydream/#comments</comments>
		<pubDate>Fri, 14 Jan 2011 22:00:32 +0000</pubDate>
		<dc:creator>Rowan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[ipv4]]></category>
		<category><![CDATA[ipv6]]></category>
		<category><![CDATA[nat]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[npu]]></category>
		<category><![CDATA[optimistic]]></category>
		<category><![CDATA[prediction]]></category>
		<category><![CDATA[splinternet]]></category>

		<guid isPermaLink="false">http://rwec.co.uk/blog/?p=163</guid>
		<description><![CDATA[I was reading an article recently about the challenges in getting IPv6 up and running - before we finally run out of IPv4 addresses, and can't plug anything else into the internet. One big change would be the end of address sharing - NAT - since there'll be enough IPv6 addresses for every computer in [...]]]></description>
			<content:encoded><![CDATA[<p>I was reading an article recently <a href="http://arstechnica.com/business/news/2010/09/there-is-no-plan-b-why-the-ipv4-to-ipv6-transition-will-be-ugly.ars/">about the challenges in getting IPv6 up and running</a> - before we finally run out of IPv4 addresses, and can't plug anything else into the internet. One big change would be the end of address sharing - <abbr title="Network Address Translation">NAT</abbr> - since there'll be enough IPv6 addresses for every computer in your house to have a globally unique address. NAT is annoying, and in general we'll be better off without it, but if every device is visible to the whole internet, there are some interesting implications which will only be advantages if we work out how to harness them. So here is my optimist's guide to next year's internet...</p>
<p><span id="more-163"></span></p>
<h2>Good Riddance</h2>
<p>The internet was originally designed to have an address for everything that was connected to it - if you ask a remote server for something, it sends the response back to your address; if you want to make something available, you advertise your address, and so on. But that didn't scale very well, so a whole host of protocols and programs have sprung up for sharing one public address between maybe dozens of computers, and handling the connections going in and out. This is fiddly, and it could get even worse - the pessimists predict that instead of IPv6, we'll end up with <abbr title="Internet Service Providers">ISPs</abbr> sharing IP adresses between multiple broadband connections, using <em>yet more</em> NAT. Not only will your Skype client be asking your router for a "pinhole" for incoming data, your router will have to ask your ISP for a pinhole through to the "real" internet.</p>
<h2>Firewall on a Chip</h2>
<p>So, giving everything an IPv6 address will make everything easier, right?</p>
<p>Well... it turns out, the very things that make NAT a nuisance have a rather handy side-effect: ne'er-do-wells can't send random data to your laptop trying to hack in and steal that text file you store all your passwords in. Your router has to look at packets to determine which computer they're for anyway, so it ends up acting like a simple firewall without really trying. And when we connect to a trusted network, we expect it to provide this basic insulation from the wider internet.</p>
<p>Wi-fi has already made this assumption out of date - devices like smartphones, netbooks, and tablets are more or less designed to connect to untrusted networks; even if you never use public hotspots, you don't know how well the office network you've just borrowed the WPA key for is secured. So this is probably a good time to stop trusting routers to protect us.</p>
<p>The alternative is that every computer runs a "personal firewall" - a program that checks all traffic on the machine, both inbound and outbound. At the moment, this means an application you install, which clogs up your CPU and memory, slowing down your machine. So maybe the next generation of devices won't just have a simple network controller, they'll have a fully flexible Network Processing Unit (NPU) - a firewall on a chip, with its own memory, perhaps a bit of solid state storage for accumulated rules, and so on. The CPU won't be taken up with traffic analysis; the OS authors won't have to implement an entire firewall, just drivers for communicating with the NPU; and yet you'll be carrying your own firewall whatever network you connect to.</p>
<h2>Splinternet</h2>
<p>Now if every device (eventually) has an NPU, what other assumptions can we challenge? First up is that other hallmark of the "trusted" network, the notion of "local" resources. In future, rather than relying on topology ("it's on the same router therefore it's local") trust decisions will have to be made explicitly - the VPN will be more important than the LAN. If you bring your laptop to a meeting, you'll only be granted access to the internet, and maybe to send jobs to a nearby printer; but you'll still have access to your shared server back at HQ (if it's not all "in the cloud" anyway). The devices in question will each have some authentication that knows whether you should be allowed in or not.</p>
<p>The key thing about this is that it is <em>de-centralized</em> - devices would be able to talk to each other in all sorts of ways, using central servers only as brokers for authentication. Devices could share - or even trade - spare resources such as bandwidth, or even CPU. A laptop in a neighbouring room might be able to access a wi-fi hotspot that's out of your range, or be physically closer to a file server than you. (Just make sure you're encrypting all your traffic - another job for the NPU perhaps?)</p>
<h2>HTTP over BitTorrent</h2>
<p>Now at this point anyone who actually knows how all this works will no doubt be champing at the bit to tell me why everything I've written is outrageous nonsense (and everyone else will have got bored and stopped reading), so I'll just mention one last crazy idea.</p>
<p>Connecting your smartphone to your next-door neighbour's laptop is all very well, but it's hardly going to be a fast connection is it? On the other hand, what if you're both trying to access the same content - wouldn't it be great if you could somehow access each other's cached data?</p>
<p>Obviously you've got to know that the data is kosher, but imagine an HTTP/2.0 response of "333 Use This P2P Hash", or handing your browser a <tt>.torrent</tt> file. This wouldn't have to be limited to huge files, either - the common resources of a website (JS, CSS, "chrome" images, etc) could be bundled up into one torrent, like the episodes of a series, for you to grab and extract what you need.</p>
<p>Maybe all this is a bit far-fetched, but unless people start working on this next generation of "super-distributed internet" soon, we're going to be stuck in the "IPv6 is more pain than gain" loop for some time to come...</p>
]]></content:encoded>
			<wfw:commentRss>http://rwec.co.uk/blog/2011/01/internet-splinternet-an-optimists-ipv6-daydream/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Top 3 LibreOffice Wishes</title>
		<link>http://rwec.co.uk/blog/2010/09/my-top-3-libreoffice-wishes/</link>
		<comments>http://rwec.co.uk/blog/2010/09/my-top-3-libreoffice-wishes/#comments</comments>
		<pubDate>Tue, 28 Sep 2010 21:53:37 +0000</pubDate>
		<dc:creator>Rowan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bugbears]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[libreoffice]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[openoffice]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://rwec.co.uk/blog/?p=152</guid>
		<description><![CDATA[So, OpenOffice.org is to be forked from Oracle's control to the new "developer-friendly" Document Foundation. Let's hope this will give "LibreOffice" the boost it needs to really gain some polish. So here are my top 3 personal bug-bears that shouldn't be too hard to fix. Pretty please? The Installer The first screen of the Windows [...]]]></description>
			<content:encoded><![CDATA[<p>So, <a href="http://www.theregister.co.uk/2010/09/28/openoffice_independence_from_oracle/">OpenOffice.org is to be forked from Oracle's control</a> to the new "developer-friendly" <a href="http://www.documentfoundation.org">Document Foundation</a>. Let's hope this will give "LibreOffice" the boost it needs to really gain some polish. So here are my top 3 personal bug-bears that shouldn't be too hard to fix. Pretty please?</p>
<p><span id="more-152"></span></p>
<h2>The Installer</h2>
<p><img style="float: right;" src="/media/blog/openoffice-installer.png" alt="" title="The first screen of the OpenOffice.org 3.2 installer on Windows 7" /></p>
<p>The first screen of the Windows installer for OpenOffice.org asks a question which most users won't know how to answer, and gives them the wrong default. </p>
<p>It asks the user where to unpack the <em>temporary</em> files needed by the installer - files which the user should never need to see - and defaults to unpacking them <em>on the user's desktop</em>. </p>
<p>There are several things wrong with this dialog:</p>
<ol>
<li>
	<strong>It doesn't tell you why you'd ever change it.</strong> The way the dialog is worded, it sounds like the product itself will live in the selected location. But in actual fact, the only situations I can think of where you would need to change it are if you have limitted space on a particular disk partition, or an unusual permission setup. The default wording should reflect this: </p>
<blockquote><p>"The LibreOffice installer needs to unpack some temporary files to proceed. This will require roughly <strong>X</strong>MB of space. If the location shown below is not appropriate, please specify an alternative location."</p></blockquote>
</li>
<li>
	<strong>The desktop is not a temp folder.</strong> The "desktop cleanup wizard" is one of those bits of Windows that should never have been necessary, and it is abuses like this that mean it is. Quite simply, the default location for <em>temporary</em> installation files should be the <em>temp</em> directory provided by Windows.
</li>
<li>
	More subtly, <strong>these files aren't actually cleaned up</strong>. This is possibly the reason (or, excuse) for unpacking to the desktop rather than a temp folder: a successful installation of OpenOffice.org currently leaves a folder of unpacked installation files lying around, and it's up to the user to notice and delete these. I can only imagine that there are some problems with the installation executable deleting itself, but surely a stub could be placed in the permanent install directory to clean up the files once everything else has finished?
</li>
</ol>
<h2>The Help Assistant</h2>
<p><img style="float: right;" src="/media/blog/openoffice-help-popup.png" alt="" title="The OpenOffice.org Help Assistant: Not very helpful." /></p>
<p>The OpenOffice.org Help Assistant cunningly implements the least popular part of Microsoft's infamous "Office Assistant" feature - the cutesy cartoon graphic that pops up while you're working - without implementing its actual purpose - showing context-sensitive tips with a minimum of user interaction, and without using up too much screen space.</p>
<p>If the light-bulb graphic pops up while you're typing in a Writer document, you know that the help system is trying to tell you something. But you know absolutely nothing else - there is no polite speech bubble, no hint if you mouse over the icon, <em>nothing at all</em> until you click the icon <em>at which point a full-size help window appears</em> (and, in my experience, appears slowly). This is, frankly, worse than useless.</p>
<p>The simplest solution to this, frankly, is just to remove the feature. But if they really want this feature, then there is a small change that would change it from completely pointless to actually quite helpful: <strong>show a one-line summary of what the tip is actually about, <em>before</em> you click the graphic</strong>!</p>
<h2>Conditional Formatting in Spreadsheets</h2>
<p><img style="float: right;" src="/media/blog/openoffice-conditional-formatting.png" alt="" title="The OpenOffice.org Calc Conditional Formatting dialog" /></p>
<p>This one isn't such a big deal, really, but it's one of those little details that puts people off switching from, ahem, <em title="Microsoft Excel">rival applications</em>. It's also one of those cases where a bit of pragmatism is required.</p>
<p>Basically, if you want to have the formatting of cells in a spreadsheet in OpenOffice.org, you have to specify a <em>named style</em> for each rule.</p>
<p>Now, don't get me wrong, the style manager is one of the things I really like about OpenOffice.org when I'm working in Writer - to me, it makes all the difference between a "rich text editor" and a "word processor", and is much better than the versions of MS Word I've used. I can also see the reasoning behind <em>allowing</em> any styling to be applied by the conditional formatting, and the interface makes it easy to add a new style if you need to.</p>
<p>But 99% of the time, people will want to change two aspects of the matched cells: <em>the text colour</em> and <em>the background colour</em>. This is all most spreadsheet applications <em>allow</em> you to change, but they allow you to change them <em>really easily</em>. So, I'm happy for a new style to be created behind the scenes, but can I please have two little boxes labelled "Text colour" and "Background colour"?</p>
<h2>Yeah, I know...</h2>
<p>It's open source, I should</p>
<ol>
<li>Check the issue tracker for previous discussion of these issues.</li>
<li>Download the source code and fix them myself.</li>
</ol>
<p>But, y'know, I have to go and make some dinner now. Nobody's perfect, eh?</p>
]]></content:encoded>
			<wfw:commentRss>http://rwec.co.uk/blog/2010/09/my-top-3-libreoffice-wishes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wherefore does nobody know what wherefore means?</title>
		<link>http://rwec.co.uk/blog/2010/09/wherefore-does-nobody-know-what-wherefore-means/</link>
		<comments>http://rwec.co.uk/blog/2010/09/wherefore-does-nobody-know-what-wherefore-means/#comments</comments>
		<pubDate>Tue, 21 Sep 2010 21:43:27 +0000</pubDate>
		<dc:creator>Rowan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[quotation]]></category>
		<category><![CDATA[shakespeare]]></category>
		<category><![CDATA[snowclone]]></category>
		<category><![CDATA[wherefore]]></category>
		<category><![CDATA[words]]></category>

		<guid isPermaLink="false">http://rwec.co.uk/blog/?p=145</guid>
		<description><![CDATA[O Romeo, Romeo! Wherefore art thou Romeo? Undoubtedly one of the most quoted lines of Shakespeare's Romeo &#38; Juliet. But what's the right answer? If you said "I'm over here!" then you're wrong - not because of where Romeo may or may not be right now, but because that's quite simply not what "wherefore" means. [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>
	O Romeo, Romeo!<br />
	Wherefore art thou Romeo?
</p></blockquote>
<p>Undoubtedly one of the most quoted lines of Shakespeare's <cite>Romeo &amp; Juliet</cite>. But what's the right answer? If you said "I'm over here!" then you're wrong - not because of where Romeo may or may not be right now, but because that's quite simply not what "wherefore" means.</p>
<blockquote><p>
	<strong>wherefore</strong> <tt>(interrogaive adverb)</tt> - for what reason<br />
	- <cite>The Concise Oxford English Dictionary</cite>
</p></blockquote>
<p><span id="more-145"></span></p>
<p>Juliet is not looking around to find her lover, she's despairing that she should have fallen in love with one of her family's sworn enemies: of all the people in all the world, why did he have to turn out to be Romeo Montague?</p>
<blockquote><p>
	What's in a name? That which we call a rose<br />
	By any other name would smell as sweet
</p></blockquote>
<p>So a better answer would be "just <em>because</em>!" or - the answer implied by Shakespeare - "by a mere accident of birth, a whim of the gods".</p>
<h2>So wherefore does everyone get it wrong?</h2>
<p>There must be plenty of people who <em>do</em> know what "wherefore" means, but evidently there are plenty more who don't, and simply guess that "wherefore" is a long-winded way of saying "where". And it's not that illogical a guess, given Shakespeare's use of thoroughly over-the-top words - like "incarnadine", meaning "turn red". If it turned out that "art" or "thou" were being used wrong as well, I guess we shohuldn't be surprised, as it is more or less the same guesswork that lets us understand those.</p>
<blockquote><p>
	 We'll tak a cup of kindness yet,<br />
	 For auld lang syne!
</p></blockquote>
<p>When Richard Dawkins was first pondering the idea of "memes" - self-replicating ideas subject to the same evolutionary forces he had just described in <cite>The Selfish Gene</cite> - he used the line above as an example. There is no line which says "for the sake of auld lang syne", but people continue to sing it. He points out that the <em>sound</em> of people singing "the sake of" drowns out those going straight on to the "auld", meaning the "sake of" meme is dominant, and propogates, while the more correct version cannot compete.</p>
<blockquote><p>
	O Romeo, <strong>Romeo</strong>!<br />
	Wherefore art thou <strong>Romeo</strong>?
</p></blockquote>
<p>Perhaps there is something similar going on with the Shakespeare line. If you put the stress on the last "Romeo", you can highlight the question of identity; but it's somehow not as satisfying a rhythm as stressing the "art", which is then more open to the where = wherefore misinterpretation. And if - as is generally the case - you are quoting the line out of context, the satisfying rhythm is the one that will stick in your mind.</p>
<p>Indeed, considering how few people seem to realise what it means, the line is incredibly widely quoted, suggesting that there is a catchy rhythm to it. It is, in other words, a highly successful meme, but one which has, in order to spread, abandoned its original meaning. It has become so prevalent as a '<a href="http://itre.cis.upenn.edu/~myl/languagelog/archives/000350.html">snowclone</a>' that "wherefore art thou?" could almost be considered to have <em>gained</em> the meaning of "where are you?"</p>
<p><strong>It still annoys me whenever I hear people getting it wrong, though!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://rwec.co.uk/blog/2010/09/wherefore-does-nobody-know-what-wherefore-means/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Without delegation, OpenID is all wrong</title>
		<link>http://rwec.co.uk/blog/2010/08/without-delegation-openid-is-all-wrong/</link>
		<comments>http://rwec.co.uk/blog/2010/08/without-delegation-openid-is-all-wrong/#comments</comments>
		<pubDate>Sun, 15 Aug 2010 18:44:54 +0000</pubDate>
		<dc:creator>Rowan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[delegation]]></category>
		<category><![CDATA[identity]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[OpenID]]></category>
		<category><![CDATA[SSO]]></category>
		<category><![CDATA[supplier lock-in]]></category>

		<guid isPermaLink="false">http://rwec.co.uk/blog/?p=136</guid>
		<description><![CDATA[I really want to like OpenID, but the more I find out about it, the more I begin to hope it fails, so that something better can emerge. The idea, as I originally came upon it, appealed: "you already have identities you can prove are yours, in the form of URLs - why not use [...]]]></description>
			<content:encoded><![CDATA[<p>I really want to like <a href="http://openid.net">OpenID</a>, but the more I find out about it, the more I begin to hope it fails, so that something better can emerge.</p>
<p>The idea, as I originally came upon it, appealed: "you already have identities you can prove are yours, in the form of URLs - why not use them as a universal sign-on?" And obviously, the main URL I control is this one - <a href="http://rwec.co.uk">http://rwec.co.uk</a> - and OpenID allows me to use that identity without having to run my own identity server. This is called <em>delegation</em>, and lets you "delegate" your own URL to another identity (that is, another URL), on a server that's set up to do the OpenID negotiation. </p>
<p>To me, <strong>delegation is the single most appealing feature of OpenID</strong> - if this is to be my "one identity to rule them all", I don't want it vulnerable to supplier lock-in, and the fact that http://rwec.co.uk is my property guarantees me continued control. But when I started looking into the details earlier, I was confused, then dismayed, at how much of a poor relation delegation has become in the OpenID world.</p>
<p><span id="more-136"></span></p>
<p>Now, the "<a href="http://openid.net/get-an-openid/">get an OpenID</a>" page boasts that lots of my existing accounts can be used as OpenID - including Yahoo!, Google, and LiveJournal. "Brilliant,", I thought, "I'm always logged in to Yahoo!, to use Flickr, I can delegate to that."</p>
<p>So, how do you implement delegation? "It's simple," I'm repeatedly told, "you just add 2 link tags to your HTML head!" The <a href="http://openid.net/get-an-openid/">get an OpenID</a> page gives a very brief mention of delegation, as a nice little side-line you might want to play with, and links to <a href="http://www.intertwingly.net/blog/2007/01/03/OpenID-for-non-SuperUsers">this ancient tutorial</a> telling you what link types you need to add. There are two problems with this blog post:</p>
<ol>
<li>An immediate unanswered question is "what do you put in the <em>value</em> of those 2 tags?" - one is evidently the URL you are delegating to, but the other - no clues given.</li>
<li>Less obvious, but even more serious, is that the post is out of date - it describes the tags for OpenID version 1.1, but most services now implement OpenID 2.0, which uses different tags (although the values, it turns out, are much the same).</li>
</ol>
<p>Next, I found a nifty little site called <a href="http://delegatid.com/">Delegatid</a>, which lets you enter an existing OpenID, and generates the HTML for delegating to it. Perfect! Except that when I entered my LiveJournal account, it generated a seemingly invalid http-equiv="X-XRDS-Location" header, and only the OpenID 2.0 links, even though LiveJournal supports OpenID 1.1. Not sure why, not sure who to tell.</p>
<p>But here's the real kicker, <strong>if I delegate to my Yahoo! ID, it doesn't actually delegate</strong> - the headers work fine, I authenticate myself with Yahoo!, and then I'm logged into the site I'm trying to access (the "Relying Party" in the jargon). But <strong>I'm logged in with my Yahoo! ID, not my nice, permanent, lock-in proof URL</strong>. It turns out that <a href="http://stackoverflow.com/questions/826014/how-does-openid-delegation-work-on-the-relying-party-have-the-specs-changed-rece#answer-889803">in OpenID 2.0, Providers don't have to support delegation</a> - they accept the request, but return the ID they have for you, and the delegation acts as nothing more than a URL forwarding system. This is all tied up with the handy way you can enter "yahoo.com" in an OpenID login box, and it will authenticate you - obviously, you're not claiming to <em>own</em> yahoo.com, just that they can negotiate an ID for you.</p>
<p>So it turns out that both my Yahoo! and Google IDs support OpenID 2.0 only (sorry, early adopters, no logins for you!), and don't support delegation; I have to sign up for an account with a random OpenID provider. Of which there are, um, lots, around - I can't find any kind of matrix with even such basic details as "supports OpenID 1.1, supports OpenID 2.0, supports delegation"; there's an <a href="http://openiddirectory.com/">OpenID Directory</a>, but it feels more like an <abbr title="Search Engine Optimisation">SEO</abbr> exercise than an actual resource to help me choose. The <a href="http://spreadopenid.org/provider-comparison/">Spread OpenID Provider Comparison</a> would be promising, but it was <a href="http://spreadopenid.org/2010/01/goodbye/">formally abandoned in January</a>. Nor will the Delegatid tool give me any warning that the delegation I'm setting up is no more use than a 302 redirect - I guess the auto-discovery protocol doesn't handle this either.</p>
<p>And of course, I won't be able to use it <em>instead of</em> my Google account, or my Yahoo! account - they don't accept OpenID, they just provide it, with no delegation, so for them it's just another way of taking over your online life. No thanks.</p>
]]></content:encoded>
			<wfw:commentRss>http://rwec.co.uk/blog/2010/08/without-delegation-openid-is-all-wrong/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

