I began programming when I was about nine years old, using GW-BASIC, an ancient dialect of BASIC which came with early versions of MS-DOS. One evening, my family, having never owned a computer before, found a TANDY 1000 by the dumpsters at UCSD student housing. We hauled the mystical device into our living room and became mesmerized by the DOS cursor blinking patiently from the gigantic CGA monitor. It was a portal into a completely unknown and unknowable world, a shimmering gateway of logic and science fiction. I had only ever seen computers once or twice at friends’ houses; little did I know, I’d be seeing a lot more of the mysterious computing devices in the years to come.

We gathered around as Dad experimented with typing commands into the system. It was no mere computer strewn out on the living room floor, it was the bridge of the NCC-1701, the control panel of the Millennium Falcon, the enormous black obelisk from 2001 Space Odyssey. Shrieking we raised our ignorant ape fists and beat at the monolith’s keyboard; it responded again and again with one cryptic prophecy: “Bad command or file name.” A flash of inspiration gleamed in my father’s eyes, sparked no doubt by some accelerated Kubrickesque evolution, he hoisted a crude bone and pounded the letters “B A S I C” into the machine. The click of the enter key, and the stars suddenly swirled into a blur as our Millennium Falcon leaped into hyperdrive.

If you’ve done much work with a real programming language, you’d quickly realize how primitive GW-Basic was. It had no pointers, no classes, no functions. It was the closest thing to a raw Turing machine short of pure opcodes, and that’s probably a good thing because I’d go on to study Turing machines in university much later. My parents watched in awe when I made my first “animation”, a spaceship taking off: the spaceship was ASCII art and the “animation” consisted of printing lots of blank lines underneath to make the screen scroll down.

My older brother and I programmed together in the early years. Our great magnum opus (sadly never finished) was a project to convert an old Choose Your Own Adventure book into our very own home-brewed video game. We spent hours assembling a faithful ASCII art representation of the map from the inside cover. Gradually, my brother’s interests wandered away from IF…THEN and GOTO, and coding became a solo trek.

What I wanted most was to create my own in-depth RPG, something like Seth Robinson’s Legend of the Red Dragon. Looking back, I can honestly say I made pretty great progress. I could eventually cobble together a basic text-based action game, but without functional abstraction, there’s only so much you can do line-by-line. I had a vague awareness that there were other languages out there, names like C, Fortran, and Pascal were whispered like hushed rumors of some clandestine underground movement, but back then, higher programming languages were not cheap or easy to get one’s hands on. Especially for a little kid!

Computer programming was gradually demoted to a much lower priority in my life as my interests diverged toward other things. Besides, even the slight enhancements in QBASIC weren’t enough to let me spread my wings like I wanted. I continued to write the occasional flashy screen-saver, but mostly the art of coding entered a dark ages for several years of my life.

TEACHING MYSELF C

By the time I was in my mid-teens, compilers had become accessible to the general public. I was very much into MUD games, with their scrolling text and extensive virtual worlds. I was a regular player of Realms of Despair, which was kind of the ancient text-based ancestor of Everquest and World of Warcraft. As I put in more and more hours into RoD, my character there (Valcados the Druid) grew in fame until I was one of the most elite players in the game. In order to make further progress, it was necessary for me to unravel the very physics of the universe. I swore a pact with Satan, I devoured the fruit of the knowledge of good and buggy, I downloaded the game engine source-code. Valcados the Druid had just discovered the human genome code of the universe, the fundamental theory of everything, God’s own blueprints– and they were written in C.

Teaching myself C was very easy, in part because I had the primitive skills from BASIC (as well, by now, as the abstract cognitive strategies of higher math), and in part because I had this whole world that I was already intimately familiar with and which was written in C. I needed no manual and only the occasional glance at online reference materials. Most of my C literacy grew passively through peering into the metaphysical laws of SMAUG. Valcados the Druid transcended his material world, becoming like Neo from The Matrix, no longer seeing dragons or evil wizards but instead pointers and structures. Eventually his exploits drew the ire of the gods themselves, who nuked him utterly, casting his entire order from its position of dominance. Satan had called in his debts, but not before I’d made some connections with my new-found code prowess. I’d been recruited as the head programmer for The Lands of Aethar.

I’ve been programming in C ever since, and I’ve gained a profound appreciation for the language. Where object-oriented programmers attack C the most vehemently, I see the subtle and inspired reasoning behind every quirk in the C Standard.

OTHER PROGRAMMING LANGUAGES

After my experience with C, I can learn new languages with almost no effort. The question is no longer “What can this language do”, but “Where can this language do it?” On the nailed-down workstations in the U.S. Air Force weather forecasting hub, where nature abhors the unauthorized executable, the non-compiled, scripted lines of TCL were perfect. In a certain sense, that was a step back to BASIC, since both languages are interpreted as they go. On the early version of this website, hosted on blogspot which had no support for server-side scripting, JavaScript was the language of choice, another scripting language but this time a language which I would not run myself, one which my readers would run for me. On the new Xamuel.com, professionally hosted, I’m slowly beginning to stretch my wings out with the awesome combined power of PHP and SQL. Thus, for example, my recently launched Connections Project.

ABSTRACT COMPUTER SCIENCE

Late in my Air Force career, when I was frantically teaching myself higher math, one particular branch called out to me, as though it was what I was born to study. It was mathematical logic, and especially computability theory. In computability theory, computers are treated as mathematical objects. Logicians like Alan Turing, Kurt Godel, Stephen Kleene, and Alonzo Church had been laying the foundations of computer programming decades before anyone would sit down at a BASIC terminal! This was the next step in my computer programming experience, for no longer was I messing with the nuts and bolts of individual programs, now I was exploring the very limits of what can and cannot be programmed. My heart was halted by the beauty of The Halting Problem, my eyes were opened by the magic of oracles. To this day, I continue to study this awesome Turing Legacy, indeed I’m pursuing a PhD in logic from the Ohio State University right now.

FURTHER READING

My Time at the University of Arizona
My Time in the U.S. Air Force
The Defragmentation Metaphor
Three Applications of Higher Math
My Anime Story

Discuss this article in the Article Forum.