Starting My Working Life -- Getting Connected to Frank and Will

Copyright 2002 David C. Walden
(drafted in August 2002)

When I first got out of college, I got a job programming computers at Lincoln Laboratory where my position was "staff assistant" for not much money (but I was just happy to have a job after an undistinguished college career). At the time (1964), Lincoln Lab employees who were only computer programmers and didn't also have a strong background in physics, electrical engineering, mathematics, etc., couldn't be full fledged staff members. Since my under graduate degree in math was based on the most tenuous grasp of advanced math and I also had only rudimentary insight into how to put computers through their paces, my assignment to the staff assistant category was more than justified.

Frank Heart, an assistant group leader of Group 62 (in the Space Communications Division), was one of several people in two or three groups who interviewed me when I visited Lincoln Lab on a job hunting trip during my senior year of college, and the offer of employment from Lincoln Lab's personnel department came on behalf of Frank.

Relatively immediately after graduation from college, I flew to Cambridge, Massachusetts, found someone in need of a roommate who gave me a place to live, bought a cheap used car, and headed for work at Lincoln Lab (getting hopelessly lost the first day and arriving a couple of hours late).

I don't remember if Frank was there when I arrived or on vacation (it was summer). In any case, I was told by someone that I would be working for Will Crowther, who was on vacation. I don't remember much about those first days before Will got back from vacation except that I assigned a temporary desk in the back of a lab a ways away from the offices the rest of my group and I think I was given a Honeywell 1219 instruction manual to read. I do remember feeling lonely in at my temporary desk far from everyone and spending much of my time sitting at a little table in an open space among some of the offices of other members of my group. Eventually, things were rearranged so that I shared a three person office with two other staff assistants, which was the Lincoln Laboratory way -- staff members shared two person offices and staff assistants shared three person offices.

