I’m a research engineer in the Trustworthy Smart Contracts Team at ConsenSys. My current focus is on the application of formal methods to smart contracts. Before that, I was an Associate Professor in the School of Engineering and Computer Science at Victoria University of Wellington. I graduated from the Department of Computing at Imperial College London, and moved to New Zealand in 2004. My research interests are in programming languages, compilers, static analysis tools and formal verification. During my time as a PhD student I was an intern at Bell Labs, New Jersey, working on compilers for FPGAs and also at IBM Hursely, UK, working with the AspectJ development team on profiling systems.
During my PhD I developed several new algorithms for static pointer analysis. Since then I have continued working on techniques for static analysis and verification tools, and several of my algorithms have since found widespread use. For example, my algorithm for field-sensitive pointer analysis is used in GCC and in the godoc tool for Go; my algorithm for dynamic topological sort is used in TensorFlow; another for finding strongly connected components is used in SciPy; finally, my algorithm for computing Tutte Polynomials features in both Mathematica and Sage.
My current research is focused around the Whiley programming language and formal verification. Whiley provides support for providing functional specifications in the form of preconditions and postconditions, and is designed to simplify verifying software. You can find out more about my work on Whiley here.