Wednesday, January 30, 2008

The Art of Programming, The Programming of Art

I don't think you will find many practicing computer programmers who will argue against the job being a creative discipline. And like any creative field, you have craftsmen and you have artists. As an 8 to 5 work-a-day programmer I consider myself firmly in the former camp, but once upon a time I had aspirations toward the latter.

My interest in computer graphics probably dates back to the Atari 2600 game machine, but it was firmly planted by brushes with the culture surrounding the Commodore 64 computer. In 1993, just as I was starting my formal training in computer science, I read an article in Computer Gaming World magazine about the demo scene. It introduced me to the works of a group called the Future Crew. The Internet, just beginning to break into the mainstream, gave me the means to download the group's Unreal and Second Reality demos over my 2400 bps modem onto the first PC I ever owned. They look downright primitive now, but back then, they blew my mind.

The demo scene was, and remains, all about demonstrating your skills. Skill with music and design are required for members of a demo group, but above all, demos are about programming. Both the art of programming and the programming of art. Small, fast code that can produce effects years ahead of their times is the grail of the demo coder. Demos strive to do in real time what it should have taken an expensive rendering package hours or days to generate or to cram megabytes of object generation into a space one tenth the size it should have been. If there's a better synthesis of the hubris of the teenage-to-college years and the obsessiveness that all programmers seem to have to some extent, I've never encountered it.

I was never a part of the demo scene, but I do run across an article mentioning it from time to time. And every time I do I pause to download an example or two and allow myself to be amazed all over again. Usually, I find myself glancing back at the OpenGL books gathering dust on the bookshelf behind me. Every time I tell myself that I don't have the time or mental energy to pursue computer graphics programming seriously, not right now. But it sure is nice to be reminded that not everything in programming is about the business end of things. And that the impossible remains impossible only until someone goes out and does it.

No comments: