Reuben Thomas: CV

Full name
Reuben Rhys Thomas
Date of birth
13th November 1973
Nationality
British
Telephone
+44 7791 179665
Email
rrt@sc3d.org
Referees
Names provided on request

This CV was last updated on 24th January 2018. It is also available as PDF.

 Summary

I am a software designer and engineer with a background in research. I can untangle complex problems to focus on what is important, identify simple solutions that involve minimal disruption, build consensus around their adoption and guide their implementation. I contribute to a wide variety of free software, and consult for a range of individuals and businesses.

 Personal qualities

I always aim to practise the three cardinal virtues of a programmer:

Laziness
Human time and talent is precious, and should be used where it is really needed. I seek to reduce human effort (often we can simply do less; otherwise, we can use machines), reuse techniques and tools to solve old and new problems, and recycle past investments wherever possible. I aim for “right first time” solutions that do just enough to satisfy today’s needs while leaving the door open to further improvements tomorrow.
Impatience
We should not put up until tomorrow with what we can fix today: the sooner we improve our situation the longer we shall reap the benefits. I always ask the question: what is the simplest thing I can do for the biggest return?
Hubris
Existing solutions are not always best: when it seems best to start afresh, I will.

These virtues are informed by the three fundamental values:

Beauty
All of my activities are driven by a strong aesthetic sense which favours the simple and elegant over the flashy or ornate.
Truth
Whether communicating orally or in writing, with people or machines, it is important to conform to reality: honesty and accuracy matter more than plans and precision.
Music
Life is not a race, it’s a symphony. Ultimately our contribution is measured by how much we enable others to make theirs.

 Technical skills

Software development
I have a firm grasp of the software development process from analysis and design through coding and testing to delivery, support and maintenance. I have worked extensively on maintaining, porting, and extending the Glasgow Haskell Compiler and the Lua system, as well as implementing pForth, ARM and virtual machine back-ends for the LCC C compiler and a complete ANSI Forth compiler. I have been an effective collaborator on many free software projects (see section ).
Programming languages
I can use a wide range of languages in various paradigms. I am expert in C and Lua, experienced in Perl, Python and bash, and conversant with C++, Ruby and Lisp. 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 with XML extensively as a data language, and with SQL.
Operating systems
I am familiar with major operating systems, and the issues involved in building and maintaining portable software. I have developed on many UNIX-style platforms (particularly Linux), and have a strong focus on developing portable software with standards such as POSIX and ISO C. I have also worked with proprietary operating systems such as Windows, and such oddities as Acorn RISC OS and EPOC.
Writing
I can structure, write and edit documents (see section ) in a fluent yet terse prose style. Besides my text book translation and PhD thesis, I have published several papers on my research, 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 familiar with DocBook.
Oral communication
I have excellent oral communication skills, including fluent French, conversational Italian and basic German and Dutch, and am practised at addressing audiences large and small.

 Parallel employment

For most of my career I have worked simultaneously in a number of fields:

 2013–2016: Parsec Systems Ltd

I consulted as an analyst and developer on a long-running project for a major broadcaster’s television advertising platform. First we analysed and optimised their existing advert scheduling system, then we rewrote the scheduling engine; in both phases we increased revenue, while minimising disruption to this business-critical system, and simultaneously moving from in-house to cloud deployment.

I worked across the stack, from algorithmic analysis in the initial phase, to writing an analytics dashboard for our new scheduling engine.

 2014: Google Fonts

I worked on the implementation of Metapolator, a free software tool for manipulating entire fonts, as part of Google’s vision for bringing more human languages online. As well as writing much of the back-end code, I built a Vagrant-based development environment to make it easier to on-board volunteer developers, upstreamed patches to 3rd-party JavaScript libraries to reduce our maintenance burden, and made some crucial interventions to resolve problems at the interface between design and implementation.

 1997–2014: Adsensus Ltd

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

 1989–present: IT consultancy

As a consultant to individuals and companies, I work with clients to identify and then meet their needs at the level that works for them, whether they are technically advanced or neophytes, and whether they want to be heavily involved in planning and decision-making or would prefer to have me take decisions for them.

I can give one-off or on-going advice; my longest-standing client is Collegium Records, an independent record label, whose highly heterogeneous on-site system has included machines with four different operating system families as well as off-site internet presences, for whom I have acted as systems administrator, IT strategist, and social media consultant for over fifteen years.

I have also taken on roles that involve considerable trust, such as forensic analysis of sensitive personal data.

 1995–present: Free software

I have contributed extensively to a vast 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, GNU Zile, the text editor which is a portable and resource-light clone of Emacs, and several widely-used fundamental libraries for the popular Lua scripting language. I have also adopted and updated several mature packages, such as Recode, the text encoding converter, Enchant, the meta-spellchecking library, and PSUtils, a suite of utilities for manipulating PostScript documents, working with both previous maintainers and downstream packagers to ensure continuity.

 2003–present: Editing, writing and proof-reading

I have worked as editor, translator, copy-writer and proof-reader on a variety of projects, including translating a major text book in theoretical computer science from French into English, editing and writing copy for personal and corporate web sites, and editing and proofing documents ranging from academic papers to career-critical professional letters.

 1982–present: Singer

I am a professional classical singer, singing daily at Westminster Cathedral, working regularly with a wide range of groups and appearing as a soloist. For more details, see my Singing CV.

 Education and Academic Posts

 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.

 1995–2000: 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.

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

I obtained first-class honours in Computer Science with Mathematics, 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.

 Other interests

I am a published composer, lyricist and translator, and also enjoy performing and recording stories and poetry, and book design.


If you look at the contributors list of any widely-used piece of free software, there’s a good chance you’ll find my name in it.

This document was translated from LATEX by HEVEA.

Last updated 2019/05/31