Absolute Beginners Operating System (ABOS)

The Absolute Beginners Operating Systen (henceforth ABOS) was a simple multi-tasking operating system written for the PSI mini module (Motorola 68000 based controller board). By default this ran the CPLI (CPL Interpreter) from ROM but you could also download any C programme cross compiled on Unix using GCC to run under it.

Applixware Course Mark System (axCMS)

The Applixware Course Mark System (henceforth axCMS) was an Applixware application using modal dialogs built around spreadsheets. At the time most marking was done on spreadsheets and this was an attempt to rein in the risk associated with this by constraining all the spreadsheets to application built to a defined configuration defined and by using custom macros for most user interaction that was not actual mark entry.

Collaborative LaTeX (coltex)

The Collaborative LaTeX System (henceforth coltex) is a command line toolkit built around a version control system (Subversion) that allowed multiple users to work collaboratively on the same LaTeX document, including automated syntax checking and PDF preview generation. Although these days largely subsumed by online web services we still run this internally, in particular for users with particular privacy needs.


The ConCon program was a version control system toolkit written in Perl using a PostgreSQL backend database. It was written specifically for managing “conduits” (reports) within our School’s central database service but would have worked for any line based text files. It was largely written as a personal development exercise to learn Perl and PostgreSQL.

Control Process Language Compiler (CPLC)

The Control Process Language (henceforth CPL) was a new language developed in the Department of Artificial Intelligence at the University of Edinburgh. The language was used for the control of LEGOTM robot vehicles in the Intelligent Sensing and Control Laboratory of that department.

The syntax and semantic specifications of CPL were produced by John Hallam, based on previous work by Tim Smithers, and although similar in style to LISP are much simplified. Concurrent processes are an important facet of CPL as is the support for various kinds of robot sensors and actuators, and the independence of CPL programs from the physical hardware of the robots they are being run on.

The compiler and linker for CPL was implemented by Tim Colles, and ran under SunOS, HP-UX, and MS-DOS. These translate CPL source into a stack-based pseudocode which is downloaded and interpreted by software running on the robots. The pseudocode interpreter was written by John Hallam and Tim Colles and includes symbolic debugging at the pseudocode level.

Control Process Language Interpreter (CPLI)

The Control Process Language Interpreter (henceforth CPLI) was written in 6502 assembler and ran the CPL stack based pseudo code. The microprocessor and associated hardware was part of a locally designed controller board for LEGOTM robot vehicles and was called the “brain brick”. The interpreter was later ported to run from under ABOS (see above) on a commercial m68k PSI mini module.


The GNU Report Generator (called gurgle) is still used within the School of Informatics as part of the central administrative database service. The GURGLE program gets data through an SQL query to a RDBMS and produces a report. Although the program was originally designed to produce TeX/LaTeX formatted output, plain ASCII text, troff, PostScript, HTML, XML, shell scripts or any other kind of ASCII based output format can be produced just as easily. The program is ideal for generating large bodies of text where small parts of that text are substituted with information from a database. So its great for generating mainly static web pages which have small amounts of dynamic content. The formatting process is controlled by a definition file which holds the report, page, and record layouts, what fields to display, and where. Other useful functions supported in the definition file include sorting, filtering, and data manipulation of records in the databases.


Hypatia is the central database for the School. This application encapsulates the data model (as a Theon ModelLibrary), front end (desktops configured for TheonUI), incoming data processing (using TheonCoupler) and report generation which uses the “conduits” framework on top of Gurgle.

Lists Database (LISTS)

The Lists Database (henceforth LISTS) was an extension to the SRDB (see below) also implemented in dBaseIV. The databases held staff and student contact details for maintaining and generating paper lists for dissemination within the Department of Artificial Intelligence at the University of Edinburgh.


The Options extension module for Python implemented an extended getopt function called GetOptions(). This function adhered to the POSIX syntax for command line options, with GNU extensions. This was a predecessor in a similar style to the current command line option module, now built into Python.

PAP (Automated Papers System)

The Automated Papers System (henceforth PAP) was an interactive command line tool for managing the submission, copyright and local publication of research papers and technical articles.


The Shezhu Resource Sharing System (pronounced Says-Who) was an application for scheduling and booking shared resources such as rooms and equipment using a web browser. It differed from conventional booking systems by using a more visual approach to finding free resources, in particular for consecutive repeat bookings.

Student Records Database (SRDB)

The Students Records Database (henceforth SRDB) was implemented in dBaseIV. The system allowed four separate databases to be manipulated via forms. These databases stored information on postgraduate students, such as their personal details, courses they took, and marks they got. It also included a database of lecturers and the modules they taught. The system allowed each of these separate databases to be maintained as well as allowing searches to be made of each database for particular records, including a question answering mechanism. Finally the system also enabled a student transcript to be printed containing details on a student and a list of the marks they got.


The TECDB was implemented in Applixware. This was a generic database user interface that supported custom forms. This was the primary interface for the School central database service on Ingres until 2009 when we migrated to PostgreSQL and this interface was re-factored as a client/server application for use from a web browser. This new incarnation was backwardly compatible and remains the primary interface for users to the School central database, re-branded as TheonUI.


Theon is our PostgreSQL schema change management system. SeeĀ Theon and Adopting Theon for details. This consists of Theon-TK which is the command line toolkit, TheonCoupler which is a mechanism for synchronizing external data into a Theon managed database and TheonUI which provides a generic web browser front end for maintaining the data within a Theon managed database.


A simple command line (crypt-alike) implementation of the MicroEMACS encrcryption facility, that is, a beaufort cipher with derived autokey function. Methods of attack on this method are not widely known and very computationally intensive.


Xgcal was a group calendar for X11 with timetable print feature. Xgcal extended the xcal program so it could handle multiple calendars for different groups of people. The calendar data files were stored in a public place so that more than one person could read and alter them. The Xgcal program could also print a timetable for any week and any group.