Reflections on Personal Computing
Fred Hansen
(Try clicking on the pictures.)
Personal computing has changed forever the interaction of people with information. By providing graphic and interactive access, more can be grasped more quickly, which is fortunate because computing has also accelerated dramatically the growth of availlable information. Throughout my career, I have aided and abetted this revolution with work on the necessary software.

My major areas of research interest have been programming languages, data structures and interactive text editors. For my Masters project I developed a list processing langauge and system similar to elementary Lisp, but adapted to a virtual memory environment. My PhD dissertation was an editor for hierarchically structured texts, especially programs; naturally, the implementation made heavy use of data structures.

LGP-30 computer My first computer, at Connecticut General Life Insurance, was a personal computer, the LGP-30. Its 16K of memory was vast compared to its needs: all system software was permanently resident. Needless to say, the -30 was not very personable, lacking an operating system, a compiler, and an assembler; all essential tools for serious programming. I worked one summer programming the beast for actuarial calculations. Later summers I programmed a 650 for other data processing tasks.

My college years began at Ohio Wesleyan University, where I took all the computing courses they offered and talked them into giving me another. After a stint in the Army, I went on to graduate school at Stanford. For my Masters I implemented an environment for programming languages. For a number of years, it was used teaching at the University of St. Andrews. My dissertation project (pictured at the left) simulated a personal computer with a high-end graphics station attached to a top-of-the-line mainframe computer. The project itself was a syntax directed editor and pioneered the sort of processing now found in on-line outliners.

Academic Experience (Universities of British Columbia, Illinois, Michigan, Pittsburgh, and Glasgow)

University of Michigan Carnegie Mellon University University of Pittsburgh University of British Columbia University of Illinos University of Glasgow At the University of Illinois I was involved with development of Computer Science education material on the Plato system, the world's largest Computer-Aided Instruction system. This was the first large scale deployment of bit-mapped displays and we had a lot of fun with aspects of interaction. Plato terminals offered a form of personal computing, except that in those days they were cheap terminals connected via high-speed lines to a central computer.

The courses I taught most frequently were Data Structures, Programmming Languages, and introductory courses. One of my research efforts culminated in development of the international standard that decribes how to express Algol 68 programs in character strings suitable for submission to a computer. This work involved reconciling diverse opinions from workers all over the world. I also co-authored with Ed Reingold the successful textbooks Data Structures and Data Structures in Pascal.

"440" (Northern Telecom Systems)

Our unit of Northern Telecom produced a workstation for small business tasks. Its forte was collecting data at a local site for transmission over phone lines to a central organization. My own task was development of a training course and management of a group responsible for maintenance of the software on an early version of the product. In a few months we cleared up a two year backlog of nagging bugs. I also did some exploratory work in writing an interactive editor for the system. Since the systems were targetted to specific commercial functions, they were not general purpose enough to be adapted for personal use. There is apparently no longer any trace of them on the web.

Perq (Perq Systems Corporation)

At Perq our principal product was the Perq computer, a personal workstation with a mega-pixel, bit-mapped display. I worked on most of the operating system and utilities, especially in the areas of facilitating user interaction. My first project was to extend the text editor adding commands to manipulate the cursor from the keyboard. Thereafter I corrected a number of bugs in the editor and extended it as an interactive front-end to the command language.

At Perq Systems Corporation I worked on the user interface--especially the text editor--and also in the operating system itself, including device control, file systems, memory managment, and network protocols. One of my tasks was to lead a team completing the conversion of an operating system from uni-processing to multi-processing.

One of my major efforts was leading a group of twelve for four months as we converted the operating system from uni-processing to multiprocessing. We modified over two hundred modules

My last project at Perq was a connection from ethernet to a 370, for which I learned a new operating system and assembly language. I implemented a protocol that achieved speeds over 150 kilo-bytes per second, in contrast to the earlier approach transferring at a tenth the speed.

Andrew (Carnegie Mellon)

My first project at Carnegie-Mellon's Information Technology Center was development of another ethernet interface for an IBM-370. Counting programming languages, editors, debuggers and what-not, I had to learn and utilize twenty-one languages on four different computers and three different workstations to complete the project. All documents printed at the ITC for the first two years went through this link.

