Memories, Dreams and Refractions: Network Products Part I

In 1981 Business Application Systems was making a version of the BASPort portable operating system (private labeled VOS) for SCI Systems, a corporation based in Huntsville Alabama. That spring BAS agreed to sell the portion of BAS developing VOS to SCI.

Flash back to the 1960s when the integration of components for the Saturn V Instrument Unit was taking place in an IBM facility in Huntsville Alabama. SCI, then called Space Craft Incorporated, had created two of the boxes to be bolted into the IU. My father was the engineer responsible for determining that those boxes worked properly (backed up at a less technical level by NASA engineers). In the course of working with SCI employees my dad got a good feel for the SCI corporate culture as strongly formed by the asshole who ran it by the name of Olin King. Dad’s reports left me with a crystal clear judgement about whether I’d jump off a bridge or work for SCI.

So when news of SCI acquiring us was sprung I started shopping for a new job. By what I now consider to be one of the biggest coincidences that I’ve never experienced, a month or two after the acquisition Bob Nichols and Steve Schleimer approached me about joining their new startup Network Products that was chartered to make data communications equipment. I jumped at it. Working with Steve again was going to be simply sublime, as he’d been my mentor at Data General (he authored the virtual machine of the commercial language system I worked on). And Bob and I had got along pretty well at BAS (Bob wrote the commercial system’s compiler). Steve had left Data General where he was a software architect and developer of Data General’s Fountainhead project while Bob had already left BAS. Also joining us were Steve Hafele, a hardware design engineer also from Fountainhead and Steve Chewning, an ex-HP hardware design engineer.

Babymux

To be continued.

Steve Goldman 1952-2008

Steve Goldman (middle)

Steve Goldman front and center

Steve Goldman grew up in Pittsburgh, moved with his family to south Florida, went to school at Carnegie Mellon (BS in Electrical Engineering), married his sweetheart Gretchen (BA in Fine Arts, also from CMU) and worked for Motorola doing hardware work. He took a job with Texas Gulf in Raleigh, NC doing software work related to mineral exploration. He lived with Gretchen in neighboring Cary, NC where they had cats instead of kids.

After transferring with Data General from Westboro, MA to the same area of NC I joined a startup called Business Application Systems that spun out of Data General in January of 1978. No sooner had we incorporated than DG sued frivolously and we were in the courts for a year or two before we could start work on a portable operating system product called BASPort. While in litigation we all had to find work of any kind we could to keep afloat. The company immediately became an OEM of Texas Instruments series 990 minicomputers. The terminals for these minicomputers were proprietary and cost a few thousand dollars each. We brainstormed and realized we could write a software driver that would make a much cheaper serial terminal emulate the TI terminal. I wrote the driver and we sold it for $500 a copy. Then we got prospects for customers that wanted to put a group of these cheap terminals and printers in location A while their TI minicomputer was in location B. That called for a statistical multiplexer that presented a set of serial ports on each end of a leased digital phone line, transparently moving the data as if the terminals and printers were directly connected to the minicomputer.

When I had the terminal emulator up and running we hired Steve Goldman and he joined me to take over the terminal emulator while I started on the statmux. We shared that code development and placed several with customers at several thousand dollars a throw.

Steve was getting a masters degree in computer science from UNC/Chapel Hill and over the course of the next few years caught developed both expertise and focus. Steve fell in love with compiler construction and stuck with that from 1980 onwards (28 years total). After the litigation we kept the datacomm plates spinning and turned attention to BASPort. Steve developed compilers that targeted the BASPort virtual machine.

This went on until 1981 when I was offered a job in the startup Network Products writing firmware for standalone and modular datacomm products. But we were on the first floor the the building where Steve was on the third floor and we often had meals together and hung out away from work. So instead of being a few feet away Steve was two floors away for a while. Then in 1984 Steve and I both got jobs at Encore Computer. The two of us worked together as the third generation language development part of the company and we beavered away on Pascal, C, Fortran and C++ compiler development for the company’s symmetric multiprocessor computer systems (see link above for more details).

By the early 90s Encore’s ability to compete selling general purpose computers was fizzling and they were left with a few niche areas like supporting flight simulators. But the company developed smart storage systems that provided IBM mainframe plug compatible storage at extremely competitive prices. Steve worked on the Unix kernel drivers that interacted with storage at at a low level.

In 1997 Sun Microsystems bought Encore to get its storage products. Steve continued kernel work, but this time in Sun’s Unix kernel. This went on for a year before he and I were forced to transfer to the Java Technology Group within the Solaris Software division of Sun. After a very tense few months spent evaluating competing Java virtual machines for management we began development of parts of the Java virtual machine that would become the next generation Java product on Solaris (and eventually on Linux). Steve soon migrated to the compiler group, working on the just in time compiler residing inside the Java VM. There were actually two compilers: one wimpy but fast and one slower but with state of the art optimizations for super efficient code. Steve migrated to the latter.

