Origin Story
I can't remember exactly when I learned to program, but I'm almost sure that at the end of 1981, at the age of 12, I was already programming in BASIC.
Before 1981, my experience with computers was limited to borrowing some time in an Apple computer at my father's office, learning to program the basics of the TI-59 calculator (again, thanks to an engineer in my father's office who was really into computers), and devouring every computer magazine I could get my hands on1.
In February 1981, life changed. I went with my familty to Florida for vacations. Some weeks before I had totally failed at convincing my parents to buy me an Apple II+ with occasion of our forthcomming holidays. But I got lucky. During the trip, we met by chance with a very close friend of my father. He had just bought Commodore VIC-20 for his kids. This friend told my father his view on the role computers would play in our future, and the importance of exposing their children to technology. He even gave us the address of the shop in Miami where he had bought his computer, the name of the salesman, along with the exact list of things we had to buy2.
I realize now why my strategy to convince my parent's to buy a computer had failed: the VIC-20 was around $100, while the Apple II+ was around $1,000. In retrospect, I suppose that it made more sense to my parents buy the VIC-20, and spend some money in a cassette player to store programns, and some ROM cartriges with a couples of games, and some other programs.
I was totally happy with the VIC-20. When we returned from the trip, my parents got me and old black and white 12" TV to use as a monitor. I'm sure that monitor used transistor bulbs, because you had to wait around a minute for something to show on the screen after you turned it on.
The VIC-20 came with a nice booklet that thought how to program in BASIC. When you turned on the VIC, other computers of the time, you were dumped directly into the BASIC interpreter: a welcome screen and a blinking cursor. I had some game cartriges, and the VIC manuals, so BASIC was the right thing to learn. I devoured the booklet. I ran all the examples, and tried some of my own.
Some time later my parents signed me up for a BASIC computer class. The classes gave me some structure to my understanding of the language, and the possibility of receiving feedback about the simple programs I wrote. We were only three or four kids in the class, the rest were grown-ups. (I remember that the final project was a program that displayed a bunch of data as a bar-chart graphic.)
My parents where pretty supportive to my computer obsessions. For example, they helped me subscribe to a handful of computer magazines: Byte Magazine, Compute!, and Creative Computing. I waited eagerly for each issue to arrive. I read them throughly from cover to cover, even if I didn't understand everything. I shelved every issue carefully in my bookshelf, beside my books, as someone stores a precious treasure. I spent hours typing the code from those magazine pages into my computer and saving it to cassette tapes. Sometimes I enrolled my two younger sisters to help me type, with the promise of playing, once they were finished, the great game they were helping to type in.
The VIC-20 was my introduction to the 6502 Assembly Language. Manufactured by Rockwell, the 6502 was the CPU used by most of the personal computers of the time. Thanks to its low cost, this CPU was one of the key players in the home computer revolution of the 1980s.
In front of the VIC-20, with the help of a simple program I copied from one of the magazines, I played with some rudementary assembly code. But it was not until some time later, when the VIC was replaced by an Atari 800XL, that I really started to programming in Assembler. I learned about things like memory maps, pointers, indirection, storage registers, screen address space... Again, I could not have done this if it were not with the help of some excellent books like Mapping the Atari by Ian Chadwick, and in this case, the awesome MAC/65 Macro Assembler by Optimized Systems Software,
alt: I got so deep into computers that my parents decided to move my computer gear out of my room, and put it somewhere more public, so I didn't stay awake all night punching at the keyboard[3](#fn-3481-didnt-work title: ). This were pre-internet days, and I had no modem access, so if I was in front of the computer I was either playing games or learning something...
I also had an insatiable appetite for books. Aside from tech-related books, I read science-fiction and fantasy. My father read a lot. There were always books at home. To this day, I can ask him at anytime what book is he currently reading, because I'm sure he's always reading something. I remember that a couple of times every month, my father would take me to a local library, where he would purchase a couple of books for himself and, with his help, I would pick a couple of books for me. My father finished his books during the week. Most of the time so would I. I read most of Jules Verne, Emilio Salgary, and others during that time. In 1984, where all computer magazines where writing about Orwell's novel 1984, I bought the novel and binge-read it.
My parents enforced a lights-off rule so I wouldn't stay awake reading at night and blury-eyed during the day. Luckily, I had a flashlight. I would go under my bed sheet's with the lantern and manage an extra two-hours of uninterrupted reading.
In 1985 the Atari 800XL was replaced again, this time by an Apple IIc. I felt in love with the machine and with Apple the company. I read everything I could about Apple, about Jobs and specially Wozniak. I read with awe the story about how Woz designed the Apple Disk II controller --the hardware and code that controls how the diskette reader worked and connected to the computer-- to use only 9 chips instead of the disk supplier's original 40. He designed the circuit not only to be efficient, more advanced than anything available at the time, with more data capacity than it's competitors, but he also took care that the circuits were beautifully laid out on the board.
Thanks to two excellent books, Beneath Apple DOS and Beneath Apple ProDOS, I learned about Apple's operating systems. The book explained in detail the workings of the disk controller code, which indirectly helped me learn how unlock protected software. I learned how to copy the controller code4, modify the copy to read a program from disk without running it, so I could patch its code and remove the protection code, and write the unprotected copy to a new disk. That year, I also began subscribing to Doctor Dobb's Journal... of Computer Calisthenics & Orthodontia (DDJ). The issues from those years where probably the best articles I've read ever about computer programming5.
The story goes on and on. At one point, I opened the Apple IIc to replace it's CPU with a piggyback board with extra memory. I don't remember exactly when I built my first PC by buying the hardware in sepparate pieces, but it was probably in the first years of university. I self-learned many different languages and framewors: C, then Pascal, then C++, then PHP, HTML, Java, Javascript, Python... For several years I run my own mail server in a headless computer in a closet. I've had affairs with Lisp and Clojure. I wrote a static blogging engine from scratch. I've fiddled with embedded devices, from PLCs to Arduinos and Raspberri PIs. You get it.
This is my origin story. Part wizard, part sorcerer, my magical powers come from the intertwinning of computers, books, and an insatiable appetite for self-learning6. (And needless to say, great parents.)
I started writing this post after reading Time's article titled Fifty Years of BASIC, the Programming Language That Made Computers Personal. Borrowing from my own experience learning BASIC when I was a kid, my initial idea was to write about how kids can learn a lot more than we give them credit, if we encourage them and help them develop a growth mindset, using Carol Dweck's meaning of the word.
As word kept flowing, the article became more about my passion for computers, books, and furious learning. 1,500+ words later, I realized that I had written my origin story.
An Origin Story "refers to how characters gained their superpowers and/or the circumstances under which they became superheroes or supervillains7". Seth Godin explains and expands on this concept in the July 11, 2018 of his podcast Akimbo:
What's your origin story? What was the incident that got you started on this path? And what was the choice you made after the incident occured. (...) To often we don't realize that the origin story doesn't have to match our destiny. We can change it, we can make a choice. With great power comes great responsibility.
We all have an origin story we tell us about ourselves. If we haven't made it explicit, then it's the story we uncounsciously repeat in our minds. What we need to realize that the story is not finished. We are the authors, we can change the narrative.
So, where did you get your special superpowers?
-
OK, I should also consider countless hours staring fascinated at the screen and printer of my father's company IBM System/32, which they used for processing the payroll. I still remember some commands:
SEU ROBERTO, P
to open the file editor. ↩ -
The list included, surprisingly, a Forth implementation for the VIC. As I learned later, Forth is a computer language created for programming embedded and real time applications. I never did anything in Forth at the time, probably because I had no book to learn from. ↩
-
I can reveal now that my parent's strategy didn't work. I would wait until they felt asleep watching TV and then I would turn the computer on and spend an extra two hours in front of the screen. ↩
-
If memory doesn't fail me, it resided at hex address $C600 in memory. ↩
-
Sadly, some years later, the quality of the magazine faltered as they tried to become mainstream. Finally the magazine discontinued its printed edition and became an online section of InformationWeek. ↩
-
If I had to name a fourth thread, it would be photography. But that's for another story. ↩