My freelance programming career
I regard myself primarily as a writer, not a programmer. (The latter strikes me as being much harder work. Furthermore, clients often seem to want working systems, dagnabbit, even when they can barely articulate what it is they actually want their systems to do. Or what data they will be feeding on.) However, after ICL bought the non-US computer interests of Singer Business Machines1 early in 1976 I quite soon found myself dipping a few toes into some programming puddles, largely for my own benefit.
My initial official assignment from ICL was to immerse myself in what was now to be known as the ICL 1500 Series.2 After soaking up its assembler-level language, I was to regurgitate it as a "self-instructional" package for ICL to offer in lieu of more expensive classroom-based hands-on training. I was less than thrilled by the prospect. I had just spent two years doing exactly the same to turn ICL 1900 Series mainframe assembler-level programming training courses into a range of "teach yourself" packages approaching "The Lord of the Rings" in length — see "my first book". Seemed to me I was just being asked to shovel yet another mountain of words.
Now, it is a truth universally acknowledged3 that teaching "something" (generally) requires in-depth knowledge of that "something". Why not put my knowledge to work? And perhaps even earn some extra money? Who did I know?
I had become friendly...
... with Hugh, the husband of my ICL typesetter. He was the Group Editor of a trio of hi-fi magazines published by Haymarket and, when we weren't battering ourselves senseless on an ICL Beaumont squash court, I was already writing articles, hi-fi, and record reviews "on demand" for him in return for the chance to play with some esoteric gear. When I told him about this new and almost affordable "desktop" computer (this was still 1976, remember) I had, and the sort of things you could do with it, he soon decided that (provided he could persuade his Board to buy one) I was just the chap to program it for him. His first "test the water" application was to enter data and produce data printouts to be sent out to manufacturers to keep the information in his magazines accurate.
I could never...
... be a computer salesman. Ever tried to sell a computer when you work for a computer manufacturer? In the UK in the 1970s, in a thoroughly union-dominated organisation, it turned out to be tricky. I began by simply putting Hugh directly in touch with an ICL salesman. Not my smartest move, since that gentleman promptly tried to sell him a system I had never seen nor used, that was totally unsuitable. And cost at least £50K more than Hugh had his Board's approval to pay. (My first exposure to the rather seamy commission-driven marketing side of my industry.)
So next, I got hold of an ICL sales manual, extracted a precise list of the system components to ask for, and said to Hugh "Tell him this is what you want." That worked nicely.
It was a minimal-spec system, coming in at around £5K initially. Of course, that meant I didn't have much room to play around in — there's a limit to how much function you can cram into 8KB of RAM when 4KB of it is already allocated to some basic I/O functionality (like reading the keyboard and driving an 8-line display screen). I had no choice but to write the initial version in assembler-level code. Somewhere upstairs is the memory map I sketched to help me keep track of where all the functional bits of code could be squeezed in.
After a few months...
... of successful data entry and printout mailouts, Hugh decided he wanted to extend the system to perform similar duties for the data used by other magazines, with a variety of tweaks, of course. I managed to do two vital things:
- Get him to pay me a fair rate for the job: £8/hour from memory (Christa helped me write the letter!), and
- Convince him to shell out for an extra 24KB of RAM.
That meant I could switch to a somewhat more productive, higher-level programming language, and modularise the function, making it very much easier to rework similar chunks of code for different purposes. While I had found, rather to my surprise, that I greatly enjoyed the lower level coding I have to admit I became a lot more productive with that extra 24KB of RAM.