It's been waaaay too long since I took my bike out for a decent run. Beyond a few runs into the office I don't think I've used her for over a month.
I've said it before and, no doubt, I'll say it again. I'm always surprised by just how great it is to get out on the open road, open up the throttle and leave the humdrum of day-to-day living behind you.
The day, or rather afternoon, started out with Andy and I meeting up with the Pegasus crowd for a "cake run" out to Stellenbosch. Or rather that was where we thought we were going. It turned out to be a coffee shop in the middle of one of the (many, many) shopping centers that abound "up North". Given that we'd battled Saturday afternoon traffic and at one point stopped for almost 20 minutes in the blazing 30 degree Sun because the group was separated this was less than ideal. An effective 30 minutes on the bike is not what I was after.
Fortunately we'd anticipated (some of) this and had already planned to push on from there and try to squeeze in some more riding before the sunlight waned.
So we jumped onto the N1 and shot through to Franschoek, zipping over the pass, pausing briefly at the top for Andy to play porn photographer to his new toy, and finally stopping at the T-junction at the bottom to admire Theewaterskloofdam.
From there it was back home via Grabouw and Sir Lowry's pass. A round trip of the order of 200km, so not a particularly big run but long enough to rekindle our desire to have a crack at The Great Durban RunTM. This is a plan we've been hatching over the past few months to do an N2 round-trip run up to Durban over four (or five) days. The problem, as with anything, is that there's never a good time. Which is really just another way of admitting that I'm a huge procrastinator. So we'll see if we can actually swing this one. I think it would be incredible.
I'd also forgotten how much time for thinking there is on a bike. Just thinking. Random thoughts. It's interesting where random thoughts can take you. Today for example, after heading out from the coffee shop I noticed a buzz on my bike which I'm sure I've never heard before. Nothing seemed amiss though (amiss at 180+ km/h becomes obvious pretty quickly) so I left it. But it got me thinking about my general attitude towards things mechanical. I don't like them. Or rather, I don't like their imperfections and the way they let reality walk all over them. I suspect this is why I'm in software.
Mechanical things, indeed anything physical, is necessarily bound by the laws of physics. This means at least two things:
- They wear out, break, stop working, come to an end.
- They are restricted by physical limitations. Size. Weight. These things matter.
The former is something I find particularly distasteful in mechanical devices. Indeed, in anything physical. It annoys me that new clothes cease being new so quickly, or that my bike develops rattles and buzzes that weren't there when it rolled off the assembly line. But these things are inevitable and their designers must take this into account.
Software doesn't really suffer from this. Yes, you'll hear programmers talking about bit-rot, but that's really just what happens when code around the code that's "rotting" moves on. Code doesn't rot. Code doesn't change, or mutate, or develop weak spots (those are there from day one). The media the code is stored on might but that's a physical artifact. Code itself is the stuff of dreams. It's intangible.
As such, it's also not bound by the second point. Code, software, call it what you will, it's not restricted by the laws of Physics. Sure, we can only access so much memory, and storage is definitely finite, but these are limitations forced on us because the machines that execute our code are physical in nature. Take away the machine and you have something without boundaries (actually, you have a sub-branch of Mathematics but you know what I mean).
I think these two aspects of software are causing a lot of the headaches in the software world. We have something that never wears out which means we aren't as geared as we might be to maintaining it. We talk about maintaining code, but what we really mean is building on top of it. We have no really ingrained notion of running software day to day.
We also have something that isn't bound by physical limitations. Or rather, is relatively unrestricted (we do, after all, have to produce something that actually runs, which inevitably involves hardware somewhere along the road) which means we tend to aim much, much higher than we might otherwise.
If a team of 5 or 6 engineers took it upon themselves to pull a few all-nighters and attempt to build the Battlestar Galactica how would you rate their chances of success? And if they tried to convince you that a single operator could run it with a few days of training and access to the man page?
Funny, I thought you'd say that.