TwoCans Application

"Using two cans has to be better than ICQ"

How it all started...

I'm in the habit of using ICQ to communicate with friends and colleagues. I've used ICQ for a fairly long time, although my ICQ number is nowhere near as low and 31337 as my friend Yoz's. However, this just means he gets more ICQ spam than me. Ha.

When I started using ICQ, it had a bearable UI (user interface) - certainly good enough for a 'first bash' at a proof of concept of the whole instant messaging idea. Since then I (with many others) have watched in dismay as ICQ turned from a small convenient transient utility with passable UI into a huge behemoth of pointless functionality, featuritis, long-standing problems and bugs and a UI that gets progressively worse with each release.

For the love of God, no!

I still remember the first time I used the version of ICQ that had a kewl 'typewriter' sound effect when you typed in a message - and yet in the same dialog, the ICQ coding mavens still hadn't managed to get all their buttons to be standard sizes - or even the same size as each other. I think that was when I first thought about writing a replacement for ICQ. It was obvious that the kids at ICQ now considered pointless eye and ear candy to be way more important than functionality and usability. This had actually been obvious for a long time, but this was proof, if proof were needed.

Breaking Point

Later, I decided to actually go ahead and do it, for a few reasons. One was that I just wanted a version of ICQ that didn't piss me off, which ICQ did on a regular basis. Using ICQ was like reading "Edge" magazine - you need to do it, because there's some useful things to be had, but you can't help pining for something that filled this need without annoying you quite so intensely along the way.

Another classic ICQ moment for me was when my friend Sean pointed out to me that ICQ now installed and set up a web server on your PC by default. I mean for God's sake! The ICQ coders had obviously heard of Jamie Zawinski's theorem that all programs evolve to the point where they can send email, but decided that this was a paltry goal, and that their lightweight instant messaging system really ought to include a web server in the standard install.

To be honest, I can't remember the exact reason for finally snapping and committing to writing an ICQ clone for my own use - it was either the day that I found out that ICQ 2000 installed 87 (eighty-seven) DLLs into its program folder, or when I had a good poke around ICQ 2000 to see what had changed in its user interface.

Anyway, one of my reactions is recorded for posterity in an email I sent to a mailing list I use called 'anoraks' - an email which I reproduce here to give you some feeling of the mood I was in...

    From: "Tim Browse"

    Date: Wed Jan 17, 2001 11:17pm
    Subject: User Interface to frighten horses with

    I just had to reinstall ICQ at home, so I installed 2000b.


    It's all changed again! What do all those buttons do? Why
    has my high-tech PC been reduced to sounding like a 1930s
    typewriter? Why are there billions of big annoying tooltip
    windows popping up all over the place? Why, given the amount
    of money AOL put into ICQ, can't they afford to by a six inch
    clear plastic Helix ruler from the local newsagents so they
    can make all their buttons the same size? Why do the menus
    have weird non-standard dividers and headings? Haven't they
    seen normal Windows GUI menu separators? Why don't the many
    things that are buttons that used to look like buttons look
    like buttons anymore? Why is ICQ the first program I've
    ever seen to include a button in a tooltip window? Why is
    the close button in the message history window on the bottom
    left? Who is the maverick developer working on the preferences
    dialog who actually managed to improve the UI for that?
    Is s/he on the run, fearful for his/her life?

    I notice that ICQ does not yet have a brushed aluminium
    finish, but it can't be long coming. They could call it
    iICQ or something.

    I'm starting to think that the only reason ICQ sold to
    AOL for $millions was because it was the only way ICQ's
    UI department could afford the crack.

    Tim, now sitting up and taking fluids

As you may have noticed, I wasn't overjoyed with the changes.


As any developer worth their salt knows, the first thing you need for a program is a name. Preferably something cool that lends itself to levering in a backronym at a later date.

I decided to call my ICQ clone 'OFFS', which ostensibly stood for 'Online Family & Friends System'. However it really describes the reaction that finally pushed me into implementing an ICQ clone - OFFS is a handy abbreviation for "Oh, for fuck's sake!".

Anyway, once I'd started doing a bit of work on the project, Sean came up with a much better name (and one that is certainly easier to pronounce) - 'Two Cans'. The principle being that the simplest mechanism for peer-to-peer communication is a pair of tin cans with a string between them. This lends itself to a number of fun uses, such as:

    "Two-Cans - it's got to be easier than using ICQ!"


    "ICQ sucks!"

    "Have you tried using two cans instead?"

and so on.

Trying to stop programmers making puns with program names is like trying to stop the universe expanding. It's painful, ultimately pointless, and you get goop all over your hands.