Paul McJones Elements of Programming via Wikipedia Book sources

Paul McJones

Last modified 14 July 2017.

Technical interests

Notice: Some of the documents distributed by this server have been provided by the contributing authors as a means to ensure timely dissemination of scholarly and technical work on a noncommercial basis. Copyright and all rights therein are maintained by the authors or by other copyright holders, notwithstanding that they have offered their works here electronically. It is understood that all persons copying this information will adhere to the terms and constraints invoked by each author's copyright. These works may not be reposted without the explicit permission of the copyright holder.

Programming, programming languages and environments

Elements of Programming, by Alexander Stepanov and Paul McJones, was published by Addison-Wesley Professional in June, 2009.

Jonathan Shekter, Bob Archer, and I designed and implemented the first version of the Adobe Pixel Bender parallel image-processing language supported in Adobe Flash Player starting with version 10 and in Adobe After Effects starting with CS3.

I designed the portable operating-system interfaces for the SRC implementation of Modula-3 and chaired the "Interface Police" committee that cleaned up and documented the basic libraries. See:

I participated in the development of a Vesta-based programming environment for Modula-2+. See: I worked with John Backus on the design of his family of functional programming languages. See: I built an APL virtual machine in microcode for a Digital Scientific Meta4 (which had a 90 nanosecond instruction time in 1970). See:

Charles Simonyi and I built a hand-tuned Snobol4 implementation for the Control Data 6400 at the University of California, Berkeley. This report and its appendices serve, respectively, as the tutorial and reference manual for our dialect of Snobol4:

History of software

I've worked on several projects with the Software Preservation Group of the Computer History Museum to collect, preserve, and present historic software, including source code:

I periodically post about these projects to the Dusty Decks blog. See also:

Previously I participated in the creation of CHM's Stretch (IBM 7030) Collection -- an online collection of some 1022 documents from the IBM 7030 development project donated to the Museum by Harwood Kolsky.

As an associate editor of the ACM SIGMOD Anthology, I collected papers and republishing permissions for System R, and the collected works of E.F. Codd and Jim Gray.

I recorded, transcribed, and edited the proceedings of the 1995 SQL Reunion, which reunited the teams that designed IBM's System R and DB2 databases.

Operating systems

I designed the user process management component of the Taos operating system for the Firefly multiprocessor workstation. This included binary-compatible emulation of Berkeley Unix, and also a separate but interoperable interface for multi-threaded processes. See: I designed the virtual memory manager, "Germ" (boot loader/teledebug kernel), and some standard device interfaces ("hardware abstraction layer") for the Xerox Pilot operating system (embedded in the Xerox Star and some other products). See: The Computer History Museum has a transcript and a video of "The Final Demonstration of the Xerox ‘Star’ Computer". Al Kossow collects Xerox workstations and documentation. Alan Freier created a web site about the Dandelion and other Xerox D* workstations running Pilot; he originally hosted this web site on a Dandelion.

I designed the file directory system for the CAL Time-Sharing System, which ran on the Control Data 6000 series. See:

Transaction processing

I designed the crash recovery component of the System R database system. See:


I led a team that built the world's first speech-enabled electronic program guide for digital cable television at Agile TV (now Promptu) .

I worked on customer relationship management software at Epiphany, Inc. (now part of Infor Global Solutions).

I consulted on the MilliCent microcommerce project at the Systems Research Center of Digital Equipment Corporation (then Compaq, now HP).

I worked on EachMovie, a web site that recommended movies and videos using the Each to Each collaborative filtering algorithm:

The system was terminated but for several years the data we collected was available for collaborative filtering researchers and is cited by a number of papers.

In 1994, Andrew Birrell and I built a system called Virtual Paper that provided first-class support for online reading. The Virtual Paper software (now mainly of historical interest) is available in source form as part of the Critical Mass Modula-3 library. As a spin-off of Virtual Paper, we made available the pstotext utility, which extracts the words from a PostScript or PDF document and which is included as the text extraction features in GSview.

Internet address: paul at mcjones dot org