A brief history of web versions


Listening to the “Web 3.0: Are We There Yet?” DM Radio broadcast has got me grumbling about the latest version of The Web again. To be fair, it isn’t just a web thing; I get the same urge to scream whenever marketing types start messing about with version numbers. There was some interesting discussion on that DM Radio episode as well, but that’s not what this post is about.

Just to be absolutely clear, The Web does not have A Version. It’s not helpful. Stop it.

Having had a similar moan about Web 2.0 on my internal blog some years ago, I decided to catch up with the latest Web 3.0 hype. One of the first things I found were these Web 3.0 slides. Which really wasn’t a good start, given I disagree with just about everything in them. Since web versions seem to be a participation sport, here’s my web fiction to illustrate:

Web 0.9

Nothing ever starts with version 1 does it?! At this point I think I should apologise for my part in the demise of the internet… my first experience of the internet was when I started university in 1993… sorry about the mess.

Still, contrary to alternative histories, the web didn’t start with media companies being so kind as to push content to users. My recollection is that it started with all content being user generated, whether that was usenet content, or hand crafted HTML content. Businesses weren’t on this version of the web.

Web 1.0

Search. For me that’s what would really be worthy of a new version number. In the beginning the web really was a web, of links. I still like following links to see where the web takes me, hence the stupid number of tabs I have open most of the time, just waiting for a chance to get round to reading them. Even so, being able to find stuff without stumbling across it, or being given a specific URL, is great. Thanks Google… and those other search engines I used back then (maybe they even still exist).

Still plenty of user generated content in Web 1.0. Geocities for example- oh how we’ve moved on. You don’t even need to upgrade to get social networking: Six Degrees and Friends Reunited. Maybe even Friendster if you upgrade to Web 2.0 a bit late.

Oh yes, and businesses begin to get in on the act by inflating a huge bubble. Nice.

Web 2.0

There hasn’t been enough hype up to this point, so the web gets its first version number. Luckily everyone agrees on exactly what Web 2.0 is. If only it was that clear, and I certainly wasn’t the only one who was skeptical. Around the same time, I was also muttering…

Are you a Web 2.0 sceptic?! (27 Jan 2006)

I am.

Why Web 2.0 all of a sudden? Shouldn’t we be on Web 6.1 or something by now?! (No, seriously; from text based, to graphics, to that little Java guy waving at you everywhere, to blinking text, to scripts, to buying stuff, to css, to getting scammed, to PHP, to friends reunited, to the internet2, and all the other stuff I’ve missed. And now we have the Web 2.0? Whatever.)

Sure, technology and business models are still advancing, and smart stuff is happening, but I can’t work out whether the Web 2.0, dare I say hype, is driven by money (so you have a web site, why not do e-business, but hey, you really want to be on-demand don’t you?), techies (my new widget is shinier than yours!) or a combination of both. Will it be the next .com? And what’s planned for Web 3.0?

The  appetite for user generated content is stronger than ever, with more users and more (and easier) ways to share stuff. Much less mucking about with geeky markup… unless you pick the wrong wiki. (I still fail to understand why a inconsistent wiki markup was better than plain old HTML.)

Web 3.0

Now things get even more ridiculous, “we already know what the next development in web technology will be called, we just don’t know what it is yet.

For a while it looked like Web 3.0 might neatly be in 3D, but virtual worlds appear to be well and truly down in the trough of disillusionment now. Another contender is the Semantic Web, but wait a minute a) that already has a name, and b) haven’t we been waiting for that ages already, maybe even before Web 2.0? I guess a nice descriptive name is no reason not to use a meaningless fictitious version number instead!

There are plenty of other features floating around which might make it in to the Web 3.0 version.

Web 4.0

That’s right, we haven’t even reached Web 3.0 yet and there’s already a Web 4.0! (Probably many Web 4.0s!) Maybe we should just skip a few versions!

The graph on Ambiguating the terminology: Web 4.0 is a great illustration of why version numbers don’t make any sense.

The web continuum

So, to recap, the web doesn’t have a version number! Its development is a continuum of evolving technologies. I can see there’s a case for looking at the web’s development from a higher level than each individual component, but wouldn’t more descriptive names be more useful than meaningless versions? Early Web, Dynamic Web, Social Web, Semantic Web, Internet of Things, Mobile Web, Smarter Web, Virtual Web. No? Just as meaningless? Oh well.

Luckily, if you completely disagree with all this ranting, this weblog is fully Web 2.5 enabled, so you can leave your own thoughts below. Why not let me know what version of the web you use and how often you upgrade?!

Advertisement

Home Easy Hacking Wiki


I recently discovered that someone has created a useful looking Home Easy Hacking Wiki to pull together what information there currently is about hacking a range or related home automation hardware. Unfortunately it doesn’t yet answer Jerd’s question about the automatic protocol, so if you’ve got something working, it would be fantastic if you could add a few more details to the wiki.

Hoping to get back to finishing off a Freeduino Home Easy controller before too much longer- I didn’t even get as far as unwrapping the transmitter last time! I’m currently wondering if the Finite State Machine library that Mike used in his latest project would be useful to handle transmitting and receiving from the same controller.

If you’ve done anything like this before, any tips would be most welcome!

Update: maybe the Southampton Hack Day (via Benjie) would be a suitable opportunity to work on this. (4 Sept 2009)

Update: Thanks to Paul’s post I’ve just discovered another page documenting various 433 MHz AM signals, including devices using PT2262/PT2272 encoder/decoder chips, which klik-aan klik-uit uses apparently. (24 Sept 2009)

And there’s more:

Must get round to finishing this off myself sometime soon! Here are a couple more people who have Home Easy working with the Arduino:

(29 Oct 2009)

Home Easy page on Arduino Playground


Largely thanks to @barnybug, the Home Easy Arduino hacking has been going really well. Making an LED blink is one thing, but making it blink by pressing a button the other side of the house is quite another! I’ve currently just been receiving signals, but when I’ve got the transmitter going as well, I want to do things like only relaying an on command to the socket if the current energy use isn’t too high. (Would be nice to have that working in time for Home Camp, but no promises.)

Should anyone else want to get going with some Home Easy hacking as well, I’ve created a Home Easy page on the Arduino wiki. So far it’s mostly just the sketches from Barnaby but I’m working on using interrupts instead, with the eventual aim of creating a Home Easy library for the Arduino. (There’s a Google code project for many RF protocols at once, but I just have Home Easy.)

Here’s what I have for receiving a Home Easy message with interupts so far which, with some even messier code, seems to do the trick. I would like to be able to register functions to call for specified controller/device codes, but not looked in to how that would work yet.

ISR(TIMER1_CAPT_vect) {
unsigned int pulse_width = ICR1;

if( !bit_is_set(TCCR1B ,ICES1)) { // falling edge was detected
// start over if the high pulse was out of range
if(pulse_width < min_high_width || pulse_width > max_high_width)
{
pulse_count = 0;
}
// don’t need to do anything with high pulses as long
// as they’re ok; should all be the same width
}
else { // raising edge was detected
// start over if the low pulse was out of range
if(pulse_width < min_low_width || pulse_width > max_low_width)
{
pulse_count = 0;
} else {
if(pulse_count < max_low_pulses) {
rx_wire_bits[pulse_count++] = pulse_width > bit1_low_detect ? 1 : 0;

if(pulse_count == max_low_pulses) {
message_received = receiveMsg();
pulse_count = 0;
}
}
}
}

// reset the counter
TCNT1 = 0;

// toggle bit value to trigger on the other edge
TCCR1B ^= _BV(ICES1);
}