Background
This is a glance at my pre-professional programming background. Driven by attachment
to video games, I started digging into the programming world at the age of 12 beginning
with the Basic programming language on an NEC PC-6001 personal computer. My goal was to
program moving objects in the text screen mode. An interpreted language at that time,
Basic was not enough for any kind of graphical programming, and the NEC platform did
not provide any real alternative, so my only choice was to get into the complicated
world of Assembly programming and that was at the age of 14. The Z80 processor from
Zilog had a pretty nice registers and instructions set, but having no assembler at
that time meant that I had to compile my code by hand before POKEing my machine codes
into memory. It was a nightmare from a practical perspective, but it gave me deep
understanding of how computers actually work under the hood. The fact that I managed to
get some objects moving on the screen was indeed an achievement, given those tools and
that age.
Couple of years later I switched to Commodore 64, which wasn't any better in terms of
programming tools, but it had a better graphics and audio chipsets. I kept programming
using Assembly on the Motorola 6502 CPU used by the Commodore 64 until the age of 17
when I finished my high school with high grades granting me a seat in the computer
engineering department at Baghdad University.
As soon as I started my university, I got an IBM compatible PC and started right away
with the C programming language, learning it on my own, 2 years ahead of my classmates
who later on trusted my advices when it comes to programming more than the lecturers'
advices.