Geek exhilaration (by alaric)
Recently, a feeling has started to appear in my life that's been missing for many years...
When I was a kid, I often felt geek exhilaration. All I had to do was sit with a notepad and think for a while and I'd come up with a design for something cool. Now, the kind of thing that interests me is infrastructure - I've always been more interested in designing, say, a game engine than in writing an actual game. So I'd sit down and pluck a random problem from the air and design an infrastructure for solving it. And then I'd feel excited about the lovely potential of this infrastructure.
Alas, this happened at a much higher rate than I could ever implement these things, so I had a sources directory laden with unfinished projects. But it was still fun.
Anyway, with age and responsibility and work and bills and stress this happened less and less; I still got to invent infrastructures, since it's part of my job, but I'd only get to design one every month or so at best. Five minutes of fun, then a month of implementation. And the problems I was trying to solve were relatively boring, and the solutions required often constrained to just solve the immediate needs of the users for the next year or so, rather than a sparkling generic platform upon which anything could be built for ever more.
But recently, for some reason, it's started returning.
I've been doing work in the rather extensive grounds of our house, and it's gotten me wondering how I could provide networking and power to systems at the far end of the drive (a hundred or so metres from the house). Pushing the limits of Ethernet cable lengths, plus a long distance outdoors. Underground piping? Expensive and tricky to install. But a stream runs along the length of the drive, so it's occurred to me that I could run a reinforced 1" diameter hose along the streambed, perhaps lightly buried, and run power and Ethernet along it. Ideally DC power, since everything I'd want to run down there would require about 12v anyway, and there'd be less potential to pass noise into the Ethernet cable, less high voltages underwater, and everything could run from a larger, more efficient, single PSU in the house where it could be cooled by fans, since the equipment outdoors would need to be in sealed watertight boxes. As long as I can get decent cable with a low voltage drop when running about ten amps. Perhaps I should go for 48v and use DC:DC converters at the far end.
I've been fascinated by long-distance cables ever since I was a kid, when I used to set up 12v power supplies in my room, with rechargeable battery backup, and run my own little network of lollipop-stick pylons to distribute it about, so I could have a little light to read at night and so on. Geek exhilaration!
I'd run the cable to a suitable safety margin within the Ethernet distance limit, then bring it "ashore" into a sealed box where there would be a small switch that would act as a repeater for the cable length, and also tee off a line up the nearest tree to a Wifi access point, giving decent Wifi in the garden.
The line could then continue to near the end of the drive, where it could terminate in another sealed box containing a Soekris single-board fanless computer which could drive a USB webcam covering the end of the drive, for CCTV. And this would be a great location, far from the house, to mount a small stack of external USB hard disks as an offsite backup. Any conceivable disaster that fries the house plus stuff at the other end of the drive would probably mean that data loss was the least of my problems - barring a power supply surge. Some decent isolation devices would be required.
But the main reason to try and lay power and Ethernet to the far end of the drive, to be honest, is just because it's a challenge that, for whatever reason, intrigues me. Once it was done, I'd be dead proud of it, and I'd sit in my nice warm office at night with the rain pouring down and ping the Soekris box at the far end of the drive, aware that my packets were running through a fairly complex network infrastructure.
I've already been having fun with the VLAN switches in the house!
I also have a cunning plan for waterproof speakers in the garden, and speakers in the house, run from an audio server that sits in a loop:
- If mpg123 has stopped playing, then look for an MP3 in the play queue. If the play queue is empty, select an MP3 from the random set (which may be empty; in which case, block until there's something in the queue, or a non-empty random set exists) and play that.
- If there's an incoming command in the command queue, obey it. Commands include:
- Pause/resume mpg123 (with nice volume fade down and up)
- Set MP3 playback volume
- pause playback, play a specified chime noise, then invoke Festival to speak out a text message at a specified volume with a specified voice, then unpause playback
Now, with multiple outputs, one could have each one controlled by its own audio server, but with the option of taking the mp3 audio feed from a master queue and random set instead of from a local queue and random set. So one can specify overall music for the house and garden, or separate streams for each zone.
There'd be a Web interface for editing the play queue and choosing the random set, and for manual injection of commands. The frontend software that injects text message commands via RPC would give the option of targetting specific zones, or all of them.
Thus one can have a Web-controlled jukebox for the house and grounds, plus a speech-synthesis paging system, for messages such as:
- The camera at the end of the drive has detected motion! Somebody is coming or going.
- Hourly chimes. We're rather prone to not noticing it's 2am all of a sudden.
- There's an incoming VoIP call from Bob!
- Something, somewhere, has gone terribly wrong with the home network or ADSL uplink, according to Horus.
- Incoming zombie attack!
And another thing I've been excitedly planning lately has been a Xen-based hosting infrastructure. Right now, I already have a lovely complex powerful hosting system based around three servers that operate as a sort of cluster, for load balancing and fault tolerance reasons. But I'm coming up with a plan to split the work of one of those servers between a set of Xen virtual servers running on the same box, isolating several subsystems (so no more overloading of the mail system bringing down the web system...), and more importantly, allowing me to upgrade the system software (from the OS to the installed packages) by setting up a new virtual server, installing everything, testing it, then making it live by switching over the incoming TCP port redirection rules. All of the user data (homedirs, SQL databases, etc) already sits on another server, so I could move services between virtual servers at will. And when load became a problem, I could just add another "frontend" server running Xen and bring up virtual servers on it, too, sharing the same backend network, and then alter the incoming TCP port redirection rules to send certain protocols to the other box. Or use round-robin rules to share load between the two of them.
This, also, fills me with a thrill of exhilaration. An infrastructure that lets me easily do cool things! Yeah!
This is the geek life, and I love it.
By sarah, Fri 2nd Mar 2007 @ 9:32 pm
Yeah this is the Geek I know and love!
By @ndy Macolleague, Mon 5th Mar 2007 @ 3:09 pm
Hi,
A long time ago (OK, 2003) I saw this: http://patrick.wagstrom.net/weblog/old/lpdForFunAndMp3Playing.xml It's an article about using lpd to manage your mp3 queue.
...and as for voice synthesis and sending message through the ether to people: someone got me one of these for Christmas: http://www.nabaztag.com/ They're sooo much fun. Everyone should have one.