There’s a hell of a lot of brain-cycles out there being devoted to the idea of Getting Things Done. A quick survery of the common viewpoints:
- On one extreme, there are the office managers who worship the god Productivity, while managing to avoid any meaningful measure of work accomplished. Haven’t met your TPS quota this month? Bill Lumburgh gets to throw you into the company shark tank. Thank god I don’t work at a place like that.
- In the sane median are the folks looking for good tools, languages and frameworks to automate the kind of tedious tasks that kill one’s creativity. This is everything from the latest whiz-bang IDE that does your laundry while you refactor code to one-time text-munging scripts you write to avoid hours of reformatting or searching by hand. I can’t tell you how much pointless variable-renaming emacs’ replace-regexp command has saved me.
- Finally, some people almost fetishize the alpha-geek mindset of maximizing what you can do with your time. There are entire sites like 43 Folders and lifehacker devoted to this approach. They contain some useful things, but there’s fairly obvious feedback loop here above a certain threshold.
I think that most programmers- at least, those of us programming for fun as well as profit- perpetually have a project or two on the back burner. Mine? I’ve been kicking around something involving a little simulated physical environment with a bunch of autonmous robots running around and interacting. Basically, I think AI is neat and this seems like a fun way to explore the subject. Think about it. Herds of bots swarming around and dealing with environmental hazards and predators; colonies of robots changing to their surroundings to suit them and propagating; gladiator-style matches between war-bots with different brains governing their actions. The idea was to create an easily extensible world where you could build up these sorts of things from simple building blocks. Neat, huh?
How’s it coming along? Um. Look, a distraction!
There’s a plethora of reasons this AI-bots thing hasn’t gotten off the ground. For one, I was in school up until a few months ago and a great deal of my time was consumed by schoolwork. I rarely had the contiguous blocks of free time one needs to design and implement any project of decent size. And, of course, there was coding burnout: What, your mom died? Fuck you, I’m writing a compiler.
More importantly, as I’m realizing now, is that I was setting myself up to get stuck by how I approached the project. There was an essential problem of scope. For example, I wanted sweet 3D graphics with pretty models and effects. Great, but I’m not an artist. So I wasted a lot of the time I did have learning to use modeling tools like Blender and 3D libraries like OGRE. I’d inevitably get frustrated while trying to do too much for a one-man army in the time I had and just mentally bag the whole thing for months.
Is learning GLSL so I can programmatically create cool-looking lava really necessary for an AI playground program? No. The problem here is that I’m really very interested in all these sub-problems. Computer graphics is a really cool subject to learn about. So is simulated physics. So is artificial intelligence. Instead of trying to approach this project as a huge monolith to be scaled while learning all of these things, I need to create some smaller, toy projects to write while I learn the basics. Perhaps a Tetris clone while I teach myself OpenGL from the ground up. From there, a maybe simple arcade reflexes-shooter with a similarly simple physics engine. These learning projects need to be interesting enough to work on in their own right. They also need to be simple: if it’s something I can make measurable progress on during a Saturday afternoon, then I’ll keep working on it. With patience, I can use the mistakes, knowledge, and code gleaned from these learning projects to really get started on the Really Neat Idea I’ve been kicking around for so long.
We’ll see how this goes; I’ll certainly share anything interesting or shiny that I come up with.
Of course, before I get started on any of the above, I need to finish website renovations for Inksplot Studios. I spent some of last Sunday writing some CGI scripts so Liz can add content without me editing the source and realized with an hour or two that I really ought to be using a decent framework and not reinventing the wheel with some homebrew CMS. I’m actually looking into Ruby On Rails; let’s see if it lives up to the hype about saving developer cycles.