About Me

Hi, I'm Stephen Thompson, a software developer living in south-east England. I'm currently working on a number of projects, including a new verification-aware programming language, and an indie roguelike game. Previously, I have worked as a programmer (mostly in C++) in the videogame and finance industries, and before that, I was in academia, working on solar physics research.

Programming and Proof

Computer coding screenshot. Photo by Markus Spiske on Unsplash.

One of my interests is in using mathematical proof techniques to verify the correctness of computer software. To this end, I am currently constructing a new programming language, named "Babylon", which is basically a simplified version of C, with verification features (e.g. pre and post conditions) added.

I am also interested in how computers can be used to assist mathematicians with more traditional mathematical proofs, either through formal theorem proving packages (e.g. Lean or Isabelle), or through the so-called "human-oriented theorem proving" approach (e.g. Tim Gowers' project). This is an area that I would like to investigate further in the future.

Game Programming

Screenshot of Total War: Warhammer
Total War: Warhammer. I worked on some of the multiplayer features for this game. Image credit: Creative Assembly / Sega

I have worked professionally as a programmer for two game development companies: Frontier Developments and Creative Assembly. At Frontier, I worked mainly on the company's game engine technology (which was used across a number of games), while at Creative Assembly, I contributed to "Total War: Arena" and "Total War: Warhammer", as well as working on their back-end server systems (the latter was a mix of Python and Erlang programming).

I have also worked on a number of independent game projects, including "Knights" (an open source remake of an old Amiga game by Kalle Marjola) and a couple of game related demos. (Some code from one of those demos has been incorporated into the "Bullet" open source physics engine, used in many games.)

Currently I am working on a new indie roguelike game, which is still in the very early stages of development, but if all goes well, I may be able to release it on Steam one day.

Finance Industry

Image showing stock market graphs and data. Photo by Anne Nygård on Unsplash.

Before I worked in videogames I was in the finance industry for a few years, working for a company called APT (later bought out by SunGard). Their main products were a statistical risk model (quantifying how much money might be at risk of loss, for a given set of investments) and an optimiser (which helped in choosing a portfolio that would minimise the risk, given various constraints). I helped out with the programming of these products, working in C++, Fortran and Delphi.

Academia

Photo of the Sun with several sunspots visible
Photo of the Sun showing several sunspots, the topic of my Ph.D. thesis. Image credit: NASA

My degree was in mathematics at Christ's College, Cambridge. I also took a Ph.D. at the same university, completing a thesis on solar physics, and specifically, the dynamics of convection in sunspots. Whilst in the end, I don't think I had that much of an impact on the field, I did get the Ph.D. so I must have done something right! The work involved running large-scale numerical simulations in Fortran, as well as more traditional mathematics (i.e. solving equations with pen and paper).