It occured to me a couple of days ago that I've been a full-time self-employed writer for over eight years now; and with a couple of exceptions, every company I ever worked for before then has gone bust (and as far as those exceptions go, I believe a statute of limitations probably applies by now). If you've looked at the potted biography on the back flap of most of my books, you'll have noticed weird references to my previous occupations — pharmacist, freelance journalist, dot-com startup monkey — none of which seem to have much in common with novelist. So over the next few days and weeks I'm going to try and describe how I ended up in this freelance writing job, and the weird and winding path I took to get there.
Back when I was a wee thing, the English educational system required schoolkids to make serious decisions about their future career structure waaay too early. Up to age 16 and the "O" level exams, you studied a range of about 7-10 subjects. Then, on the basis of your "O" levels (or the less rigorous CSE exams) you either left school at 16 and got a job, or you stayed on for two years to study 3-4 subjects in depth at "A" (advanced) level. "A" levels were the gateway to university admission; your choice of graduate degree determined which "A" levels you needed to study for admission. (They generally covered a subject to about as much depth as you'd reach in the second year of a contemporary American university course.) You didn't get to mix subjects; you were either going into the arts or the sciences or the professions. So at age 15 you needed to make your mind up what you'd be studying at university, and what kind of career you intended to go into.
I already knew (from an early age — 12 or so) that I wanted to be an SF writer. But there was a fly in the ointment — a fly called Margaret Thatcher. I turned 15 in 1979, the year the conservatives won an election and the Thatcherite revolution swung into action. Unemployment soared from around one million to over three million in twelve months as the UK experienced the worst industrial recession since the end of the second world war (largely caused by Thatcher's dramatic decision to cut most of the state-owned industries off at their knees, on the assumption that the workers would find new and more productive jobs sooner rather than later — a misplaced assumption, as it turned out). I come from a middle-class background; I could expect to go to university, but not to rely indefinitely on parental hand-outs. "You'll need some kind of way to earn a living while you're trying to write," the careers guidance teachers told me. And, not being sufficiently cynical back then — let alone sufficiently experienced to realize that the then-prevalent economic doom'n'gloom would eventually pass — I took the warnings at face value.
Given my grades, I should have studied English Literature. If you've got the head of your school's English department describing your failure to go for an "A" level in the subject as a "grave loss" to the department, that's probably a hint you should listen to. But I was doing okay in the sciences, and the whole "get a steady career" talk had spooked me. Not to mention that Making Plans for Nigel was all over the radio back then.
You're probably wondering why I didn't head into computing. It's one of those historical accidents; my school didn't acquire a computer lab until 1981, and didn't begin offering even "O" level computer science until the year I left. I wasn't quite good enough at mathematics to get the encouragement that would have made me go for a maths "A" level; that year the school maths department was picking and choosing. And without either mathematics or CS, studying CS for an undergraduate degree was out of the question.
So: what to do? Given my aptitudes and abilities, medicine was out; I happen to be cursed by a poor memory and a lazy disposition, and back then the entrance requirements for med school were at least as high as those for Oxbridge entrance. So I aimed at a second tier profession: dropped English at "A" level and by and by packed my bags and headed for London in 1983, to study pharmacy.
And thus I sealed my fate for the next seven years. (Give me a time machine and let me go back to 1980 and I'll make sure my younger self doesn't make that particular mistake again even if I have to kneecap him. But that's another matter.)
What followed is ... irrelevant. I figured out pretty early on that I was a square peg being trained for a round hole. Pharmacy isn't a profession that fits my strengths: you need an excellent memory, focussed attentiveness to detail, and little enough imagination that the prospect of accidentally poisoning or killing people doesn't keep you awake at night. I passed the degree (not well), got through a year's pre-registration work in a smallish regional hospital, then shifted to a job in a large regional teaching hospital in Yorkshire. The pay, not to put too fine a point on it, sucked mercilessly at that time; retail offered better money, at a price, so around early 1987 I began looking for a new job ....
The price became clear six months into staffing a decrepit hole-in-the-wall in Halifax, when the local detectives got a hot tip-off and staked out my workplace for an armed robbery twice in one month. It was a piss-poor excuse for a shop, but it was round the corner from a local GP's practice in a poor part of town, and the passing trade was good for a prescription workload that would keep one pharmacist and one shop assistant busy for most of the day. What I knew and the detectives didn't was that my boss — the guy who owned that, and nine other, pharmacies — was a junkie; while he was building his business his marriage had disintegrated, and he'd begun hitting the stock. (At that particular time he was occupying a cell in Armley prison, having been caught speeding while stationary as it were.) Frankly, the Sweeny scared me a lot more than the robbers: the latter had hit ten pharmacies already that year without beating up, shooting, or injuring anyone. In contrast, the plainclothes firearms guys were taking lots of polaroids of the inside of my shop for reference if they had to storm the place in a hail of bullets.
What can I say? I was 22, callow, had wasted the valuable socializing space you get at university by studying a hard technical subject I had little aptitude for for sixty hours a week; and all I'd managed to do that really counted in my own head was to sell a couple of short stories to Interzone and have a (first) serious relationship disintegrate messily. I was too naive to pull a long-term sickie; instead I took almost six weeks to get a new job, this time at a pharmacy chain with a slightly less demented management structure and clientelle.
But I had, finally, figured out that the whole idea of using a career as a state-licensed drug dealer to support the writing habit was a horrible mistake. And that's when I began to get serious about looking for a new career ...
I taught myself to type on a manual portable typewriter, aged 12. By age 16, the typewriter died — the keys began snapping from metal fatigue. (I am not making this up.) After much whining and kvetching, my parents bought me ... a new manual typewriter. This was in 1980. Home computers were showing up in shop windows and magazine adverts, but at home we had a black and white TV and a record player.
This is the story of how I missed the first wave of the home computing revolution but caught the second, and where it took me.
I was, I think, liable to go a bit computer-mad from the moment I first saw a Commodore PET in a shop window in 1977. I wasn't the only one in my generation; it was a bit like being airminded, half a century earlier. And I did, in fact, glom onto computers early — but was handicapped by the lack of resources at my school. (A school which was ahead of the curve by English educational standards; a lab containing three Apple IIs and a System-525 S-100 bus machine running CCP/M (but hobbled by only having a single terminal, plus a DECWriter) turned up in 1980. Yes, that's four computers for a school with over 1000 pupils. It was a lot, in those days.) I took optional courses in BASIC and PASCAL programming, I read PCW, I ploughed through GEB ... and in mid-1981, I used a large chunk of my savings to buy a Sinclair ZX-81.
The ZX-81 sucked. It fell, not to put too fine a point on it, a little bit short of what I knew I wanted. Programming it in BASIC was not only tedious — it lacked any obvious way of loading and saving data on tape (other than as DATA statements inline in your code). I wasn't quite up to grappling, unasisted, with the book on assembly language programming that I'd bought; so after four months I gave up, sold it, and used the proceeds to buy a Casio FX-702P (which I still have, although I haven't put batteries in it and powered it up for a decade). As a programmable calculator, it helped get me through those all-important "A" levels and into university. And it was the last computer I bought until ...
Autumn 1985, as I began my third year of a pharmacy degree, which was when Amstrad launched the PCW 8256 word processor.
Now, this wasn't to say that I'd been ignoring the whole home computing revolution. On the contrary — I'd been drooling after one continously. But I was an impecunious student, and I was smart enough to know that in addition to a computer I'd need a TV or monitor, and a printer, and other odds and ends like software. The sums didn't add up. Back in 1985, an original Macintosh 128K would have cost roughly my entire year's student grant (a subsistence allowance subsequently replaced by student loans; at that time, it was comparable to long-term unemployment benefits — which might have been livable if I hadn't been studying in London); ditto an IBM PC without a hard disk.
My interest in computing was on hold because I was studying a tough course and didn't have the money or time to pursue other diversions. Accounts on the university mainframe were just about available if you knew who to ask — but it's probably a good thing that I didn't; in that final year of my first degree I had a 40 hour a week lecture/tutorial/laboratory workload plus assignments and reading.
But the PCW fitted a need. It was sold as a dedicated word processor, but Amstrad had shipped a copy of CP/M 3.0 on the flipside of the boot disk. A bunch of older CP/M applications magically acquired an afterlife on 3" floppy (yes, the PCW used three-inch floppy disks, unique except for Amstrad's other computers and the Tatung Einstein; these are not the 3.5" floppies you're probably thinking of). I'm left-handed and am rather bad at drawing; DR GRAPH saved my ass on some of those lab write-ups, and I wrote up my dissertation in Locoscript.
I also carried on writing fiction. I was doing this in the background, the whole time: it might help to know that I was averaging 1-2 novels a year, for very approximate values of "novel". (They weren't publishable. I was writing my million words of crap. You don't want to read them, honest.) The PCW allowed a step change in my writing around this time; it made it easy to edit. And with editing, my output improved in quality, if not in quantity. A month after I bought the PCW, I wrote the story that became my first commercially published piece. I sold it to Interzone later that year; it was the first of several. I was overjoyed! Word processing, it seems, is what it took to allow me to tune my drivel for readability. Probably because I'm too lazy to edit the traditional way, using white-out and scissors and much copy-typing ...
But I digress: this piece isn't about the writing, it's about the other stuff.
Having acquired a word processor, and been satisfied, I might have stopped right there, if not for a subtle oversight on the part of a programmer at a now-defunct software house. However, Locoscript, the word processor that shipped with the PCW, in that bundled version, lacked a single feature that drove me right up the wall: there was no word count function.
Most of the time, most folks don't need to know how many words they've typed. But if you're writing up essays to length, you can use a word counter. And if you occasionally write short stories and mail them to magazines, the editors like to know how long they are.
Within 48 hours of getting my PCW out of its box and fitting the plug, I'd flipped the boot disk over and was poring over the Mallard BASIC manual, trying to get my head around how to read a file. Within 4 weeks I'd figured out that BASIC wasn't a terribly useful programming language. (As it happens, you can do what I wanted to do in BASIC; but I couldn't see how back then. Not enough theory.) So I got my hands on a C compiler and stared at the manual and (abbreviated) language guide in incomprehension. "What's a pointer?" And then a PASCAL compiler, and then a library of public domain software, and then, and then ...
By the time I sold the PCW and upgraded to my first real PC (18 months later, on the back of the income from my first post-graduate, post-registration job as a pharmacist) it had twice as much RAM as I'd started with, an extra floppy disk, and a whopping great 10Mb hard drive from which it booted CP/M. I'd written my own word counter, and a bunch of other stuff. And I was half way through a part-time night school "A" level in computer science, and finding it boring and slow-paced.
By 1988 the PC habit had bitten me hard. I was terminally bored (and stressed) by the job; I'd acquired a portable computer (a Victor Vicki — luggable version of the Sirius 9000 MS-DOS family, which were not IBM-compatible) and was using it in quite patches during the day at work. I knew I wanted to quit pharmacy, and an escape route was in sight. The British government woke up some time in 1987 and panicked when they noticed that the British computer industry was basically turning into an offshore annexe of silicon valley, and that there weren't enough CS graduates coming off the production line to meet demand for skills. To deal with the sucking skills gap, they provided funding for a bunch of conversion course postgraduate degrees.
The idea was that if you already had a decent science degree, you could go back to university on a stipend, and the staff of the local computer science department would drop the equivalent of an undergraduate CS degree on your head in 12 months. This was harsh — very harsh. If you passed, they handed you a master's certificate: it was a taught master's degree, rather than a research one, but you'd probably have earned it because rather than being spoon-fed, they were about to shove a funnel into your throat and start pouring buckets down it. The UK is oriented around the three year degree course (these days there are more four year degrees) so there's less time for spoon-feeding and hand-holding to start with. The MSc conversion degrees left the spoon-feeding out entirely — no second chances, no exam resits — and was pretty wasteful: the year I did it, about 35-40% of the class failed. (And these folks had previously made it through a regular science degree.)
By 1989 I was desperate to get out of pharmacy — in the end, I quit one summer locum job three weeks early, due to being physically unable to contemplate going in to work. (In ten weeks of that job I'd been driving roughly 150 miles a day and working nine hours on my feet; I lost 15 kilos and was on the edge of a nervous breakdown when I quit.) But I'd been accepted for the MSc conversion course at Bradford Uni. I sold my flat (back then, a single young professional could get a mortgage on a one bedroom apartment for sum equal to about two year's wages), moved into a shared house in Bradford, used a chunk of the proceeds from the house to buy the most kick-ass computer I could find, and ...
... I went blind in one eye.
Oh yes. Sometimes life kicks you in the pants, hard: in my case, I sprang a detached retina about four weeks before I was due to embark on a career-changing gamble. Worse: the detachment was held in place by a ridge of scar tissue — it wasn't visible to an opthalmoscope inspection. The upshot is that I ended up being rushed into hospital for eye surgery (it was way beyond laser treatment by this time) two weeks before starting the degree. And I turned up to register for the course wearing a bandage on one side of my head, and walking into things because I only have half my visual field working in the other eye.
I swear, I didn't have time to read any fiction for six months after I started that course.
You go to university. You register. You get your username and password on the UNIX servers, go through basic orientation, collect your grant cheque, and then on day three the teaching begins. Your syllabus is: you will learn one of PASCAL or COBOL, with an optional introduction to C, and if you're taking PASCAL you'll be doing funky stuff with data structures such as linked lists and trees and record structures before it's over. (If you can't conceptualize pointers, you are in for a world of hurt.) You will learn about general theory and structure of operating systems including concurrency, scheduling, kernel functions and structures, filesystems ... oh, and there'll be an introduction to UNIX. At the same time you're doing this you will be learning Z-80 assembly language and programming a single board teaching system using a hex keypad. You will also be brushing up on binary, octal, and hecadecimal arithmetic, boolean algebra, basics of symbolic logic, and some of the other hum-drum theory you'll need. And then there's the hardware side: transistors; logic gates: learning to build things like half-adders and flip-flops: and then learning some of the basics of logic circuit design (culminating in something like building a traffic light controller for a multi-way junction). All in the first six weeks.
I said I didn't have time to read any fiction for six months; I'm not sure I had time to sleep. I worked 70-80 hours a week for nearly 50 weeks. Buying that kick-ass PC was a life-saver; my digs were a half-hour walk from the comp. sci. department, where there were cheap plastic bucket seats in front of VT52 terminals hanging off a shared Sun-4 running SunOS. In contrast, I had a reclining office chair in front of a giant 13" colour VGA monitor, hooking into my very own 20MHz 386 with its own 40Mb hard disk and a huge 2Mb of RAM! (Which I later upgraded to 4Mb.) I had an IDE and Turbo Pascal running under DesqView/386. And more to the point, I was finally studying something I was interested in. Luxury!
But all good times come to an end. And in the summer of 1990 — right in the middle of the biggest recession since 1980 — I emerged blinking into the sunlight, clutching a slightly moist piece of parchment saying I was the proud owner of a cargo cult computer science degree, and began looking for work.
And that's when my employment history turned really strange ...
In early 1988 I bought a small apartment. I sold it in early 1989, for a big enough profit to put myself back into university in order to escape a Fate Worse Than Death — the kind of career Leonard Cohen was singing about in "First we take Manhattan."
There was colateral damage, of course. As you can imagine, the kind of property bubble that funds career breaks for some breaks careers for others. I just barely hung on to my mortgage repayments during Nigel Lawson's infamous inflationary "blip"; but the bubble's abrupt bursting in mid-1989 plunged the UK into a recession. I'd strongly recommend being a student during a recession ... but looking for a job afterwards is not so much fun.
And so ...
... What's a newly-minted graduate with no track record in the IT industry to do?
My patchy memory thankfully dims the residual trauma of the milk round interviews; let's just say, things were grim up north. And this time I was older and more cynical and not afraid to avoid being panicked into taking the first job that came along.
Case in point: a large British catalog shopping organization called, let's see, something like "Imperial Merchandise". Not the biggest catalog operation in the UK, but definitely not a small one, this company had a data centre in Bradford. And they were hiring programmers. So it came to pass that I grumbled and struggled into the old business suit (this was a year or so before I decided that I never, ever, wanted to wear a suit and tie ever again) and proceeded to go for a job interview.
Imperial Merchandise's IT division occupied a couple of floors of a grand sandstone edifice of Victorian vintage, down in the valley near Forster Square railway station. Bradford is ... well, it's the Yorkshire city that time forgot. There are worse places, but this city grew up on the back of the dark satanic mills of the early industrial revolution and the wool trade, and it hasn't forgotten the glory days. (Take IM's building back in time a century and you'd likely see it filled with whirring weaving machines run by sweated child labour instead of mainframes and serious-faced men in three-piece suits sitting in front of 3270 terminals.) My first stop was a reception area where a bored secretary, banging out dictation tapes on an Amstrad PCW, paged one of the IT department managers. My second stop was an office off one side of a vast, echoing grotto full of green screens operated by the aforementioned serious-faced men, and a chair on the other side of the desk from two of their tribal elders. Let's call them Mr X and Mr Y.
"We were very impressed by your CV," said Mr X.
Mr Y nodded, poker-faced.
"We'd like to invite you back for a second interview. And an aptitude test."
"An aptitude test?" I asked.
"Yes," said Mr Y. "To see if you're suited for programming."
At this point, alarm bells began ringing in my head. (Here is a hint: the top item on my CV was: "Computer Science Degree".)
"That's interesting," I said. "If I pass your aptitude test, what happens next?"
"Well, we would be inclined to make you a job offer. You'd join us with our regular autumn graduate intake, and we'd send you on a three month training course."
"A training course? What sort of material does it cover?"
"Oh, the usual stuff. What a computer is and how they operate, how to count in binary and hexadecimal, how to program."
" ... " (Imagine, if you will, my noises of politely bemused agreement.)
"And then you'd start as a trainee programmer!" said Mr X.
"Hmm. What sort of systems do you operate here?" I asked.
"We have two Amdahl mainframes running MVS and VM/CMS. We keep all our stock lists in the databases on these machines, and there's a variety of software. Some of it is written in 360 assembler, but we also use PL/I and a variety of 4GLs —"
"But we upgrade to COBOL next year!" Mr Y added enthusiastically.
At this point a vision of my life in the world to come flashed through my mind's eye, and it was not a pretty vision, full of frolicking kittens and rainbows. It was more along the lines of wearing a three-piece suit each day as I toiled in a grim Victorian workhouse, learning an obsolete skill set just in time to be downsized as a result of one of the 12-monthly management changeovers. Imperial Merchandise was on its third new CEO and executive team in five years; there was no sign of networking or indeed of 1980s technology in the entire business, and I'd just about learned enough about relational algebra and database theory to spot an enterprise-wide transition to Oracle coming down the tidal bore like the mother of all tsunamis.
I don't think I said "don't call me, I'll call you," as I left the interview. But I should have. And that's when I realized that looking for a job even one micron behind the bleeding edge of technology was a Bad Idea ...
I did not take the job with the three-piece suits and the mainframe farm. Instead, I had a stroke of luck and found something much more interesting daaahn sarf, just outside the M25. As a side-effect, it launched me on a four to five year diversion into a career as a technical author and showed me what real programmers are capable of. Here's what I remember ...
Back in the late 1980s, the British monthly computer magazine scene was pretty vibrant. One of the more interesting mags — from the point of view of unregenerate nerds like myself — was Computer Shopper. As I understand things, back in the late 1980s Felix Dennis had seen a copy of the American Computer Shopper mag while on a business trip, and had been impressed by its ability to sell advertising column-inches. So he grabbed the name in the UK and bankrolled a bunch of old school computer journalists (notably Graeme Kidd and Jeremy Spencer, among others). They bolted together the editorial content for a magazine aimed at hardcore enthusiasts, in the tradition of Byte and Personal Computer World; this in turn got Dennis a solid ABC subscription circulation base on which to sell advertising. Shopper mushroomed, and by 1988 it was one of the highest circulation computer mags in the UK.
While I was an impecunious comp. sci. student in Bradford, I noticed that Shopper ran features and reviews by a whole bunch of people I'd never heard of. So I picked up the phone one day, and pitched myself at Jeremy. "Gissa review slot," or words to that effect; I mentioned writing for Interzone (I don't think Jeremy knew Interzone from a hole in the ground) and a computer science degree. As I recall it, my first attempt at writing for shopper was a review of Mark Williams Corporation's Coherent operating system. One thing led to another ... and by 1990 my CV listed "writing about computers for a general audience in the press".
Programming jobs were thin on the ground for fresh graduates, but I landed an interview for the technical author slot at an interesting start-up in Hertford — an outfit called Real World Graphics, run by a guy called Graham Rowan. And I got the job.
Today, with 20/20 hindsight, I recognize RWG for what it was; your typical British high-tech startup: over-ambitious, feisty, under-capitalized, and dogged by a variety of interesting personality disorders which would probably keep a clinical psychologist in M&Ms for a decade. But it was glorious while it lasted ...
RWG was not Graham's first start-up. Before that, he'd been the prime mover behind IO Research, and something of a legend in British personal computing circles. Graham's shtick was graphics hardware. Here's what Guy Kewney made of him in early 1983. Graham's Pluto boards were the first high resolution colour video cards on the market in the UK. He went on from there to design more graphics hardware, built around higher performance chipsets, including the Motorola 68K family and then various RISC processors; along the way his boards found their way into the Quantel Paintbox, the first digital video effects editor used by the BBC and other broadcasters.
I'm not clear on how, why, or when Graham split from IO Research, but by 1988 he was putting out press releases from the new company, Real World Graphics. RWG was dedicated to producing insanely powerful 3D rendering engines with insanely expensive price tags (for a 16-bit ISA-bus card designed to slot into a PC with a 286 or 386 processor). A dapper, nattily dressed guy with a well-cultivated moustache, he reminded me somewhat of a ferret; a ferret who was happiest when he was up to the elbows in an open equipment rack, debugging a graphics card with the aid of a soldering iron and a signal analyzer.
RWG's mission was to sell parallel-processor RISC based graphics systems that could rival the dedicated rendering hardware put out by the likes of Silicon Graphics or Evans and Sutherland. The big new product of 1990, which I got to re-write and then write new manuals for, was the Reality board; the aforementioned ISA-bus card. By 1990 standards it was a monster, with 4Mb of VRAM, 16Mb of DRAM (the RAM chips packed so densely they were stacked on edge), four beer-mat sized Intel i860 RISC processors, and a Ti 34020 just to do the 2-D head-up overlays. The ten-layer PCBs were so balky that each one had to be hand-finished, and the RISC CPUs selected carefully to fit together in their carriers; it didn't quite glow red hot, but having a well-ventilated case and a powerful fan was recommended. These things sold for £16,000 a pop; I didn't see their like again until 1998, in the shape of a Matrox G400 costing £250 or so and targeted at high-end gamers. Graham was, quite literally, right on the bleeding edge of graphics technology. At one point he bolted together a VME-based massively parallel system for a demo of his new "Super Reality" architecture. I suspect it may have been the most powerful supercomputer in England at the time — sitting on the desk next to me, with 96 RISC processors churning away to display a large 3D model in real time on seven monitors. (XGA spec, 24 bit colour, mist and fog and multiple light sources — in 1990!)
If Graham's hardware was startling and impressive, the company that produced it was more a case of The Mouse That Roared. There were about twelve of us in a small office unit in Hertford, a sleepy rural town just north of London (for which it served as a dormitory). Half the company were programmers (plus one technical author). We sat in a large horseshoe-shaped ring of tables, pointing outwards from the centre of our room, with a LAN connecting PCs, a single Sun 3/60, and the pride and joy of the department — an SGI workstation. As I recall, the SGI was needed as a bridge to the VME bus frame containing test boards, while one of the PCs (sitting open-topped beneath a large fan) held the single Reality board we had for testing code. And our opposition? SGI and Evans and Sutherland, both of whom were billion dollar multinationals!
(This taught me lesson #1 of start up business plans: if you are a mouse, do not attempt to invade an ecosystem already occupied by elephants, unless the elephants are dying.)
The problem with developing graphics boards is that customers need software to run on them. If you're a huge vendor like NVidia, today, you just supply drivers with a standardized API and everyone knows that their OpenGL or DirectX code will run on your hardware. Back in 1990, such standards were embryonic at best. Real World Graphics supplied its own eccentric API to the Reality boards — a real-time superset of a subset of the PHIGS+ 3D graphics system. Mind you, the primary customers for Reality boards weren't game designers — it was aimed at the flight simulator market (and vehicle simulators, for that matter).
And therein lies a headache.
I learned pretty soon after I arrived at RWG that things were not going smoothly. There was a recession on; at one point we went three months without a single sale. The atmosphere was tense, if not poisonous. There was a pay freeze, naturally: and a purchasing freeze, taken to idiotic extremes. (One programmer was a specialist in TI 34020 DSP code. He had to code for and debug on the single Reality board shared between all the programmers. This wasn't a problem — until the DSP on the board blew out. At which point he carried on for as long as he could; but then, perforce, sat and twiddled his thumbs, because there was no money to replace a £50 chip on a £16,000 board that was preventing a £1000/month programmer from doing his job.)
That's not to say that RWG didn't have some superb talent. Take Carl, for example. Carl was a kid from Huddersfield in Yorkshire. He'd left school at 15, with crappy exam results because he'd been computer-obsessed. He got a job writing games in assembler on the Atari ST and Amiga. RWG was his first job, aged 18, for a real computer company; they were paying him thruppence ha'penny or thereabouts, to write hand-optimized RISC assembly language code for a parallel processing architecture. And he could do it. Boy, could he code! I watched him squeeze a 400% performance improvement out of the core rendering loop in the space of six weeks. During the same six week period, in his spare time — we were living in the same house — he wrote: a single-pass ARM macro assembler on his PC, cross targeted on his pride and joy (an Acorn Archimedes ARM machine). Then he wrote a 3D real-time rendering package for the ARM, with texture mapping support. And a demo, using the 3D package he'd written. And he did this while going to the pub three evenings a week and having a social life. (After RWG, Carl got a university place studying CS, graduated with the highest grade that department ever awarded, then went back to the games industry. Last time I met him, in the mid 90s, he was about to put down the deposit on his first Lambourghini. So sometimes the good guys do get their just rewards.)
The programming environment was ... tense, focussed, and a bit odd, even by startup standards. It was like working in a library staffed my methamphetamine addics. About twice a day, one of the programmers would kick back in his chair, spin to face the centre of the room, and produce a set of furry dice with which he would start juggling. This was the cue for everybody else to turn to face the cente — and begin whisting the theme to "The Magic Roundabout", until such time as he dropped the dice. No, I've got no idea where this ritual originated; all I can tell you is that it was the tech author's job to return the dice to their resting place, to await the next tension break.
Anyway: I'd been at RWG for about eight months when I came into work early one morning, to hear a blistering row coming from Graham's office. I listened for a moment, recognizing the voices — then tip-toed past, went to my PC (running MSDOS and Ventura Publisher under GEM on a Hercules green-screen monitor), and promptly loaded up my CV and began bringing it up to date. As I mentioned in the last installment, I was by this time able to recognize signs that the company was Not Doing Well. In this case, the sign I'd recognized was the CEO firing the Marketing Director. Such things do not bode well ...
The company wasn't insolvent yet. But the downsizing axe was clearly being sharpened. Graham had pinned his hopes on getting a big contract to deliver the graphics hardware for an American simulator manufacturer; there didn't seem to be anything else on the horizon that could keep the firm running, and the customer was clearly dicking us about. Indeed, as I learned later, RWG had just four months to run at that point.
With some regrets, I fired off my CV — and got a job interview at the British R&D wing of a successful UNIX OEM based in Watford ...
... A successful UNIX OEM called the Santa Cruz Operation.
I spent nearly three and a half years working on technical documentation for a UNIX vendor during the early 90s. Along the way, I learned Perl (against orders), accidentally provoked the invention of the robots.txt file, was the token Departmental Hippie, and finally jumped ship when the company ran aground on the jagged rocky reefs of the Dilbert Continent. At one time, that particular company was an extremely cool place to work. But today, it lingers on in popular memories only because of the hideous legacy of it's initials ... SCO.
SCO was not then the brain-eating zombie of the UNIX world, odd though this may seem to young 'uns who've grown up with Linux. Back in the late eighties and early nineties, SCO (then known more commonly as the Santa Cruz Operation) was a real UNIX company. Started by a father-son team, Larry and Doug Michels, SCO initially did UNIX device driver work. Then, around 1985, Microsoft made a huge mistake. Back in those days, MS developed code for multiple operating systems. Some time before then, they'd acquired the rights to Xenix, a fork of AT&T UNIX Version 7. SCO did most of the heavy lifting on porting Xenix to new platforms; and so, when Microsoft decided Xenix wasn't central to their business any more, SCO bought the rights (in return for a minority shareholding).
By late 1991, when I joined SCO, SCO wasn't just about Xenix. They had their own official UNIX SVR3 port, SCO UNIX, and (with X11 and a Motif-based GUI on top, and various other gadgets) this formed the core of a fairly neat desktop workstation environment, SCO Open Desktop. SCO back then was about 1200 people, with development centres in Santa Cruz (focussing on X11 and desktop integration), Toronto (the compiler team) and Watford, just outside London (where the UNIX kernel and command line utilities were maintained). It was, in short, a thriving software multinational with a somewhat Californian culture. There was, for example, a dress code: "clothing must be worn during office hours," which was imposed in the wake of an incident when it wasn't (which unfortunately coincided with an on-site visit by some major investors).
(If you are scratching your head and wondering why this doesn't sound much like the SCO Group that is the object of so much hatred these days, that's because it's not the same company. SCO Group started out as Caldera Systems, a Utah-based Linux startup bankrolled by Ray Noorda in the late 90s. They bought the name, trademarks, and — they thought — the UNIX intellectual property assets from the Santa Cruz Operation in 2001. The original SCO renamed itself "Tarantella Inc" and went away to do, well, Tarantella-ish things before being absorbed by Sun, and then Oracle. The SCO Group then went on to play merry hell with the Linux community and take a copious metaphorical shit all over my resumé. That's life in silly valley, I guess.)
When I answered the job ad for technical author, I didn't have much idea of what I was getting into. I'd bluffed my way into Real World Graphics, figured out what I was doing on the fly, and carved out a niche — but RWG was small, so small that I'd never worked with another tech author. SCO, in contrast, had an entire freaking department. In fact it had three departments, with about thirty folks in Santa Cruz, fifteen in Watford, and five in Toronto. If that sounds like a lot, well, SCO's techpubs operation was writing, maintaining, and pushing out something like thirty thousand pages of documentation on an eighteen month production cycle. By trade publishing standards they were over-staffed, but trade publishers don't generally employ their own authors in-house. About half the techpubs crew were editors or typesetters; and about half of us were writers.
"We'd like you to do an aptitude test," said Bridget, the department head, when she interviewed me. "Here's a notepad. I'd like you to take a stab at writing a house style guide for a techpubs department. You've got half an hour."
I eyeballed the Wyse terminal in the office behind her. "I thought you said you had Microsoft Word running on that?" I asked. "My handwriting's not very good ... mind if I use it?"
Bridget gave me a very strange look: it was to be the first of many. (Later, she told me that of all the candidates she'd interviewed for tech writing jobs, I was the only one who'd asked to use a word processor.)
With the benefit of 20/20 hindsight, I didn't fit in too well at SCO; it was just my good luck that SCO suffered from acute multiple personality disorder and had plenty of room for the barkingly eccentric, as long as they could get the job done. SCO had arrived in the UK in the late 1980s, acquiring the UNIX division of a large British software house who really didn't understand this hippyish Californian stuff. A number of Californians had come over with the new company, and there'd been some cross-fertilization. The result: a company where some folks wore suits, some folks wore flip-flops and torn jeans, and the only common denominator was that everyone obeyed the dress code. The parent company was keen on training courses (we had an internal training division, and a budget), and team building exercises. A team building exercise in Santa Cruz meant something like midnight drumming on the beach; in Watford it was code for a lunchtime trip to the pub.
Technology wise ... you probably aren't interested so I'll keep it brief: we ate our own dogfood. When I joined the EMEA techpubs unit, we had sixteen green screen terminals hanging off a single 33MHz 386 PC running SCO UNIX, and we were editing our doc set in vi with a bastardized, weird set of troff macros for markup and sccs for version control. When I left, some years later, I abandoned a nice 486 workstation with a 17" monitor, running Open Deathtrap — sorry, Open Desktop — but still editing files with the same weird macros (apart from the odd foray into Framemaker for dealing with documents from our newly acquired subsidiary in Cambridge, IXI).
At SCO, I admit I went a bit wild. I got into a four month burn-out cycle; because I was doing a job I understood, in a comfortable environment, but within a bizarrely corporate administrative structure. About six months after I arrived, I went through the first downsizing of the 1990s — a cross-industry initiative to set up a rival platform to IBM and Microsoft crashed and burned, and SCO took a 10% headcount reduction in the course of recovering from the mess. We then lurched into developing a new product, SCO OpenServer. OpenServer was to be the all-singing all-dancing successor to Open Desktop; a desktop workstation environment with support for a whole barn-full of then-sexy UNIX technologies — diskless workstation installs (a 500Mb hard disk cost about £500 back then), remote administration via a scripted GUI environment written in a high level language (Tcl) using a graphics server that could cope with both X11 and CURSES displays, and I forget what else. The OpenServer development program turned out to be a bear. Originally scheduled to take 15 months, it succumbed to specification creep; by the time I left, three years later, it had just gone golden master and was about to ship. From the techpubs point of view, we were documenting a complex operating system product — it ran to about 8 million lines of code, on the same order as Windows NT 4.0, against which it would compete (badly) in the server market — and for the first time it would come with a revolutionary hypertext environment to display the documentation — a program called NCSA Mosaic.
The trouble with the mission creep from my point of view was that Parkinson's Law applies; work expands to fill the time available for its completion. A lot of the processes within SCO's techpubs environment were incredibly inefficient. But on the other hand, SCO was getting into the whole ISO 9000 quality assurance fandango. Consequently, everything got re-written, revised, edited, and chewed over sixteen bazillion times, and everyone got to try on a variety of ornamental and not particularly useful headgear. During this process I discovered several things about myself. I do not respond well to micro-managing. I especially do not respond well to being micro-managed on a highly technical task by a journalism graduate. Also, I'm a lousy proofreader. Did I say lousy? I meant lousy. Santa Cruz does indeed have a nice beach for late evening walks with your girlfriend. Oh, and: vi not emacs.
Around the early 90s, one of the perennial headaches in SCO's techpubs department received a permanent solution. The problem was this: how to simultaneously manage (a) an online help system and (b) printed paper manuals? Especially as paper is going away, because the cost of printing the documentation set on dead tree added about £40 to the cost of goods of a copy of SCO UNIX or Open Deathtrap — which is to say, took £40 per sale off the profit margin.
The solution we came up with was called HTML, a fun little SGML-derived markup language that ran on a client server platform called, ambitiously, the World Wide Web. In late 1992 or early 1993, SCO techpubs collectively went WWW-crazy. (That's why we ended up with the personal workstations; to run a web browser.) Our weird troff macro set was designed to support a future upgrade to SGML document management; now our coders purched into action with a bizarre mixture of awk and ksh scripts to chow down on troff and spit out HTML. Masses of HTML. Mountains of HTML. When OpenServer shipped there were something like a quarter of a million HTML links in the documentation tree. It took a server something like eleven hours to chew down on the troff source and spit it all out. But from mid-1993 on we were committed to the web. And reading the web at work.
Did I say "reading the web"? The web was kind of small in those days. There was a daily mailing list called, if I remember correctly, "what's new on the web". It listed every new website that had shown up, and I mean every new website. I used to read it with my morning coffee, visiting those that interested me; I'd usually finished by 10am. (It finally grew too big to follow by late 1994, and was abandoned some time in 1995.)
I confess, the web fascinated me. And I was getting increasingly bored and fractious with my job over those years. I wanted to code; but I'd talked myself into a comfortable, well-paid niche in which I was pretty much paid not to code. Or write fiction. (Almost without noticing, I'd tailed off to about two or three short stories a year, plus half a dozen articles for Computer Shopper.)
During one of my periods of burn-out I decided to teach myself Perl. So I started by trying to write a web spider — a bot that did a depth-first traversal of the web, to retreive (and eventually index) what it found, or just to download pages (a la wget or curl). There weren't many resources for robot writers back then; the internet in the UK was pretty embryonic, too. (SCO EMEA had a 64K leased line in those days, shared between 200 people.) I was testing my spider and, absent-mindedly, gave it a wired-in starting URL. What I didn't realize was that I'd picked a bloody stupid place to start my test traversals from; a website on spiders, run from a server owned by a very small company — over a 14.4K leased line. I guess I'd unintentionally invented the denial of service attack! Martin, the guy who ran the web server, got in touch, and was most displeased. First, he told me to stop hammering his system — advice with which I hastily complied. Then he invented a standard procedure: when visiting a new system, look for a file called "robots.txt", parse it, and avoid any directories or files it lists. I think I may have written the first spider to obey the robots.txt protocol; I'm certainly the numpty who necessitated its invention. (You can find the evidence here (look for websnarf).)
All good times come to an end.
In early 1995 I'd been doing some work on the side; both writing for Computer Shopper, and the beginnings of a web book for Addison-Wesley ... and also some perl programming for a guy from Edinburgh who was providing web technical support for Demon Internet. SCO was clearly in a tight spot, two years overdue on OpenServer, and I was getting a bit itchy around the soles of my feet; I could see the public internet and the web coming, and knew they were going to be huge.
One morning, our managers did a walkthrough of the cubicle hive, taking down all the Dilbert print-outs stapled to the beige fabric walls, and telling everybody to be ready for a magical mystery tour, leaving from the central courtyard at 1pm. I knew the signs; executives from head office are apparently subject to mysterious taboos, and must not under any circumstances be allowed to gaze upon the work of Scott Adams lest it bring bad luck to the department. And the magical mystery tour ... there was going to be some kind of big announcement. And it had to be big — we were in functional freeze and the mad dash to the final release candidate for the product that was more than two years overdue and which would make or break the company, with over five hundred Severity One bugs to fix! So what could possibly justify dragging the entire development group, and QA, and techpubs, and marketing, and sales, and admin, to an offsite for half a day? I didn't know, but I spent the rest of that morning updating my CV — just in case.
Now, I have learned, over the years, to be alert for Bad Signs when evaluating a company's health. Here is an example of a Bad Sign:
They bus everyone to an offsite meeting in a conference centre, hand out cups of grape juice, usher you into a theatre, dim the lights ... then the sound system comes up, playing Things Can Only Get Better as the board of directors run on-stage in their grey suits, punching the air and giving each other high-fives, to announce that:
a) The Chief Executive is retiring, and
b) His successor is the current Chief Financial Officer, and
c) Said CFO promises to grow the company revenues by 500% in 5 years
This was a company in the UNIX on PC sector at a critical time in its development. Linux was coming up on our radar with increasing frequency. The internet was not merely visible, but becoming a vital tool without which our internal processes wouldn't work, and public adoption was growing at something like a compound 50% per month — but the high-level management response was to emit a fart of a product, a neutered "personal" build of Open Desktop with a voucher for 10% off the cost of a leased line from UUNet or Pipex, priced at about the cost of a decent second-hand car.
Do I need to explain why putting an accountant in charge of a technology-driven company is not necessarily a wise, visionary, and forward-looking move?
At this point I considered myself to be on notice. But I was fat and happy at SCO, earning more than I'd ever earned before; it wasn't until another month had passed that I realized just how bad the situation was about to become.
As a Californian software corporation, SCO was prone to various types of American management disease; no alcohol on corporate premises, for example: and then the annual recurring Maoist self-criticism and re-education ritual known as the performance appraisal.
Maybe I'm being unjustly critical here; maybe my line manager (not Bridget) had grounds for her criticisms in 1995. Certainly I wasn't a team player — but then, the way I was working at that point was typically as a trouble-shooter, going in and fixing the more technical stuff that some of our other tech authors just didn't understand. Be that as it may, after one particularly bruising session I headed back down to the department under something of a cloud, following my manager. She departed, en route to a meeting; my course back to my cubicle went past her desk. I saw a blue hardback on the desk. "That's funny," I thought, "it's not like her to be reading a novel at work. It's probably something relating to management theory. Hmm."
I nosily flipped open the book and read the flyleaf. Did a short, sharp intake of breath. Closed the book carefully, marched back to my desk, picked up my phone, and dialed a number in Edinburgh.
"Fearghas. That job you were talking about ..."
"Yes? We're kind of tight right now."
"Um, I really need it."
"Are you sure? We've got enough money in the bank to pay for just one month. This is a start-up. I can't make any promises."
"Fearghas, I need a new job."
"Okay. When can you get up here?"
Here is an example of a Terminally Bad Sign for any organization in the computer business:
... When you discover that your line manager's recreational reading is the 1980 edition of the IBM Staff Handbook.
This may not make much sense to you if you're from the outside of the computer biz, but let's put it this way: IBM was the company that grew fat and happy catering to folks like those at Imperial Merchandise. Here's a transcript of an interview with an ex-IBMer from that period. Note how very corporate the corporate culture is. Note also that in 1993 IBM's traditional culture crashed and burned, running up what was then the biggest loss in American corporate history as they finally lost control of the PC business to Microsoft. If you see your managers taking helpful hints from the corporate equivalent of the Titanic on a speed-run through the ice-infested waters of the North Atlantic, it is clearly time to leave: and so I gave notice, packed my bags, drove up to Edinburgh, and enlisted in my second start-up death march ....
... Or: how usenet got me a job ...
The world wide web is not the internet. The internet actually predates the web by more than two decades; I've been online with a connection to the net pretty much continuously since late 1989, except for a nine-month outage between university and the job at SCO. And since late 1991 I've had access to usenet. Usenet — the vast distributed discussion system — is but a shadow of its former self, largely killed by spam and ignorance ... but back in the day it was where folks networked on a one-to-many level, and it's probably where I first ran into Fearghas.
Who I then went on to work for, in my second startup death-march ...
(One thing I'd better make clear at this point is that I still go drinking with some of the folks in this bit of the memoir, still live in the same town, and am therefore disinclined to piss in the paddling pool we all swim in. So you're not getting the full story, from this point on: I'm going to discreetly pass over certain points, at least until the parties concerned are dead and the statute of limitations has expired.)
Okay: let's rewind the clock from SCO disappearing into twilight zone territory in early 1995, back to the halcyon days of mid-to-late 1993.
I wanted to be on the internet at home. I first got a net connection in 1991, via UUCP (the story of where the "antipope" handle came from is here). In 1993, a small firm of UNIX consultants in London decided that enough of their friends wanted real home internets rather than warmed-over UUCP that there was a market; they bought in a dedicated leased-line internet connection and installed a bank of modems, configured for SLIP (and later PPP) dialup, and started selling accounts for a tenner a month in 1992. They went on to become Demon Internet, and while I didn't sign up with them in their first year, I was one of their first 2500 or so customers (at the first dialup ISP in Europe).
Having home dialup internet in those days was a bit freakishly weird; most people had no idea what it was, back then. There was a lively culture on the demon.* newsgroups; and then someone had the bright idea (in late 1993) of inviting other demon customers to a pub meet-up in central London. That meet-up was a significant, if undocumented part of the history of the British internet; as my friend Simon put it some years later, "you know, I don't think anyone who was at that event didn't subsequently go on to a career in the industry." (At the precise time he said that, he was the network architect at ISP UK Online; I was programmer #1 at Datacash.)
Among the folks I met over a pint of beer that evening was Fearghas. F., from Edinburgh, had a number of strings to his bow; most significantly he'd suggested the idea of a Scottish point-of-presence (modem dialup rack) to Cliff Stanford. Back in the early to mid 90s, national distance trunk phone calls were charged by the minute and cost a fair bit; Demon were obviously going to have to roll out some sort of distributed architecture, and so in mid-1994, F. got a 64K leased line into his family house, and 16 bundled ordinary phone lines, a bank of modems, and a SPARCStation IPC in the attic. He also got a bunch of contract work from Demon, because he was sitting on a node on their backbone and the guys in Hendon had more work on their hands than anyone had expected. In particular, businesses by late 1994 were asking Demon to host web sites for them — there was a need for consultancy and web design work, and F. began to pull in more business than he could handle on his own.
I was not F's first hire; I was something like warm body #3 or #4 on the payroll, a few weeks before he paid for the papers to form the limited company. (I had, however, been helping out with some perl coding work from home since late in 1994.) The details are a bit vague at this point — I'm working from memory, fifteen years down the line — but the perspective I have on it at this point is that I don't think F. ever really planned in advance to form a company, but was overtaken by a mushrooming business and kept scrambling to stay in front of it. By the beginning of 1995 he was juggling more work than he had hours in the day, and the effusions of WIRED and the smoke signals from across the Atlantic suggested that there was money in these here internets; we were all a bit madly optimistic in the early days of the first dot-com boom.
I arrived about a week after Libby and Dave — Libby was handling admin and Dave was another programmer (and, later, my boss in his role of CTO at Datacash). At the point when I arrived, the company had enough money in the bank to pay the end-of-month wages, and about half a cup of coffee more (although more revenue was on the way). F. had somehow convinced Cliff Stanford to give him the contract to provide tech support for Demon Internet's business-oriented web farm; for much of spring and summer of 1995, Dave and I were the CGI programming tech support folks for what amounted to the British commercial web business.
It took me a week to find somewhere to live, prior to which time I was crashing in F's spare bedroom. My office ... well, FMA Ltd started life, like many a start-up, in the attic of F's family house. My office desk was in the attic room next to F's bedroom. I had a desk, with a 486PC running Linux, between a ski rack and the sauna hut. On the other side of the sauna hut, under the eaves, sat Demon Internet's Scottish point of presence, a small 19" rack unit stuffed full of modems, sitting beside a dusty SPARCstation.
This being a family house, it had pets — specifically, half a dozen cats, who had staked out different floors as their territory. F's bète noir was Danny, a beautiful (and un-neutered) Abyssinian tomcat, who considered the attic to be his turf. F. and Danny resented each other furiously, and Danny demonstrated his contempt for the CEO in his own inimitable manner, by pissing on F's possessions. We lived in collective terror of Danny 's potential for havoc leading Malcolm Muir of Demon to send out a service interruption apology ("Demon regret to announce that customers in Scotland experienced a six hour outage today because ..."), so part of my official job description was to keep Danny the tomcat from pissing on the modem rack. (Which I mostly did by letting him sleep in my lap while I talked customers through configuring their CGI scripts and troubleshooting problems.)
FMA grew extremely rapidly, but also haphazardly. F. wasn't an experienced manager; in fact, I believe it was his first company. He was an excellent salesman, and a good poker player, but not as tech-savvy as a company in that place needed: we were all learning on our feet, but he was coming from a theatre production background, and in some cases we ended up taking pratfalls. The range of work was broad but not deep: we had folks doing HTML coding, graphic design, and CGI programming. As one of the first two or three programmers on the team, I ended up doing a fair bit of domestic flying, down to London to talk to customers such as DHL.
On one memorable occasion we had an enquiry from the Conservative Party, as to whether we could set them up with a secure email system for their constituency party offices (this to a firm in Edinburgh, where 75% of the staff were Labour Party supporters in those pre-Blair days); on another occasion, a group of Iranian exiles wanted us to register the top level .ir domain for them. (In both cases, we ended up saying "no" — despite the cash flow headaches some jobs just aren't worth taking. The Tories in particular wanted us to do the work for the recognition and maybe some vestigial sense of patriotism, thereby demonstrating the degree to which they had their fingers on the pulse of Scottish public opinion.)
After about six months, FMA was bursting at the seams. F's ancestral pile in Trinity was large, but not large enough to cope with a dozen people tramping up the staircase and frightening the cats every morning. But our cash flow was finally catching up with the business; so F. splurged on a five year lease of an abandoned railway workshop in Canonmills. Structured cabling was installed, then a really early E1 line — F. had a knack for landing connections; in this case we were beta-testing Telewest's business internet services in Scotland — and finally a bunch of desks and workstations. We were still growing, adding bodies at a ferocious rate, recruiting via word of mouth: "I know X., X. is bored with his job, why not make him an offer?" F's management style was somewhat arbitrary, and along the way he drove out some good talent: Dave, for instance, left under a cloud after four months of increasingly violent personality clashes.
I got very little creative writing done during this time. What writing time I had (between working 12 consecutive days on the support desk) ended up going into the increasingly late "Web Architect's Handbook" I'd unwisely agreed to write for Addison-Wesley. It eventually came out in April 1996, twelve months late, and eight months too late to make an impact on the field. (If I'd delivered it on schedule ... well, paint me blue and call me David Pogue.) I was still dashing off odd articles for Computer Shopper, but I think I wrote about two short stories in that time, and a broke-backed novel that, after submitting to John Jarrold at Earthlight, I shit-canned. (John wrote back a very thoughtful, perceptive rejection letter that diplomatically explained why it was unpublishable. He was right, I could see that he was right, and the salvageable bits ended up going into "The Atrocity Archives", five years later.)
Then, while I was busy on a long consulting gig (trying to set up a web search system for Hampshire County Council, who in a fit of uncharacteristic future-mindedness had splurged a quarter of a million files from their mainframe repository onto a small Sun workstation: then wondered why they couldn't find anything in it), disaster struck.
Despite all the small contract jobs, FMA's bread and butter was still the big Demon gig. And Demon had noticed the way in which the web business was growing. One summer morning, Cliff Stanford took F. aside at a meeting in London, and made him an offer he couldn't refuse: 51% of FMA, in return for what looked like a metric shitload of cash. F. then made a classic mistake (not unusual in first-time startup management): he tried to hold out for more. And Cliff turned him down, and Demon Internet set up their own internal web support division, and FMA Ltd was out in the cold. Doubtless it cost Demon a bit more to do that than it would have to have taken a 51% stake in FMA, as offered ... otherwise they wouldn't have made the offer in the first place. But in the long term, bringing their commercial web support business in-house made sense for Demon.
That one fateful meeting spelled disaster for FMA. About 80% of our revenue stream was still coming from that one gig. I was out of the office most of the time, working down in Hampshire; I just caught the overspill. There's a curious fatalism that creeps over the people in a small business that's going down in flames in a steep nose-dive. FMA was still looking for more work when everything hit the buffers; the company secretary resigned: the bank accounts emptied out: and at the end of month 15 or so we turned up to work to find no pay cheques and no office.
Disaster, in other words, had struck.
In general, having your employer go tits-up at the end of the month without a pay packet in sight is a Bad Experience. I couldn't, in all honesty recommend it ... but if it's going to happen, it's best that it happens in the middle of a tech bubble that you're part of.
Here's what happened to me between the collapse of FMA Ltd and the formation of Datacash Ltd ...
I'd been registered as part-time self-employed with the Inland Revenue for years, thanks to the writing sideline, so I had half a clue about handling expenses and organizing invoices. And the summer of 1996 was about twelve months into the dot-com bubble, and I was one of the more experienced perl hackers on the market (the whole area of CGI programming having been embryonic just 18 months earlier). Some weeks before I maxed out my credit cards I landed some freelance programming work rewriting the web-based remote administration interface for a standalone email virus scanner called WebShield that a sometime acquaintance from Oregon had thrown together and got McAfee to sell. WebShield was (in those days — I have no idea what it is today) a standalone Linux box with two ethernet ports, one going in and one coming out: in the middle sat a ferociously paranoid distro with a firewall. One port open to the outside world (SMTP) and two open ports on the inside — one for SMTP traffic, and one for HTTPS to allow the users to configure the box. It took me a while to get the job done (it wasn't tiny), but it also enabled me to get back on my feet and start looking for more work. I had, in short, temporarily mutated into a contractor.
That sort of thing makes you re-evaluate what the hell you're doing with your life — not in as soul-searching a way as cancer or the death of a loved one, but still: I knew I wanted to be a writer. But firing the odd feature article at Computer Shopper wasn't where I wanted to be. I abruptly realized that I'd managed to sell one short story in 1995, and it was an anthology reprint of a story I'd previously sold in 1994 — I hadn't done anything original. In fact, during the period 1993-1995 my fiction output dropped almost to zero.
I took a hard look at what I'd been doing since 1986, when I first came out of university, and realized I'd made a complete balls-up of just about everything. On the other hand: I'd learned quite a bit that they don't teach you in academia. I now had some idea how the publishing business worked (and could account for exactly why my first attempt at climbing a well-understood ladder in the SF field had failed). I came up with a Plan, for the fiction side of things. Which was: (a) write stuff, both short stories and novels. (b) Send them to America, because that's where the money is — the market being a whole lot bigger. (c) Start at the top, with the big name magazines (Asimov's, F&SF, Analog) rather than at the bottom. (d) Write novels. Make each novel potentially the start of a series, but don't write the sequels. Make each novel different, using different sub-genre conventions, so that if one type is unpopular another can sell. And (e) get a literary agent in New York who will target the US market.
Accordingly, while working on WebShield, I began work on a new novel in my spare time — and some short stories. I'd begun it while at FMA, after the web book was finally out of the way, but made slow headway due to, well, working in a start-up. The first draft took about 15 months to emerge, and I completed and polished it in early 1998 before sending it off to sit on an editor's desk. It's title at that point was "Festival of Fools"; when it was finally published, years later, it was changed by editorial fiat to "Singularity Sky". I also wrote (or rather finished — I'd begun it at SCO) "Antibodies" and wrote "A Colder War" around this time. I can't claim to be totally consistent; despite deciding to target the big American magazines, I punted those two at a small British mag called "Spectrum SF", largely because the editor was asking me for stuff. However, those two stories got Gardner Dozois' attention — in addition to editing Asimov's SF he was editing the seminal "Year's Best SF" anthology series, and read everything that saw print. So the effort wasn't entirely wasted ...
By the time WebShield was finalized, I had more work on the horizon, and had decided that I kind of liked this whole contract programmer gig. Lots of time being gainfully unemployed (you need to use it to put the hours in studying, because your employers won't pay for you to do it on the job) interspersed with periods of frantic but ridiculously well-paid work; it's a bit like being an actor, even down to the requirement to deliver your lines perfectly. (Lines of code, that is.) On the other hand, my next job took a bit of the shine off the apple: it was a specialized programming job for Demon Internet.
Companies have public images that are very different from the actual internal truth. Demon was seen by outsiders as being a bunch of clueful techies; I guess most people imagined a bunch of hairy hackers in jeans and tee shirts feverishly bolting together racks of expensive electronics in a converted warehouse. AOL, in contrast, was seen as corporate, suit city. The truth (in the late 90s — I can't speak for current practice) was almost exactly reversed; AOL was almost Californian in it's laid-back ways, while Demon was all but running on the old IBM dress code. It was also, by early 1998, a hive — offices bulging at the walls with staff, mostly hired in the previous 12 months. Lines of responsibility weren't 100% clear, and, as with all businesses that grow too damn fast, folks don't talk to each other all the time.
I was hired by arch tech-head Clive Feather, evidently off his own bat (as far as I recall), to write a web front-end for the Internet Sign-Up wizard in Microsoft Windows 98. Not being a Windows user (I was 100% Linux/Mac at that point) wasn't a problem; this was the back end stuff to process new sign-ups. I'd met Clive back at SCO, where he'd arrived by way of some start-up operation in Cambridge to be the personal IT fixer for the executives; now he was one of Demon's managers. I got the basic coding job done, stuck a rather ugly web form on top of it as per spec ... and on my last day, got summoned into an office. One of Demon's other princes of darkness had finally learned about what Clive was doing, and hit the ceiling.
You know the joke about how the reward for a job well done is another job? The one month contract stretched on for two, and then three months, as the customer-facing interface was handed over to Demon's web department for redesign, and I was hauled back in to re-code the templating system I'd written (in a half-assed way, the monicker "templating system" not really having been invented for web apps at that point). Worse, this job needed to be done at Demon's web operation's HQ, which — Hendon being full — had been established on an industrial park down in Dorking. In a suit, in a heat-wave, commuting from Edinburgh.
After spending a couple of months there, it is my opinion that there is nothing wrong with Dorking that can't be fixed. By landscaping. With strategic nuclear weapons. (Think: sleepy little commuter dormitory town within a half hour train ride of London. Think: sleepy little town with nothing going on after 11pm except for the local youth stumbling drunkenly out of the pubs, throwing up, and stabbing each other. Think: twitching net curtains. Not my kind of place, in other words: I'm a city boy at heart.)
Anyway, the job got done. I was, by that point, heartily sick of it; and not merely of Dorking. Being caught in the gears between two dueling management chains is not the best place for a contractor to be, because everybody is acutely aware that you are paid more than they are (being paid by the hour — they don't notice all the hours you rack up in between jobs,
chewing your fingernails and looking for work resting), and you're an outsider.
In this case, the clash of ideas at Demon — between Clive's neat gee-whiz tech idea of how to implement an interface to Microsoft's sign-up service, and the web and design folks' idea of how to implement a public-facing front to Demon's corporate look and feel — had me caught in the middle like a bug in a gearbox. (Plus, I found that the corporate culture made me itch: you can put the hippie in a suit, but you can't put the suit mind-set into a hippy. Not that I'm a hippy, exactly — more like a somewhat oblate goth — but the point stands.)
Clearly if anything is wrong it's most convenient to point the finger of blame at the guy they don't have to work with every day. And while big corporate consultancy businesses like EDS or CAP-Gemini or whoever have corporate contracts departments to handle dispute resolution, there's a simple way of dealing with the solitary contractor: you fire the scapegoat's ass. I did not get fired; but I didn't ask for follow-on work, nor was I offered any.
Besides, I was about to become busier than a very busy thing indeed. Because that's when Dave MacRae emailed me out of the blue, and suggested we meet up and talk about a little business idea he and a co-worker were hatching, all to do with this new field called e-commerce.
The life of an IT industry contractor is an unstable one. There are approximately 250 working days in the 365 day business year, once you subtract weekends, public holidays, 20 vacation days, and allow a couple of weeks for time off being sick. If you're a contractor, the general rule of thumb (in a regular business climate — not a recession) is that you can expect to work for 100 days a year (and you're going to spend those days working like a dog, not slacking or polishing your skills). So you price your daily rate accordingly. To paraphrase Dickens: definition of happiness: 101 or more paid days of work. Definition of unhappiness: 99 or fewer paid days of work. It follows that the ideal job is a steady contract that runs for consecutive months. And hitting the jackpot is getting a job that runs for five months or more in any given financial year. Getting a contract that runs for the thick end of three years is just surreal; you can't do better than that, can you?
Or so you might think ...
Let's rewind the clock to April/May 1995, when I fled screaming from the embrace of SCO and landed in an attic in Edinburgh, at a desk between a sauna hut and a rack of skis. In the early days at FMA, I was one of two programmers; the other was Dave MacRae. Dave was then a thirty-ish, trim, energetic guy, one of the few actual born-and-bred natives of Edinburgh in the sector. (Edinburgh has a huge student population, and the University computer science department is highly regarded: a lot of students arrive, decide they like the city, and end up staying.) Memory has blessedly faded, but after about three months Dave either resigned or was fired, after what appeared (from my outside perspective) to be shameless workplace bullying. He had the last laugh, however. Fearghas had him mainly working with one specific consultancy client. As I recall it, the very next month the client fired FMA — and hired Dave as their full-time programmer. Things were sufficiently half-arsed in the early days of the death march that F. hadn't gotten around to issuing his staff with contracts of employment, much less contracts with non-compete clauses. After an evening of rug-chewing over beer, F. got over it and went back to trying to build his business. Meanwhile ...
The client who had hired Dave was a specialized publishing outfit called Business Briefing Publications. BBP was itself a start-up; it's founders' idea was to deliver company reports and other business intelligence via the then-new world wide web, in return for a fat fee.
These days, we routinely expect our credit cards to work on the internet with no particular fuss or bother; if not credit cards, then Paypal. But spare a thought for those of us who were on the web fifteen years ago, back when it was primarily an academic/tech industry pursuit. Banks are notoriously risk-averse (it's their job, after all) and slow to adapt to new technologies. Dave and his boss, Gavin — a smooth-spoken public school type from Jersey, with all the right connections — ran head-first into a problem: how do you charge your customers for the product?
In 1995, the only solution they could find — for any of the British clearing banks — was a package that ran on a Windows PC. It emulated an EPOS terminal; you typed in a credit card number and the billing amount, it went online via modem, and it carried out the transaction. This, and a merchant account, let you do online credit card processing ... and it sold for something like £5000 a seat. Dave had written some sort of script that ran on a web server and could drop credit cards into this software terminal for processing, but each transaction took about ten seconds, and more importantly, it could only talk to a single account at a single bank.
"If we could write some software of our own that did this, we could sell it as a service to other companies trying to sell goods over the web," Dave and Gavin worked out. "How about we set up a company to do it?"
"Good idea," said Gavin (I'm working from my imagination here), "but you're busy keeping BBP running. Who's going to write the program?"
"I know a programmer ..."
And so I found myself in a pub in Leith one day, listening to Dave's pitch. Which was along these lines; "Gavin and I are setting up a company. We need someone to write a piece of software that takes requests from a web server, talks this particular protocol over a modem, and returns the results." (Imagine a fat stack of ring-binder files sitting to one side, labelled APACS-27/29.) "Are you interested?"
"Sounds risky," I said. "But also sounds interesting. I'm happy to come on board on contract."
"Are you sure? If you come on board full-time we can give you stock options. We'll pay you <X>."
"I'll take the contract instead," I said diplomatically, because I was a big boy now and knew that 90% of startups were doomed to failure.
Now, I can't in all honesty say that I did the right thing, because as it happened the business Dave was telling me about went on to go public via a reverse takeover in early 2000. But neither was turning down the chance to be a shareholder at startup a ghastly mistake which has blighted my life ever since. Share dilution being what it is, I think Dave's stock options, when they vested, would have been worth high six digits/low seven digits: we're not talking internet billionaire territory here. Also, they tied him into the company for many years. If I'd been on the same package, I wouldn't have had the push that shoved me into full-time writing from mid-2000 onwards. I might be a millionaire, but I probably wouldn't be a happy and successful novelist.
Oh, and the salary deal Dave was offering amounted to a 50% pay cut relative to my freelance contractor status. So what was on the table was: work like a dog for high pay, as long as it lasts — or work like a dog for much lower pay, as long as it lasts, plus maybe a 10% chance of winning the lottery in a few years' time.
What would you do?
A couple of weeks later, I started working for Dave and Gavin. Gavin was still in London, sharing an office with his partners at BBP. Dave worked out of a tiny office in Leith, in a building subdivided into a bunch of office suites most of which were occupied by architects. For the first couple of weeks I worked out of my spare bedroom (about a mile from his office), poring over the APACS protocol specifications and trying to figure out what the flaming hell this stuff meant. I wasn't destined to move into the eight-foot by ten-foot office with Dave for another few weeks — we needed to get hold of a desk and a chair first.
Now I am not, by background, inclination, or training, a banker. Nor was I a banking IT wonk. So let me digress a little ...
The banking industry works differently in different countries. In the UK, there are a handful of huge high-street banks which operate at a national level; back in 1997 the main players were NatWest, Barclays, Lloyds, Bank of Scotland, Royal Bank of Scotland, and a handful of others. (Many of them have since merged or changed their names and public identities.) These banks do high-street business, both with private customers and businesses. They also handle the credit card franchises.
Credit cards weren't a British invention, but arrived in the UK soon after their introduction in the USA. In the US, Visa and Mastercard run their own networks; merchants had direct contracts with them. But in the UK, things worked differently. Each bank would contract with Visa and/or Mastercard, issue their own cards, and process credit card transactions for their own business customers, over their own network. It was all pretty chaotic; so to reduce the chaos, they established the Association for Payment Clearing Services, a trade body where they could thrash out non-competitive issues such as common standards for data interchange, to allow other folks' hardware to talk to their networks.
Given the APACS protocol specifications, any fule could whip up an EPOS terminal or a piece of software that could use a modem to dial up a bank's authorization server and get an authorization code or a CARD DECLINED message back. With a little more effort, the same person could then write a program to take the daily transaction log and upload it to the bank for overnight processing, at which point the funds would be deducted/transferred between accounts. Then all the fule need do was to convince the bank to certify their software/hardware combination, and — hey presto! — you could start selling it as a service to customers of that bank.
You know already that this picture sounds too good to be true, don't you?
Well it was. And thereon hangs the next piece of this story.
The Red Queen's Race: "you've got to run just as fast as you can to stand still," as the Red Queen told Alice. That's what it's like all the time when you're working inside a startup venture that's actually going somewhere, or so it seems to me.
In late 1997, I signed on as a contractor for Gavin and Dave's new venture. Little did I know just where it was going ...
Picture this: you're sharing a tiny office — about the size of two cubicles — with one other guy. (He smokes; you don't. Workplace smoking hasn't been banned yet. Live with it.) You know the company has got about three to four months' revenue in the bank. There's a guy down south, trying to sell skeptical punters on the idea of this string-and-duct-tape demo you're trying to jury-rig.
The demo is a large glob of Perl that talks to an msql database (MySQL had yet to show up) and a web server. Customers — retailers with a NatWest Streamline merchant account who've talked the bank into letting them experiment with taking credit cards over the web — throw transactions at your script, which calls up the bank over an ISDN connection, gives them a credit card number and some miscellaneous other gunk (Merchant ID, Terminal ID, card expiration date/issue number, debit amount, phase of the moon) and expects to hear an authorization code or a bugger-off message. Results of these transactions go into the database, whereupon an offline process, coaxed into life manually about once a day, generates a batch of transactions which can be uploaded to the bank for processing. The demo is balky, very much hard-wired to deal with the eccentricities of the NatWest system, and periodically chokes and falls over (in no small part because it was thrown together in two months flat by someone who doesn't really understand what they're doing, yet).
DataCash went live in the run-up to Christmas 1997, handling transactions for about half a dozen merchant storefronts. The public didn't exactly stampede to stress-test my software; in the first week we had about four or five test transactions submitted by the merchants ... and one bleeding-edge maniac who was prepared to trust the keys to their bank account to my software.
Nevertheless, it was a qualified success. "But we need something a bit more robust," said Dave, and I agreed; I could already see that this was too inflexible and lumpen to do what we needed. We needed to be able to talk to multiple banks. And to process transactions for multiple merchants, with multiple terminal IDs per merchant, simultaneously — turns out that the banking systems didn't like concurrent transactions on the same terminal ID, and because we were providing a web service we had to be able to handle concurrency. Somewhere in the mix we had to be able to provide refunds, and to cancel transactions that hadn't been processed (not the same thing at all).
Piece of cake. Not.
1998 was a painful learning experience. It turns out that while the British banks all adhered to the APACS protocols for exchanging financial transactions, the protocols in question were prone to, ah, flexible interpretation — and each and every one of the banks interpreted them differently, seemingly in order to lock out their competitor's suppliers' EPOS terminals.
Gavin (understandably, with a decade of added perspective) had begun over-selling DataCash from the get-go. He was not only the CEO, he was the salesman and main investor. And if a customer said "can it do X?" His automatic response was to say, "sure!" and then pick up the phone to Dave to say "I sold it to this guy, he wants it to do X — make it so." Even if feature X contradicted feature Y which we'd implemented the week before. I don't blame Gavin for doing this — we needed the money — but I wish he'd kept in touch with the real capabilities of our software a bit more closely. On the other hand, this is the sort of thing you get when your CEO is a smooth-tongued arts graduate who doesn't get the technical stuff but knows how to sell.
Another huge problem in the early days was that the banks hadn't got a clue about this internet thing. NatWest, by far the most forward-looking bank in early 1998, had a strict policy: they'd treat internet transactions as cardholder-not-present, or telephone credit card transactions; you only got permission to do that stuff if you had a two year solid gold track record. This led to some amusing incidents. (Allegedly, a NatWest call centre got a phone call one morning. "Hi, this is Fred. We want to start selling over the internet. Can we have a merchant account?" To which the call centre operator checked Fred's records and said "sorry, but you only began taking credit cards last year — we can't authorize that." Whereupon the crisis escalated to emergency boardroom level by lunchtime — because the Fred in question was the head of IT at Marks and Spencer, the biggest retailer in the UK.) And it led to other misunderstandings, too.
In order to get DataCash approved for connection to a banking network, we had to supply the bank with a qualification checklist for our shiny new EPOS system. At which point, we had trouble ticking the right boxes:
Q: "Does your EPOS terminal run over POTS or ISDN?"
A: "Neither: it uses a dedicated X.25 circuit to go direct to your mainframe."
Q: "Does your EPOS terminal have an LCD display or use a CRT screen?"
A: "Neither. It's a headless server running on a UNIX system."
Q: "Does your vehicle have two, three, four, or more than four wheels?"
A: "It's a hovercraft ..."
Now, one of the truisms of software engineering as a field is that version 2.0 of any program sucks. And I freely admit — as its designer and programmer — that version 2.0 of DataCash's server software sucked. Second System Effect usually cuts in as additional requirements are loaded onto a software system that just about worked the first time round, causing it to bloat, slow down, and providing space for lots of lurking bugs.
DataCash 2.0 had feature creep in spades. It needed to talk to different banks who had creatively mangled a "standard" into near-unrecognizability. And it was stuck on top of a SQL database. DataCash 1.0's database was thrown together in an afternoon, fixed format and inflexible; for DataCash 2.0 I tried writing a storage class to abstract the working code from the underlying data repositories. I wrote high level classes to reflect the various banking protocols, with the goal of subclassing them to handle the specific mutilations imposed by each institution. There was a front-end sever, to be embedded in the outside of our firewall, which customers could talk to using a simple protocol (and a perl module to encrypt the transaction details); a back-end server on the inside would handle the actual sensitive job of decrypting transactions and talking to the banks. I was about halfway through implementing this pile of object-oriented spaghetti when Gavin began selling it to customers, and actually expecting it to work. Not good ...
I nursed it along through early 1998, patching bugs and adding functionality — the first extra feature worth mentioning was support for Barclays Bank, if I remember correctly. The money was coming in, hand to mouth, but barely enough to offset the payroll and rent bills. In spring of 1998, David got the go-ahead from Gavin to hire another programmer; it was becoming clear that we needed someone who could write a web-based reporting front-end for the customers, so they could see what they were paying for (and being paid by their customers). Dave and I had the job of wading through job applicants' CVs; that's when we ended up hiring Sam Kington, sometime jazz pianist, philosophy student, and the guy who got the customer-facing web interface working. (Hi, Sam!)
Midway through 2008 we moved ... to a bigger room in the same early Victorian pile; the architects weren't doing well, and was obvious we'd need the space to hire more programmers in due course. My health wasn't holding up well. The start-up death march is bad enough, without second-hand smoke; I was getting frequent chest infections, and having to sit next to an open window during a Scottish winter so I could breathe would take its toll on me the following winter. Things were pretty tense. Gavin was selling the program, Dave was talking to irate customers and sorting out their configuration problems, and I was bug-fixing and patching, nursing the sick system along — it had been pressed into service probably a whole design cycle too early — and in my copious spare time trying to jump through certification hoops with the Royal Bank of Scotland.
Now, on the subject of bankers and information technology: there is a reason why I do not engage in internet banking.
Banks are traditionally (forget all the credit default swap voodoo nonsense) in the business of managing risk. You are a bank. Somebody deposits $100 with you, for safe-keeping. You promise to pay them $2 in interest after one year. To obtain this $2, and cover your operating costs — say, another $2 — you need to invest some or all of the $100 you've been given (or whatever sum of capital you can leverage with $100). Typically you do this by lending out money at an interest rate of, say, 5%. This is the critical bit: your profit depends on the probability of the recipient of your investment defaulting on the loan. If you are good at risk management, none of your borrowers default, and you make a 5% return on the investment. If 1% of them default (bad news!) you lose not only the profit, but the capital you invested; if 4% of them default, you're in a hole (losses of capital and interest exceed your profits), and if you make some really bad judgement calls and lose your shirt betting on toxic assets in the sub-prime crisis, well — that's when you forfeit your bonus.
Consider this mind set for a moment. From this angle, banking is all about controlling risk. If you make a bad loan, that's a lot worse for your business than not attracting potloads of depositors. So, bankers: people who are risk-averse by profession.
Now, in British retail banking in the 1980s and 1990s — this is a whole different kettle of fish from investment banking — there was a well-understood career ladder. (This may no longer be the case; times change. But I I am cheerfully ignorant in this regard right now, banking not being a terribly attractive career right now.) You would join the bank as a clerk, and as long as you kept your nose clean and avoided risks that could screw the parent institution you would be shunted from job to job every couple of years, promoted along the way. (The sideways moves were to some extent to prevent the staff getting too close to customers; the days of the traditional bank manager as pillar of the community, who knows everyone who banks with their branch by name, are long since over.) The goal of every aspiring banker was to rise to the level of branch manager. But you don't get to be a branch manager until you've done everything and are familiar with all the niches in the organization. And one of those niches — from their point of view — is the IT department.
I haven't worked in a banking IT department, but I had to deal with them on a day-to-day business for a couple of years. These were people who, for the most part, would make the technical management of Imperial Merchandise look hep and cool. These were not technologically savvy people; they were aspiring rural bank managers who had been unwillingly dragooned into temporarily supervising a basement full of mainframe programmers in three piece suits, and they were clearly marking time until they could make their escape.
There were exceptions, of course. I learned to recognize them and obtain their desk telephone extension numbers by any means possible. The one person in the department who actually wanted to be there, enjoyed the work, rose to the challenge, and could do in a day what would otherwise take six months: the jewel in the turd of banking IT. They exist. Alas, they're elusive and hard to locate, and when you find them they're chronically overworked — because nobody else has a clue what's going on.
But for the most part, Banking IT staff — at least, in the 1990s — didn't have a clue about the internet. I'm pretty sure some of them hadn't even heard of the internet. And in consequence, their reaction to a phone call from some guy in a dot-com wanting to jump through the certification and approval hoops to connect his EPOS server to their network varied from bovine placidity ("whatever, dude"), to frenetic confusion ("we'll have to set up a committee to discuss the relevant criteria for approving connecting your — what did you call it, can you spell that for me? — S-E-R-V-E-R to out network") to panic ("aieee! Hacker cooties are coming to get us!")
We human beings are not used to rapid change.
Let me qualify that remark. We may think we're used to rapid change, but for the most part we never see it, up close and personal. We're easily overwhelmed by events if they don't progress in a linear manner. As they spin out of control we find ourselves watching, feeling as if we're moving in slow motion — it's a commonplace in accidents such as car crashes, and what it betrays is a cognitive malfunction as we spend precious moments observing rather than acting.
Some time in late 1998, DataCash, the start-up I was working for, began to go exponential. This is what happened ...
In late 1997, we started out with a ropey demo and about five customers. A grand total of something like 40 credit-card transactions went through the system in November '97 to January '98.
By March-April 98, if I remember correctly, we had a buggy production system, which had been rushed into service far too soon ... but which could deal with two banks rather than one, and supported a bunch of whizzy extra features (whenever I got time to implement them). Features like the ability to handle multiple merchants, each with multiple EPOS terminal IDs, and in some cases trading in currencies other than Sterling. One early roadblock was the discovery that the banks' payment services expected each EPOS terminal ID to be in use for only one transaction at a time; concurrency reared its ugly head very early, because what we were doing was processing transactions on behalf of client software somewhere on the web. We dealt with the concurrency headache by bolting on an extra layer of Virtual terminal IDs — a pool of terminal IDs would be managed by a scheduler — to hide the concurrency problem from the merchants. And we added transaction velocity checking, to prevent end-users mashing their thumbs repeatedly on the "Submit" button and pounding on their credit card. Along the way, we moved from using an ISDN dialup to talk to the banks (basically behaving like a very fast modem dialup) to an X.25 box on BT's commercial backbone; my server, running on a dedicated machine, would open socket connections to the PAD (as many as necessary) and throw transactions at the banks over the dedicated line.
Some time in this period I wrote what was basically a limited-functionality clone of expect in Perl. And then I wrote a server framework in Perl, NetServer::Generic, to make it easier to write pre-forked multiheaded server processes. (NetServer::Generic is on CPAN because I talked Dave, my boss, into agreeing that it wasn't part of our core business, but we could do with having lots of free beta testers to whack on it for bugs. It worked well; I still get badgered by the occasional bug report to this day, even though I stopped maintaining it in 2001.) And I wrote a whole bunch of other stuff; much of it over-hasty, or buggy, or both, because I was being ridden hard by feature creep from one end and maintenance headaches from the other. I was busy: the old truism (first expressed by Tim Berners-Lee, I think) that five years pass on the web for every year in the real world was creeping up on me.
(I gather that Datacash retired the last of the code I'd worked on some time in 2008. As I left the company in 2000, I contemplate this news with mixed emotions. I'm a better author of fiction than I ever was a programmer; and software is notoriously short-lived. I suppose the fact that any of my code survived my departure by more than a month, and that the company kept it running for another few years, speaks for itself.)
By the summer of 1997, we'd begun acquiring new customers. If we had five in December 1997, we had maybe fifty in December 1998. We were still losing money — charging £0.5 per transaction, you need a lot of transactions to pay for two small offices and four salaries and a couple of collocated servers. And I was still a contractor, paid by the day. But things were hotting up. And then they went nuclear.
1998 was the year that the dot-com bubble began to inflate for real. And it nearly killed us. At one point in September, I realized that our transaction throughput was growing at a compound 30% per month, and it kept that up for six months before it began to slacken off. Some time in early to mid 1998, we handled 100 transactions in a month. By the same time in 1999, we had many individual customers who put that volume of credit card transactions through in a day. By late 1999, we were looking at transactions hitting our servers every few seconds; around the time I left, in early 2000, it was looking like credit card transactions per second were the way to measure throughput. Whatever his other faults, Gavin was an excellent salesman. But at the back end, it kept me on my toes. The more your software gets worked, the more likely obscure bugs are to rise to the surface. Sam was having headaches too; his web-based reports were growing like crazy, and the number of customers who needed them was growing too.
I was stressed out for most of two years. I'm an alpha-type personality to begin with, but this wasn't funny. I was writing fiction (and articles for Computer Shopper) as a therapeutic distraction. Around the middle of 1998, I figured that the novel I'd written in 1995-96 Singularity Sky was about ready, and mailed it off in the direction of Tor in New York, where it sat on a certain editorial director's desk for the next eighteen months. I wrote and sold a couple of short stories, and began work on a project which I was workshopping with some other local writers; a strange humorous horror novel/spy thriller about a hapless geek who's fallen into a government department for dealing with ... look, you probably know where this is going, right?. This was strictly a weekend activity, to distract me from the weekday stress cycle: compartmentalising my life helped me deal with Datacash. But it probably didn't help enough.
For most of the end of 1998 and the first half of 1999, the uttermost bane of my life was an ecommerce subsidiary of Bank Paribas called KLELine. They were offering a credit card solution over SSL, which had certain attractions for some of our customers, being (a) French, and (b) able to do some funky and useful things, or so they said. The trouble from my point of view was ... well, they weren't terribly clear on open source, for starters, or on public APIs, which was somewhat more serious. And when I got in deeper, I discovered some horrifying shortcuts in their API. Like, oh, once a credit card transaction hit their servers they'd process it, but the acknowledgement might well disappear into the bit bucket if the poor-quality leased line between London and Paris chose that particular moment to crap out. And the exchange rate for the transaction in question would be pulled out of a hat in accordance with the phase of the moon or something, and a subsequent refund or cancellation request wouldn't go through at the same exchange rate if there was a currency fluctuation.
We were in early-to-mid 1999. We had about four banks up and running, and another three or four in the pipeline to hook up and get ourselves certified by. A couple more programmers had arrived, all (except for Sam and I) being smokers: I was coughing my lungs out by an open window, but still juggling the entire server development and debugging workload. Dave and Gavin had figured out that the one-room model wasn't working; later that summer we were going to move to a new purpose-built office suite with room for 20-40 people, in a refurbished 18th century warehouse in Leith. KLELine was giving me sleepless nights; insomnia, depression, stress. I'd much written a wrapper for their broken DLL that worked, most of the time, and took appropriate defensive action when things went pear-shaped, but I had no confidence in them. And Dave's management style was to treat me as an interrupt-driven resource. "Shoot at the monkey's feet; make the monkey dance," as one of my colleagues put it. When you've got one overstressed programmer trying to hold together the mission-critical system the whole company runs on (a company which is now up to about twelve people and mushrooming rapidly) that's not a terribly smart way to manage them — but we were all learning on our feet: it was Dave's first management job, and he was learning by making a lot of mistakes.
One particularly bad Wednesday I came into work, did stuff until I redlined, then sat at my desk for an hour. I got up and went over to Dave's desk. "I'm taking tomorrow and Friday off work," I announced.
"But what about —" Dave looked up and saw my face. "No problem," he said hastily.
I emailed my partner, then booked return tickets to Amsterdam and a weekend in our favourite hotel there. (Amsterdam is cheaper and easier to get to than London, from Edinburgh, not to mention more fun.) We flew out, checked in, and I lay awake until 4am mentally drafting and redrafting my resignation email (for delivery on Monday at 9am). This being the pre-wifi dark ages, I had neither the means nor the opportunity to send it; so we spent Friday morning wandering around Amsterdam in the rain.
Then my mobile rang. I looked at the screen: it was Dave. "Yes?" I asked.
"It's about KLELine," he said. A pause. "They're being shut down by Paribas!" I heard a tinny sound of applause through the phone earpiece. "So you can cross them off your to-do list ..."
It was the applause — from the rest of the office — that convinced me not to send the resignation email. Instead, Feorag and I headed for a pub, where we proceeded to get drunk. And I managed to sleep solidly that night for the first time in a month.
The pub we got drunk in, incidentally, is the Cafe in de Wildeman. And the concentrated sense of future shock I'd been dealing with in my job for the past year — of the pace of change that has accelerated until it's all a whirling blur that you can barely keep track of — came out in the fiction. That weekend I began doodling the intro to a short story on my Psion: "Manfred's on the road again, making strangers rich ..." It was the beginning of the story "Lobsters", which in turn grew into the novel Accelerando, and kept me on the Hugo award shortlists for most of the first half of the past decade.
Then on Sunday we flew home, and it was shortly thereafter that Dave finally twisted my arm into signing on as a full-time employee rather than a contractor; and at about the same time, Jeremy Spencer, then editor of Computer Shopper, offered me the monthly Linux column.
I don't remember very much about 1999; it was all a bit of a blur.
I know I was there, physically: I remember 1998, and I wouldn't be here today if I hadn't lived through 1999. But 1999 itself is an enigma wrapped in a puzzle enrobed in a chocolate coating of darkest mystery. Lots of things happened in 1999 and I remember some of those things but I don't remember much about being there, probably because it was so intense ...
In my spare time, I wrote "Lobsters". Emailed it to a friend; "this is really great, but you'll never sell it — the audience would have to have been overdosing on slashdot for six months before they got it!" Emailed it to the editor of Spectrum SF, who bounced it rapidly: "vapid, style-obsessed, pointless rubbish". Stuck it in the post to Gardner Dozois at Asimov's SF in the faint hope of getting a handwritten explanation when he, too, rejected it ... Then I went back to work on another project for my spare time. In 1993-95 I'd written a novel that didn't work. (John Jarrold, then editorial director at Earthlight, explained at length in his rejection just why it didn't work, so convincingly that I led it out round the back of the barn and shot it rather than sending it out to face the big bad world of publishing once more.) But some bits of it were still twitching in my hind-brain. A couple of elements showed up in the short story "Antibodies". Now I had some other bits — and some more ideas that went together in a short novel called "The Atrocity Archive". Which took up rather a lot of my spare time that autumn.
Spare time of which I didn't have a lot. That summer, the development group of Datacash moved to new premises. There were about eight of us by the time we moved (Dave and I began looking at new space when there were five of us, knowing we'd be mushrooming rapidly) and by March 2000, when I left, there were about thirty-something folks working there. Every week: new faces. I was still holding the servers I'd written together by hand and trying to jump through the certification hoops for new banks; meanwhile, new jobs were appearing about as fast as Dave could hire new programmers, and the nasty collision between Brook's Law and that ongoing 10-25% monthly compound growth prevented us from getting any traction in turning my workload into a team process.
One day, Dave asked me to write up my to-do list and email it to him. Three hours later: "Charlie, where's that to-do list I asked you for?" "Dave, I'm still writing it." In the end it ran to about four thousand words describing between two and eight man-years of work that was graded between "critical" and "very urgent".
Given this kind of pressure, it shouldn't surprise you to learn that things broke. In this case, two things broke: the Y2K bug, and transaction reconciliation.
In 1999, there was something of a panic over the Year 2000 problem. Today, in 2009, most folks laugh it off if you mention it — but it was deadly serious at the time. The banks in particular, being obsessed with risk management, were just about crapping themselves over it. Standard process in 1999 was to spend the first six months of the year badgering their suppliers, EPOS software vendors, and others to check their software; then in mid-1999 they went into a total lockdown mode, not permitting any changes to systems other than Y2K bugfixes, throwing barrels of money at 70 year old COBOL programmers to come out of retirement for one last month, and so on.
Datacash was written in Perl between 1997 and 1999. What could it possibly have to do with Y2K? Well, I had completely failed to forsee the possibility that the demo program might still be in use, much less in large-scale bet-the-company production use, two years later. It was a demo — built to to a dog-and-pony show in front of an audience and be thrown on the scrapheap after six months, replaced by something newer and shinier. Except that it wasn't. Gavin had been selling it as a service, and customers were running on it, and there was no time and no programmer resources available to write the replacement. And at numerous places in the back end, there were lines of code like this:
printf("It shall be 19%d\n", $that_year);
that should have looked like this:
printf("It shall be %d\n", 1900 + $that_year);
We got it right ... in time. Just. We had a bad hiccup on January 2nd, when a chunk of code that generated the batch transaction files for one of our banks turned out to harbour a lurking Y2K issue that turned the file into gibberish. Luckily the bank mainframe bounced the batchfile and we tracked down the bug and squished it before the customers, hung over from the millennium celebrations, came back into work and started asking where their money was. But the millennium bug wasn't a joke; at Datacash, it was a bullet dodged — unnecessarily, if we'd taken the time to go through the iterated design process properly rather than shoving a prototype out the door to tout for trade on the street corner.
Batchfile reconciliation ... that was even more arcane, but even more of a toxic lurking hazard, and it came closer to killing Datacash in the early days than Y2K ever did. First, some background:
When you hand your credit or debit card over to a shop assistant with an EPOS terminal, several things happen to make the money disappear from your bank account and appear in the shop's suspense account. First, they establish a brief online connection to the bank's realtime system to authorize a withdrawal from your account. This is done in front of you, in the store, using the EPOS terminal; they stick in your card and the value of the transaction, and the bank's realtime system comes back with an answer: either an authorization code, or a message like DECLINED (you don't have enough money in your account) or KEEP CARD (the latter is a bad one).
Later, probably some time around midnight, the EPOS terminal (which keeps a journal file of all the days transaction) goes online to talk to a different bank computer. It uploads a batch file full of transactions, one per line. These are processed in bulk by the bank's mainframe cluster, which at that point shuffles the actual money and balances the books between accounts.
Now, the bit you don't see: the mainframe batchfile run generates an output report, which describes (hopefully) what it's just done, and what total number of credit card transactions have been successfully processed, which were rejected because something has gone wrong between the initial card authorization request and the batchfile run, and whether the batchfile was overall a success.
Got that? Batchfile containing umpty-something transactions hits the mainframe; some time later the mainframe burps up a report that might indicate that not all transactions have been processed successfully.
Datacash was growing exponentially at that time. So were our customers. Let me give you a handle on that: UK2.net is a major British hosting and domain registration business today, with a couple of hundred staff. Back in 1998, around September, one guy called Bo got in touch with Dave to start processing credit card transactions. Bo had written this neat little script that could register domains and do DNS registry searches, and he wanted to sell domains over the internet. In his first month, he sold about 200 domains. In his second month, he did rather more business. In his third month, the bank yanked the emergency brake handle and cleaned out his account, because no way could this be a legitimate business, not with 10,000% monthly compound growth! The first anyone knew about this was when Bo phoned Dave and asked, plaintively, "where's my money?" The sorry saga came to a happy ending about a week later with a new bank account at a much more cooperative institution (who were more than happy to take advantage of a competitor's idiocy) ...
Anyway, as we passed five hundred customers, and found ourselves processing multiple thousands of transactions through half a dozen different banks every night, the batchfile reconciliation headache began to emerge as a critical issue. A single dodgy card could cause a batch of several thousand transactions for between ten and a hundred different merchants to be rejected. Worse, it could be very hard to work out which ones were affected. So we began talking to the banks. "Can you supply us with a daily report broken down by merchant and card number showing which transactions have succeeded or failed?" We asked them. "Eh?" Came the reply. The banks were used to dealing with individual merchants, not organizations like Datacash, a Payment Service Provider.
PSPs need different types of report from merchants. Some of the banks couldn't even produce a report on a per-merchant basis showing the total number of transactions and total amount of money that had gone into their account on a given night. One of the banks could ... but it came printed in 132-column capitals on music-ruled line printer paper, and they insisted on faxing it to us. Sometimes the drone operating the fax machine got it wrong and faxed the report to us upside-down. And if something went wrong with the day's process, the bank IT staff couldn't work late to help us fix it — all the phone and fax lines were switched off at 6pm promptly to stop the staff from using them for personal calls!
By late 1999, getting the days batchfiles reconciled was an urgent — but very labour-intensive — job. We had one guy whose primary responsibility was to keep tabs on where everything was going using a spreadsheet, and to make sure everything added up. In late August, he didn't come in to work one day. It turned out he'd had a mild stroke; he was in no shape to return to work for months. And then I noticed a puzzling discrepancy. It turned out that he'd been cutting corners, not keeping proper records. A whole bunch of transactions — several thousand — had been bounced by the banks, and we hadn't been notified.
Untangling that particular mess permanently soured my relationship with Gavin (the CEO, remember); we managed to get it squared away in the end, and the quarter-million odd pounds worth of transactions ended up in the right place. But there was much wailing and gnashing of teeth from down south, and ultimately an out of court settlement to a threatened lawsuit. And because I was the bearer of the bad news, Gavin really didn't want to hear my name. He was under pressure at the time: both he and Dave, and indeed everyone else, were operating beyond our levels of competence. Datacash was in the process of fumbling its way towards, not an IPO, but a reverse-takeover of a moribund public corporation (a high-level headhunting outfit). Strange selachimorphean people in expensive suits with dorsal fin slits in their jackets began circling. The smell of venture capital in the water brings a very special kind of shark to the banquet: high finance folks who know nothing about the business in question and everything about the value they can squeeze out of it if they can get themselves into the loop.
Datacash's angel investor had bought a stake in an executive recruitment company who were into placing high-end officers with other corporations — the sort of headhunters who needed to fill just five to ten employment slots a year to keep a company of fifty people in Aeron chairs and Armani. They weren't doing too well, but they understood the business of looking businesslike, and they had lots of City connections, and they could see the value proposition inherent in being on the board when they were acquired as a shell by a dot-com run by a bunch of clueless yokels.
A seemingly endless string of empty suits turned up in odd niches on what passed for our org chart; meanwhile, much discussion of stock options and promotions all round fizzled out among the developers with a lousy off-the-shelf option scheme pre-approved by the Inland Revenue, and worth maybe 20% of a year's salary when they vested after five years. At least, that's what the Morlocks in the development group in Edinburgh got offered; Gavin and Dave as co-founders did somewhat better, but most of the shares seem to have vanished into the pockets of the strangely abstract creatures of pure money who appeared out of nowhere three months before the reverse takeover and vanished once the liquidity fountain ran low on juice.
Datacash went public in January of 2000 — with a market cap of something like £32 million — and all I got was this imaginary tee shirt. Well: that and £4000 of shares: just in time for the dot-com bubble to burst and for them to spent the next three years in the tank. I was pretty much burned-out by then, feeling somewhat aggrieved and totally not on speaking terms with our smooth-talking CEO, who I understood to have been rolled by the snake oil salesmen from the city. And so I figured that it was time to move on.
About five years earlier, another acquaintance on the Edinburgh dot-com circuit had tried to recruit me. Andrew had started up another web consultancy in 1996; smaller and less successful than FMA, his client base was also more diversified. By January 2000, NSL Internet had become a thriving web consultancy and colocation provider, and Andrew and his partner were planning in taking the company public via an IPO on AIM backed by 3i. We'd stayed in touch, and now Andrew made me an offer I couldn't refuse. Post-IPO, his plans included setting up a software development division to produce commercial web-related applications. Would I like to set up and run the new development group? I'd figured out by this time that I probably couldn't be any worse at managing a development team in a dot com than Dave ... so in a fit of insanity I said "sure".
So it was that in late January or early February of 2000 I went to visit Dave and, in no uncertain terms, burned my bridges. I was at that point on three months notice either way (I was sufficiently central to Datacash that in 1999 their early due diligence documents had listed losing me as a critical risk to the company). I was okay with serving out my notice period, but a lot of my work could be done from home, and it was made fairly clear that I wasn't expected to turn up at the office any more. (Hints that your employer doesn't want you to turn up at the office: every time you go in, your PC has been dismantled and moved to a different cubicle and someone else is in your old one.) Well, I was okay with that. I was feeling burned out, and I could pretend to work from home just as long as they kept paying me not to turn up at the office. It was quite restful, actually.
But then the bad news arrived. The dot-com bubble burst on March 10th, 2000. There had been warning signs for a while, did I but have the wits to read them. Datacash was probably one of the last British dot-coms to make it to the relative sanctuary of a listing on AIM. With almost mathematical precision, the dominos began to fall: Andrew ran into trouble as 3i caught wind and backed out of NSL's IPO. He'd had an ambitious growth program under way, and was counting on a successful IPO to raise the capital he needed to keep growing — and indeed to maintain the operation. NSL hit the buffers in April, and the result was extremely messy: instead of an IPO there was a hostile takeover under threat of liquidation. Andrew resigned, having negotiated terms such that the purchaser of his company would provide some degree of job security for his employees: Edinburgh is a small city and he knew he might end up re-employing them in a future venture.
But as for me ... there I was, resting up at home as the growing thunderclouds of bad news gathered overhead. I'd been participating in a game of musical chairs — and the music had stopped, just as a recession hit the industry I'd been working in.
I was about to take the biggest gamble of my working life so far.
The cyberpunk lifestyle reads a whole lot better in fiction than as a lifestyle manifesto. Take it from someone who's lived through it.
Picture this: you're a former drug dealer who has turned to hacking for a living. You're crashing in an apartment a bit older than Texas, surrounded by about seventeen computers, sleeping on a futon with a girlfriend with metre-long purple dreadlocks, and planning your defection from one net-based futuristic corporation to another over Korean take-away food. It sounds like something out of an early story by William Gibson, but the reality is a whole lot less glamorous. I've been there; I speak from experience. Cyberpunk is very nineteen-nineties: as a lifestyle statement it leaves something to be desired. Given that the late seventies and early eighties are the height of fashion right now, I reckon we're about fifteen years away from the inevitable revival — I'll be there, doddering around on a Zimmer frame and waving my fist at those young punks who've never used a command line interface.
But I digress ...
Back in March 2000, I became aware that I had a certain problem: which was that I'd resigned from my previous job with extreme prejudice just as the company I was about to join crashed and burned in the middle of an industry-wide conflagration. However, I had an ace up my sleeve.
Back in 1998, Jeremy Spencer had asked me to write a monthly magazine column for Computer Shopper, then the #2 or #3 top-selling monthly news-stand computer magazine in the UK. Shopper explicitly targeted the geek audience with a series of specialist columns, because geeks are loyal (and besides, Personal Computer World had abandoned the field in favour of glossy VNU-isms). If you can attract a loyal subscription audience you can jack up the all-important ABC circulation figures, which in turn allows you to charge more for advertising. Shopper was about 20% editorial content to 80% advertising, and the advertising paid about 90% of the turnover of the magazine — but without the editorial content, there would be nothing with which to attract the subscribers, and without the subscribers, no advertising. The casual news-stand readers would buy a couple of issues of the mag while they were looking for a new PC — usually a once every 2-3 years occurrence. But the subscribers ... they were gold dust. And so Jeremy pandered shamelessly to their desire for intelligent columns on minority platforms like Archimedes, or Linux. I was to be Shopper's Linux columnist for the next five and a half years.
Here's a hint if you're planning a career as a writer: magazine columns in news-stand monthlies pay (or paid back then — this was before the web cannibalised print publishing) one hell of a lot more than the major SF magazines. On a per-word basis, they paid more than novels (unless your name was Terry Pratchett). My three pages a month weren't enough to live on, but it covered the mortgage ... and it left me time to find more work.
Summer 2000 was the year when three Linux news-stand magazines started up in the UK, and I was all over them like a flea at a dog show. I'm not proud: I touted for work. At Shopper, I began landing regular 4-5 page monthly features. At Linux User I wrote anything up to 20% of the magazine's content, and I got my toes under the table at Future Publishing's Linux Format with a monthly slot for a Perl tutorial. By the time my notice period with Datacash expired in early June, I had established a regular magazine workload that was to entirely fill the gap left by my day job (once the invoices began coming out of the payment pipeline).
I was also talking to a couple of small book publishers around this time. First, there was Cosmos Books, a small print-on-demand outfit run by Sean Wallace as a component of Wildside Press. Sean got in touch with me first: I'd begun attracting some attention with my short stories (both "Antibodies" and "A Colder War" had been republished by Gardner Dozois in his state-of-the-SF-universe essays in the two preceeding Years Best SF anthologies). Would I be interested in bolting together a short story collection? He couldn't offer an advance, but was willing to cough up a reasonable royalty rate. I thought for a while, then said "yes"; the result, published in 2001, was the collection "Toast". As a parenthetical note, the received wisdom in the genre publishing world is that short story collections aren't profitable: it took many more years before I could publish one through a major publisher. For a newbie with no novels in print, a no-advance deal from Cosmos Books was par for the course.
And then there was Ben Jeapes and Big Engine. Back when I'd been living in London and working for SCO, Ben and I were members of the same writers workshop, regularly bouncing stories off each other. Ben worked in academic publishing; around the time I was joining Datacash, he was founding his own start-up, a specialist SF publishing house called Big Engine. We were chatting over a beer in the bar of the Central Hotel in Glasgow over easter weekend, catching up on old times: it was the venue of the annual British easter SF convention, the main hub around which British fandom revolved, and that particular year the program items were not terribly interesting to fans of the written form. "So what are you doing now?" Ben asked.
To cut a long story short — the wheels of publishing grind slow — about six months later Ben mailed me a contract for "Festival of Fools". And at that point I manufactured the best bit of good luck I've ever had in my whole writing career: I managed to hook up with an extremely smart literary agent so early in her career that I was pretty much her first customer.
(This is my tech bio, not my writing bio, so I'm not going to explain that here. Let's just say that I'd previously had terrible luck with agents, but third time round was the lucky charm.)
Caitlin vetted the contract with Big Engine, which was duly signed — then sold the rights to both "Festival of Fools" and a sequel to be called "Iron Sunrise" to Ace. Who promptly re-titled it "Singularity Sky", and coughed up a handsome hardcover print run on the strength of "Lobsters" being nominated for a Hugo award in 2001 (after Gardner bought it for Asimov's SF magazine).
All this lay in the future, however. All I knew in 2000 was that I had a short story collection coming out the next year from a small press, another small press wanted to buy my first SF novel, and a small Scottish SF magazine was thinking about serializing "The Atrocity Archive". Back then, I was racing to keep the wolf from the door by writing about 15,000 words of magazine features each month — the equivalent of two novels a year. And I was still talking to Andrew ...
Andrew's dot-com had bombed, but he had ideas about startups. He knew colocation; I knew Linux (I'd been living and breathing it for five years). In particular, I'd been keeping an eye on a new field — virtualization. Server virtualization is commonplace in the PC world today; a bunch of hypervisors, from VMWare Fusion through VirtualBox, let you boot a guest copy of Linux or Windows or Mac OS X "inside" another operating system. But in 2000, most folks outside of mainframe land hadn't heard of it. IBM's big iron had virtualization since 1972 or thereabouts — indeed, most of their business-oriented operating systems were designed around the idea: VM/CMS for example used the VM environment to manage the mainframe, while individual users logged into separate CMS sessions to do their work.
IBM in 2000 was a very different company from the IBM whose 1980 staff handbook had driven me to flee screaming from SCO. They'd just brought out software patches for Linux that allowed it to run as a guest session on their mainframes, under an operating system called zVM, a descendant of VM optimised for the zSeries mainframes. This was heavy stuff: totally sandboxed Linux sessions that thought they had an entire mainframe to themselves. A zSeries machine could shoulder tens of thousands of Linux sessions simultaneously. Andrew had done collocation, I'd done Linux: why not set up an ISP to sell virtualized collocated Linux servers? Shades of what Demon Internet had done for dial-up, only for collocated servers. We did some math, and worked out that if we started on the cheap and used second-hand kit we could make it break even on a tenner a month, and make it profitable for £25 a month.
Alas, start-up plans take a back seat to earning a living. Andrew was doing consultancy work for Scottish Enterprise; I was writing flat-out for magazines and polishing my first novel for publication. This meant that our planning ran at a snail's pace. We began talking about it in late 2000. By summer 2001, we had our business plan and our proposals and our business cards printed. We'd bought an off-the-shelf shell company, zHosting Ltd. All we needed was £600,000 and a second-hand mainframe to install in a hosting centre like SCOLocate. So we booked our first meeting with IBM to discuss leasing options, and our first session with possible angel investors ...
On September 12th, 2001.
So there you have it: the punchline to the extended shaggy dog story that is my career history in the computer industry. And now you know why I'm a novelist rather than the chief technical officer of a successful dot-com. Timing is everything — and my whole non-writing career has been one damn comic double-take after another.
That meeting was ... well, the subject of conversation was rather overshadowed by the events of the previous day. NASDAQ was closed, air travel in North America was shut down: the hammer was about to come crashing down on the tech sector for the second time in two years. We buried zHosting outside the graveyard gate only a month later, and went our respective ways; Andrew back to consultancy for a couple of years (he's now running a successful bespoke software business), and me to writing.
It was probably the best outcome. I was beginning to get an odd feeling every time I opened my inbox: people were asking me to write stories, I had an aggressive, effective literary agent marketing my books, and a major New York publisher had bought two of them. It was a very odd feeling, a sense of standing on the threshold of something I'd been daydreaming about for twenty years. One of my stories was (I kept rubbing my eyes with astonishment) on the shortlist for the Hugo award, the Oscars of the written SF field! I was finally earning a living as a freelance writer, although it wouldn't be until 2004 that the income from fiction exceeded the income from magazine feature writing. The question finally began to dawn on me: why would I want a real job? And then I realized: I already had one.