Over subsequent years Steve rose in the ranks to become one of the most senior and accomplished developers within the Java Engineering organization. He was very well respected. When a friend was interviewing to retain his job at SAP after SAP acquired Sybase where he worked, he was struggling to impress them at first. But the SAP staff interviewing him became excited and animated when the friend mentioned our names. “You worked with Steve Goldman?” they asked for confirmation, visibly awed. After he gave more details the friend was instantly blessed as worth retaining by this simple association. (SAP was a heavy user of Sun Java and had many ties to Sun engineering).

Steve was like Dirty Harry in many situations, dealing with the hardest problems that were otherwise shunned. He fixed one Java customer’s problem that was so intermittent it only surfaced once every few weeks and there were no hints at all about the source of the problem. Steve provided specially instrumented virtual machines month after month that snuck up on the failure and exposed it. This was a problem that was not affecting the other thirty million users of Sun Java: only the one that was coincidentally at a physical location in Raleigh, NC. A N Y other engineer could have been expected to declare the problem impossible to fix, management would look at the financial consequences of blowing the customer off vs spending many thousands of dollars of staff time and that would be that since the customer was not putting big bucks into Sun pockets. But that wasn’t how Steve operated, and the hundred or so hours that bug fix cost was something he simply got done. Finally, the root cause of the problem did not involve his internal compiler: it was an extremely subtle cache management issue involving a corner-corner-corner case that resulted in a stale line.

When we did compiler development at Encore we drove bug counts to zero and kept them there. An unfixed bug was simply intolerable. That attitude stuck with Steve even as the complexity of runtime problems inside Java as it executed an application were many orders of magnitude larger. I can’t stress enough how devilishly complex that software was.

When not working on software Steve built stuff, had challenging hobbies, read a lot and lavished loving attention on the cats. He got part way through building a large reflector telescope and completed an observatory with movable roof to house it. He built an aircraft hanger with almost no help. He repaired his cars for everything short of an engine overhaul. He and Gretchen designed a custom house and he was very involved in its construction. He and Gretchen raised two nieces as if they were their own children from ages 13 and 15 through university years, providing a very stable, loving environment that rescued the two girls and helped them lead happy and productive lives as adults. Steve helped others when they needed help, whenever it was needed. He got a pilot’s license and flew a Grumman Tiger and got well along with building a custom airplane in his hangar. He provided support to Gretchen as she pursued her creation of art and to other family members in their times of need.

In April of 1991 Steve was taking off with his hang glider when a technical problem disconnected the control bar. The glider pitched up, stalled and then fell down a few dozen feet into a concrete runway. He almost died. He spent weeks in a hospital and months in a hospital bed in his house. In October he walked the two miles from his house to our Encore office. He told me his shoe lace and come undone and he couldn’t bend over. I tied it as we cried together.

One year Steve decided he would get a “one” annual review rating. This was the highest rating possible. He walked on water while juggling chain saws. His creative output and engineering work were astonishing. Then he found out that management didn’t actually dispense ones on the basis of merit but via various maneuvers that I don’t want to discuss. Steve didn’t get his one. He broke down and cried as we hugged. He considered trying for a promotion to Distinguished Engineer until he found out the selection process was even more capricious. I had gotten a one rating the year before he tried and that hurt more because my work was pie in the sky stuff (an attempt to fix an archetecture bug in Java), so it was mostly perception with not much substance. But we both knew the score.

At the end of June, 2008 Steve and Gretchen, Katie and Little Gretchen, Steve’s mother, brothers and sisters were all on a cruise off the coast of Alaska. Steve had an aortic aneurysm and died a short time after feeling unwell. He was cremated in Seattle.

So Steve and I worked together for most of 30 years sitting within speaking distance. It’s been 15 years since he left us but my memories of him are still so sharp and close I can regularly ask myself “what would Steve do in this situation?” and see his expressions. He’s in my dreams.

Memories, Dreams and Refractions: Encore Computer Part I

Steve Goldman was still at SCI Systems (that had acquired part of Business Application Systems, the first startup we both worked at) while I was at a second startup called Network Products when we were offered positions at a new startup called Encore Computer in 1984. This was less than a year after its founding and very early in its process of acquiring and pulling together a set of organizations:

  • Hydra Computer Systems, a maker of symmetric multiprocessor (SMP) computer systems and developer of a multiprocessor version of BSD Unix in Natick, Mass.
  • Resolution Systems, a maker of somewhat smart computer monitors in Marlboro, Mass. Together with the Hydra guys, eventually laid off when the Marlboro plant was closed after most of the company resided in south Florida (after Encore swallowed the Gould Computer Systems Division whale using Japanese money).
  • Foundation Computers, a maker of a fourth generation application development language in Cary, NC. Sold to Unisys in 1985.
  • ?? (forgot name) A network appliance maker, in particular the original creator of the Annex network terminal server, based in Marlboro, MA. Sold by Encore to Xylogics in 1986 as one of the all time bone head business moves of the 20th century.
  • ?? (forgot name), a development shop porting Unix System V Release 4 (SVR4) based in San Diego, CA. These guys (originally Larry and ? but later maybe two other guys for four total). Laid off, discovering their layoff via an announcement by Ken Fisher at a trade show!
  • ?? (forgot name), a group of consultants associated with Carnegie Mellon in Pittsburg, PA. These guys moved up to Marlboro or went on to other things as far as I could tell.

