I had breakfast this morning with my previous boss (lets call him XXX). He had just returned from the UK and suggested breakfast at Drexels whilst he was still running on UK time.
We got to talking about life, what we want to do and how we intend to achieve it. XXX is very interested in economics and would like to make a career out of it but where would he start on the salary scale? With a bit of luck he would get more than 40K NZD a year but he already owns his own business and pays himself (significantly) better than that. He now has a mortgage so taking a salary cut would be very hard, if not impossible. Finally, being an economist in New Zealand, would probably entail a move to Wellington. And I don’t think he’s all that keen to move to there; after all, he lives in Christchurch for a reason. At one time XXX worked for ARM in the UK and Texas. He chose to return to NZ. From what I see he is pretty happy with that choice but … he’s not doing what he (thinks he would) love to do.
And, of course, this sets me to thinking. With Pauline away in the UK, I now have far too much time to think. What about my career? What do I really want to do?
There is a scene in the movie Good Will Hunting where the psychologist asks Will what it is that he wants from life. Will doesn’t have a clue; and the psychologist knows it. He tells Will that he can’t even answer a “very simple question”. From this we are supposed to see how weak Will truely is; how fragile his image is; how empty he has allowed his core self to become.
You and your bullshit.
You got a bullshit answer for everybody.
But I ask you a very simple question and you can’t give me a straight answer; …
because you don’t know.
And I feel like Good Will Hunting.
When I was a kid, I first wanted to be a Marine Biologist. At the time, I wasn’t sure exactly what a marine biologist was but I had formed some ideas on it from Jacques Cousteau documentaries and my playing about with my microscope. The microscope was really simple but gave me hours of endless fun. I guess I was around seven, or eight, years old at the time. I used to put grasses and mosses into small (sample) bottle of water and watch air bubbles form on them as the days passed. Then, I would take them out and examine them under the microscope. I drew what I saw and I had a fair collection of drawings and notes.
This was also the time of my Ornithologist phase. My dad had some great binoculars (10×50) which were great for watching birds. I had several books on birds, as well. I could spend hours just watching birds. At the time we lived in a small village in the country called Auchlevan. My sister’s bedroom window looked out onto the main street. I was very envious of her having the bedroom with the Sand Martin’s nest under the eaves of the house, just above the middle of the window.
My ornithology phase lasted quite a while and survived the move into the city. We moved into the last row of houses on a hilly housing estate in Aberdeen, called Kincorth. There was nothing between the back of the garden and a nature park, except for a very underused road for a quarry that was slowly dying on its feet. The garden got lots of bird but them were mainly sparrows, thrushes and, of course, a robin. We also got sea gulls. Aberdeen was the first place I had lived which had lots of them. This was not very surprising since Aberdeen is a coastal port. Anyway, my ornithology phase lasted quite some time but I don’t think I ever wanted to be an ornithologist as a job. I didn’t see there being a job just looking at birds.
My Marine Biologist was phase was superseded by my Astronaut phase. All those moon landings and space flights on the BBC in my youth have much to answer for. There are two TV-related things I remember from that age: some Start Trek episodes and Jim Burke on the TV talking about the latest moon landing, or orbital maneuvers, or Skylab. That phase lasted quite some time. There is a bit of me that would still love to be up there even now.
My scientist phase began pretty much when I left primary school and started secondary school. I knew that being an astronaut wasn’t going to happen for a non-American. There was no way that Britain would get a man, or woman, into space. I thought my best bet was science. Maybe I could move to the US, become a citizen and then join NASA. Who knows? So I went into scientist phase. I was going to become a scientist. At first I had visions of chemistry but quite soon gave up on that for being far too messy and unstructured. Physics. That was what I was going to do.
My physics phase lasted all of my way through secondary school. Again it was strongly coupled with my interest in space and astronomy. I can still remember the feel of the glossy pages that were printed in the New Scientist when Voyager 1 reached Jupiter. I loved those images. I spent ages reading the accompanying article. But those images; they were stunning.
I ran across computers (Sharp MZ-80K supplied by Knight’s TV & Computers in Rosemount) in secondary school and had some fun with them. Unlike my friend Philip, I did not have a computer at home. And whilst computers excited me, I still saw myself as a scientist. Strangely enough, I now work with computers now whereas Philip has moved onto working with networks at Cisco; he’s even written a book about it called Cisco ISP Essentials.
All through my degree I saw myself as a physicist. However, my brief brushes with numerical computing, as well as a third year report that I did using ROFF, brought me a lot closer to computers. In my third year holiday, I was awarded a Carnegie Scholarship to do some work in X-Ray Crystallography. This was, however, a chance to use a DEC Pro 350 to control an X-Ray Diffractometer. Now this was fun. I wrote a FORTRAN program and it controlled an object in the real world. And what’s more, it controlled a really cool object; an X-ray diffractometer. I was hooked.
After my final year exam I did a summer job at Daresbury Laboratory working for a guy called Graham Clark on the SRS. Now this was cool machine to control. Needless to say, I was not allowed to control it, or any of its experimental stations. I was, however, allowed to explore my love of conputers with access to VAX VMS machines and an IBM mainframe clone.
I returned to Aberdeen after my time at the SRS to start a PhD; one that was never finished and one that, if I am being very honest, I did very little to further. My work on the DEC Pro 350 was fun; but everything else was dull and not what I wanted to do. Of course, I did not realise this at the time. If I did, I would probably have quit and moved into computers somehow. Back then CAP Gemini and the other big consultancies were grabbing graduates right, left and centre. Looking back, I am glad this was not my fate. I’m not a corporate IT person. I want to write programs that control things in the real world. The idea of writing yet another billing system, or database access procedure just leaves me cold.
Daresbury Laboratory [Oct 1989]
So where did I go after I finished that PhD? Well, I ended up back at Daresbury Laboratory on the SRS, writing software to control the experimental stations. I had vague ideas of scribbling enough together to assemble a thesis but those were very vague ideas that never amounted to much. I once called my PhD supervisor after I had had a very long chat with my partner about my thesis. I promised to write it up but I never did.
In the end I became even more involved with embedded control software. My first project was a simple one to listen for input from a TTY interface and, when input was received, to generate some kind of alert. The test program worked well but, unfortunately, it could never be implemented into the full data acquisition program due to the lack of available program memory. This was FORTRAN code on a PDP-11 clone running RT-11. The program was heavily overlaid – something I knew about from my Pro 350 days. The entire system had 64KB of memory, with 32KB for the OS and 32KB for the running application. Using FORTRAN meant losing 4KB to the I/O routines. That left 28KB for user programs. No doubt it was a lot when they started writing programs to control equipment at DL but by the time I arrived there was damn little of that 28KB left.
I moved onto OS-9 after that. DL had just started to replace PDP-11s with single boards computers (SBCs) located in VME bus-based racks. These ran at the phenomenal speed of 16MHz and 25MHz. They had 8MB of DRAM and had huge 30MB disk drives. Our SBCs ran OS-9/68K. And this is where I truly fell in love with embedded computing and control applications.
Back then we had a very limited number of VME development systems so most developers shared a single rack. I remember one very fine day when I was helping a supplier of our VME equipment. I was going to give him a copy of the driver that we had developed. To do that, I needed to copy it onto a floppy. Now I had done this lots of times before. However, whilst floppy support on OS-9 was pretty solid, it was not perfect. I inserted the floppy, typed some arcane magic (probably init /dd) and promptly crashed the system. Now I was doing this on the console but my boss was telneted in from his office and had been editing a large source file most of the afternoon. He lost it all. He was enormously pissed off at me, and at the VME supplier. It all seems so unimportant now, but at that time my boss’ anger felt almost palpable.
Anyway, I did a lot of OS-9 work at Daresbury. I did a driver for the CES CBD8210 CAMAC Branch Driver as well as advising others on driver design. I was a bare metal man then. OS-9 drivers for 68K were meant to be written in assembler – the API was in assembler. I remember being quite unimpressed when one of my colleagues implemented a thin assembler to C interface so that drivers could be written in C. This wasn’t right, damn it; the API is an assembler one, not a C one. But, with my perfect 20-20 hindsight I can see that she was right and I was wrong. I think I mave have revelled in the low-level details too much. However, most of our drivers were so simple (except for the interrupt handling) that by the time your had written the assembler/C glue you has nearly finished implementing your driver. But it gave you leverage. You only need to write the glue layer once.
I spent a lot of time taking a Microvax FORTRAN program for control of a diffractometer and converting it to C for the VME system. That was a lot of work. In the end, I dispensed with an expensive workstation that was obsolete but provided a GUI interface and replaced it with a command-line driven curses-style program. These days that would be seen as a terrible step backward. The users of the software were, however, very happy. Now they had something they could script with. Now they didn’t have to use something that so different from what they used on the other experimental stations at Daresbury, and elsewhere. This experience reinforced my gut feeling that the command line is (a lot) more powerful than the graphical user interface. And this was way back in 1991 when Neale Stephenson had not yet got around to writing In The Beginning Was The Command Line.
I spent most of my time at DL working on the station software for the x-ray diffractometer on 9.4. Looking back I now realise how much I enjoyed that job; the freedom I had in it; and the high quality of the work that I did. I didn’t just write a program to acquire data from the instrument. I designed and implemented the local file store for the experimental results; the automatic file transfer system that moved files to a central file server for permanent archival; and the background management tasks that kept the system running; in particular, the pruning of the archived files. I also wrote a manual that, the last time I looked, was still nearly all my work. It is normally located here.
Before I left I has started work on the station software for station 16.3 but that was at an early stage and the work was passed onto my replacement. I doubt that the software on 16.3 looks anything like that for 9.4.
And the people. I haven’t mentioned the people I worked with. I worked with a great bunch of people: Geoff, Manolis, Karen, Christine, Mike, Ian, Marion, Mark, Graham, Tracy, Gareth, Greg, …
I left the lab because I was very concerned at their intention to move the software development staff fully into the science teams. All I could see happening then was that my promotion path would become permanently blocked after I reached SSO. Of course, I wasn’t told until my leaving ceremony that it was fully expected that I would reach grade 7, the first of the non-science, non-technical grades. Apparently, they lie to you at training courses when they tell you that nothing goes outside the course. Reports do indeed get written on you. You do get appraised, even if you don’t see it. Mind you though, I had a good leaving do. There must have been at least 50 people there. I was very touched. I hope I gave a good speech.
But I got itchy feet and left Daresbury for…
Racal Communications Ltd [Oct 1995]
And wasn’t that a bad move! It wasn’t the work; the work was fun. No, it was the physical environment. I thought it would be the price I paid for getting more money in a commercial environment. However, it became apparent to me that RACAL management was British management at its worst. All that mattered was getting as big a profit as possible. A nice work environment for the staff was just a bit too pricey for them. I learnt a lot form some of the guys there but I also had my first dealings with contractors.
Now RACAL had some pretty good contractors but it also had some awful ones. One of them readily comes to mind. He was a likable, amiable guy; I liked him. However, it became apparent on his departure that he had been using his contract to “learn” C++. The project language was mandated as C++ and it was one of the company’s first such projects and it was late. It was supposed to be a 5 year project but as soon as I arrived I was told it would be at least a year late.
Anyway, one of the jobs given to this contractor was the task of writing a class to handle the setting and clearing of a number of bits. We needed a class that could handle 16 bits, or so. What we got was page after page of C++ code that implemented a truly generic class that could handle any number of bits. It was horrendous. Such generality was not required. Everyone reviewing the code could see that no more than two pages of code were required to implement a simple, clear class for the handling of 16 bits. That would have taken a few days to write and test. As it was, this guy’s generic solution took several weeks.
So, it should come as no surprise that when Martin Long of Microware gave me a call I eagerly took the opportunity to have a beer with him at a local hostelry. So after a grand total of 9 months, I moved to …
Microware [Jul 1996]
I loved this job. It was a great mixture of support and development. At least it was for me. Martin had me down as a talented developer and allowed me to work on a lot of interesting projects. Martin saw Rob Guest and myself as his stars. He didn’t make any attempt to hide this fact. Now it was clear to me that Martin and I had quite different ideas of how to do things. He tended to close things off as early as possible and leave as few loose ends as possible. I favoured more open-ended solutions which could be expanded upon at a later date.
I worked on a number of projects at Microware. They were, in order: a set top box project for a major European telco; another set top project for a UK company; and, a car navigation project with most of the work done on site.
The last project was my favourite project so far. I often look back upon that time as one of the most enjoyable of my career. I learned so much about the inside of OS-9; how to do a OS-9 port from a very low level with basic tools; and, also having the knowledge that it was my work, along with that of several others, that allowed us to get OS-9 back into a major account on a previously unsupported processor family. It was a great team effort but, it would have been nothing without the sterling work of our colleagues at the head office in Des Moines. They bit the bullet a year before and canceled the MIPS project because they didn’t have enough resources to complete it. At the time it seemed the best bet but in hindsight that decision cost us design wins as people selected MIPS over PowerPC and StrongARM. In the end, MIPS was the processor of choice in the late 90s for a lot of new designs and Microware truly screwed up by not seeing it coming.
Oh Microware, how I used to love you, and hate you; both as a customer and employee. They made so many bad decisions with the best of intentions:
- They turned their backs on the industrial market when they turned their focus to digital TV; the result? … VxWorks took off.
- They tried to do too much with their first IDE for UNIX, and then Windows. Sure it all worked but it wasn’t great. Unix developers really wanted a cross-compiler and debugger with make. They got an overblown IDE they didn’t want. Windows developers needed an IDE and they got one but it didn’t feel like windows.At one time they had a product called Unibridge which was a cross-compiler and a debugger. It ran on a few Unices but by the time I found out about it, and asked for it, it had been removed from sale. It was exactly what I required, but I couldn’t have it!
- When their second IDE came out they gave up on Unix. Bad move, big customer used Unix because it was the only decent multiuser system at the time. Windows 3.1 was a unacceptable for the job. Windows 95 was an improvement but not much of one in a networked development environment.
- They finally got it right with their third IDE. They applied some common sense and bundled a great editor (Codewright) with some customisation to create makefiles.
- Then they got it wrong again by reverting to type; thinking that they knew exactly how people should develop code for OS-9. Their next release was nowhere as flexible and downright restrictive in places.
Somethings you only find out later on. Microware had developed some great compiler technology but their compiler team was restricted to doing so for the OS-9 RTOS. Management didn’t want them selling their great compiler technology on any other RTOS. Such a shame really because the lessons learned from such an activity would only have strengthened the compiler teams’ products for OS-9.
The chase after digital TV and the like was a big thing in the mid to late 90s. However, even thought OS-9 was successful in all the trials that it was in, the trials themselves were not successful. The world was not ready to interactive digital TV. It still isn’t, even now.
Then they started covering a wider range of processor families. ARM, SH-3, SH-4. But being Microware they had to screw it up. The ARM version of the OS, for example, was a big-endian version. ARM chips can run in big and little-endian modes; but Microware could not afford to do the testing that a dual-endian solution would require so, they stuck with what they knew and choose a big-endian solution (they had a strong 68K, PowerPC legacy behind them). Unfortunately, prospective customers found it difficult to understand this choice. Why couldn’t they have a little-endian solution if they wanted one. As it has turned out, there are a lot more little-endian ARM solutions out there and very few big-endian ones.
SH-3 and SH-4 were so new that there wasn’t much we could do wrong.
And Microware had some great technologies. The RTOS was solid as a rock, had always been multi-tasking, and used a MMU, if present, to protect processes from trashing each other, or the kernel, ever since the 68030 came out.
The initial network offering was stolid. It worked but was awful to write drivers for; it resisted extension, being so attached to TCP/IP that it made supporting other protocols difficult. Finally, some work on ISDN resulted in what eventually became SoftStax. This was a truly great solution. It was a zero-copy network stack that had some neat wrinkles that made packet retransmission a zero cost operation. In addition, you could stack any protocol on top of any other protocol. Want to implement your own encryption layer between the TCP and IP layers – trivial; just stick the encryption module into the protocol stack path.
And still then went bust! That happened after I left but it still saddens me.
I eventually left for New Zealand with my partner after we had an epiphany at the end of 2000. I was both sad, and happy to be going. Even thought I had risen to technical manger – Martin had moved to the US to become a product manager for OS-9 – and I had better visibility into what we were doing and how things were going, it was clear that Microware was on a downward path. All our technical brilliance could not make up for mistakes made several years before.
Microware was also where I met one of my life-long friends – Allan.
I met Allan on my first trip to the US HQ in 1997. I immediately recognised him as a great communicator. I can still see him in front of the white board explaining the concept of Modular ROM to Martin and myself. The concept was very clever but his enthusiasm really won me over to the idea.
Martin eventually persuaded Allan to move to the UK office in 1998 to help with the MIPS project at one of our major customers. He and I quickly became friends, especially when we were placed on-site at the MIPS customer for an extended period. We keep in touch on a regular(ish) basis and he is someone I will always know, respect and look to for advice, on almost any topic.
But Allan wasn’t the only person I got to know at Microware. I worked with may good people and the following are a very list of them: Julie, Ian, Robert, Martin, Sharon, Trefor, Allan, Pam, Rick, James and Warren.
New Zealand & Open Telecommunications [Sep 2000]
It was hit of miss whether I worked for Open Telecommunications or Open Group. I should really have gone to Open Group but ended up choosing OT at the last minute for a variety of reasons.
I work for a guy called Peter Anderson. He is a graduate of Aberdeen University, like myself, but he graduated with an engineering degree, not a science one. He was a year ahead of me an university but neither of us ever remembers meeting the other. The world is a strange place when you have to travel half-way around it to meet someone you could have met by walking along the hallway a few years earlier.
Anyway, Peter is a great boss. Reasonably demanding; incredibly focussed and very good with people. Peter was the head of department. My day-to-day boss was a guy called Greg. Now Greg was the software manager and I cannot imagine anyone who was more disliked by the project manager than him. The PM was called Roberta and she was exceptionally good at what she did. That involved taking all the sh*t from above and ensuring that we only received the merest hint of it. Greg and Roberta did not see eye to eye.
The idea had been to create an organisation wherein the development needs were handled by the software manager but the project needs were driven by the various project managers. Needless to say, this matrix approach did not work well. Greg’s process-nazi leanings did not help either. Most of the developers there would agree with the statement that “he never met a document he didn’t like”. His instinctive reaction to any problem seemed to be that we needed a document to “discuss” the problem. The PM only wanted the problem to be solved; document generation was not her first priority.
What was worse, I was going through a “I believe in process” phase when I interviewed with OT and I had swallowed everything he told me in the interview hook, line and sinker. When I started work there it became clear that all was “not well in the state of Denmark“. It was clear he was not respected sufficiently. Since he had hired me to do the integration work, I was immediately suspect in the eyes of the PM – more head count, less productivity.
It took some time but I eventually won the PM around. I produced a very good document which summarised the operation of the software solution and how it should be integrated together. No one had really looked at that before. The developers were too focussed on code; the architects were too focused on the design; nobody had been looking at how the various pieces tied together. So I did that and did it very well too.
I designed the UNIX packages. For one of the products I created a build system which did not rely on recursive make. I designed a simple, automated smoke test. I created a nightly build procedure that ran the smoke test on completion. I came up with a way to document the differences between each release to Test that did not require enormous amounts of work to produce the release notes. I also handled most of the UNIX issues relating to development.
I worked with great people: Alex, Bob, Kate, Marcus, Steve, Ori, Michelle, Paul, Barry, Jon, Viliam, Peter, Roberta, Greg and Helen.
Bluewater [May 2002]
I came, I saw, I worked, but nowhere near hard enough to keep my job. Pity. I liked the place, the work and the people. However, bespoke software development may pay well but requires a substantial sales machine to keep it going. This machine has to keep finding customers willing to pay a lot of money for the specialised skills. IBM is great at this kind of work because it does really big projects. Our projects were just too small to make lots of money. And in the end, we never really had any IP of our own that we could just re-sell.
The lack of our own IP is something that Bluewater is now addressing. It has re-invented itself as a hardware company that does also does software for the hardware. And this is why I lost my job. You need to create the hardware first before you add software to it. And my ex-boss is very good at software; so I was let go so that a good hardware engineer could be hired. Very annoying but; c’est la vie.
Current Employer [Aug 2003]
Another startup with some pretty cool technology. The management pedigree is extremely good. This is a startup which should transition into a successful business, i.e. one that makes a profit, pretty much according to the business plan. No one seems to have unreasonable expectations of what can be achieved.
Needs & Wants
Well, like I said before … I’m a bit like Will Hunting at the moment. Maybe, I’ll have some answers when I return from the UK. You never know. Maybe, I’ll want, or need, to move back!