Reuben Thomas: CV

This CV was last updated on 26th June 2008.

Full name
Reuben Rhys Thomas
Date of birth
13th November 1973
Contact address
9 Oughtonhead Way, Hitchin, Herts. SG5 2JZ England
+44 7791 179665
Names provided on request

1  Education

1.1  September 1995–April 2001: PhD at University of Cambridge Computer Laboratory

I designed and implemented Mite, a virtual machine that allows multiple languages to be compiled into binary-portable object code, and translated at load-time into native code. Producing good quality native code is left to the compiler, and does not affect the speed of the fast load-time translator. The VM’s design combines a formal specification, allowing for proofs about virtual code, with a design that works well with both existing compilers and CPUs, making it straightforward to write high-quality code generators.

1.2  October 1992–June 1995: BA in Computer Science with Mathematics at St John’s College Cambridge

I obtained first-class honours in Computer Science with Mathematics, with a focus on computation theory, type theory, and the formal treatment of programming languages, and was awarded several prizes and a college scholarship for my examination results (which included obtaining the second highest mark in the university two years running), and the St John’s College Master’s Essay Prize for an essay on the future of computing.

2  Current employment

2.1  1997–present: Adsensus Ltd

I am a Principal of Adsensus Ltd, a consultancy with a focus on process and culture change in IT companies. I am responsible for the company’s own technical infrastructure, and developed the tools it uses to build customisable web applications, which have a particular emphasis on modularity and the ability to be customised through Microsoft Word templates.

2.2  1995–present: Free software

I have contributed extensively to a wide range of free software, with particular emphasis on improving robustness, portability and interoperability. Projects to which I have made major contributions include SoX, the sound converting and processing program, file, the file identifier, Zile, the text editor which is a portable and resource-light clone of Emacs, and plptools, the communications suite for connecting EPOC PDAs to PCs.

2.3  2005–present: Web site building

I have built a number of web sites for private and commercial clients, providing not just technical expertise, but design and copywriting advice and input. Client sites include Perfect Pitch Music, Todd Wilander and Pine and Country Antiques. My focus is always on building sites that are simple, attractive, lightweight, accessible and standards-compliant, keeping use of bells and whistles to a minimum. For example, the sites mentioned above use only a few lines of JavaScript and no Flash.

2.4  2003–present: Systems administration

I am the systems administrator for Collegium Records, an independent record label, which runs a highly heterogeneous on-site system, including machines with four different operating system families as well as off-site internet presences.

I also consult for a range of individuals and small businesses.

3  Previous employment

3.1  January 2006: Web application localisation

I localised a major health provider web application written in American English for the British market for RIC International, adapting about two hundred thousand words in hundreds of web pages and message files using a translation memory application.

3.2  April–December 2004: Translation of Éléments de théorie des automates for Cambridge University Press

Working closely with the author, Jacques Sakarovitch, I translated this major 800-page work on automata theory into English, dealing not only with the delightfully intricate theory, but with the range of erudite puns, misquoted classical poetry and other jokes with which the author peppered his magnum opus. The author wrote: “I did not think I could ever find someone not only technically qualified for such a specialised text, but able to render with such virtuosity the literary puns and misquoted poetry with which I could not help peppering the French edition.”

3.3  November 2001–August 2003: Programmer at Protechnic Exeter Ltd

I worked on the Priority Health Connection health management system, which is used in NHS trusts across the UK and Eire. My tasks ranged from application programming and bug fixing to planning future developments and development methodologies.

3.4  1999–2001: Postdoctoral research assistant at the University of Glasgow Department of Computing Science

Working at Microsoft Research Cambridge on the Glasgow Haskell Compiler, I was responsible for maintaining and enhancing the Windows port of the compiler, the .NET back-end, and the build system.

3.5  October–December 1996: Acting Director of Studies in Computer Science for St John’s College Cambridge

I organised supervisions for about twenty undergraduates, liaising with supervisors across the University (during PhD course; see section 1.1).

3.6  1995–2000: Supervisor on the Computer Science Tripos

I supervised mainly theoretical courses, including Pi Calculus, Type Theory, Advanced Algorithms and Business Studies (during PhD course; see section 1.1).

4  Technical skills

4.1  Software design and implementation

I have implemented a complete ANSI Forth compiler, aForth, ARM and virtual machine back-ends for the LCC C compiler, and have worked extensively on maintaining, porting, and extending the Glasgow Haskell Compiler and the Lua system.

For Adsensus Ltd, I have implemented a simple but powerful web site templating system, Nancy, and XML-based tools to allow web pages to be written in tightly-controlled Microsoft Word forms.

In my work on both proprietary and open software, I have developed an emphasis on improving the robustness, portability, and interoperability of code while reducing line count and simplifying design. Examples include reducing the number of network ports needed by a health care system from hundreds to a single one, thus greatly simplifying network administration; adding plugin support to the SoX sound processing system, enabling codecs and sound effects to be distributed pre-compiled by third parties, under different licenses if desired; and merging the databases used for MIME and human-readable file types in the ‘file’ program. I have also modernised and simplified a number of GNU autotools-based build systems, including those of GHC, SoX, file, Zile and plptools, making the programs more portable, easier for third parties to build and distribute, and easier to maintain.

4.2  Programming languages

I am expert in C and Lua, experienced in Perl and bash, and familiar with C++, Python and Ruby. I am familiar with most major styles and families of languages, and am able to bring the benefits of all to each.

I have worked extensively with XML as a data language, and am familiar with SQL.

4.3  Operating systems

I have developed POSIX software (especially under Linux), Windows and RISC OS, and ported many POSIX tools to RISC OS and EPOC. Most of the software I have written is highly portable.

4.4  Documentation and technical writing

Besides my PhD thesis, I have published several papers on my research (see below), written a prize-winning essay, and worked extensively on documentation for dozens of programs. I am expert in LATEX (some of my packages are available on CTAN), and am also experienced with DocBook.

4.5  Spoken languages

I speak fluent French, conversational Italian, and basic Dutch and German.


Reuben Thomas. Beetle and pForth: a Forth virtual machine and compiler. BA dissertation, University of Cambridge, 1995.
Reuben Thomas. The melting machine: from PC to pronit, 1995.
Reuben Thomas. Mite: a fast and flexible virtual machine. In EuroForth ’98 conference proceedings, September 1998.
Reuben Thomas. Machine Forth for the ARM processor. In EuroForth ’99 conference proceedings, 1999.
Reuben Thomas. The TpForth project. In EuroForth ’99 conference proceedings, 1999.
Reuben Thomas. Mite: a basis for ubiquitous virtual machines. PhD thesis, University of Cambridge Computer Laboratory, November 2000.
Reuben Thomas. The Mite VM: bridging the complexity gulf. In EuroForth ’01 conference proceedings, November 2001.
Reuben Thomas. The Beetle Forth virtual machine, 2016.
Reuben Thomas. An implementation of the Beetle virtual machine for POSIX, 2016.
Reuben Thomas. A simple user-interface for the Beetle Forth virtual machine, 2016.
This document was translated from LATEX by HEVEA.

Last updated 2009/10/29