It’s funny how things I once thought were cool are now things I now hold as abominations from the slimiest pits of hell.
Take makefiles. I once wrote a freeware version of make because I needed one that worked on both VAX/VMS and MSDOS. That version of make persisted around the microcomputer software development world for years (you can still find it). For a while I was proud of it. It’s probably my first published tool (yeah, it shows). I got a lot of work done with it, but I’ve moved on.
Fast forward twenty years, and many of the projects I work with have makefiles whose sizes are in the multi-megabyte range. The word “suck” beggars the problem, these monsters are one or two dimensions removed from mere suckage. They are undebuggable, write-once, “just print out what’s going on and see if that last tweak worked” affairs. Is the build going to work? The suspense builds, hour by hour… nope, you don’t get to go home. Thanks, make!
Make is a good idea taken to extremes, and as near as I can tell its replacements only muck with syntax and plaster over warts. In the physical world, if make was a beam made of steel it would have shrieked in agony and snapped into whinging bits of shrapnel years ago. But in the realm of software there are few physical limits besides our patience and our sanity, and we are free to torture our tools to our limits. The fundamental problems of dealing with complex builds remain unaddressed. There’s still no debugger, there’s still no way to simulate (much less visualize) what is going on, and builds still take hours out of my life and they still break.
We haven’t moved on past make, and we desperately need to.
Registries. Have you seen “Dirty Jobs”?
I used to think that registries were a cool idea. Well, maybe they are; certainly getting rid of three dozen files in “/etc”, each with its own cute little different language (here ‘#’ is a comment, over here you say ‘/’, while saying ‘!’ in this file does the trick . . . and that’s only for comments). But you only have to look at the abuses of the registry made by COM and so forth (Mac folks only have to look as far as the Resource Manager, by the way) to make you a believer in retroactive paycuts for certain classes of (um) designers.
I swear to God that I’m back to INI files. Simple, understandable, and every bloke who knows about File/Save in TextEdit knows they can muck with a configuration file and have a hope of recovering an application’s sanity if they screw up. Tried to back up a registry recently?
These days I’m going for simple and I’m going for robust, because if I have to type in one more miserably designed XML tree where the developer decided it was necessary to qualify the God damned printer by Planet, SolarSystem and Galaxy sub-nodes I’ll probably rip the batteries out of my laptop and hurl them flaming into the XML section of Borders and Noble. (Hint: Why did things go wrong in this universe? Why does it take sixteen linear feet of bookshelf space on XML to satisfy market demand, when you can only find one dusty copy of SICP on the shelf? Yeah, yup, bingo).