The Symbolic Debugger

40 years ago I got my first computer. A simple ZX81 with 1K of RAM, it was impossibly puny by today’s standards, but it was mine. I’d been programming for a couple of years before that on other people’s computers, but to have my own computer was awesome.

Having just the computer and a single user manual forced me to learn things the hard way; no online searches, no, just hours of trying to work out why things were the way they were, and how to make things work.

I’ve been building on those skills ever since. I’m still writing software but the industry has matured in countless ways since then; boundless system resources, instant information, and ever-improving methodologies. Working with these and keeping current with them is my day job, but my spare time is often spent with retro computing.

My own “pet” projects tend to be either C++, Ruby, or Z80 assembler. Most of my paid work is C++, but assembly language a good cerebral exercise, forcing the programming brain to work differently.

Regardless of the technology – be it cutting-edge, mainstream best-practice, or quaint old retro systems – there’s something to be learned from all of it.

On this site, I try to cover a handful of areas of software development that aren’t well documented or explained elsewhere. For example, there are already dozens of good references for iOS development so there’s not much point in me writing yet another one, but information on CP/M programming in today’s context is much less common.