Current professional activities
Tufts University Computer Science Department (2012)
I am a Visiting Scholar at the Tufts University Computer Science department. In the fall of 2012, I am teaching COMP 150-IDS: Internet-scale distributed systems — lessons from the World Wide Web.
IBM Distinguished Engineer Emeritus
In April of 2010 I retired from my position as a Distinguished Engineer in the Emerging Technologies department of IBM's software group — Distinguished Engineer is one of two executive-level positions given to IBM's most senior technical employees. When I retired, I was given the honorary title IBM Distinguished Engineer Emeritus.
Chair: W3C Technical Architecture GroupI am chair of the W3C Technical Architecture Group (TAG), the senior technical committee responsible for the World Wide Web (more details on the TAG are provided below).
IBM Corporation (1995-2010)
I rejoined IBM in 1995, when Lotus Development Corp. was purchased by IBM. During this period, I was one of IBM's lead representatives to the World Wide Web Consortium (W3C), and I played key roles in the development of some of the most important Web, XML, and Web Services specifications. I am a co-author of the SOAP 1.1 specification, and a co-editor of the SOAP 1.2 W3C Recommendation. I was for approximately ten years, starting with its formation in 1999, a member of the W3C XML Schema Working group; I made significant contributions to the design of the XML Schema Definition Language (XSD) and was a co-editor of the original XML Schema Definition Language Recommendation. Prior to my work on XML and SOAP I made significant contributions to the design of Java Beans.
In 2004, I was named by W3C Director Tim Berners-Lee to one of three appointeed positions on the W3C's Technical Architecture Group (TAG). The TAG, which includes 5 elected participants as well as Tim himself, is the senior technical body responsible for the architecture of the World Wide Web. The TAG documents for the Web community the core principles of the Web's architecture, and helps to identify and resolve technical issues relating to the Web's design and deployment. I have written or edited several TAG "findings", and made a number of public presentations (Web-related papers and slides are linked from my publications list). In early 2009, Tim asked me to serve as chair of the TAG, and I was recently reappointed to serve through January 2014.
From 2009-2010, I led the team doing strategy for IBM's mobile software in the IBM Software Group Emerging Technologies organization.
Lotus Development Corp (1992-1995)
From 1992 to 1995 I was a Consulting Engineer at Lotus Development Corporation, where I was responsible for compound document and distributed object technologies. In particular, I was responsible for both strategic analysis of and implementation of technologies such as Microsoft's OLE 2.0, Component Object Model (COM), and Opendoc. I led the team that built the common implementation used by Lotus Smartsuite, including Lotus 1-2-3, Lotus Freelance, and Lotus Wordpro to implement OLE 2.0 compound document technologies. I also led Lotus strategic analyses of Microsoft's early Internet and Java efforts.
IBM Cambridge Scientific Center (1988-1992)
In autumn of 1998 I returned to the IBM Cambridge Scientific center, where for four years I headed the software team for the Datacube. Datacube was one of the first prototypes of a massively parallel, fault tolerant system, based on commodity components, and designed primarily for data processing as opposed to numerically-oriented applications. Datacube nodes used PC-grade CPUs, disks, and memory; software algorithms were used to implement fault-tolerant, scalable, distributed, Unix-compatible data stores, network routers, and prototype transaction processing infrastructure. A fault tolerant network maintained any-to-any connectivity in the face of link failure, and software algorithms automatically activated and reconstructed (using then-new RAID techniques) spare nodes to replace any hardware that failed. Datacube was designed to support up to 4096 nodes, but due to funding limitations, the largest operational prototype we built consisted of ten nodes. (I'm hoping to post some of the old Datacube papers and presentations here one of these days.)
MIT Project Athena (1985-1987)
From 1985-1987 I represented IBM Research on campus at MIT Project Athena. In addition to consulting on the design of various Athena systems, I built early prototypes of collaborative software systems based on distributed access to shared relational databases. Among the applications built using this system was the very popular Whatsup¿ calendar, one of the first open, shared bulletin board applications. The system was also used for several courseware offerings.
The Locus Distributed System (1982-1985)
From 1982 to 1985 I was employed by the IBM Palo Alto Scientific Center, but the majority of my work was in partnership with Locus Computing Corporation, a UCLA spinoff. I made a variety of contributions to the design and implementation of the kernel for Locus, one of the earliest and most fully distributed Unix implementations. I helped developed replication logic for the filesytem, I implemented communication drivers, and later I implemented kernel support for the IBM mainframe vector facility (somewhat similar to the MMX and similar SIMD facilities available on modern microprocessors.)
Stanford University (1980-1982)
From 1980 to 1982 I was at Stanford, where I obtained a Masters degree in the department of Computer Science. During this time, I was on the research team of Professor John Hennessy, and I contributed to the implementation of a state of the art optimizing compiler (PASCAL*). While at Stanford, I twice taught CS-105: Introduction to computer programming.
IBM Palo Alto Scientific Center & Stanford University CS Dept. 1978-1980)
From 1978 to 1980 I represented IBM on campus at Stanford University. I participated in the design of the Perseus distributed operating system, and supported other systems research at Stanford.
Early work in IBM — VM Passthrough (1974-1978)
I joined IBM at its Mohansic Lab in Westchester, NY in Sept. 1974, starting as what IBM called a Junior Programmer. Although I contributed to a number of interesting projects on the then new VM/370 operating system, including one of the earliest display-oriented (as opposed to line-oriented) debugging systems, the work for which I was best known was largely completed within my first two years with the company. I wrote the core code for what later evolved into IBM's VM Passthrough Program Product. Passthru (as everyone called it) provided a telnet-like terminal network for users of IBM mainframes. Melinda Varian provides more details in her VM and the VM Community: Past, Present, and Future . Quoting from page 10 (notes in parenthesis are from me):
Another important innovation announced in 1980 was Pass-thru. The original author of the system that became Pass-thru was Noah Mendelsohn. [...] (he wrote) a server that provided the basic Pass-thru function in an elegant and extensible form. Bill Anzick, who had advised Noah on V6 (internal codename for pre-product versions) from its beginning, took over the project in 1977 and expanded it into the product that was announced in 1980 as Pass-thru.
Although SHARE (the IBM computer users group) had not asked for something like Pass-thru, as soon as we saw it, we wanted it badly. As soon as the tapes arrived, they were rushed to our computer rooms, and the product was installed right away, all over the world. Pass-thru had been used extensively inside IBM before it was released, so it had already been fairly well debugged. Many of us who had moderate-sized Pass-thru networks never saw a failure.
Passthru was written entirely in assembler code, and it included its own multitasking operating system supervisor, which ran as a virtual machine. 35 years after the first code was written, the VM/Pass-Through Facility product remains available (p. 19) to users of IBM's zSeries mainframes.
MIT and Select Computer Systems (1970-1974)
While at MIT, I worked part time during the year and full time over the summer for Ray Kurzweil at Select Computer Systems. We built inventory control systems (which resistor is in which bin?) and language translation systems (from 7074 assembler language to COBOL!); both of these systems were written in FORTRAN. This work was done after Ray had graduated from MIT, but before he built his reading machine, his musical instruments or his career as a "futurist".
Cigarette Components, Ltd. (Summer, 1970)
Over the summer of 1970, I was employed as a computer programmer by Cigarette Components Ltd., a research lab near London, England. I wrote FORTRAN routines to analyze gas chromatography data on the ATLAS computer at the University of London.
High School Studies Program (Summer, 1969)
For several years, Paul Schneck taught a summer program for high school students at the Goddard Institute for Space Studies, near Columbia University in New York City. In 1969, when I took the program, we ran on the Institute's IBM 360/95. There were only two '95s in existence, but that summer they were the fastest machines in the world. We learned FORTRAN, 360 Assembler (including imprecise interrupts on the '95), and an amazing amount about hardware architecture (carry look-ahead adders), operating system design, compilers, etc. I think the program was called High School Studies Program (either HSP or HSSP), but I'm not sure that's right. (I'd be interested in finding more references or in hearing reminiscences from those who participated. It was a wonderful experience!)
Bronx High School of Science (1968-1970)
My career in computing began at the Bronx High School of Science in 1968 where, like many who went on to significant careers in computing, I had the opportunity to program their IBM 1620 computer.