28 January 2009

It's the software, stupid

I first "got on the Internet" in 1992 at the tender age of 14. It was slow (email often took hours or days to be delivered), it was text only (the Web had barely been invented) and compared to today, very few people were participating - but I was hooked.

Old-school modems used traditional telephone lines to connect to computer networks, including the early Internet
I had always been a computer geek, but getting online was what sealed it for me. I thought, this is going to change everything. It was more than the promise of the Internet that clicked with me, though. I had a computer; I'd had one for years. I'd also had a modem attached to it, and I dialled up to some local bulletin boards or exchanged the occasional file with a friend. The hardware I had at my disposal did not change - it was the same lump of metal and wires I had before - but suddenly, simply by running some software and hooking up to a network, that same hardware allowed me to do something infinitely more complex, interesting and useful than before.

I was hooked. Not long afterwards, I made up my mind that this is what I wanted to do when I grew up: Make cool stuff like this! Write the software that takes the mundane, boring gadget that you thought of as one thing and turns it into something completely different, a window into the world, a way to reach out, learn, communicate, entertain and be entertained.

Of course, back then, when I talked to people - friends, parents, teachers - about this Internet thing and how it was going to change the world, they were at turns incredulous and condescending. The vast majority of people had never heard of it. A little over a decade later, I can make that same assertion to anyone and I don't even have to back it up! Everybody agrees; the Internet has changed everything.

As for me, I somehow managed to get into a prestigious university and get myself a degree in Computer Science just as the dot-com bubble burst. Despite the horrible timing, I've been working as a Software Engineer ever since, writing the stuff that makes computers and the Internet do all the wonderful things we have come to rely on.

And yet, I can't shake the feeling that things are somehow not right. Despite the wealth of functions we take for granted right now that were impossible only a decade ago, despite the fact that we live in such a connected world, where we're never far from a device that can access a wealth of knowledge and information, where you can keep in constant contact with your friends and associates even if you're half a world apart; despite all of this, there is something very wrong.

To me it is rather profound that the people who couldn't see the potential of the Internet during its early days are eager to reverse their views and state that the Internet is this wonderful thing that has changed our world for the better, and yet it is precisely those visionaries and pioneers that predicted the change who are disappointed by the reality!

People of my generation grew up believing we'd have flying cars, humanoid robots and holidays to Mars by now, yet we're no closer to those than we were twenty years ago. Look at 1970s science fiction and you'll notice the delicious irony: People are rocketing off around the stars, hanging out with their robot pals, and yet there isn't a mobile phone in sight! When 1970s spacemen want to look something up, they more often than not have to physically go to a library and read a book. Moon Base Alpha may have a fusion reactor and frickin' laser beams, but there isn't a Google or a Wikipedia in sight.

Not so in the 90s. So much post-dot-com science fiction isn't even in space. In The Matrix, a story that resonated so strongly with people living through the Internet explosion in the late 90s, humanity isn't living in space - it's living in the Internet.

Like the Matrix, though, there's something wrong with the Internet today; something broken. The same people who dreamt of technology that would give every human being on the planet the ability to access the sum of human knowledge and exchange ideas with every other human being look upon what we have today and see something that falls far short of those goals.

When the Internet pioneers dreamt up the future of computer networks, they were faced with real technical challenges. The computers were sluggish and underpowered, the network connections were slow, the batteries on mobile devices were quick to run down and slow to charge. In short, the hardware we had available in the early nineties just wasn't up to scratch. Today, almost all of the hardware engineering hurdles have been overcome. There are few applications that we can think of that can't be handled by a modern laptop, or even a phone. Anyone can afford enough data storage to store every document, email, photo and video they're ever likely to create or consume. We have - in the lab, if not in the wild - wireless networking technology that can transport high definition video across the world to a device in our pocket.

This world, were every man, woman and child is connected can communicate with everyone else and access every piece of text, sound, image or video ever created is possible with the technology we have today, right now. Networks can get faster, batteries can last longer, hard drives can get bigger, but that's not what's holding us back. It's the software. The software we run on our computers today just doesn't live up to our expectations. It frustrates us at every turn; it's hard to use, it crashes, it doesn't allow us to do the things we want most. Get into a time machine, go back to 1992 and tell my young self this and you will have made one 14-year old very sad.

What's holding us back? Surely we know how to write good software! Surely, by now, we've figured it all out. I mean, we did the hard bit - making silicon chips that calculate at blazing speeds, sending and receiving radio waves that carry immense amounts of information, storing the information that used to take up a whole building into something you can fit in your pocket.

Why can't we get the software right? Why is the Internet so horribly broken?

Next entry: Software for nothing and the chicks for free

Confessions of an opinionated software guy

Being a software engineer can be exceedingly frustrating. At least, I find it to be so.

Explaining my frustrations to others, however, can be impossibly frustrating. Whenever I attempt this, the conversation inevitably devolves into a long rant. My monologues jump hither and fro between diverse topics; I endlessly complain about all manner of things, from the lack of Cut-and-Paste functionality on my iPhone to the fundamentals underpinning modern western liberal democracy.

To top this all off, I am a firm believer in the tenet that complaining alone never gets you anywhere. If you don't have a goal and a plan of action then you should, to use one of my favourite online abbreviations, just STFU. And yet, among my rants and raves I occasionally have an idea that seems good, and occasionally plausible too. Granted, I'm usually drunk or otherwise over-excited by this time. Yet even in the cold light of morning I always have this niggling suspicion that I may have hit on a vein of usefulness back there, only to let it disappear into oblivion.

So, I'm self-absorbed and opinionated. Who ever needed another reason to start a blog?

I have a beef, a bone to pick. I live and breathe computers and computer networks, and I've made them my life's work, but there is much about the state of the industry that I deplore and wish was different. I also have some ideas, and maybe some of them might work. This blog is an attempt to set them down and put them in order, and to also put them out there for people to shoot down shamelessly, perhaps allowing me to figure out how many of them have any grounding in reality. I hope you enjoy it, and I encourage you to participate.

The second post to this blog will be an attempt at a manifesto; an explanation of the question I'm asking and the approach I'll be taking in order to find an answer.

It's a truism today, after all the hype has died down, that you blog primarily to stroke your own ego. Instead of fighting against this, I will embrace it, and I try to remember that despite the proclamations above, I am blogging because I have an ego and I like to write. If you're actually reading this, it honours me to no end. If you're enjoying it, it goes beyond my wildest expectations.

Thank you.

Next entry: It's the software, stupid