Kozlowski is probably right, even if what he has to say kind of sucks. On a vaguely related note, well, read on.
A reinstall, with the subsequent Tweaking To Get Things Just Right is largely what’s brought this little diatribe on.
One of the thing that strikes me about the World Of Computers is how much of it is make-work. Not make-work in the more common “hiring an idiot relative” sense, but certainly in a “reimplement existing stuff from scratch” sense. Working on a couple of toy projects and being surrounded by other toy projects as I am, I see this a lot and if some conversations I’ve had with actual professional developers are any indication, it’s pandemic.
One of the toy projects I’m helping out with right now is Ben’s OC-Transpo scheduling project, and my humble contribution is going to be to take the data that he has to work with, currently in a bizzare variety of alien formats, and converting it into YAML, because a bunch of tools that I’d rather not have to, and frankly am probably not smart enough to, reinvent already exist to manipulate that data in a number of languages. I’m doing the same thing with the header-slash-data files in JWZ’s xkeycaps for the same reason – so that I end up with something a little more portable and hopefully a lot less brittle than anything home-rolled.
I mean, that work’s been done. It’s been tested, other people who are probably smarter than I am rely on it. Do I need a new data format? Probably not. Would I need to reimplement all the related tools that come with it? Probably. Is there a limit to the number of parsing, searching and sorting algorithms I feel like reimplementing in my life? You’re damn right there is.
And yet, how often does this happen? Apparently, all the time. JWZ recently posted a particularly egregious example, but just trying to get this machine set up properly has had me messing with a dozen other microformats that, I’m sure, all need to be parsed in their own special way because, hey, that’s a great way for programmers to be spending their time.
As far as I can tell, the only
valid reasons you’d have for inventing your own data format are:
- No established format exists that can handle your data (which I’m going to call the “wildly unlikely” option) or that
- You don’t want anyone else to be able to work with your data, known as “vendor lock-in” in most circles.
I guess you could just be doing all this with C/C++ and not feel like looking around for relevant libraries, and I guess that’s OK; once you’ve decided you’re just going to bang rocks together, it’s hard to get that strictly wrong.
Of course, this is just data, small fish. Simple. But people are hard at work reimplementing codecs, compilers, even entire infrastructures with the same general mindset, and the result is the same brittle incompleteness writ varying degrees of large.
I have only my impressions here, but I read some blogs, I read some news, and I get a sense that the corporate interests of the world, who free-software advocates typically refer to as “the bad guys”, have pretty much decided that it’s time to stop fucking around. And on the desktop at least, the Free Software side of things is, if Havoc’s assessment is any indication, hosed for the forseeable future. And given that it’s 2004 and I can’t reliably cut and paste shit between applications if it’s any more complicated than seven-bit ASCII, I’m sorely tempted to believe that.
I tell you, when I read about how lisp machines had garbage collection back in the late 70′s, I want to cry.
That and, apropos of nothing, I think that a good way to learn what to avoid when you’re programming is just to pay attention to the kind of things that piss old hackers off.