I recently ordered a new mug from zazzle.com. “Code is poetry,” it says on one side, with my favorite programming language, C♯, on the other. Code really is poetry, and now let me relate a memory that I thought of on my drive home from work today. (Sorry in advance. This post doesn’t have very much focus.)
When I was little, I was fascinated by what I now know are the break lights that are in the rear window of most cars. When it was nighttime and we came to a stoplight, I noticed how even though I couldn’t see that the stoplight itself was red, there was a correlation between the stoplight being red and the red light in the rear window of the car in front of us. I wondered by what mechanism the car in front of us knew that the light was red, and thought that it was very useful for cars to relay that information to the cars behind them.
I know now that the key element in making that happen was the driver tapping on the breaks, and in fact the light didn’t signify anything directly about any stop light, just that the driver had his foot on the break pedal. Even so, I have always been interested in what makes technology tick, and (even more) how to design something that has some kind of interactivity or pseudo intelligence. To me, code is a form of magic—now hear me out!
When I write a program, I pull the words out of nowhere. I can take an idea, describe how a program should behave, and it will simply happen. I said that this was like magic, but now let me step back a bit. To me code lets me perform a kind of magic that applies to the virtual world rather than the physical, with a bit of crossover via different kinds of human-computer interaction. The kind of magic that code can accomplish applies to information rather than physical objects. For example, the idea of someone seeing something and capturing that moment to be displayed on a picture frame in his grandparents’ house is whimsical at least—without any explanation anyway. However, with a digital camera, an Eye-Fi wireless SD card, and an appropriate digital picture frame, one could take a picture, the Eye-Fi could find an open wifi hotspot, connect to Flickr, and upload the picture for the digital picture frame to download and display.
Did you just yawn there? Most people would, but that’s kind of the point. Technology can accomplish amazing things—the sky is hardly the limit. When dreaming up an idea, it isn’t always important to have it seem realistic at first. Furthermore, no matter how cool the demo, the actual magic will come down to bits and bytes… but that’s great! To me, in creating software, the biggest barriers are knowledge, skill, and time. With those three things one person could create a software product that works better than a similar product by a big company. Two identical pieces of hardware could be made vastly different with different software. Firmware updates for portable devices are a good example of this, as are videos games for any given console. On a console, every development team has the same canvas to work with, and it is amazing to see the wildly varied experiences that different games can create.
I’ve always been facinated by this stuff, and always will be. That’s great for me, though, because it’s an inexpensive hobby and a well-paying profession. Ah, I think I’ll write a bit of code right now.