I am interested in making computers better serve the needs of people. I have targeted much of my research at improving the programming process, by working on programming language design and description, and by integrating "systems" concepts like distribution and mobility into the programming language. In the mid 1990s, I have became interested in better user interfaces, more consistent applications, system management, and mobile computing and networking.
At OGI I was head of the Computer Science Department from 1994 to 1999, and research took a back seat. I had some peripheral involvement with ongoing projects in Distributed Multimedia and Operating System specialization. I continued to teach Object-oriented programming, and experimented with Smalltalk, Java and Self as teaching vehicles, as well as different ways of integrating Object-Oriented design and Object-Oriented Programming, which are separate courses at OGI, each of which would seem to require the other as a prerequisite!
In 1998 I spent a couple of months at Xerox PARC with the AspectJ team, and wrote some tutorial examples in AspectJ.
I have become increasingly interested in lazy functional programming, a style well-supported by the programming language Haskell, and in Smalltalk, particularly the Squeak implementation. Whereas I used to feel that that it was important for a programming language to "support" the programmer, I have come to believe instead that the hallmark of a good language is that it gets out of the programmers way! In this respect, Smalltalk, like Algol 60, is a significant improvement over most of its successors.
My involvement with teaching O-O Analysis and Design brought Extreme Programming to my attention. The XP process seems to correspond much more closely with what I know from experience about software development than many of the more heavyweight software processes. I planned to teach an XP course at OGI in Spring 2001, but it was cancelled due to low enrollment.
I am currently involved with two research projects. The Timber project is looking at language and system issued involved in using Time as a basis for real-time embedded systems. The InfoPipes project is developing an abstraction for real-rate information flows.
At Digital's Cambridge Research Laboratory, my research focused on types for object-oriented distributed systems. This work helped to complete our understanding of the Emerald programming language, a language that I co-designed when I was on the faculty of the University of Washington. The Emerald type system provides a coherent framework for integrating compile-time and run-time type-checking; this is essential because objects that did not exist at compile time can become accessible at run-time. The type system provides a coherent model of surprisingly wide applicability: separate compilation, object-oriented databases, heterogeneous system services, name-space browsers, and system management tools. Due to my expertise in this area, I acted as a consultant for several groups inside Digital, including groups building system management products for Unix, the Object-Oriented Program Office, and various kinds of distributed system services.
I also consulted extensively on extending and using RPC, and on file systems for portable computers, and I worked with a student on a file system for video applications. I spent more than a year as technical expert for a team building a cross-platform system management product. My final activity at Digital was to advocate for and assist with World-Wide Marketing's transfer of Digital's "Electronic Store" from a private network with custom VT100 screens to the Internet and Web browser technology.
At CRL I also managed the Lab's Macintosh computers. I was dissatisfied with the difficulty of accessing files and printers on our Unix-based servers. After examining several commercial "solutions", I obtained and setup the Columbia AppleTalk Package on our Unix machines. Unix directory trees could then be mounted on the Macintosh desktop directly, and a Unix-based Postscript printer could be chosen as the Macintosh's default printer. The same package provided Unix users with direct access to AppleTalk-capable printers, in one case reducing the elapsed time required for printing from one-and-one-half hours to twelve minutes. Apart from the practical benefits, I also gained an appreciation for the problems of system management.
At Washington, I was a co-principal investigator of the Eden project, a pioneer attempt to combine the benefits of integrated computing (time-sharing) and distributed computing (workstations). Eden was the first distributed object-oriented system. My principal contributions to Eden were to the user interface in the most general sense: the Eden Programming Language and its translator, the Eden Command Language and its interpreter, the input/output system, and the terminal handler. The facilities provided in the Eden Programming Language for object invocation were fully comparable to those available in the then pioneering RPC systems.
My work on Eden led me to collaborate with Prof. Henry Levy, Norm Hutchinson and Eric Jul in the design and implementation of the Emerald distributed programming language. Emerald provides a single semantic concept of object, but implements objects in different ways depending on their intended use. Because the language is integrated with its own run-time support, object invocation is efficient enough in the local case for this single semantic model to be realistic. The key ideas in Emerald are the type system discussed above, and a parameter-passing mechanism called "call-by-move".
While a doctoral student at Oxford I collaborated with a software house in the design and formalization of a programming notation for the production of "publishable programs". I also spent a year at IBM's T.J. Watson Laboratory working on specifications. My thesis work was a detailed consideration of one aspect of programming language design &emdash; Exception Handling.