Code as a Second Language

I was 8 years old during the summer of 1987. That was when I came across a personal computer for the first time. I had just arrived at my grandparents’ house in the countryside of Sao Paulo state in Brazil and my aunt had just bought a computer. I am not sure why but I was immediately interested.

"16K-BYTE RAM pack for massive add-on memory"

My aunt had just bought a second-hand Sinclair ZX-81 and she was kind enough to entertain my interest in it. The ZX-81 was a small machine resembling more an accounting calculator than anything you would call a computer. When she turned it on, I must admit that I was rather disappointed because all I saw on the screen was a white background with a small black square in the bottom left corner with an uppercase “K” inside it.

ZX81 Screenshot

That is what you would see after turning on a ZX81. Not exactly riveting.

Then I asked: “So, what can it do?”. Little did I know that her answer would literally change my world. “If you write the right code, a computer can do anything you want.” – she replied.

I stood in silence for a moment as her words echoed inside my brain. Imagine that, a machine that can do “anything you want” as long you write the “right code”. It became immediately clear to me that I had to learn how to use it.

Unfortunately she was too busy to teach me but was kind enough to let me  “play” with her computer. As she later confessed, she didn’t take me seriously at first, in fact, no one in my family did. It didn’t matter, though, for luckily I was already an avid reader and I had plenty of time on my hands.

By the end of that summer I had developed a solid intuitive understanding of the logic underpinnings shared by most programming languages even today. I felt as if I had just seized the power of creation itself. Within the boundaries of the Zilog Z80 microprocessor I experienced absolute control. It was a powerful, life-changing experience for a kid.

Back then, numbered lines were all the rage

However, the end of the summer posed a challenge because I didn’t own a computer. To make matters worse, in the context of the Brazilian economy in the late 80s, computers were without a question too expensive to buy as a “toy” for an 8 year old.

My solution was to do what kids to best: use my imagination. Sure, I didn’t have a computer, but that would not stop me. I could still write code, and then I would execute it in my head, line by line, like a human computer.

ZX81 machine code

Not my actual notes, but you get the idea...

I was nine by the time my father was finally able to buy me a computer. By then I had already become quite good at running code “in my head”. Using my supercharged imagination, I was even able to play games of my own design by simulating the code execution in my mind, keeping track of all variables and having fun doing it.

Lamentably, my first computer was defective and unable to load programs from cassette tapes. Any code I wrote for it would be forever lost every single time the computer was turned off and I would never be able to run any commercial software. If I wanted my computer to do anything, I would have to always write the code myself from scratch.

This didn’t bother me because defective or not, I finally had a computer to work with and that was definitely progress. The next issue at hand was the fact that most of the ZX81 literature available was not in Portuguese, my native language. I had to spend countless hours translating books written in English with a dictionary by my side. Painstakingly and word by word, I was able to decipher the few imported books I could get my hands on and use the acquired knowledge to write code of ever growing complexity.

Machine code for beginners

Recursive autodidacticism: I had to teach myself English before I could teach myself Z80 machine code

Even though it wasn’t long before I outgrew the ZX81, it has given me something that will always be part of me. Thanks to my early exposure to computer logic, I became able to visualize code not as static commands in a text editor, but in a much more fluid manner. The best way I can describe it is as a form of acquired synesthesia: to me, computer code has always had a kinetic-spatial dimension to it, with different logical constructs possessing specific “geometries” associated with them.

Relentless progress

Progress is relentless...

I entered the workforce early, when I was 13 I became an assistant instructor at a local computer school. I founded my first company, a dial-up BBS, when I was 15. School was essentially a bore. Unlike most people, I don’t need structure, I need concrete problems to solve. I was constantly frustrated by how disconnected from reality most classes felt. Not soon enough for me, high-school was eventually over and I decided to quit college to focus on my career. By the time I turned 21, I landed my first executive position at a software development arm of a large utilities conglomerate that employed over 400 developers.

I always wonder how different my life would have been if I had decided finish college instead of pursuing a career. I never felt as if I had a choice in this matter, I simply followed my heart. Luckily, the outcome of my decision was positive and by the time I was supposed to be graduating from college, I was already managing multi-million dollar projects and flying around the country in the company’s private jet.

Now I finally understand that my passion will always be my most important credential. I since I was a little boy I have been genuinely in love with the power and infinite potential of technology. I believe was born to build wondrous things that inspire and drive change and I will work towards that until my very last breath.

Life is an all-you-can-eat buffet of knowledge.

The ZX81 at the Computer History Museum

The ZX81 at the Computer History Museum

1 comment

  1. Pingback: BitCortex – On the Future of Education

Leave a Reply