I'm a Research Design Engineer 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, when pressed, object-oriented languages.
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.
Here's my list of publications.