Why Programming?


A short essay on why I like to program.

How did I start programming?

Several years ago I used to work on a lot of communications equipment. Some of the equipment had maintenance that was contracted out to other companies but was still on paper technically my responsibility to maintain. The companies maintaining those pieces of equipment would not release their technical documentation to us which made it really frustrating to perform basic maintenance on those pieces of equipment. Several pieces of the things we worked on used various flavors of unix shells including Tcsh and Bash, one piece of gear ran Forth where maintainers would type directly into the Forth repl.

Over time my frustrations grew and I began teaching myself as much as I could about how to program and use any system I could get my hands. I had varying levels of success but the experience of jumping head first into piles of documentation and tutorials was pretty useful and over time I discovered how enjoyable the process of learning to use new tools could be. Eventually I fumbled my way into running linux full time as my home computing OS. Not much longer after that I began working through a couple easy books on C there was a project in one which involved writing a Lisp repl which really amazed me. I typed out the code step by step and taught myself how to debug my errors with Gdb to the point where it could do some extremely simple list processing.

At that point I decided I really liked writing programs and wanted to keep doing it.

What do I like about programming?

I like the translation aspect of it. I’ve always like playing with words ideas and meaning. I like mapping and linking concepts together, I’ve always liked learning about how things work and how to construct new things. I don’t like programming for any one project or utility specifically, I like the the opportunity to build and learn new things. I sincerely believe there is a beauty to solving problems, or creating tools and objects. I think that sort of aesthetic value is most noticeable to me when the more concrete elements get abstracted away so that all that is left is the core idea.

I’ve always really enjoyed thinking about how and why things are the way that they are and to me programming is one way to answer these questions. It’s not just restricted to “type the stuff, watch the thing happen” the whole issue of computation to me addresses the doing aspect of answering why and how for just about anything. As in “How did this thing happen?”, “Could this thing be made to happen better?”, “Is there a reason this thing needed to come about in this manner?”.

What do I want to accomplish with programming?

I’m particularly interested in automated provers and solvers, I would very greatly like to study these things more formally in the future, one of my current projects is fiddling around with extending my old provers to handle new things. Another topic that I really like learning about is languages, I really enjoy writing dsl’s and learning about compilers and assemblers. I’ve already written one assembler of sorts and various language based tools and micro languages. Some day I’d like to write a real plain-text-to-binary compiler toolchain. Lastly I really like programs that generate art. I’ve been playing music since I was young and as I have gotten older I’ve noticed that there really could be a lot more free tools that enable average every day people to produce quality content without spending an entire pay check. I’d love to write or contribute to various digital audio software or image editing tools some day in the future when I feel my level of expertise in those areas are up to it. For now I will continue programming, learning and creating as much as possible.