I am a software engineer, working in the Hack team. I have a degree in Mathematics and a PhD in Computer Science, both from the University of Cambridge, and am a Fellow Commoner of Queens’ College, where I was previously a Bye-Fellow. Before joining Facebook, I spent 18 years at Microsoft, where I was a Senior Researcher. Prior to that, I was an SERC Research Fellow, an RA on an EU ESPRIT project and Senior Research Scientist at Persimmon IT, Inc. I have served as Editor-in-Chief of Computer Languages, Systems and Structures (Elsevier) and am currently a member of the Editorial Boards of the Journal of Functional Programming (CUP) and Logical Methods in Computer Science.
My research ranges from proof theory and categorical logic, through semantics of programming languages and static analyses, to programming language design and compiler implementation. My thesis was on strictness analysis and I have since worked on topics that include term calculi and categorical models for linear logic, MLj and SML.NET (optimizing compilers from SML to the JVM and .NET with extensions for interlanguage working), Polyphonic C#/Comega (C# with join-calculus concurrency and data manipulation constructs), monads and effect systems, models for dynamic allocation, and, more recently, compositional compiler correctness, mechanically formalized logics for reasoning about machine code programs, reactive programming, and verifying build systems.