Software Rewrite
Friday, October 17th, 2008The problem with writing your own animation software is that you have to maintain it.
The software I’m currently using is actually my second generation of animation software. The first generation was written in college for The Emperor’s New Clothes, which was done on a student research grant (let this be a lesson for you kids – you can get money for your films if you call it research!). On that project I was the writer, director, producer, and lead software engineer, so thank god Marshall did the hard animation or the whole thing would have been trash. The quality of code was pretty good for a college student (read: pretty terrible overall), but I learned some good lessons:
- Debugging on set sucks
- C++ is like concrete in that the code seems completely malleable when you first write it and slowly settles until the mere idea of refactoring base classes is exhausting.
- With C++ you spend 10% of your time designing your GUI and 90% finding out why clicking a button is de-referencing a bad memory pointer.
- If you put too much of your business logic in the GUI you will never be able to reuse it.
- Ruby – Oh Ruby, how I love your beautiful syntax and object oriented ways. But alas, you have too many limitations from a system programmer’s perspective. You don’t support native threads for starters. Extensions can only communicate with each other through Ruby objects which is terrible when dealing with blocks of memory. And you don’t have a great cross platform widget set. Don’t fret: we’ll always have Rails.
- C++ – I’d heard that C++ was much better than the bad ol’ nineties. It has the STL and iterators and Boost! After giving it another shot I found I spent 10 percent of my time creating and 90 percent figuring out why the hell my application is crashing when I try to print that string. New tools, same problems.
- Java – Unlike most other languages, Java’s base image library is almost enough to suit my needs. In fact the Java standard libraries have a lot of useful tools. However, GUI code has never been Java’s strong suit; just doing simple tasks requires three or four proxy classes. Plus, after using dynamicly typed languages Java sometimes feels too constrained.
- Groovy – It’s like Java and Ruby had a fling in Vegas and had a kid. Dave Thomas of pragmatic programmer fame recommends trying a new language once a year, and I haven’t tried something new in a while. I have to admit this language looks really neat – dynamically typed scripting language like Ruby but runs in a JVM and has access to Java libraries. I’m just fearful it is too new to really use.
I’m keeping my options open and focusing on what the application will be first, but when even picking a language is an issue you know this won’t be easy.

