Adolfo Ochagavía

How I got into programming

When I try to recall what first triggered my interest in computers, there are many anecdotes that come to my mind. Back when I was 13 years old, a classmate showed me how to create visual programs using Word and its built-in visual editor for VBA. Though I never actually wrote any serious VBA program, the fact that you could give the computer instructions and receive visual feedback was an intriguing discovery. Around the same time, I set out to host my own non-official server for the MMORPG Tibia, a very popular game among my friends. I had to investigate about networking, and use Lua and XML for the first time (they were required for the configuration of the server). When everything was finally working, I experienced the intense satisfaction of having solved a difficult puzzle. I remember turning off the server every night, because it was the normal thing to do with your home computer. An unintended consequence was that, on weekends, my friends would phone early in the morning asking me to turn the server on (props to my parents, who were sometimes woken up by the calls and saw their well-earned rest disturbed).

Another memory from that time was discovering CheatEngine, a debugger that lets you find interesting memory addresses in games, so you can modify the values they contain (e.g. increasing your ammo to some huge number, or directly modifying your end score). I also remember learning I could sniff and replay TCP packets when engaged in a MSN Messenger conversation (the chat platform of choice at the time), and flood my friends’ screens with messages to the point that their chat window would freeze. Back then, it was all about making the computer do interesting stuff, without real programming or a deep understanding of the fundamentals. Still, it gave me the reputation of “the computer guy” among my friends.

Eventually, I started dreaming of becoming a hacker, which in my head meant something like having a comprehensive understanding of computers and being able to access any system at will. Since there was no one in my direct environment even remotely involved in programming or computers, I set out on a quest to find enlightment on the internet and stumbled upon, a Spanish-speaking hacker forum (my English was quite primitive at that age).There I asked my burning question: “how can I hack a computer?” Folks noticed I didn’t really know what I was asking, so they challenged me to learn programming and understand the fundamentals, before attempting to hack anything.

Disappointed, yet curious, I ended up at the local bookstore, where my mom happily bought me a book about C. Not because I knew anything about C (I didn’t), but because it was the only programming book they had. It weighted more than a kilogram and had about 750 pages! That summer vacation I spent studying the book and writing my first programs, on paper, because we were spending the summer in the south of Chile without access to a computer (fortunately, once in a while I could get hold onto one and test my programs). It was a tough experience, and I probably understood less than 50% of what I read. Everything was so new! I had never seen a real program before and remember struggling with the constructs for branching and looping. Also, in hindsight, the book was clearly oriented at Computer Science students, touching on topics such as search algorithms, linked lists and binary trees. To my 14 year old mind, that felt way too abstract, but I did manage to finish the book. Some years later, when I went on to pursue a CS degree, I had forgotten most of it.

Lacking serious knowledge about algorithms and data structures, but armed with my brand-new knowledge of the C syntax and semantics, I wrote my first non-trivial program. Its name was Roman2Int, and it would convert roman numerals to arabic ones, using an algorithm I came up with myself (StackOverflow didn’t exist yet) and which I know now to be wrong (sounds like real programming). Proud of my achievement, I went back to the internet forum and shared it with the world. People actually went on to run it and gave me suggestions to improve it. That got me hooked and the rest is history!

My dreams of becoming a hacker? Once initiated in the magic arts of programming, it turned out I was not that interested in becoming a security specialist. I just wanted to know how things worked, which might make me a hacker after all. By the way, I did manage to find a Remote Code Execution vulnerability on my school’s website, which you could trigger by writing PHP code in the search box. I dutifully reported it, and got the honorific title of “the guy that hacked the school website”.