How the “naughty kid” taught himself to code, microelectronics, and other stuff

Software Developer, Keldon Alleyne, describes his path to teaching himself how to program on an ancient computer before the widespread adoption of the internet and the availability of tutorials.

The year was ’92, and my mother and I were on our way home from my after school club where we’d play pool, box hockey, and every Wednesday we’d be treated to a French lesson from Mrs Donovan.

Noticing the local thrift store had a “new” second-hand piano I couldn’t resist but tug my mother’s arm to go inside.

The shopkeeper was impressed with how well I played Slow Rock despite never taking piano lessons, and the following week gave me a bucket of computer magazines after my mother had told him how much I was into video games.

Level map for Sonic The Hedgehog on the Sega Mega Drive
Level map for Sonic the Hedgehog on the Sega Mega Drive

The magazines had everything from game guides and level maps to electronic hardware ads and snippets of code written in BASIC.

We then took a cab to my cousin’s as it was raining that evening, and I spent the entire journey deciphering the meaning of the code snippets under the fleeting and cyclic ambience supplied by street lights.

I continued to study the code when we arrived at my cousin’s rather than watch cartoons or play video games.

The level maps, code, and advertisements for electronics equipment sparked the imagination of 7-year-old me. There was no reason why I couldn’t design my own level maps. All I needed was a big enough sheet of paper. And the logic behind the code made a lot of sense. They were executed in order. Some commands like GOTO will send you to the numbered line, and I just needed access to the manual to understand the commands I couldn’t figure out.

I wasn’t much of a trouble maker but I was vocal when I didn’t agree, had something of a talent for expressing my anger or frustrations in plausibly deniable ways, and could protest with the persistence of a bull and the clarity of a talcum powder laced slap in the face. I wasn’t an easy kid.

It would take a few more years for me to dig my teeth into electronics where I would learn how to build and design analogue circuits, and later, digital circuits.

Usborne Computer Science books for kids

At the same time, I’d managed to stumble across a few books on programming at the local library but had no computer to try it on.

In 1998 I got my first break. A discarded council PC found its way to my uncle’s living room. It was a 17 Mhz 80286 with a 20 MB hard drive, 4 MB of RAM running MS-DOS 6.0 and only had four usable programs on it (none of which my uncle knew how to start).

Each week when I visited I spent an hour or so figuring out how to navigate DOS and eventually discovered Word Perfect.

He gave me the PC shortly afterwards, and that was when it all began.

QBasic was the main language I used to learn to program. Although I’d read lots of books on programming, none of the BASIC code was compatible, and I had to learn it all using the information provided in QBasic’s help section.

QBasic on MS-DOS

The other programming environment I found was Microsoft Debug. It’s not intended for writing code, but it was all I had.

I had no manual, book or tutorial on assembler. Instead, I taught myself through sheer trial and error — browsing the memory for new commands, trying them out, and working out what the command did by examining changes in the registers or memory.

x86 assembly via debug.exe

Right now there’s a lot of discussion on how to get more minorities into tech. I’d love to help give others the chance I had, but I think there are many misconceptions about what you need to get started (I had a crappy computer that was older than me), and how much children can understand.

I wasn’t your typical geek. I was a musician, a bit of a class clown, not too bad at sports, pretty social, got in trouble (mostly talking, talking back, and the “intensity” of my protests), and was mostly just curious about the world and how it worked.

I wasn’t expecting to get a degree or even work as a programmer. I just wanted to make games and had ambitions to be a designer.

I did excel in maths, however, which opened the most doors for me. Through one programme I learned a lot of advanced maths (encryption, matrices, algorithms, statistics, etc.) that I could apply or just try out for myself in code.

But there was a lot of luck involved. Had I not found that book on MS-DOS interrupts I’d never have known how to access the mouse and video memory. It was through a classmate that I gained access to a C++ compiler, and later, a lucky find in the library that I was able to learn how to perform 3d rendering in C++ as well as all the maths involved.

ProtoCAD 3d for MS-DOS

I learned 3d modelling through ProtoCAD and used it to build a 3d model of a CD rack for my GCSE Design and Technology project, which I then “enhanced” with graphical effects via NeoPaint (all provided by the same friend who had a drawer of floppy disks his father had collected over the years).

Seeing my friend playing Pokémon on an emulator he downloaded with his ADSL internet convinced me that there must be a way for me to make my own console games — introducing me to the world of homebrew games development that landed me my first developer role nearly a decade later.

A lot of hard work was involved — hours upon hours of me trying to figure out how to make things with nothing more than my own wits and my little notepad.

But for the most part, the largest factor in all of this was a series of happy accidents that are hard to replicate or even match with any diversity programme.

I was fortunate to not know I was “too young” to learn 3d graphics by myself or to pick up C++ as a 13-year-old. I truly believed we were all on a level playing field, and that if other people could do it, then so could I.

My hope is more young children will learn to be as naive as I was.

Software Developer, former SEGA/SI developer currently studying MSc in AI, member of UPF, former youth rep for Youth AID and board sec. for THE PLACE YPC