I thought this deserved special mention. Originally it was just bizarre, now it's also insane. (19 Mar 2006: And, also, obsolete. I don't use this anymore.)

Basically, it started out with me wanting to communicate my webcam's status to this server (since the webcam is on my laptop, and this server is somewhere in Canada). I wrote a quick little Perl script to throw UDP packets out into the world.

Then I added encryption, packets to tell the server what music I was listening to, etc.

Things have gotten way out of hand. It's more like a miniature SQL server now. The server keeps a list of variables and supplies them to clients that ask for them via encrypted UDP requests (or Unix socket connections).

The protocol is, basically:
Client Server
get foo <the value of the "foo" variable>
set foo bar OK
get foo bar
unset foo OK
get foo undef
ping xyz xyz
ping pong
dump <complete variable dump, delimited by "-BEGIN" and "-END">


In case you're curious, here's a complete dump of the variables right now:

You can try it out yourself, if you're bored. Get netcat and run:
nc -vv -u datanorth.net 31339


The following commands are implemented: get, set, unset, ping, dump. You probably won't have access to most of them (unless you can guess the encryption key I'm using :-)).

I'll dump the source here a bit later. In the meantime, here's the original code that I based this off of: client.pl, server.pl, and monitor.pl. Note that it's hackware to the Nth degree; it's ugly, buggy, and uncommented.