Ponderings on the relationship between programming, systems engineering and systems administration.
‘Nuff respect, as the Young People say, to the late Douglas Adams for the title line. There is a link of sorts to the topic; I got an email from my talented and beloved brother a few days ago, pointing me at reports on the Snowdon Race. The company he works for did a wireless link from the summit of the mountain to get the results out; tres impressive. He’s sort of also in the IT thing, but the big difference between us (other than the fact he came to it later in life and I’ve always geeked out) is this; he doesn’t program.
Last time I was over at his house he was showing me all sorts of monitoring he’s doing on the huge point-to-point wireless WAN that they run over much of North Wales. All Windows-based stuff, pulling useful information from traffic monitoring. And all monolithic big programs. A Unix system might do the same, but chances are that a lot of the same data could easily be gathered using built-in tools plus judicious amounts of scripting. But he doesn’t program, so he can’t do that.
I find it a difficult thing to imagine – how one can install, maintain and operate complex mixes of kit from multiple vendors without the glue that binds them together – the ability to knock up the sort of tiny script that texts you when the disk space is low, or creatively purges older files, or scans logs for attack attempts. I suppose one way is to pay; someone out there, especially in the Windows World, will always sell you an application that does the job for you. But with that, you lose flexibility – the application will do what the designer intended it to do and nothing more.
I’m responsible for around five servers and (depending on how you count) seven desktops or laptops. These live on a variety of networks, some wired, some wireless, connected together via VPNs over ADSL connections. The whole thing would have cost a lot more and take a damn sight more work to administer if it weren’t for scripts (and, since I am who I am, if it weren’t for Python).
Consider this here laptop on which I’m typing. Every couple of hours it does a backup. The script wakes, checks IP addresses to work out where it is (all the networks use different ranges in the 10.x.x.x reserved space), connects to the appropriate server and kicks off a low-priority trawl through selected directories, copying modified files over to the backup area. Where another script runs nightly, squirrelling away older material into tar.bz2 files and synchronizing them between work and home. Nobody could ever sell me an application that’d do the job in exactly the right way, yet it only took a morning’s work to set up.
Programming, I argue, is the equivalent of banging the rocks together. It’s the difference between using the machines that you watch over and controlling them. Without the ability to program, to speak their language, you’re condemned to use the tools you were given. Without the ability to bang the rocks together to make better flint axes, all you can do is pick up what’s lying around. That’s no way to evolve.