By profession, I am a computer programmer. A developer. A software engineer. The exact terms don’t really matter; what I do to make money is sit in front of a computer screen and input algorithms via a keyboard. Sometimes I design the algorithms; sometimes, I just use pre-existing algorithms and apply them to effect the business requirements. Sometimes I lead a team of developers in doing this; sometimes I just sit at my desk with headphones on and type away.
This started in college; I had done a little bit of coding (BASIC on TRS-80 Model III computers) starting in middle school, but didn’t really consider it as a profession until my sophomore year of college. I had intended to be a chemistry major, but when I couldn’t connect the homework to the tests I decided that I should probably look for another major. I picked it up quickly, and by the time I had finished my course of study I had taught a computer how to learn to play a board game (Adel Verpflichtet, a game by Klaus Tueber). This involved genetic algorithms, where the computer will start with random strategies and simulate games using those strategies. It then looks at the winningest strategies, takes bits and pieces from them and combines them into new strategies, and runs more simulations. Since this is based on the concept of “survival of the fittest” and is not unsimilar to evolutionary genetics, this approach is called “genetic algorithms.” And it worked. By the time the simulations were ended, I sat down and played a game against the computer and it beat me soundly.
I mostly enjoy this type of work, especially when it comes to designing new systems. Building something from the ground up is, to me, much more interesting than simple maintenance. But building new systems is very tedious; there are a lot of minutiae that go into building these systems. Computers are unforgiving; missed little details can translate into big problems. That’s why I wrote a program to write programs for me. Called RACE, it doesn’t come up with new algorithms, but it does take away a lot of the tedious work and automates it. It is template-based, so as I write new templates I can easily expand the scope of what RACE can accomplish.
Of course, being able to create computer programs also helps in many of my other hobbies. Not being satisfied with any available software, I wrote a program to help organize my photographs into albums. I have several cataloging applications, helping to manage my rounds collection, dance music, renaissance choir sources, magic tricks, and just about any thing else. I have also written a program that creates brick movies. This build on existing technology: LDRAW, which is used to create virtual brick models, and POV-RAY, which can be used to render those models in to photorealistic images. My addition to this is LDRAM (LDRAW Animation), which adds motion to this process.
And that is what I do with a computer. It’s not much; I don’t consider anything I do to be cutting-edge or groundbreaking, but it’s what I do.