Against all odds, I’m now working on probabilistic programming, most recently on project Tabular, a machine learning addin for Excel based on Infer.NET. The software is available for download.
The original (lock-based) joins library served as the runtime for Concurrent Basic – a natural extension of Visual Basic 9.0 with join pattern style concurrency. Thanks to Erik Meijer and Lucian Wischik for their support.
Together with John Reppy, I worked on a parallel implementation of CML’s higher-order concurrency constructs, primarily for Manticore but also with a C# implementation for .NET.
Separately, Dimitrios Vytiniotis and I have used Coq to study type inference for QML, a simple variant of ML with impredicative polymorphism (think System F extended with ML’s implicit let-polymorphism).
I’ve also worked with Andreas Rossberg and Derek Dreyer on formalizing variants of ML modules in Coq.
Aaron Turon and I came up with novel, non-blocking implementation of join patterns (a re-implementation of the lock-based C# Joins Library) that scales well on multi-core processors. This new implementation offers high-level, declarative synchronization (as before) with good parallel performance (the new bit).
I worked with Gavin Bierman, Geoffrey Mainland, Erik Meijer and Mads Torgersen to give a high-level operational semantics for C#’s latest feature, asynchronous methods. Asynchronous methods make it easy to write asynchronous, concurrent code without resorting to explicit continuation passing style. See our forthcoming ECOOP 2012 paper.
Awards and Activities
I’m deeply honoured (and quite surprised) to have received the 2011 Most Influential ICFP Paper Award for a paper Recursive Structures for Standard ML that I wrote back in 2001.
- I was a PC member for OOPSLA’13 and PADL’15.
- I was co-chair for PADL’12: the 14th International Symposium on Practical Aspects of Declarative Languages.
- I organized the The 2007 ACM SIGPLAN Workshop on ML.