Paul McJones Elements of Programming via Wikipedia Book sources

Paul McJones

Last modified 11 June 2023.

Technical interests

Programming, programming languages and environments

The book Elements of Programming, by Alexander Stepanov and Paul McJones, has been republished by the authors in low-cost paperback and free PDF -- see the web site.

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 early 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:

Source code and documentation are available here.

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 scanned the documents in 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:

An archive of design and user documentation plus source code is available here.

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:

HP decided to stop sharing the data with researchers, but while it was available it was 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 only 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