Although Steve Goldman and I were hired by Earl Gilmore1, cofounder of Foundation, our charter from the beginning was development of the third generation computer languages for Encore’s systems. So from the earliest days we worked in an office in Cary while telecommuting and reporting to Encore’s parent engineering management organization in Wellesley Hills, Mass. Soon after Foundation became part of Encore Foundation got a Vax 11/780 running BSD Unix. That was such a sweet single user system. Unfortunately about a dozen and a half of us shared it and so we each got about an eighteenth of a Vax MIP: a truly miserable situation. It was slower than my first PC (a Southwest Tech 6800). I recall working funny hours for the sake of getting a bigger piece of the computing pie. However, we also got onto Arpanet with domain encore.com, and by virtue of that and our development charter Steve and I gradually accumulated access to hardware at other sites via Arpanet as we also accumulated local hardware resources. As I type this I have no foggy memory of the earliest hardware resources apart from the 11/780 and our dumb terminals. In those earliest days Encore outdid Amdahl for original funding and way way outdid Amdahl in profligate spending. I was disgusted to hear that the executive branch had hired dozens of salesmen way, way, WAY before having product to sell. What a cushy job I imagined, to visit prospective clients and spin tales of Encore’s products to be more than a year before the hardware transitioned from vaporware.

Suddenly in 1985 the insane burn rate caught up with Encore and they sold Foundation to Unisys. Steve’s reaction was to load up his hang gliders and drive to Oregon and back with wife and friend, flying their gliders at various places along the way. Meanwhile, I found the cheapest office space in Cary and filled it with the furniture and equipment we’d accumulated. By pure luck a byproduct of my previous startup, Network Products, had been creation of an inexpensive statistical multiplexer. This presented a set of eight asynchronous serial ports on each end of a synchronous leased phone line. I got a line and had one mux connected on the Massachusetts end (by this time at the Marlboro, MA site) with the other and connected at the Cary office. This gave us 960 bytes per second bandwidth in each direction. I got two of the Resolution terminals that put three logical screens on one very large physical screen with each logical screen connected to a separate mux port. The two remaining mux ports were connected to a system in Marlboro to drive a printer and a dialout modem on our end. On the Marlboro end we were connected to a 16 processor Multimax (Encore’s SMP product name in the early days) that was the beta test system named ?. Another Multimax hosted the Unix kernel and hardware developers and it was named Pinochio. Pinochio was the alpha test system and crashed many times a day while our beta system made it through the average day with only one or two crashes in the months after the Multimax hardware and the BSD port were first brought up. This was the ultimate “eat your own dog food” experience and the pressure on us getting the C compiler’s code generation right was enormous. One of the first parallel applications developed at Encore was our version of fsck. With 16 fsck processes running in parallel the filesystems could be fixed up fast to hasten the reboots after a crash!

Encore was intent on selling heavily into education markets and at the time that meant support for the Pascal language was a must have. BSD Pascal, created by Bill Joy and others, had major drawbacks from the point of view of Steve and I. In retrospect, while BSD Pascal genuinely stunk like a skunk, an imaginary better management should have told us to hold our nose and bundle it while turning attention to an implementation of Fortran that generated parallel code. But this assumed the imaginary management had a generous helping of precognition.

We got approval for development of a Pascal implementation using Oregon Software Pascal as a starting point while embracing Green Hills for its C compiler (and its Pascal that compiled the C compiler as it was itself a Pascal program but not standardized and so the Oregon Software compiler would not compile the Green Hills compilers). We got a source license from Oregon Software for free in return for giving them a new code generator and other improvements. Oregon Pascal had a very much stronger front end that would give students a fighting chance to correlate a compiler error message to the defect in their code that caused it and that would compile a great deal faster to give them merciful turn around times.

I got to write the back end of the compiler that translated the internal program representation into relocatable machine code targeting the National Semiconductor NS32k series of microprocessors. The NS32k architecture was the sweetest I’d ever encountered by a wide margin, being more regular than the Motorola 68k. One loopy detail that kept me busy was the fact that floating point literals in the instruction stream were stored in big endian byte order while the rest of the processor was little endian. Coupled with the fact that our development process required a lot of rehosting/retargeting steps where some hosts were big endian and some small I ended up with quite a collection of routines for manipulating instructions until we finally were running on the Encore machine and generating code directly for it. At this point the compiler was compiled by itself without any cross development tools. This compiler did not rely on an assembler: it output object files. To us this was a no brainer that gave a substantial performance edge. It’s funny how a large fraction of current main stream compilers go through an assembly phase. In fact I can’t think of a single one that compiles to machine code without using an assembler.

