Today, Dr Steve Vickers is best known to students and colleagues at Birmingham as a lecturer in computer science with research interests in the theoretical mathematics which underpin the discipline.
Less well known, however, is Steve's 'previous life' as a pioneer of personal computing in the early 1980s, where he wrote the ROM firmware (the program which provides low-level control of a device's hardware) for the legendary ZX Spectrum computer.
With the Spectrum celebrating its 36th anniversary on 23 April, we caught up with Steve to find out more about his pioneering work and how the Spectrum helped shape today's world of pervasive computing.
My father Tom Vickers was at the National Physical Laboratory (NPL) after the war, working with some of the earliest computers (starting with the Pilot ACE, which was based on designs by Turing). He used to take me in and show me the machines working, and later encouraged me to try BASIC programming on early time-share systems and arranged for me to spend 9 months at the NPL between school and university.
I therefore had an interest in computers from a very early age. On the other hand I really enjoyed maths at school and at university. Despite temptations to switch to computer science, my Director of Studies at Cambridge, Ken Moody (himself a computer man), advised me to continue with the maths as long as I could, and I went on to do a PhD in algebra at Leeds.
It was only after I completed my PhD that I decided I would "see the big wide world" and indulge my interest in computing by getting a job as a computer programmer.
I wrote to all the computer companies I could find out about in the Cambridge area, and asked if they had any jobs. I ended up at Nine Tiles Information Handling, who were doing contract work for Sinclair. The owner John Grant had already written the firmware for the ZX80, and my first task was to adapt it for the ZX81 by writing a floating point maths pack and some other new features. I also wrote the user manual. After that I did the same for the Spectrum.
The main challenge was that the memory size of the ROM chip was quite small, so all the firmware code had to squashed down by any trick available.
Another issue was that the hardware was being developed at the same time as the software, so the testing cycle was quite elaborate - write some software on a separate computer, download it into a ROM, plug it into the ZX hardware in whatever form it currently was, then try it out.
I'll mention a broader issue too. For a mass market, the machine needed to be as easy to use as possible, within its limitations, and so at each step the features in the firmware needed to be carefully thought through.
Both the ZX Spectrum, along with the BBC Micro (which was adopted by schools at the same time), have helped teach a generation of kids that computer software is a medium for building things, an electronic Meccano.
First, it should be obvious that my career is somewhat maverick. There was a somewhat buccaneering spirit in the industry at the time. My experience is not necessarily relevant, especially if you prefer to have everything planned out in advance.
Lots of life is accidental and haphazard, but if you are lucky, find yourself in the right place, and work at it, then you may be able to help good things happen. Even if you don't make much money out of it you will still get the satisfaction.
In finding out what you are good at, you also need to find out what you are not good at - and this means pushing the envelope and accepting failure from time to time. For example, I'm pretty rubbish at business.
A final lesson is (for people like myself) - Keep doing mathematics as long as you can.
I set up the Jupiter Cantab company with Richard Altwasser, the hardware lead for the ZX Spectrum, to make our own computer, the Jupiter Ace. We never sold enough to make big money, and the company went into liquidation.
After that, I did some contract work. Ken Moody, Director of Studies at Cambridge, then put me in touch with Samson Abramsky in the Department of Computing at Imperial, which led me to pursue my current academic career.
This started my research into the mutual influences between computation and maths. The unexpected direction, going back to Dana Scott, is that computation tells you something about the connections between topology and logic, two apparently very different areas of pure maths. It led me into topos theory.
After Imperial I spent a few years in the Pure Maths Department at the Open University, and then joined the School of Computer Science at Birmingham.
My reason for being in Birmingham, as a mathematician in a computer science department, is that we have a very strong Theoretical Computer Science research group that is not at all afraid of quite eclectic maths. Two of my colleagues, Achim Jung and Martin Escardo, I already knew at Imperial. As a group we bring together diverse skills in logic, topology and algebra, with a strong common thread in category theory, in a way that is unusual in pure maths. This provides a really stimulating environment.
My own work aims to put geometric logic, from topos theory, into a type theoretic form that could be implemented on a computer. This computational angle brings together topology, algebra and logic in ways that force all of them to be slightly different, although most of the changes have been anticipated by topos theorists. It also meshes with Martin's work, part of a huge international effort, on "Univalent type theory", which already has a large body of computer-implemented mathematics.
From my perspective, and looking at the work of our Theory Group, "Computer Science" is far broader than the science of computers. (From time to time we agonise over what would be a better phrase for the discipline, but there's nothing that truly captures the spirit of what we do.)
I've explained how the interaction between maths and computer science is bidirectional: ideas of computation feedback on how we think of mathematics. One apparently trivial example is surprisingly deep. Standard 20th century logic evaluates mathematical assertions as being either true or false, but computation suggests a third value - that you will never find out because your evaluation never finishes, like a computer program in an infinite loop. This fact of life underlies many of the most important results in theoretical computer science, and is also part of revisions of logic - including the geometric logic of topos theory - that are increasingly being understood as capable of supporting mathematics.
My expectation is that 21st century maths, as done by mathematicians, will incorporate these new ideas that were influenced in part by ideas of computation and for which current work includes much carried out in computer science departments. The obvious manifestation of computer science will be new computers, but what people should look out for is how ideas of computation more and more affect the way we understand the world.