I'm a Researcher in the Programming Principles and Tools group at Microsoft Research Cambridge.
My research interests include type systems and operational semantics for programming languages, especially module systems, functional and, more recently, object-oriented languages. I must be going native.
I obtained my PhD in Computer Science under Don Sannella at the LFCS, at the University of Edinburgh. Before joining Microsoft in 2000, I briefly worked for Harlequin Ltd. on their Dylan compiler. I designed and implemented the extended module system of Moscow ML, a popular byte-code compiler for Standard ML. I was also a post-doc researcher under Andrew Pitts at the University of Cambridge Computer Laboratory. At Microsoft, together with Andrew Kennedy and Nick Benton, I've been busy developing SML.NET, a Standard ML compiler with object oriented extensions, that targets the Common Language Runtime and is integrated with Visual Studio .NET. Working with Andrew Kennedy and Don Syme, I've contributed to the design and implementation of Generics on the Common Language Runtime, focussing on verification. I'm also responsible for the implementation of the concurrency constructs in Cω, an extension of C# with native support for join patterns as well as type-safe manipulation of XML and SQL-like data.
More recently, I've been working on the Joins library, an efficient combinator library for Cω-style join patterns implemented in C# 2.0 and easily usable from (at least) C# 2.0 and Visual Basic 8.0. Download it now!
Here's my list of publications.