The voodoo of writing software

I’ve been working on the game engine for Kung Fu Legends for a while now and I’m slowly building it up. It could initialize a bunch of subsystems and print a message on the graphics plane. Real cutting-edge stuff. Anyway, there were a couple of minor things in the implementation that bugged me – my Manager class was written in a weird way with respect to the game loop, and my git repository started some ways into my development and I would have much preferred a complete history. Stupid minor things, but I wanted to rewrite what I had.

Moreover, I had some idea in my head of The Proper Thing To Do which was to separate the development of the game engine (graphics/sound/UI engine) from the game itself, and the best way to do that was to encapsulate it in a separate static and/or dynamic library. This way I had a Proper Division of the code responsibilities and could have parallel development on game and engine. I’d also have hand-made Makefiles because that was more portable and I had a better control over what I was compiling (previously I had used Eclipse’s generated makefiles).

So I tried this new approach. A few days later, I had to concede defeat. The way I was organizing my source code made the Makefiles annoying. And the Ogre3d libraries wouldn’t link against my source. And then my own source wouldn’t link against itself. And then when I updated Eclipse to achieve some daft goal with Makefiles, Eclipse would crash silently to the desktop as soon as I ran it. I’m not a bad programmer or organizer of software, so I don’t think it’s totally my fault. The only other thing I could think was that the Computing Gods had decided that I shouldn’t be messing with things and should just get on with development. To teach me a lesson they sent me plagues of linker errors and bizarre IDE faults.

I’ve since fixed the Eclipse issue and I’ve given up on hand-crafted Makefiles. Oh well. The whole little ordeal reminds me somehow of old MIT hack stories where clearly there is something supernatural going on in the world of computing and it’s not all bits and bytes. The Computing Gods are fickle, but they have good intentions.

Have you made a sacrifice to your compiler today?

One thought on “The voodoo of writing software”

  1. Dude, don’t get me started.

    Every time I finally drum up the motivation to start actually doing something I am faced with a 2-hour battle to get the Ubuntu VM working properly. One time it’ll be fine except the keyboard layout will be 50% screwed — the letters will be fine but the punctuation/numbers/brackets will be all mixed up (not so good for coding). Another time the networking will simply decide not to be working for reasons beyond my ken (not so good when you’re fiddling with web service APIs). Sometimes everything gets so mutated it seems easier to just nuke the VM from orbit and make a new one, which takes twice as long and is annoying installing all new dependencies, libraries and whatnot, but at least it actually works properly for a while (yes I’ve tried snapshots).

    Perhaps the dev gods are trying to tell me to learn to develop in OS X. But the tools & documentation are so much better in Linux, and my *nix skills aren’t good enough to work out on the fly how to adapt arcane *nix libraries to compile on OS X. So that divine message isn’t exactly clear.

    Now that I think about it, I’ve been playing with wordpress theme design and the tools are actually rock-solid and quite a pleasure to use… Maybe I’m fated to be a web designer? *shudder*

    Maybe they’re just telling me to forget about this programming rubbish and just have a damn holiday.

    Looks like you got me started. Nice to feel like I’m not the only one, though.

Comments are closed.