Our school ran what we were told was the first ever O-Level (an exam taken at 16 years of age) in Yorkshire in Computer Science, from 1973 to 1975. With a syllabus in CESIL (a vintage assembler-like schools training language run on our local authorities ICL mainframe) and BASIC, and your work being batch processed. It was slooooooooooow. Results took days to come back. It was dull. There was no A-level, I had to do one afternoon a week at technical college for that : and it was also deeply uninspiring.
During O and A-levels I hung out with two bunchs of folks, one photography-related, and the other a gang of fellow Doobie Brothers fans who nowadays would be called nerds, but in those days - the mid seventies - the word hadn't been heard of in England. It so happened that they used to hang out in the library (shades of Buffy), because that was when the school added an old ASR33 teletype terminal (see left) connected to the ICL 1906 timesharing system which belonged to the local authority, running the George operating system.
By the way, the device on the side of the ASR is a combined paper tape punch and reader unit.
The same system that used to do our batch processing was now available in real-time in the library annexe. One of the guys had written a version of bulls and cows (aka Mastermind) in BASIC, so we would play around with that. I was still convinced I wanted to be an engineer, though.
I was still full of that anti-software prejudice when it came time to head off to university, but I played the percentages and took a half-and-half course: half hardware and half software. The problem was the course was still grounded in the past, and all our software was still batch processed - on an ICL 1904 system running George 3! I'd gone off to university and gone backwards in terms of the available technology. The coding was done in FORTRAN on punched cards, and you got your printout a couple of days later via a pigeonhole system in the maths building. Only the maths and CS guys got interactive time on the few ASR terminals in the computer centre. CS lecturers thought in ALGOL, and made it painfully clear they disliked teaching people they thought of as "spanner men". Resentment became even more ground-in.
It wasn't until the third year that we got access to remotely up to date hardware - a wheezy PDP8 running Unix - and <gasp> interactive terminals (you had to wait until the middle of the night to get a terminal that worked at a usable speed though).
It was also in that final year from 1979 to 1980 that I caught sight of a new phenomenon - personal computers. We'd read about them of course, but they were expensive toys as far as we were concerned. Then a couple of the richer guys - ones who'd worked before they went to university - bought NASCOM II computer kits and put them together. One blew his machine up by connecting the power lines the wrong way round, but the one that remained was a revelation. Moonlander! SpaceWar! However, still that prejudice was there - I was going to be an engineer.
After graduating (not well - I really had no talent for electronics, but was too stubborn to admit it), I went to work for Ferranti Computer Systems in Bracknell as a weapons systems engineer. I'd been there for less than two years when I was involved in designing a simulator for weapon systems interface trials. The mini-computers used in warships were huge great heavy things in cabinets eight feet high and two feet wide - you couldn't carry them to a subcontractors site to test the interfaces, so we needed a smaller unit that could pretend to be the minicomputer.
We designed a system based around the Kaypro II microcomputer, a Z80-based machine with 64k of memory and two floppies. Most of the i/o grunt work was done with AMD bit-slice hardware (which fitted in the gap between the screen and the floppies), but an overall control program was needed for the Kaypro.
Since I'd done a semi-soft degree and there was no software effort available to do the job, I got nominated. I spent months over in Doncastle Road (the Ferranti commissioning site) writing the UI code in SBASIC : try to imagine Pascal, but with BASIC keywords. The system was made up of about half a dozen individual programs which chained one another in and out of that measly 64k of memory. That talked to a layer of assembler code written by a talented new graduate, and the assembler talked to the bit-slice. My plan was we could implement functions in the high-level code for speed of development, and migrate them to the assembler later if required to improve execution times.
That was when the bug bit. Interactivity was the key, and I'd found something I could do - and was even good at. Simultaneously, I became involved with a female programmer, hung out with the softies, and realised they got a damn sight more fun out of doing their jobs than we got out of doing ours. My mind was made up - I was going to be a softie. I talked around, showed people my code, and had a tentative offer of a job from our Man-Machine Interface lab when a guy I worked out with in martial arts class popped his head around my office door. We'd worked on systems when I was the systems engineer and he was a programmer. He knew about my desire to move and wondered if I might be interested in going to work for him? Their work (comms firmware) was more interesting than the MMI lab, but more importantly the MMI lab was all male and software had females in it, so that was a no-brainer. I was in.
By the way, if you ever read this Rick... thanks for that offer. I'm not sure I ever said that, and it needed saying.
Man, that Kaypro was TOUGH. It exited the baggage handling machine horizontally at the airport in Paris when we went to Aerospatiale to verify the Exocet missile interface. It went crashing down and we prepared to about face and go back to the UK, but all we had to do was push all the bit-slice cards back into place and it fired up first time. Maybe it wouldn't have been such a great result if machines had been equipped with hard disks back then...
Just about the first job I got on transferring to software was a baptism of fire. The company had developed a microprocessor, the Ferranti F100-L, which was radiation-hard on account of its use of bipolar CDI technology (and also ran bloody hot for the same reason). The micro was to be used to develop a communications multiplexer to reduce interrupt load on the main ships mini-computer. The multiplexer needed a multi-tasking kernel, and some bright spark had decided to give the job to someone in Cwmbran who had already handed in his notice. Suffice to say that what he left behind him when he left was a non-functional pile of pooh. So my job was to re-write/fix and generally re-engineer where necessary this mass of assembler code. I still remember the night I finally got the task swapper fully working - press key A on the keyboard and a task would output 'A's to the screen. Press B and the tasks would swap and a task would output 'B's. This probably doesn't sound like much to you, but it was glorious to me. Given that it was gone 10:00pm, I called Rick the boss down to celebrate with a coffee and a KitKat :-).
Programs were loaded into the F100 via a paper tape reader. The most memorable thing about working with the F100 was the handset: you could run your code, stop it, single step it and patch it in RAM directly from a handset attached to the machine, with an Octal display. When I say patch it, I mean you inserted a jump instruction (174000 octal - I will go to my grave knowing that) to a new address, added your new hand-written machine code there, and ended the new code with another jump back to where you wanted to go in the normal program. That was the only way of working in the field, because the code was all generated by cross compilers hosted on Vax minicomputers back at base. You had to really know your hardware back then.
A little later (I was a team leader by then) we were introduced to the IBM PC architecture. Ferranti bought a company making IBM almost-clones, and we decided to use one of these, the Advance 86, to produce a serial interface simulator, for much the same reason as we'd made the Kaypro box in the first place. There was only one problem - very little in the way of documentation. So we got hold of the motherboard circuit diagram, looked up the chip specs, got hold of an ASM86 assembler and proceeded to bash the metal. Much fun was had by all.
After that it settled down to a few years of producing interface modules in CORAL 66 for the comms multiplexer, with some side work doing GIS systems in FORTRAN. I worked my way up to project leader level. There was an interlude of writing C code for Unix (I taught myself C using early releases of Turbo C and Microsoft C for the PC). Then I realised that I was attending a lot of meetings, signing a lot of timesheets, having endless discussions about productivity, not writing much code, and the cold war was ending. Prospects for Ferranti didn't look good, and being a manager wasn't much fun. Time for a change.
Ten days after arriving at Communications Systems Research as a Sales and Marketing engineer, I knew I'd made a mistake. I had joined to help sell their software products. This would have been very nice, except they didn't really have any software products - at least not saleable ones. Also, the company was populated by people with a very academic turn of mind (never a good sign). And it was the height of a recession in British industry. Other jobs were not easy to find, even software ones. So I settled for an income and sold other things: beacon receivers and down-converters, which probably means nothing to you. I wasn't great at sales - I have no talent for lying - but I did semi-ok.
I'd tell you more, but I've blotted a lot of it out. Let's draw a discreet veil over it, OK ?
Anyway, after two years or so the parent company decided to close CSR and move the 30 or so people over to Cheshire. But because this was over a certain distance they were obliged by company rules to offer voluntary redundancy to anyone who wanted out. By then, I wanted out so bad it hurt. So I took the money and ran... and swam... and went skiing. For about six months or so.
I was nursing a broken hand from a ski accident when the guy who used to run the software department at CSR rang me up and said "we need someone who knows C. Fancy a job here?". Idleness had lost its attraction and I was bored by then, so it seemed like a cool idea. And I've been here ever since, writing emergency call centre code for Windows. First on Windows 3.1, then on NT4. Currently on Windows 7/2008.
Tunstall sells special alarm equipment (telephones with radio triggers, at it's simplest) for the elderly, the sick, victims of domestic violence etc. The equipment dials into a control centre and passes information about where it is and what trigger was pressed in a series of bleeps and bloops (stop me if I'm being too technical here). I'm one of the architects of the control centre system. We have systems installed all over the world, including the UK, USA, Canada, Australia, Holland, Spain, Belgium, Germany, Hong Kong, Luxembourg, Never never land, Laputa and the land of Nod. OK, I lied about the last three, but the rest is true.
If anybody's interested in the emergency call handling system we make, it's called PNC. Don't ask the price unless you have deep pockets :-). I designed the communications architecture, the configuration control system, the calls history subsystem and a bunch of system DLLs and services (if you don't know what a service is... what are you doing on an NT programmers support site ?), and have had a finger knuckle-deep in the UI pie for some years. Most of my work in the last year or so has been in the area of IP communications, as these units slowly tear themselves away from the 20th century copper infrastructure and transit to the interwebs. I have implemented interfaces to more than a dozen mobile social alarm systems from multiple manufacturers. For anyone wondering what a mobile social alarm is, here are some:
Starting from the left, that's a Twig Protector, a Motech Careclip, an Oysta Pearl+, and a Doro 680 (flip phone). All are GSM devices. Others I have done include devices from Freeus, Identicom, Emporia, Creon, Everon, Libify, FindMe and Romad. The interesting thing about these is that, given they all do kinda the same things, their protocols and methods of operation differ wildly. I think lawyers may be involved. These days my life seems to consist mostly of showing other developers how to do stuff and solving arcane problems when they arise. Possibly it's time for a new job title.
The nicest thing about working here is that we got moved out to an old farmhouse in the factory grounds, and we now have our own kitchen, and some cool neighbours :
and I didn't even show you the feral cats, and their four kittens. Mostly because they won't stand still long enough for me to photograph them :-) Life in an old farmhouse has its price: inadequate heating and dodgy drains... but having our own kitchen makes up for all that, trust me. Also I can sit at my desk and listen to the birds sing.
Let's do the time warp agaaain..... (imagine everything going wobbly here). I got into the BBS scene about 1989, after I'd bought a 20MHz 386 with 2M of RAM - for 3200 pounds, which was all the savings I had at the time. I acquired a Compuserve account sometime around 93, in order to seek help with the early versions of the control centre software. I started out asking questions in the WINSDK forum on Compuserve, and ended up answering questions as I learned more: there's nothing like having to get a product out to motivate the learning process. After some time (in 1996) I was awarded Most Valuable Professional status by Microsoft.
The MVP program rewards those who have helped their fellow professionals in the preceding year. The benefits aren't huge, but it's the recognition and the access to MS staff that is the real reward. MS moved the program off of Compuserve and onto the Internet newsgroups and subsequently other web-based forums. I finally bowed out of the MVP program in 2005 - it's automatic when your posting rate level falls below a certain level. The falling traffic in the MFC/C/C++ newsgroups combined with my disenchantment with all things Microsoft, and I found I actually liked having my evenings back. Now all I have to do is get me one of them "life" things :-).
I figure that since my first career basically consisted of making things which killed people, and now I make things which save lives, I've more or less balanced out. Since I'm better at this job than I was at the first, I may even be in credit with <insert god-creature of choice>. One can but hope :-)