At the Information Technology Center, I helped design and develop what grew into the Andrew User Interface System. I dealt with all aspects of user interface software: mouse driver, window manager, menu package, word processor, and a number of applications. My biggest individual project was design and implementation of Ness, a language for programs embedded within documents or applications.

I worked on many aspects of the Andrew ToolKit, or ATK, as AUIS was then called. My separable contributions included a raster editor, a styles editor, and the Ness programming language. Prior to development of ATK I was for more than a year the principal maintainer and developer of its predecesor, the "base editor", a subroutine package which provided editing tools for text with multiple fonts, multiple sizes, justification, sub- and superscripts, and so on. Applications used this package instead of writing their own text management routines, and thus the user saw all applications as behaving the same in response to inputs. The package was sufficiently comprehensive that the text editor itself was only three pages of code.

Ness (University of Glasgow and Carnegie Mellon)

While at the University of Glasgow for a sabbatical year, 1986-1987, I developed a programming notation for expressions over subsequences and incorporated the notation into a programming language called Ness. After returning to Carnegie Mellon I reimplemented Ness as a full blown language capable of being "embedded" along with other objects in documents or applications developed under the Andrew User Interface System (then called the Andrew Toolkit or ATK). The result is an extremely extensible programming and user interface development environment because, in AUIS, there is a large and extensible set of objects which may be embedded in a variety of substrates, including text and drawings.

The major innovation of Ness is its string sublanguage. Ness is the only language where program text can have styles and comments and constants can include embedded objects. Another innovation is provision for control of objects embedded in the document by statements in a Ness script. For instance, a click on a button object may scroll the surrounding document to some other section.

Andrew Consortium

As Director of the Andrew Consortium I found funding for and managed a group who enhance, maintain, and port the Andrew User Interface System. This system was the earliest compound document architecture and is still the most comprehensive available on X Windows.

The Andrew User Interface System is a compound document architecture; texts and other objects implemented within the system can embed arbitrary objects such as drawings, equations, and spreadsheets. AUIS includes a word processor, drawing editors, spreadsheet, and program editors for C, C++, Lisp, Pascal, and other languages. There is an elaborate mail/bulletin board reader/composer/manager, a help browser, many other applications, an application building environment, and dozens of varieties of embeddable objects. AUIS was originally developed at Carnegie Mellon's Information Technology Center with sponsorship from IBM.

As development of the Andrew User Interface System advanced beyond research and into practicality, I organized a Consortium to support further maintenance and development. We now have two major member organizations and a number of other members at various levels sufficient to support a staff of five. During our first two years, I oversaw numerous developments including new object/editors for drawings, images, preferences, and fonts. The electronic mail system was extended to incorporate support for the new MIME standard for multi-media messages. We released the software as a CDrom, as in-house software for the School of Computer Science, and as a new version for our members. During 1993 we converted the system from our proprietary object oriented conventions to the C++ object model. We are currently rewriting the printing system and implementing a more comprehensive set of widgets.

Integrity Arts

A "smart card" has a chip on it and can store data. Integrity Arts (now part of Sun) markets a development/execution environment for writing smart card applications in a subset of Java. In support of this effort, I wrote a tester for the on-card interpreter, a test driver, and a suite of test cases to explore each facet of the implemented Java subset. In a sense, this is the most ubiquitous of personal computing since civilians will come to have several computers in their wallets.

Software Engineering Institute

At the Software Engineering Institute I have been part of a group concentrating on Commercial-Off-The-Shelf ("COTS") software, a category that challenges and alters many of the traditional ideas of software engineering. From this vantage point, I have consulted for a half dozen clients, helping to identify what has happened to each project, why it has happened, and what to do next. My most recent effort has been an exploration of some facets of Tcl/Tk.

One of the interesting trends I have observed is the development of small use-constructed information systems, which I call "Suzies" for short. The tradition, especially in DoD computing, has been the central development of mammoth, monolithic software followed by painful efforts to deploy it to reluctant users. Suzies, however, are developed by some of the users themselves using typical web-based application development tools like Cold Fusion. Acceptance of Suzies is high because their developers know what they are doing and can rapidly adapt the applications to the needs of their compatriots. In several cases, Suzies have overridden more carefully planned and far more expensive developments. Of course, as the Suzie is adapted into a fully supported application it must undergo many of the steps omited in its development: documentation, configuration management, deployment tools, security hardening, testing, training, and so on. Nonetheless, web-based Suzies are the next step in the march of personal computing.