After a week or so, Will came back from vacation, saved me from my confusion about how 1219 subroutine calls worked (which shouldn't have caused me any trouble, but I suppose I lacked motivation to concentrate), and he told me about the Lincoln Experimental Terminal (LET) project that he said we would be working on. He first gave me the job of writing a double precision multiplication subroutine to write. The 1219 had only 18-bit fixed point arithmetic -- no floating point hardware -- and 18 bits was not sufficient for the satellite orbit calculations that would be an important part of the system. With a combination of tips from Will and perhaps a trip to the Lincoln Lab library, I whipped that routine out in a few hours, and showed the result to Will. He assigned me a couple of more utility routines for the system (double precision sin, double precision square root, etc., to go with the double precision multiplication routine [1]). I rushed back to the library, read up on algorithms for sin and square root, excitedly told Will about the few-instruction methods I had found for these routines, coded them up over a few days, and (with even more excitement) showed the result to Will. So Will gave me another bit of the system to implement or to help him implement [2,3,4].

Effectively, I was assigned not to a project but to Will. I was his to use and teach. I went everywhere with him and did everything with him. He would break off more little pieces of design or implementation (a day or two long) and give them to me to do. We talked through "our" design and implementation together, he answered my questions about why we were doing this or that, and he gently helped me see problems and improvements in what I had done. And he indicated approval for how fast I did my little bits and how fast I caught on (whether or not it was completely justified).

Apparently Will reported to Frank that I was fitting in and doing well, because when a two person office became available, Frank rearranged things so that Will and I moved from the different offices we had been in to share a two-person office. And later, when I had been there perhaps six months and was definitely not expecting anything, Frank called me in to his office and told me my salary had been increased a little bit. That gratuitous raise made me feel great.

In any case, after a month or two working with Will, I was doing bigger pieces (e.g., a routine to read the correction portion, based on the actual date, of a moon ephemeris table from paper tape into a table in the 1219 memory). Because we shared an office, Will knew when I was struggling and would ask me to talk to him about what I was working on. He would also teach me various programming "tricks" as he helped me. (For instance, I remember him explaining to me how co-routines worked, and how to find a very infrequent interaction between two routine in the real time LET system by calculating how often each routine in the system ran and then looking for the products of the frequencies of two routines which match the frequency of the problem.) And Will would talk to me about the algorithms he was developing and the code he was writing and answer questions I had, which surely helped me a lot more than it did him. Since Will was responsible for LET system integration in addition to developing some of the system modules and since I was doing everything he was, in time I became quite knowledgeable about the overall software system. [Will also shared with me a bit of wisdom that I had never focused on before and never forgotten since: writing things down has greater impact than just saying them.] After a year or 18 months at the Lab, I began to be given more independent assignments, but we still shared the office and he never stopped being my teacher.

I had become completely captivated with computers when I stumbled into the little (IBM 1620) computer center at San Francisco State College in the second term of my junior year. At Lincoln Lab, my engagement with computers could only grow. Lincoln Lab had its own good library. MIT had a much bigger library which I regularly visited from home in the evening in Cambridge. I also wandered around the MIT buildings to see what was happening in the various computer labs there and made periodic visits to the Harvard computer building. One Lincoln Lab staff member (Henry Fractman) leaving for a tour of duty at the Lab's facilities in the Marshall Islands, gave me a number of years of back issues of the Communications of the ACM, and I joined the ACM myself to get future issues of the CACM. I listened hard to Will's frequent explanations of programming methods and techniques. Finally, I signed up for some part-time graduate courses in computer science at MIT, that first of which (Herb Teager's systems course) Frank got me into despite that fact that MIT didn't really have provision for part-time graduate students.

After the LET system was working, Will began working on speech signal processing (which Ben Gold, Charlie Radar and their colleagues were deeply into) using the 1219 we had in the lab for software development for the LET system, and I tagged along. The first thing we did was develop the capability to edit and assemble our programs on the 1219 (we had done the assembly for the LET system using a cross-assembler that someone -- Will? -- wrote that ran in batch mode on the Lab's IBM 7094 computer). Ralph Alter wrote a version of TECO (which ran on the PDP-1 at MIT) for the 1219, Will wrote an interactive debugging program (not unlike DDT that ran on the PDP-1), and Chuck Neissen wrote a version of the PDP-1 assembler for the 1219, and I wrote a macro processor front-end for Chuck's assembler (taking ideas from the one that ran on the MIT PDP-1, including commands to repeat over a couple of kinds of lists, conditionals, expunging of macro definitions, and recursion for macro calls, definitions, etc. [5]). To help Will with some speech signal processing ideas that he had, I wrote a Fortran program for the 7094 (which we had to use in punched-card-based batch processing mode) that calculated Eigenvalues and Eigenvectors, which meant I had to read up on the best numeric methods of the time (Wilkinson's tri-diagonalization method [6]). I also did a little bit of speech "research" of my own which had something to do with correlating bits of speech with each other; this had no real merit, I think, but it sounded substantial enough that I was asked to present my methods at one of the regular meetings Lincoln Lab held to show its results to its government and military sponsors (a JAC presentation, where JAC probably stood for Joint Advisory Committee). I remember Charlie Radar advising me to practice my presentation enough times that I essentially had it memorized which would made it sound like I really knew what I was talking about.

These best of times suddenly ended when Frank Heart left Lincoln Lab to join BBN. I'm not sure why, but in time I was told to go write a Fortran program to help an engineer in another division (Walt Morrow, I believe, who later became lab director) who was looking a inter-frequency beat frequencies. Also -- and I'm not sure if there was an actual change in how I was treated -- I began to be unhappy about my non-staff position. I went to the Assistant Group Leader (Irwin Lebow, basically a very nice guy) and told him I thought I should be made a staff member. He told me that it could happen once I finish my studies at MIT with a master's degree. This offended me more, and I dropped by BBN one day (with no prior warning) to see how Frank Heart was doing.

Frank had been very good about not recruiting people from Lincoln; but when I arrived voluntarily at BBN to visit, he lost no time in showing me the whole place (including having someone show me the Model 33 TTY terminals connected to the PDP-1 time sharing system -- we didn't yet have time sharing at Lincoln Lab). At the end of my visit, Frank asked if I'd like to hear a job offer. A day or two later, I had the job offer in hand, I told Lincoln I was leaving, and a couple of weeks later I was given a going away present by my colleagues in my group at Lincoln Lab and I left.

I couldn't wait to get started at BBN. I think I must have reported for work on a Friday (it was the first day or fifteenth day of the month perhaps) and was assigned an office and shown my own Model 33 TTY connected to the PDP-1 time sharing system, but I was told that I'd have to wait until Monday to get a door key. Saturday morning I drove over to BBN, told a watchman that I had just joined the company, got him to let me in, and all day Saturday and Sunday I replicated the Eigenvalue and Eigenvector program (I had written at Lincoln Lab) on the PDP-1 in STRCOMP (a version of BBN's Telcomp interactive programming language including a string data type), and had it working by Sunday afternoon. By Monday morning, my first real day of work, I had already had non-trivial experience with BBN's time sharing system -- a wonderful leap beyond Fortran in punched-card-based batch processing mode on the Lincoln Lab 7094.

I did a variety of little projects over the next year or 18 months in Frank's division at BBN. I worked with Alex McKenzie to evaluate the Honeywell 516 computer for a potential systems project in the life sciences area. I worked with with Bob Kahn on an evaluation of a government-sponsored data management system. I helped Paul Caslteman with some of the early stages of became the Prophet project. I taught some sessions on the Telcomp language in BBN's weekend graduate school.

At some point in (early?) 1968, we became aware of the upcoming procurement for the ARPANET -- Bob Kahn was apparently already in touch with Larry Roberts in this area. BBN assigned Frank Heart the task of getting BBN ready to write a proposal, and I began working with Bob Kahn and Severo Ornstein on a preliminary design. As time time for the RFQ to actually be released drew near and facing the prospect of having to really design and perhaps win the job to implement the software for the first packet switch for ARPANET, I reminded Severo and Frank that we had talked from time to time about recruiting Will from Lincoln Lab and that perhaps now was the time. Severo, I think, phoned Will, and shortly my mentor from Lincoln Laboratory, Will Crowther, joined our proposal team. By this time Will was my partner rather than my supervisor, but he was still the far more senior than I and the far smarter of us, and I still sought to learn everything I could from him. Over the next year, sitting in adjacent offices, we (along with Bernie Cosell) designed and implemented the software for that first packet switch.

In September 1970, a year after the delivery of the first ARPANET packet switch, my family and I moved to Norway to live, where I implemented the second packet switching network (LFK Network, with Nils Liaaen). In September 1971, I returned to BBN, rejoined Will, Bernie, and others working on the ARPANET software; and, a few months later, Frank Heart asked me to become the leader of our little software group. I assume that Will and Frank talked this over before Frank made the approach to me. Will never had any interest in management; in time I learned I did. In any case, in our nominal new roles, Will and I continued to get along just fine, each doing various tasks, working essentially as partners, as Will had treated me from the first day we worked together at Lincoln Lab. In time Will rotated onto a project to build a multiprocessor based packet-switch, and I stayed running the expanding ARPANET software project based on the original Honeywell 316 packet switch.

Also in time, Frank assigned me technical management of more of the networking activities of our division and then promoted me to assistant division director (Paul Castleman was the other assistant division director, in charge of the division's life sciences computer systems work).

I always remember with gratitude the lessons from the years I worked closely with my software mentor, Will Crowther; and I also always remember with gratitude Frank Heart bringing me to Lincoln Laboratory and then BBN, showing me a model for managing technologists, and offering expanding opportunities to me as fast as I was ready to accept them.

References

  1. "Some LET System Math Subroutines," M.I.T. Lincoln Laboratory report MIT-LIN-62L-0061, April 26, 1965.
  2. "Utility - An I/O and Debugging Package for the Univac 1218," M.I.T. Lincoln Laboratory report MIT-LIN-62L-0052, February 24, 1965 (Will Crowther wrote most, if not all, of this, but somehow my name went on the report as author).
  3. "LET System Coordinate Conversion (CCCORV)," M.I.T. Lincoln Laboratory report MIT-LIN-62L-0068, June 15, 1965.
  4. "Univac 1218 Paper Tape Listing Program," M.I.T. Lincoln Laboratory report MIT-LIN-62L-0047, September 9, 1965.
  5. "UNIVAC 1219 Macro Assembler - Operating Instructions" (with C.W. Neissen), M.I.T. Lincoln Laboratory report MIT-LIN-62L-0097, September 26, 1966.
  6. "The Givens-Householder Method of Finding Eigenvalues and Eigenvectors of Real Symmetric Matrices," M.I.T. Lincoln Laboratory Technical Report No. 1967-51.