We finished the compiler and got it certified as ANSI compatible and it was an excellent tool for instruction at Encore sites like the University of Minnesota in Deluth. We had many friendly phone calls with the folks in Deluth and got first hand accounts of what it was like in the winter alongside Lake Superior (making my winters spent in Massachusetts seem like a equatorial vacations by comparison). Unfortunately for us all, Encore’s sales force was less than feeble and did not establish an education market that moved the sales needle.

But there was one interesting accomplishment stemming from the fact that Steve and I and others in the compiler group were able to keep entirely focus on our products: we ran out of bugs. Were were able to put out release notes that declared “no known bugs”. After more recently working on Java for years with a bug pile the size of a mountain it’s almost dream like to have been involved with nontrivial code bases with no bugs. Part of the reason why we got bug free and kept bug free was that we had regression test suite collections that were insanely large, and we required development of new tests for new features. And we had a big rule: nothing leaves the company without going through the regression tests. One of the Fortran tests was compiling and running a 737 simulator. I don’t recall how we got a copy of that, but I’m sure it wasn’t via a “front door”. We compiled the Pascal compiler through itself to multiple generations and compared the code generated for generation X with that of X-1. We were quality fiends in retrospect. It simply never got into our part of the Encore culture to ship broken software if we could avoid it and we did our best to avoid it.

For C, C++ and Fortran we ported Greenhills compilers that already had a 32k code generator. The C++ compiler was quite involved and luckily we had excellent folks in the group by that time like Jonathan Polito. We also ported Greenhills Pascal in order to compile the others. But Green Hills Pascal wasn’t even as attractive as BSD Pascal and so we never considered developing it into a product.

I just recalled one side trip I took in the very early days with Greenhills Fortran. For reasons that are long lost Greenhills supplied its own libm (math library) to to link against. Actually, the reason was clear: it was to win benchmarks. One reason it won benchmarks was that the transcendental functions (e.g. cosine) were written to execute fast. A math thing called a Taylor Series was used for these transcendentals and very few terms were used. The precision was terrible. It was so bad some of our earliest customers flagged it as a show stopper. So I found a decent book and rewrote parts of libm to have very much better precision while still runing as fast as possible. Benchmark performance suffered but our customer applications ran correctly.

One exciting piece of work we did with the Green Hills compilers was to make them automatically generate parallel code. That is, the compiler would see a loop, figure out the induction variable (the variable governing the iterations) and arrange to spawn threads of control for groups of iterations in parallel. There was some heavy duty global code analysis that had to happen to pull this off and I won’t go into it here. Steve did the heavy lifting while I was split between some of that development and more of the maintenance.

At some point it occurred to us to make the compilers themselves parallel. We split the compilers into five pieces and had each piece run on its own processor. This might possibly have led to publication. At the time Steve and I never gave any thought to publishing about our development work, but that’s another story. Anyway, our parallel compilers did not perform as expected. This turned out to be because our use of shared memory between the processes tickled a weakness in Encore’s BSD Unix kernel, causing thrashing (most likely of TLBs). At the time we had a vague understanding and called it the mystery overhead as we tried to get help from the kernel guys to understand it. We never figured a way around this. It’s real shame we didn’t publish our work as it was possibly novel.

One other thing that I did that I should have published about was to make the Pascal product automatically run user compilations in parallel with scheduling. Using some shared memory magic the compiler processes communicated with each other and agreed to when to execute compilations to get as many done as possible without overloading the system. So if there were twenty compiler users on an eight processor system I kept the “load factor” (number of concurrent active compiler processes) at or below some number that I’d empirically determined to be the “sweet spot” for throughput. I never even revealed that feature in the user documentation: it was just automatic and silent in its operation. This was 1986 or 1987.

Our part of the company responsible for the four languages grew from two people to a peak of 11 before shrinking down and going into caretaker mode.

Later we migrated from 32k to Motorola 88k products. I think that was the end of the road for the Oregon Software port, as I don’t remember them having an 88k back end and we didn’t create one. But at that point we were going after the simulation market with military contractors like Hughes Aircraft and nobody cared about Pascal in the field anymore.

At some point we upgraded the leased line to Marlboro from 9600 to 56k baud and with that boost of speed we were able to run X terminals. But we had a great deal of hardware in Cary by that time and were no longer at the mercy of the serial connection. The Network Products multiplexers never missed a beat. They just ran and ran, 24/7 until we were acquired by Sun Microsystems 12 years later. I was pretty satisfied as I’d written a large fraction of the firmware for those two boxes.

References:

  1. Forest Earl Gilmore was the director of software development at Data General in the mid 1970s and my second level manager when I worked there working on a commercial language system. He was cofounder of Business Application Systems that spun out of Data General in late 1977 with a charter to make a portable operating system (“BASport”) and rich set of business applications that could be “written once and run anywhere” with the relatively easy ports of a virtual machine and kernel OS to each new hardware environment. Following that Earl cofounded Foundation Computer Systems, a developer of a fourth generation computer language designed to make application development a drag and drop experience. Encore Computer acquired Encore and later sold Foundation to Unisys, at which point Earl left to be an independent entrepreneur. Tragically a very aggressive cancer took Earl’s life when he was in his mid 40s. Earl was an extraordinary human being.

