Memoirs: Encore part 3
October 08, 2020When I returned to Encore, the joke was that I'd left just to avoid going through the mandatory Total Quality Management training - part of the general "quality" mania sweeping through the business world at the time. I guess the other joke is that I came back just to get in on the layoff package. As part of the continuing Gould-ification of the company that bore Encore's name, the decision was made to abandon the Marlboro facility that had housed Encore itself. This triggered a bunch of laws about severance packages and other benefits, on top of which people were given fairly generous bonuses (a substantial fraction of annual salary) for staying long enough to complete various work milestones. Then, after they had made that decision affecting hundreds of lives, they realized that they still needed about a dozen of us. It was still legally a plant closure, but there we still were, in the plant, occupying a small cluster of offices around the entrance while the rest of the building had been stripped down to bare metal and insulation. Not even close to the strangest work environment I was to encounter during my career, but still quite odd.
The main project that apparently justified keeping us on was to get Oracle running on clusters of Series 91 machines, well enough to support the aforementioned Fort Huachuca contract and other similar deployments. I don't think it was called Oracle Parallel Server (the predecessor to today's Oracle RAC) yet, but same idea. I spent a lot of time tuning communication and locking and such to get better numbers on TPC-B, or often our own lighter-weight version that we called TPC-E. This was one of the three encounters I had with Oracle that gave me special reason to loathe them. You see, despite supposedly being our partner and standing to reap most of the profits, they did practically nothing to support us. We had source to some of the relevant Oracle code, but it was "shrouded" (i.e. obfuscated). Comments had been stripped out, though there was still interesting information to be gleaned from "#ifdef NCUBE" and the like. Function and variable names had been replaced with meaningless gibberish. I suspect there were other transformations as well. As anyone who has ever refactored old code knows, it's not hard to rearrange logic in ways that make it more readable without changing its functionality, and doing the converse is no harder. When we did have questions, based on either unexpected (sometimes obviously incorrect) behavior or profiling results, we could submit questions ... and maybe get a useless answer in less than a week. It wasn't really worth the effort, but poring over obfuscated code was pretty miserable.
While I'm still talking about Encore, and about hating other companies, I might as well talk a bit about Sun as well. Back in my first stint at Encore, one of the many things I was responsible for was NFS - originally v2, pretty quickly v3. For this, we had licensed NFS source from Sun. They would swear up and down that NFS version X was exactly what they used to build SunOS (not yet Solaris) version Y, ensuring compatibility. Bullshit. There were multiple occasions where I made a fix to the NFS source, sent the fix back to Sun, it showed up in the next version of SunOS but not in the supposedly matching version of NFS that they shipped back to us. Once more to be clear: they shipped us a new version of code with my own clearly accepted fixes stripped back out. Sleazy.
The other dirty trick they played had to do with diskless booting. Yeah, I know. Those were the days. Our machines were many times more powerful than anything Sun had at the time, but for some reason booting a diskless Sun from a Multimax was slower than booting it off a Sun server. Why? Because if the server identified itself as Sun the client would use an efficient pipelined implementation of TFTP to fetch its boot image. If the server identified itself as anything else, the client wouldn't even attempt to use the standards-defined fully-supported pipelining protocol. Instead it would use a much slower stop-and-wait subset of the protocol. Change our server ID to "Sun" and boom - immediate speedup. Exactly the same shenanigans that DEC had pulled while I was at TCI, from supposedly oh-so-open Sun.
It was partly in response to these abuses, and partly in response to the general state of the NFS code, that I wrote a rather infamous comment on Usenet.
I could never work at Sun. I've seen too much of their code.
Apparently this was spotted on more than one Sun engineer's cube wall, so I guess it became a bit of a self-fulfilling prophecy - not that I ever even tried for an interview there.
Getting back (finally!) to the end of my Encore story, by early 1992 I'd tired of working at tiny Encore getting whipped around by companies like Sun and Oracle. It was time to join an even smaller company, getting whipped around by an even bigger one - IBM.