I came across an article on Wired during Blaugust of 2024 and thought I should write something about my own introduction to coding as a teenager. I sort of forgot to follow up until today, so here we are.
My youthful experiences with coding documented here all took place between about 1979 and 1985. I also did a bit of fiddling about earlier than that on computers I briefly had access to: a Commodore PET on a counter at Woodwards or a terminal attached to a PDP 11/70 at the University come to mind. But those experiences didn’t leave deep marks in my soul like the ones listed here.
BASIC

Beginners All-purpose Symbolic Instruction Code, which I’m pretty sure is a backronym, was my first coding language starting in earnest in about 1979. I did have some exposure to FOCAL on a PDP system around the same time, but my recollection of whether I actually coded anything or just entered the boot loader code to get FOCAL to read in from paper tape is a bit sketchy.
Most of my early BASIC coding was done on either a Commodore PET at school or on my Apple ][+. I completed the entire year’s coding requirements along with several of my friends for our school’s computing course in about a month. This left the rest of the year to work on my own projects.
I recall spending weekends working my way through 101 BASIC games or various magazines that had code listings for games. I quickly outgrew the kind of software I could type in over a weekend and started buying commercial games starting with Microsoft’s version of Crowther and Woods Adventure. I also played Sublogic Flight Simulator and the Epyx Temple of Apshai/Hellfire Warrior series around the same time. But those BASIC language games that I manually typed in still hold a warm place in my heart.
BASIC stuck in my head for years after I last coded with it, including the bad habits of things like GOTO and direct memory access using PEEK and POKE. But it was definitely a formative experience for me that influenced the path that I took in later life.
6502 machine language

My first interaction with 6502 machine code was in the form of instructions I “injected” using the BASIC POKE command then CALL to invoke said instructions. I used this approach during 1980 to write a small snippet of code that controlled a modem in the BBS application I wrote for the Apple ][+. I had a whopping great 300 baud modem and needed something that could manipulate the modem’s command structure more effectively than BASIC itself could.
I vaguely recall that the modem generated an interrupt or equivalent when the carrier dropped. My machine code caught that interrupt, reset the modem, and restarted the BBS software. Beyond the fact that the code worked I can’t really remember much in the way of details.
After I wrote my KGBBS (Kelly Greig’s BBS) software I then invested in an assembler for 6502 code. This permitted me to use opcodes that were almost human readable and could be more or less directly compiled into machine language. This was quite a step up from peeking and poking memory addresses with bytes that represented the opcodes.
The main thing I produced with my assembly skills was a program to undelete files on a floppy disk. It would load into RAM, read a disk, present a list of deleted files on the disk, and give the option of recovering these files. As I recall reversing deletion required setting a bit and selecting a replacement first character for the file name. I felt very powerful when I ran this code- undeletion was almost a magical power at the time.
Pascal

Oh! Pascal! was the book we had to get for first year computer science in University in 1982. I have retained virtually nothing from the course other than a sense that I didn’t really like the Pascal compiler we had to work with. As I recall, the compiler was very slow and changes to code generally meant a several minute wait before the revision could be tested.
My preference for strongly typed languages probably originated with my experiences with Pascal. I liked the clarity of defining the purpose of a variable in terms of data type before it was used: it just made more sense to me that way. I did quite well in the course so I must have absorbed something at the time. I dropped out of University after my first semester and never went back, so how my coding journey might have progressed as I advanced is not something I can answer.
A few years later after I dropped out of University I spent a period coding with Borland Turbo Pascal, which was the first compiled language I experienced that had a compilation time measured in seconds. Turbo Pascal was fast enough to support my preferred iterative method of coding: change the code, see what works or breaks, and repeat until done. With its database libraries it formed a powerful alternative to data-specific coding platforms like dBASE and FoxBASE
C

My exposure to coding with C was distressingly limited. I did have a copy of the original Kernighan and Ritchie first edition C programming language white book, and I definitely wrote some C code. But the largest application I worked on was a version of the game Hack which I ported to an Altos 586 that I owned. Most of what I did with C was debugging and small code changes to implement a scoreboard. I never did figure out the primitive multiplayer features, but the game itself worked.
My recollection is that C supported some very dangerous kinds of coding behaviours. Things like creating a pointer to a function then doing something potentially nonsensical like incrementing that pointer. In the right hands, C could be very powerful. But it was often not in the right hands.
