Wednesday, December 30, 2009

The Problem With Google Wave

Writer's note to self: too snarky. Reconsider tone for analytical pieces.

A few months ago my programmer friend, Max, and I started talking about Google Wave. The discussion began innocently enough. We were commenting on the CS3216 email we had all received, just a couple of days before, and the conversation eventually turned to Wave itself.

"But what is it used for?" I asked.

"Imagine!" he said, waving his hands in the air: "Imagine if we could use Wave's API to create a database, say, or a file, one in many many sets of computers. That way, everything we change in one computer can be reflected in all databases on all the other computers that are connected together, instantaneously!!"

And then he paused.

"But isn't that something you can easily do?" I said, frowning, "Using a program like, err, Dropbox?"

There was another pause as we stared at each other. And then we concluded our talk: he shrugged and said that it was Still Cool Anyway, and I agreed, and we both returned to our CS1231 assignment.

But here's the thing that's been bugging me, ever since I first heard about the project: I just don't get Google Wave. And the chances are good that you don't, either. What good is it for? How exactly do you use it? What exactly is it? I've had a Wave account for some time now, and while I've spent little time experimenting with it (let's just say I have exactly one friend who I can chat with, on Wave); I am starting to believe that Google's made a mistake with Wave, and that it would never catch on.

(But wait! ... hold your horses now. Last time I checked, boy, YOU'RE currently signed up for a module with LOTS of Google Wave development. You're not trying to ruin the party before it begins, are you?)

Well no I'm not. I'm not saying anything about Wave as a development platform; the same way I have nothing to add about Wave as a learning tool. Whether or not Wave succeeds as a web-app has nothing to do with the two factors above. But I do think that there's something fundamentally wrong with Wave, as an idea, and I do think that it's worth talking about, especially so before the course begins.

Email, reimagined
One thing we should get straight: the marketing for Wave was, I think, one of the best I've ever seen for a web-based software product. Take the video for example. Google's vice-president of Engineering walked in on stage and told the audience that he was going to show them a 'revolutionary new' product, one that 'does not look at all like it's in the browser', and that he hoped everyone present would 'be as excited about it as (we) are.'

Which is - when you look back on it - really nothing more than a heck lot of hype. I know this because it got me all excited about it. I think the space above my head exploded into a hundred squiggly exclamation marks and I ran to my browser and I opened a new tab and signed up for an invitation as soon as I could. I'm not sure how it was for the developers present - because the effect must've been a hundred times more powerful when you're there, in person - but I think that maybe, just maybe, some of them might've peed in their pants.

(And then the engineering team themselves came up, and all sorts of bugs happened, and Wave suddenly didn't look so cool as before, but still. Lots of people got crazy about it, and quickly.)

But the thing is that when I now come to think about it, I realize that all the excitement I felt was a direct result of the technology on show in the conference, and not about the project itself. I was excited by the non-browser behaviour so described by Lars Rasmussen. I thought it was really cool that you could type live and upload pictures and tag people, and I thought it was cool, too that they were building something that completely reimagined email as we know it: how email might've been, say, if it had been invented in this day and age.

Wait. Stop right there. What?!

Does anyone see what's wrong with this picture? Do you? Not yet? Alright then, let's take a look at the first blog post on Wave, at the Google Blog, on the original idea for Wave:
... (Jen) pointed out that two of the most spectacular successes in digital communication, email and instant messaging, were originally designed in the '60s to imitate analog formats — email mimicked snail mail, and IM mimicked phone calls. Since then, so many different forms of communication had been invented — blogs, wikis, collaborative documents, etc. — and computers and networks had dramatically improved. So Jens proposed a new communications model that presumed all these advances as a starting point, and I was immediately sold.

Two Problems With Wave

Problem #1. The most successful products in the world today are products that fulfill a need. This is true even if the need is something that your users do not yet know they have. So what need, exactly, does Google Wave solve? If you read the introductory post on Wave a second time, you'll quickly realize that the project says almost nothing about this need. In fact, Wave's creators are so silent on this one important detail that the bloggers at Lifehacker were forced to ask their readers the very question the devs had neglected to ask.

This lack of focus, then, begs the question: what was the dev team thinking?! If it seems that they're far more interested in the razzle and pomp of the technology (in this case, HTML 5, which Google has chosen as their replacement to Gears) then you may well be right. If you watch closely, the introduction post begins to read something like this:

So ... we looked at all the OLD forms of communication, and they seem, well, OLD. And so we're going to build a new one ... because, you know, we're bored here, and we're looking for a project, and, well, uh, we really REALLY think it's cool. Like REALLY!


The Rasmussen brothers are building Wave because they think it's cool.
Does that sound wrong to you?! Does that sound suspiciously like something from - oh wait that's not possible, oh but you mean you're not - ahh sorry bout that then. Sometimes I confuse Google with the MIT Media Lab. I really should start noting the differences. Conceptually, though, inventing a whole new communications platform; remaking the world as you do it, even, sounds like a programmer's dream project. But practically Wave has got a long shot in winter. The way it is today, Wave seems more like Google's proof of concept for HTML 5 features than it does any plausible product.

Think about it, for a bit: what's so bad about email as it is? What is so terrible about IM that Wave must fix? Last I checked, both email and IM work perfectly well together (as in Gmail) and separately. Both cater to different ends of the communication spectrum, and both are good solutions to well-defined problems. Reinventing the wheel is all well and good, but if you want the Wave protocol to replace email, like Google does, then Wave has to be demonstrably superior in every way in order to achieve the sort of monopoly that Google imagines Wave to be.

And the thing is - the thing is, well, that Wave isn't demonstrably superior to email. Not for the majority of businesses out there, not for my tech-illiterate relatives, and certainly not for day-to-day text communication. Email and IM coexist simply because people have different uses for them, the same way people had different uses for writing letters and calling on each other in the days before the Internet. By making Wave an interactive, live medium, Google has removed all possibility of Wave as an email replacement. And by adding functionality such as embedding - which, I don't know, isn't that big a loss; VIDEO SPAM, ANYONE? - Google hasn't really proven to us that Wave is that much better.

(Note: there are problems with email which Wave solves, especially when it comes to collaboration, but I'll come to that in a bit).

So that was problem #1. There's a second problem, one that I'll call the problem of mappings. One of Wave's goals, as stated in the introduction, was to imagine what a communication platform would look like based on what computers are currently capable of, instead of imitating other non-electronic forms of communication. In simple terms, Wave's developers wanted to forget about the tools which we've created for the Internet in the past. They wanted to forget about email, they wanted to forget about IM, and they wanted to forget about wikis and blogs and real-time chatrooms. They wanted to come to the computer like a baby coming to a completely new toy - with no preconceptions - to create a communication tool based on what they saw.

And was this a good idea? Well, was Troy a good idea? Absolutely not! It is precisely because of this that Wave is confusing to so many people.

There is this idea in UI design that says that there should be a conceptual connection between a new object and a familiar one, in order for the newer object to be easy to use. We call this connection a 'mapping'. Some examples: we may say that a motorcycle has good conceptual mappings, because users are likely to have experienced riding a bicycle before. We may also say that email has good conceptual mappings, because people are familiar with the idea of writing and sending letters to each other. Therefore both a motorcycle and an email as concepts are easy to understand, because they have clear mappings to things people already know and use. In fact, if we look at the long history of technology, we'll quickly realize that things succeed only in so far as the mappings are concerned. If you have clear mappings to an existing technology, then your new product will be easier to understand, and therefore better poised to gain mass acceptance. Writing succeeded because it had clear mappings to speaking; snail-mail gained popularity because it had clear mappings to writing; and email became one of the most successful communication formats of the 21st century simply because it contained clear and useful mappings to the pen-and-paper letter.

The problem with Google Wave is that it has almost no mappings to anything that currently exists. It is a rethink, as opposed to an incremental upgrade, and in the history of technology rethinks are death traps to innovative products. In this particular case, Wave is a mishmash of features that appear to be thrown together merely for the heck of it, simply because its inventors came to the computer the way it was, saw its capabilities, and decided to throw it all together just because they could.

If that wasn't bad enough, Google's language regarding Wave is confusing enough to suggest that even its developers don't understand what a Wave really is. In the introductory talk Lars Rasmussen describes it as email and IM, reimagined; in another it is described as a communications protocol; and on the about page Wave is called a conversation/collaborative document hybrid. It could be that Wave is one or all of those things, but the ideas we have about any one of those individual elements are hard to reconcile with one another. For example, how is an email, which is static, reconcilable with IM (and how is that more useful than the sum of its parts)? Also, how is a shared document any more valuable when IM functionality is added to it? One thing's for certain: if Google keeps talking about Wave in such conflicted terms, there's no way in hell that a grandmother in Texas, for example, would give Wave a passing glance.

One Answer
One solution to this problem is for Google to drop its dreams of a replacement email protocol and instead rebrand Wave as a collaborative project-management tool. I told you earlier that email as a medium does have certain problems with collaboration, and that these problems may be solved by Wave. But the truth of the matter is that not one of the potential use cases described in Lifehacker's blog post cannot be solved by using other existing web applications. 37signals's Basecamp is a brilliant collaborative project tool, that is used by many existing companies to manage their online development teams. Campfire is a great group chat tool, optimized for organizational use, and equipped with a robust file sharing system (you may upload documents and files for the rest of your team, and the files will be displayed, inline, in your conversations for as long as the service exists). And Etherpad is a great livewriting application, built to allow multiple people to edit the same document, live on the web. Google could do well to release free alternatives to these software products, thus undermining an existing internet company (oops!), but at the same time creating more value for Internet users around the world ... in advancement of Google's long-term cause.

The Future
Is all lost? The answer to this isn't clear. It could be that Google Wave would, against all logic, live up to its hype. It could also be possible that Wave flops, completely, and is discarded as Rasmussen and co. leave the project to work on something (hopefully) more useful. Or it could even be possible that Wave turns out to be a sleeper hit - that it fails in its intended purpose as a communication platform and is then adapted for uses its creators never thought imaginable.

There is much hype and hoopla surrounding Wave these recent months. As an active agent in the digital fiction movement, I must note that quite a few are, at the moment, evaluating Wave as a possible platform for live digital storytelling. This is one use that I had not thought of, even though I've been thinking about and experimenting with web fiction for about four years now. Perhaps Wave's greatest success would be in a format nobody thought possible. And even then - I would suggest redoing the existing UI, because nobody - not even the fictional grandma in Texas - would want to use such a complicated, directionless thing.

Tuesday, December 29, 2009

On The Weird Blog Name

A few things, before you call me out on the admittedly pretentious blog name: there's a story behind why I'm calling this blog what it is. (A story?! By gum, I'd already written you off as a hack! You can't be serious about this, can you?!)

But yes, I'm serious, and here's the story. This blog owes its name to Assoc. Professor Stephane Bresson, who taught CS1231 last semester. As I remember it, we were in a lecture on number systems, and on one of the last slides Mr Bresson threw up an image of a strange wristwatch. "Du yuu know what thees ees?" he asked us. (Mr Bresson is French, and he speaks with a rather quaint accent).

"Theeese ees a watch that displays the time ... in binary form! It is a watch for nurds. Do you know what ees a nurd?"

Some people were already turning in their seats, looking at each other, and grinning.

"Yuu don't know what a nurd ees? No?" - and Mr Bresson got all excited now - "YOU are a nurd! I am a nurd! We are all nurds! Because we are computer science students, we are nurds! Maybe ... perhaps, I should buy one of the watch for eech of you!"

And that stuck with me, it did, because it was hilarious.

Now I know that the syntax is all wrong (it should be if (isNerd) {return true;}, for Java) but I'm omitting the curly braces because it reads better, especially to non-programmers. Oh - and this reminds me - if you're a non-programmer and you're reading this, what the title basically means is: if you're a nerd, say yes! (which is, by itself, inherently nerdy, but cut me some slack, alright?)

If you don't know the difference between a nerd and a geek, look no further:


And if you want the font I used in the blog title - it's Monaco, which is the default programming font for the Mac (the colours, too, are the exact same ones I see when I open Textmate); people who'd like alternatives may find some here.

Monday, December 28, 2009

Hello World

if (isNerd) return true is a blog about software.

It's also a blog created for this module I'm taking this year: CS3216 Software Development for Emerging Platforms.

What I expect to learn from this module
I want to learn kung fu. Like Neo in the matrix. Stick a spike up the back of my head, and pray I don't die.

Okay no, seriously.

I hope to learn a couple of things. I'm actually expecting the most valuable lessons from CS3216 to be the ones that I'd never thought of, but here goes anyway:

I want to learn team-based web development.
Web apps are relatively small products, so the teams working on such applications are usually groups of no more than 5 people. I want to know how it feels like to work in teams like these, because the dynamics are, as one might expect, quite different from typical software development. And while I've worked as the designer-half of a two man (development) team before, I'm still rather green around the ears, and am particularly interested in the challenges of working in a programmer/designer/marketer environment. (Curiously enough, 37signals, a premier webapp company, does most of its work in teams of three: one programmer, one designer, and one 'sweeper' - a guy who hops between both worlds.)

I want to learn how to launch under pressure
Startups regularly launch under pressure. The difference between that and CS3216 is that there's no risk of you going bankrupt in school.

I want to learn talent evaluation
One of the scariest things, I think, for me, is this idea that we'll have to pick people for our teams in CS3216. Recognizing talent and recruiting them to your cause is an important skill to learn, particularly so if you intend to work on a startup in your spare time (caveat: for the long run, because I'm beginning to become rather suspicious of startup founders who create their companies with an exit strategy in mind). At any rate, I'm determined to approach this part of the module with an open mind, because while it's intimidating and all it's still going to be rather interesting to see how we pick and choose our teammates. Snap character judgments? Now that's scary ... very scary indeed.

I'd like to meet new people
And this is plain simple. I mean, c'mon! CS3216 is an interdisciplinary module, no? That does usually mean a high concentration of clever crazy people, from all kinds of places.

In return:
I hope to do all I can to help my teammates, whoever they are, perform to the best of their abilities.

Right. It's late, and I've spent far too much time fiddling with the blog design. I'm off to bed.