I work part time at Kent, principally as investigator on the STARDUST project, led by Laura Bocchi. I also work part time as Senior Research Lead at Input Output, leading the Marlowe team, and am honorary doctor and professor of computer science at Eötvös Loránd University in Budapest.
In my spare time I enjoy cooking, cycling and jogging (I used to call it running). I rode the London 100 2016–2018, with a personal best ride time of 6:30. Most of all I enjoy walking, and, for example, have walked the Stevenson trail and in the Harz mountains.
My main research interests are in functional programming, across a range of topics. For the last ten years or so I have worked on designing tools to help people to write and test programs more effectively. Together with Huiqing Li, Reuben Rowe and many others, we have built refactoring tools for functional programs in Erlang (Wrangler), Haskell (HaRe), and, most recently, OCaml (Rotor), supported by the EU and UKRI.
The STARDUST project, jointly with the University of Glasgow and Imperial College, has the aim of developing more reliable distributed systems through extending session types to deal with failure. This builds on earlier work with Erlang, and is investigating not only ‘fail stop’ but also situations of ‘grey failure’, when communication slows down enough to impair performance.
I am also working with IOHK on the Marlowe domain-specific language for financial contracts on Cardano.
Refactoring is the process of transforming program source code to improve it in some way, without changing what it does. Performing any refactoring in practice comes with the risk that it does indeed change program behaviour. The aim of the project was to establish the feasibility of building trustworthy refactoring tools that guarantee that behaviour is not changed, and to ensure that it was industrially relevant, we worked in collaboration with a leading industrial user of OCaml, Jane Street Capital.
I have worked on three EU projects, each with links to Erlang. The Prowess project built on the success of ProTest, and extended property-based testing to rapidly-evolving systems such as web services and internet applications. Kent worked on extracting QuickCheck state machine models from tests, as well as refactorings to support building tests. The RELEASE project aimed to port Erlang to massively-multicore systems. Here we developed refactorings to support multicore programs in SD-Erlang, as well as building tools for offline and online monitoring, and a general extension API and scripting DSL for Wrangler.
I am interested in working with industry, and have worked with IOHK on scripting languages for distributed ledgers (paper). I have also had two Knowledge Transfer Partnerships with Erlang Solutions: the first on refactoring and components for Erlang, the second on using e-learning technologies in high-quality online training.
I have authored texts in Miranda, Haskell, and Erlang, as well as my first book on Type Theory and Functional Programming, freely available to download, and more recently I have developed MOOCs on Functional and Concurrent Programming Erlang for FutureLearn.
I act as a mentor for early career staff and postgraduate researchers, and, through CPHC, help to train new lecturers in computer science. Please contact me if you are interested in this. I am a fellow of the BCS, and am assessor for BCS accreditation of computing courses.