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.

In theory, this makes perfect sense, but in practice, it causes web developers like me a lot of pain, because nothing “permanent” is actually that 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.(more →)

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 I don’t like shopping.

“Hyperlinks” are probably the single most important thing on the World Wide Web. They are, after 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…

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.

I was reading an article recently1about 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 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…

Undoubtedly one of the most quoted lines of Shakespeare’s Romeo & 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.

wherefore(interrogaive adverb) – for what reason
– The Concise Oxford English Dictionary

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 them as a universal sign-on?” And obviously, the main URL I control is this one – http://rwec.co.uk – and OpenID allows me to use that identity without having to run my own identity server. This is called delegation, 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.

To me, delegation is the single most appealing feature of OpenID – 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.

A recent blog post from my old friend Phil1 discussed some of the gotchas of parameter passing in object-oriented languages – or I suppose specifically in partially OO languages, since the problem in this case was a combination of objects and structs in C#.

It seems to me there is a genuine problem here, beyond programmer fallibility – the old distinction between “pass by value” and “pass by reference” is no longer a useful distinction in such languages, and someone needs to design something better.