Cancer Trek Continues

In my 20s I occasionally went on solo backpacking trips. My most enthusiastic trip was from Coos Bay, Oregon to Eureka, California. I walked and camped down the Oregon coast and discovered that if you walk south in bright sun the first part of each day you turn brown on one side only. I don’t recall any fear on that trip. But on other trips into the White Mountains of New Hampshire and the Cherokee National Forest area of North Carolina I put myself into places where an unlucky accident could have serious consequences. One effect of being aware of this was to be damn careful where I put my feet, most especially avoiding places where snakes tended to hang out, keeping good balance when one step off trail was straight down 100 feet, etc. Another effect was to be exquisitely careful with navigation, having good maps, decent compasses, maintaining safe margins of water and taking good care of my feet. Oddly enough, apart from arranging to be noisy as I walked I was mostly oblivious in those days to the possibility of meeting bears and I don’t recall stringing my food and other smellables up and away from the tent, etc. Luck was on my side for that hazard!

But now I find myself on another trek involving the chance of a solitary consequence. I just finished a course of radiation treatment on the heals of chemotherapy treatment number two (hormone/chemo #1 ongoing). Currently the only proxy for my prostate cancer activity is the measure of an antigen in the blood called PSA. But my stage four cancer was diagnosed with a PSA of only 7.6, drastically lower than the specialists expected, meaning that the majority of my cancer activity does not involve cells having PSA on their surface. This is very bad, as although my PSA is now so close to zero that I’m declared “in remission” and “cancer free”, the truth is that my loved ones and I can only hope that the therapies annihilated the undetectable cancer cells along with the detectable ones. In theory this did happen, as the docetaxal chemo is highly toxic to the cancer througout the body and the radiation was directed at the sites were the (PSMA diagnostic) “visible” cancer resided.

The implication is that it may be difficult to impossible to detect recurrence of my cancer (and I have been told quite clearly that it will come back because it had metastasized already before diagnosis). If I’m lucky the cells correlated with a return of higher PSA levels will come back in concert with the undetectable ones, they will be found in the same places, etc, giving me a decent chance of getting treatment early before tumors begin to have serious side effects. However I don’t know yet if the situation is as bad as this: I’m hoping my next oncologist appointment will reveal an alternative proxy. But it’s been 17 months and surely I’d have been told by now. Except I hadn’t been told the basic situation with respect to undetectable cells by an oncologist: I had to get enlightenment from the science literature. It turns out that only about 1% of prostate cancers involve this “sneaky factor” and because of that there has been very little research done on dealing with this type. It’s on me to stimulate my current oncologist to become proactive about this or else help me find one who is willing, as “waiting and watching PSA” seems to be asking for too much of lady luck.

And apart from finding an alternate proxy or means of early detection of my sneaky cancer I also need to find out all I can about strategies for discouraging new growth. Now that the radiation is finished I expect my heart to bounce back (fewer/shorter PVC runs) and that will enable me to resume aerobics, etc. This is all while I eagerly watch the human trials of AOH1996, a potential silver bullet that might come on line in time for me.

My take on ChatGPT and its ilk

LLMs connected to chat as with ChatGPT are to the properly executed AIs as Windows in 1985 was to properly executed operating system designs as exemplified by the Xerox Star. In the 1980s it somehow became possible to get away with shipping prototypes while claiming they are finished products and the latest benchmark of this trend was sprung on an unprepared world by openai.org.

ChatGPT is deeply flawed and exactly like the unprepared computer salespeople: they don’t know when they are spewing BS. But unlike the salespeople ChatGPT lacks the mechanism to tap into another reference to detect its BS. This is because the training data was not properly vetted and weights were not assigned and incorporated reflect how trustworthy the data is known to be. Instead ChatGPT was rushed out as the ultimate shiny new toy to sucker vast numbers of people unable to appreciate how risky a tool it is to use. Shame on openai, shame on microsoft and shame on google for rushing headlong into creating tools that cannot be trusted but are believed to work by uninformed millions.

Algernon effect every three weeks for 18

I’m on a second, parallel chemo these days, getting it every three weeks for a total of 18 weeks. I got my third infusion a few days ago. But I have to take large doses of dexamethasone the day before, day of and day after the infusion. This strong steroid is a strong brain stimulant, for me at least. It lifted me out of the amazing cognitive funk I’d fallen into toward the end of the previous three week cycle. But it was more extreme than that. I realized it had brought back part of the mind I spent the last many decades with when I was chronically hypomanic. When doing math in my head took almost zero conscious thought or visualization of numbers. When I could get stuff very fast and carry on a multi-threaded conversation with a few different people simultaneously with a chat system. That part of my mind was handed over to a mood stabilizer that I take for the sake of my family and others who may be a bit tired of my frequent antics when I’m going very fast. But the dexamethasone gives me a few days of full mind power. If this effect continues in relation to the growing fatigue and cognitive fog that is also coming every three weeks the contrast is going to get pretty sharp. Overall it is a treasured 72-96 hours, as I really have gotten some stuff done.

How to put too thin wires into a breadboard

Shadow showing bent component lead to increase effective diameter

This is a light emitting diode (LED) lead that has been bent so that when it is pushed into a solderless breadboard the bent parts create an effectively larger wire diameter that causes the internal spring metal sheets to grip tightly. Without this bending some solderless breadboards would hold the unbent wire too loosely, creating an intermittent connection that is the bane of existence for electronic prototypers.

How I Might Have Been a Machinist

I graduated high school in 1968 and worked a “summer internship” at IBM in Huntsville, Alabama. My job was to be a “student machinist” at the IBM model shop at IBM’s facility that was responsible for the Saturn V instrument units(IUs). IBM was the prime contractor and coordinated the subcontractors making parts for the IUs. Two parts, the command decoder and a transponder were made by Space Craft Incorporated (later SCI, Inc as they morphed into a contract manufacturer). My dad was engineering liaison between IBM and SCI for these two devices and had to see their design and manufacturer through to meet IBM and NASA standards while helping SCI solve problems along the way.

That was one of the most amazing jobs I ever had. They had to chase me out at the end of each day. I eagerly learned how to operate the machines and build things. I also did a bunch of experiments with helicoils to help the shop manager document failures to get more leverage with a vendor. Helicoils are coils made of very hard metal that fit into a threaded hole in a softer material like aluminum to allow fasteners to be torqued to a much higher degree than aluminum thread could support.

There was another high school graduate in the shop for a period of time. I’ll never forget when he and I lifted one of the flight computers off a cart and onto a bench and just as we were lifting it the NASA inspector said “Careful, that’s worth X million dollars.” I don’t remember X. I just remembered the other guy didn’t last. I barely perceived his departure. He no doubt transferred to a better personal fit. If there was any hint of competition he perceived, well it wasn’t a fair match. My parents had spent all my life preparing me for that job. But I was oblivious, ignoring him completely except for the occasional amenity if we met. But I was head down on the work all the time on the clock.

The staff in the shop let me do just about anything within reason. I learned to carefully clamp sheet metal down before cutting it by having a too loose part slip and zap my finger (minor cut, but it was the same one a dog and a piece of glass had scarred in previous years). I was allowed to do alodine treatment of metal parts in large (fast food fryer size) open metal containers of chemicals. I spilled about a pint of methyl ethyl ketone (MEK) on a floor made of soluble tiles and gave an area of tiles a highly customized appearance. How it was that I didn’t get punished for that is simply amazing. The smell of the MEK as I cleaned the floor never left me and to this day I have to immediately escape any chemical that smells like it. Can the readers guess that this was years before OSHA standards?

But my all time record foul up was when I built a few very complex panels for an engineer’s project. The panels were designed to hold a large number of switches and indicators. They were 1/8″ aluminum, the standard rack 19″ width and perhaps 18 inches tall. I programmed a Computer Numerical Control (CNC: think “programmable”) machine to drill the holes after I’d used a mill with a stack of the aluminum sheets to cut the rectangular holes. But I’d mis-programmed the machine and the holes were drilled with a mirror image error. I have no harsh memory of the upset that caused me. I think this was down to the very matter of fact, low key reaction of the machinists and management I worked with to correct the problem. There were some controlled “OH SHIT!” type exclamations though, but I was a Christian at the time and probably didn’t swear .

Because of the investment of time doing the milling and the schedule for the work, starting over was not a choice. I had to get the holes welded shut and then I used a device to grind the metal back down to a smooth surface. This would have been a wonderful solution except that the welding slightly warped the panels and they were no longer dead flat, they were “close to flat”. But I fixed the CNC programming error and drilled the correct holes, got the parts inspected and turned in. But I was allowed to declare victory with this while all of us knew the engineer might be pissed off by the warpage. Hmm, perhaps they told him “this was made by an 18 year old with two month’s experience.” Nah, it was probably more like “this was made by a kid who didn’t know what he was doing: what would you expect?”

I was allowed to fail in that job without it being an overblown tragedy. I don’t know why in later years I developed extreme fears of both failure and success. Luckily I seem to have reached a stage of my life where I can once again hold the same perspective as I held in that machine shop. I think part of it is that most of what I do these days I’ve already done six ways to Sunday and if I haven’t, my workmate Nick Edgington has done it with great expertise and so there is nothing much to fret about.

I left IBM at the end of the summer to start engineering studies at Auburn University. But had my circumstances been different I could well imagine becoming a fully trained machinist and working my way up to master machinist. The master of the IBM shop was a slightly grumpy old guy. It took me a long time to gain his respect but he eventually warmed up to me and taught me what mastery of the equipment could produce such as a couple of sine blocks that had mind-boggling precision. Sine blocks are a pair of triangular shaped blocks where one slides over the other and the top one presents a dead flat surface an easy to calculate distance from the machine table the blocks are fastened to.

One day some new machines came in from Germany. Each machinist was assigned one of the machines to study and become proficient with and to be able to teach the other machinists about its details. After a while there came a day on which demonstrations and remarks about each machine would be provided by their assigned machinists. One guy had the really huge new mill. The table was roughly three feet wide and 12 feet long. He had a solid block of aluminum perhaps eight inches on a side fastened to the table. He had a mill cutter that was about two inches in diameter in place. He started the table moving and the block of aluminum approached the mill cutter fast. Some of the machinists backed up a few steps and I followed their lead. When the aluminum reached the cutter there was a stream of aluminum emulating a snow blower by shooting up and away from the block and toward the ceiling. The cut only lasted a second or two but was etched in my memory.

I still have a copy of the helicoil report and nothing but fond memories of that job and the men and I worked with. My favorite was a guy named Hamerschmit. Hamerschmit told me a story about shoving the throttle on an F104 he was moving from one building to another. He broke rules shoving the throttle but had the further problem when he yanked the throttle back of needing to go to the locker room for new underwear. I never forgot the imagined thrill of that experience and dreamed of experiencing it. I got close decades later when I gassed my Yamaha R6 motorcycle (about five pounds per horsepower).

But my proudest achievement was making adapter plates for the IU to compensate for a design change in the mounting of a device to the inside of the unit’s ring.. The plates were vaguely four by eight inches and 1/2 inch aluminum with several helicoils. I kept an extra one but it ended up being a door counterweight in the psychology lab I worked in and I never fetched it back. But something about those simple objects going into space gave me a quiet pride. And the notion that one of the IUs was crashed into the moon as part of a seismic study makes me imagine one of that one plate lying in or near the crater the collision created. It will probably be there be there for a long time.

Memories, Dreams and Refractions: Sun Microsystems Part II

I recently came across a Hacker News article that was just a pointer to a copy of the SunOS version 4.11 source code. This led me to want to add my first comment to Hacker News but the UI of my browser (Harmonic) defeated me. Visiting the main web site (https://news.ycombinator.com) didn’t help. So I said to myself “heck with it, I’ll publish it here”.

Ironically rev 4 of SunOS was the version that was a steaming pile of bugs  and the developers were emulating the OS360 misadventure: adding bugs as fast as fixes. It was this disaster that led to development of Sun's Software Development Framework (SDF). When I joined in '97 the kernel development standards were amazingly high and continuing to improve. PSARC (Platform Solaris Architecture Committee), headed by Glen Skinner, rode herd over the interfaces for most of the time I was at the company. The single coolest aspect of the Sun SDF was acknowledgment that one size fits all doesnt work together with support for local dev process customization. They also included celebrations of milestone completions. It was written in a joyful tone and my copy of this document is a personal treasure. 

I joined Sun in 1997 when Encore Computer Inc, an early SMP pioneer that morphed into a smart storage vendor, was acquired. Steve Goldman and I, based in a hole in the wall office in Cary, North Carolina, were chased out of the storage division of Sun at the end of 1998 when division director Janpieter Shreeder put out an edict that everybody working for him had to be in locations A-D. Jenny and I, with daughter Emily a babe in arms, visited the Broomfield Colorado Sun site but decided not to move. We got our layoff papers but as that was happening an angel employee behind the scenes informed us of an opportunity in the Java Technology Group (JTG) of the Solaris Software Division. We “interviewed” at the Burlington Massachusetts site to join the runtime group within the java virtual machine development organization. I quote this because our reputations preceded us and the meeting was just a formality. I was very sick while getting over a severe sinus infection but shared in the upbeat enthusiasm of the Java VM Runtime department that hired us.

The first assignment given to Steve and I was to evaluate the Hotspot virtual machine and the Solaris Java Exact VM. We did a very thorough job and by the end the Exact VM and Hotspot VM camps hated us equally. We declared Hotspot the technology Solaris Software should adopt in place of Exact VM and one of the Sun Labs researchers quit on the spot and there were a lot of hard feelings. Steve and I regretted this being our introduction to the division, but we were old pros and respected for how we handled it. We and a few of the other runtime group members proceeded to port Hotspot to X86 Solaris before upper management realized they would want that to happen. That was an amusing summer and fall of upper management befuddlement, but our line manager Laurie Tolson was THE BEST and gave us her full support.

Janpieter had been director of Solaris Software before taking over Storage. During one visit to Burlington Steve and I were told that in the former era, prior to Janpieter visiting that site a manager had to visit the mens rooms and make sure his picture was removed from the bottom of the urinals. That’s how much they loved Janpieter.

Racing was a model for my life

June 2006 Wheelie

Five minutes of the Isle of Man TT racing created by Don Novak. Play it LOUD with full screen video.

IsleofMan2012WithinTemptationFaster

Motorcycle racing was an important model for my life. Motorcycle racing epitomized best practices and best prepared equipment leading to achievement of a goal. The idea of racing and the excellence required to win became the north star of my life. I carried with me this model of becoming completely prepared to do tasks meaningful to me to the best of my ability. Early in my life I developed the habit of finding and testing limits to know just how far I could push myself in a broad range of situations. In many cases this made me a maverick and I gradually got used to that. It also made me develop and yammer the old saw that “I’ve worn out guardian angels”, and worse, “If it’s worth doing it’s worth overdoing”. I believe my drive to excellence has its roots in the influence of my father: a man who gladly taught me as much as he could about how to thrive until I was well into my teens and christianity became his be-all to end-all. Dad was fearless in a great many circumstances and taught me how to be prepared well enough to perform at a very high level without fear. Alas, fear of failure and performance anxiety caught up with me and plagued me for major chunks of my life but I seem to be past that now.

Life circumstances didn’t allow for me to ever get on a real race track with a motorcycle. But I created my own “track” of a seven mile loop of mountain roads in Huntsville, Alabama and I practiced on that pretend track a lot, mostly on Sunday mornings after delivering my newspapers. I always stayed in the right lane in case of oncoming traffic. There never was any in the earliest morning hours.

At age 11 I started delivering newspapers on a fat-tired single speed bike that weighed a ton. As I saved for a lighter bike with gears I started dreaming about having a motorcycle. Then when I found out that I could have one when I was 14 I started dreaming of riding it and I spent hundreds of hours reading and imagining myriad situations and how I would handle them. I knew a lot about riding before first sitting on motorcycle. I found magazines that covered grand prix (now “MotoGP”) motorcycle road racing and I started to dream about that. Then I found the ultimate road race, the Isle of Man Tourist Trophy and I started dreaming of taking part in that “some day”.

Yamaha 80 similar to what I rode from age 14 to 16
Honda 150 similar to what I rode from age 16 to 17. My riding buddy Bill Elston talked me into this ’cause (IFIRC) his parents wanted him to have this model vs the racy looking 160. I was an idiot to not get the 160.
250cc Bultaco Metralla cafe racer similar to the one I rode from age 17 to 19

Starting at age 14 and continuing to my sophomore year at university I wore out two motorcycles and put a lot of miles on the third . The pictures above are of the same make and models I owned.

To stay alive on a motorcycle takes practice. I practiced a lot.

In 2005 I played the final act in a tragicomic drama named JSR121 by telling a bunch of Euro techies that Sun was reneging on delivering JSR121 to the java.lang.isolate package (i.e. making it a required part of Java). After that my subconscious declared success and gave me a huge intuitive instruction to celebrate my achievement while my conscious mind contemplated the steaming pile the work seemed to be to me in relation to how it would have been if a reference implementation such as Miles Sabin’s, written in good time for Java 5, or that of Greg Czajkowski et al that could have been provided in Java 6. I could deliver the architecture but the politics of Sun “merely” having a reference that demonstrated one of the three supported implementation styles were mystifying. Completing the tasks in my power by telling the world that Sun was committing its users to classloader hell forever was a monumental achievement to my subconscious and a career-ending disaster to my conscious mind.

But for whatever reason in 2006 my subconscious declared it PARTY TIME to celebrate the years of effort I’d put into creating, organizing and conducting the JSR121 standards process and making two attempts to get a reference implementation approved.

600cc, 125 horsepower Yamaha YZF-R6 that I rode from age 56 to 59

This was my street bike in 2006. I rode it until 2009. I scratched the left bottom fairing on a curb at a fast food place but otherwise had no “incidents” with this motorcycle. It required absolute respect. It accelerated to 150mph without effort while giving the sensation of being in a military jet with the cockpit open. It stopped on a dime and gave nine cents change. It handled with high precision, allowing me to ride between highway edge lines and the surrounding dirt at illegal speeds. The ergonomics were hideous up until about 80mph at which point my weight was taken off the handlebars and it was comfortable. I practiced a lot of maneuvers away from traffic to get myself ready for the race track.

Full race Yamaha R6 sans fairing I prepared to race at age 56

This was my full race R6. In 2006 it had a nice fairing. The exhaust note was like something from the depths of Mordor. I bought it from a guy in Atlanta. He was amazingly patient dealing with someone two and a half times his age.

But I never got the race bike on a track. Instead of maintaining focus on this I went back to school to take a senior level honors matrix theory course. Then reality cracked open, I realized 2006 had been truly over the top and I fell into a bipolar II depression that gripped me tight for three and a half years.

So fast forward 15 years to spring of 2021 when I sat on a dear friend’s porch in Huntsville Alabama, waiting for the fateful appointment informing him that he was a dead man walking to end. I was talking with my daughter when it all of a sudden hit me that I could not, no matter how hard I tried, race a motorcycle at any point in the future. The reasons were obvious: their names are Jenny and Emily. I cried. Now, a good while after my friend’s death I’m ending this treatise on a dream that started at age 11 while using this sign over my workstation to help me keep myself tamed.