I remember being 6-7 years old. It was the mid-1980s and I had just made it known to my mother that I was bored with my computer.
I was a lucky kid, blessed with a single mother who worked at the time as a secretary in a firm making use of modern computer systems. She had anticipated the value of her child gaining an intimate understanding of computer technology at a young age. Thanks to her foresight, I had my own computer at the age of 4 or 5, a second-hand Texas Instruments 99/4A Personal Computer. This was virtually unheard-of for a child in the '80s in the city where I grew up, especially in a single-parent household with as little spare budget as ours had.
The TI-99/4A was a keyboard-style computer similar in form-factor to the competing Atari 400/800 and Commodore 64. It required connection to a television as its display (mine was usually connected to the small, black-and-white TV in my room) and had a cartridge slot which I typically used to play games. I had Early Learning Fun (an educational game), TI Invaders (the company's version of Space Invaders), and a cool, side-scrolling spaceship shooter called Parsec.
Having only three games available to me it was probably understandable this kid would get bored after awhile and so, rather than be annoyed with my short attention span, my mom went into our apartment's little storage room and came out minutes later with a small stack of TI BASIC programming books. I took these back to my room, turned on my computer, and began my lifelong journey into computer programming and IT.
Formation
Learning to program is hard. Harder still when you're an undiagnosed ADHD kid with dyscalculia, but I made up for it with curiousity and an interest in puzzles and problem-solving. I genuinely wanted to understand how things worked. This was pre-Internet and if I wanted to learn something or fix something I only had the books on my shelf, my mom's well-worn set of World Book encyclopedias, and the public library at my disposal. I built my foundations from reference guides and example code meticulously copied by hand from printed pages. I tried things out, often breaking things, until I succeeded. I learned how to save my work to cassette tape (the only way to save work on the 99/4A) so I could load it up later and continue refining a project over multiple days.
I wasn't in an environment where programming was well-defined so this was entirely a personal pursuit free from dogmatic rules, business goals, and outside expectations. My mom never pressured me to pursue any of it. I was creative in my approaches (as creative as BASIC allows) and I programmed everything from little graphical demos to (now quite laughable) password authentication systems, refining, iterating, and improving as the years went by.
My grade 6 teacher had a fleet of TRS-80 Model 100 notebook computers in her class that were used to teach simple word processing. Naturally, I negotiated being able to help manage the fleet which mostly consisted of charging batteries. During this time I did get to play around with BASIC on these systems and learned how to make two of these communicate with each other over serial port. I also learned what a modem was (these had built-in 300 baud modems), though never made a call with one.
When my mom eventually upgraded her own computer to a 386 I was passed-down her Compaq Portable 8088 computer which had been upgraded with a 40MB (yes 40 whole megabytes) hard drive. I learned how to adapt my TI BASIC skills to IBM BASICA, Microsoft GW-BASIC, and later, QBASIC. I learned OS scripting with batch files in MS-DOS. All of this was formative. I no longer remember much of these languages but I do remember how easily I was able to take to other languages and tangential learning as a result of my early programming explorations.
I understood what an algorithm was before it was ever covered in class. I understood variables and constants before ever learning algebra or formal logic. Implicitly, I understood deductive concepts like validity and truth-function. I understood that behind the scenes of my high-level coding was a world of 1s and 0s, on and off signals, being shuttled around the subsystems of my computer 8 at-a-time.
Dawn of the Internet
In junior high school was when I first started thinking about future job prospects arising from my knowledge of computers. It was very evident to my computer teacher how far ahead of my peers I was and so it was an easy pitch to have me help him out in exchange for my course credits. As an "Assistant System Administrator" I helped manage and maintain the Mac systems around the school, helped design and build the school's website, helped build the school's first Fidonet-capable bulletin board system, helped feed ethernet cables around the school through ancient conduit, and helped connect everything to the Internet when the school got its own ISDN line. This was all by 1995 or so.
Prior to this time I'd also managed to persuade my mom to buy me a second-hand modem and for the first time I was able to learn from other programmers and IT nerds around my city through BBSes. I used Fidonet to send email to people on the Internet which usually took 1-2 days to be delivered as Fidonet relied on overnight exchanges between servers. It was 1993-1994 when I discovered BBSes with direct telnet access to the Internet, learned a bit about UNIX systems, and got on Internet Relay Chat (IRC). I was still running DOS on my 8088 with my trusty 2600 baud modem, before internet access in my city using SLIP/PPP and graphical tools became common.
It was during these years that I met my now oldest friend, Jeremy. His class schedule was different from mine but we often hung out in the labs outside of class and bonded over a shared love of technology, video games, music, and cycling. Jeremy had also learned programming in BASIC. In the latter half of our time in junior high together we both were regular users of the Schoolnet MOO (later known as MOO Canada, eh?), a telnet-connected object-oriented multi-user dungeon. Its interface was similar to classic text adventure games but being multi-user it allowed real-time roleplaying as well as programming of environments and actions by its users. We both did a fair bit of coding on the MOO and I found it very motivational having someone to bounce ideas off of and to challenge myself to keep up with.
In the summer before I started high school, I asked my mom to get me (second hand) a copy of Borland Turbo C with manuals, and Jeremy and I both worked to learn it. I remember the excitement I felt at learning about the graphics library and trying to make screensavers/demos consisting of worms that would change size, length, and speed, and roam the screen in a variety of ways.
High School Nerdery
First year computer programming in high school covered Microsoft Visual Basic and it was so easy I honestly barely remember any of the course. I was excited to get into the next level programming course which covered Borland Turbo Pascal. Sadly, all levels of programming at that school were taught by a disinterested, retrained shorthand teacher who went point by point through the textbook and spent half the class time in her office chatting on the phone. I enjoyed learning Turbo Pascal but got bored once I realized that once the syntax and quirks of the language were learned, the libraries were virtually identical to those of Turbo C. I used class time to learn about other things and procrastinated on completing the actual assignments until the day before the final deadline for the course and still somehow managed to get a decent grade.
One class I always looked forward to was Electro Tech. My school had a decent program with a quirky but knowledgeable teacher and he covered everything from AC branch circuit wiring through to digital and robotic circuits. I'd been into electronics since my elementary school years (I'd been gifted a couple of those "### in one" style kits from Radio Shack with the spring terminals) so this scratched an itch for me. When we got into digital circuits everything suddenly clicked in my head between the world of programming and the world of transistors.
Jeremy and I gradually made friends with some other competent computer nerds in our grade and we would all hang out in one of the business computer labs or in the library computer lab during our breaks. This group would later become our core LAN party crew. LAN gaming was, of course, not possible without network cards (this was before WiFi) and many of us didn't even have a home LAN until 1998 or so. This was also around the time cable internet started to make its way into homes in my city. Starting out with a Windows-based proxy server, I learned how to build a proxy for home internet access, installed network cards in our computers, and climbed around the attic and basement to wire our house for ethernet. Shortly afterward, I learned Linux for the purpose of setting up a NAT (ipmasq) router.
I forget when all these details happened but my mom at some point upgraded her own computer to a Cyrix 6x86 (Intel Pentium clone) and I inherited her 386 so I finally had a system capable of running Windows 95 (though I later pivoted to IBM's OS/2 Warp 3). As I pushed my knowledge further, my computing needs also grew and it wouldn't be long before I inherited the Cyrix 6x86 as well. If memory serves this was what I was still using toward the end of high school. By the end of the 1990s I was primarily running Slackware Linux on both my desktop and my router.
In my grade 12 year I fully lost interest in school and dropped out half-way through the year. There were multiple reasons for dropping out at the time but chief among them was the amount of time I had been regularly spending at night tinkering with my systems, recompiling kernels, and learning everything I could about systems and networking. The next year, my mom convinced me to finish my grade 12 at an alternative high school for students who "slipped through the cracks". I enrolled in some technology courses for easy credits and there I made a new friend, Matt, who was also obsessed with computers. Each of us had gotten into technology from slightly different angles but we filled in the gaps in each other's knowledge and I imagine we both learned a lot from each other at that time. For my part I learned a great deal from him about systems security and telephony.
I did end up getting my high school diploma that year!