We are hiring
Interested in working on compilers, languages, virtual machines, distributed & Web programming, security, and all the fun stuff? Drop me a note!
Before joining Microsoft, I was an associate professor at
where I worked on advanced scripting languages such as
Haskell, XMLambda, and
Mondrian and directed the
Microsoft lab (now defunct).
In the past few years I have done "legendary
work" with the
teams on language and type-system support for bridging the
worlds of object-oriented (CLR), relational (SQL), and hierarchical (XML) data,
and of course
first class functions.
Most recently my team is working on reviving the Mondrian project and other previous research work in the incarnation of
Basic for the Cloud; our attempt to
democratize distributed dynamic
data-intensive applications, i.e.
If you want to actually play with the bits you can download the
Volta CTP from
Downloads of Volta are temporarily suspended while we are performing a
refactoring, however we will
All my old blog entries
have vanished from the real internet, but are
still available on the backed-up internet; but you may be interested in
my occasional rants
on LTU instead.
Be warned that I am an extreme
ENTP personality type
and so I suffer deeply from all it's weaknesses; especially I exhibit "A lack
of sensitivity to the feelings and ways of those who might need reassurance,
security or commitment".
In both my personal and professional life, I try to be an active member of
the community. Amongst other things, I am or have been:
- Initiator and organizer of the International Summer Schools on Advanced
Functional Programming series.
- One of the designers of the lazy functional programming language
- Secretary of IFIP Working
Group 2.8 on Functional Programming.
- Member of the board of directors of Software Engineering Research Center
in Utrecht (SERC).
- Invited speaker at the First International Spring School on Advanced
Functional Programming (1995), the Second Fuji International Workshop
on Functional and Logic Programming (1996), the 6th International
Workshop on Functional and Logic Programming (1997) in Germany, the
NSF Workshop on Recent Results and Undergraduate Curriculum Innovations
(1997), the Third International Summer School on Advanced Functional
Programming (1998), the International Conference on Functional
Programming 1998, ECOOP 2001,
- Member of the program committee for PLILP'95 and PLILP'96, the Second Fuji
International Workshop on Functional and Logic Programming, the 1997 Haskell
Workshop, IFL'97, ICFP'98, HW'99 (chair), HW'00, PADL 2001,
MOP 2002, the OOPSLA 2002 Poster Sessions, CGO 2003,
In the more distant past, I organized a Summerschool on Constructive
Algorithmics and a WG2.1 meeting and served as the local project leader of
ESPRIT basic research project 3157: "Phoenix; Integration of Functional and
Don't forget to check out the NEC research index
I try to submit at least one paper to Bill's legendary "think weeks".
Channel 9 and other Videos
After a brief stint of doing comical characters such as Head In The Box and Professor ILDASM,
I show my more serious side on Channel 9 interviewing interesting domain experts inside and outside Microsoft.
Expert to Expert: The Basics of SmallBasic
Expert to Expert: Erik Meijer and George Chrysanthakopoulos -- Concurrency,
Coordiantion and the CCR
Expert to Expert: Erik Meijer and Jeffrey Snover -- Inside PowerShell
PDC 2008 Language Panel
Expert to Expert: Natural Language and Computational Linguistics
Going Deep: Erik Meijer and Bart de Smet on LINQ-to-Anything
Expert to Expert: Contract Oriented Programming and Spec#
Erik Meijer, Gilad Bracha, Mads Torgersen: Perspectives on Programming Language Design and Evolution
Expert to Expert: Erik Meijer and Bertrand Meyer - Objects, Contracts, Concurrency, Sleeping Barbers
JAOO 2007: Joe Armstrong - On Erlang, OO, Concurrency, Shared State and the Future, Part 1
JAOO 2007: Joe Armstrong - On Erlang, OO, Concurrency, Shared State and the Future, Part 2
JAOO 2007: Erik Meijer and Dave Thomas - Objects, Functions, Virtual Machines, IDEs and Other Fun Stuff
Tier Splitting Volta: Who. What. How. Why - Part 1
Tier Splitting Volta: Who. What. How. Why - Part 2
Erik Meijer: Functional Programming
Erik Meijer Shows Us His Favorite Visual Basic 9.0 Feature - XML Literals
Pimp My Language
Paul Vick and Erik Meijer - Dynamic Programming in Visual Basic
Erik Meijer: Democratizing the Cloud
Anders Hejlsberg, Herb Sutter, Erik Meijer, Brian Beckman: Software
Composability and the Future of Programming Languages
Outstanding Technical Achievement: C# Team
Erik Meijer about Volta, GWT and Democratizing the cloud
Erik Meijer and
Brian Beckman on Tesla
Erik Meijer on LINQ
It seems that my work is so interesting that it get frequent press coverage.
Pimp My Programming Language, Darryl K. Taft
What's Most Pressing 4 Programmers, Darryl K. Taft
- Live Labs kills Deepfish;
suspends Volta downloads, Mary Jo Foley.
- Sharp Words with Microsoft's Erik Meijer, Mary Jo Foley.
Look Sharp, Mary Jo Foley.
- Microsoft delivers test
build of its ‘Volta’ cloud-programming toolset, Mary Jo Foley.
- Microsoft architect
compares Volta and Google's GWT, Mary Jo Foley.
- A (Microsoft) Code Name a
Day: Volta, Mary Jo Foley.
- ‘Volta’: Microsoft’s dev
platform in the Cloud?, Mary Jo Foley.
- Why the Sharp Languages
still matter, Mary Jo Foley.
Microsoft X# on tap, Mary Jo Foley.
Microsoft Ships Volta Web Development Tool, Darryl K. Taft.
- Microsoft Volta - a cool new
RIA technology, Ryan Steward.
- Microsoft creates GWT clone,
- Volta: Browser capabilities
on steroids, John Carroll.
Microsoft's Volta a Java Killer?, Jennifer LeClaire.
Microsoft bridging relational, object, XML data models, Paul Krill.
Xen and X#: One and the same, Joe Wilcox.
Microsoft Research Looks to extend C#, Joe Wilcox.
Microsoft Expands .NET with Xen, Robyn Peterson.
Since the mid-90's I have been working on making Internet programming easy; or as I as say these days on "democratizing the Cloud".
Components and foreign-language integration
Ever since Raymond Boute introduced me to SASL in 1981, I have been a fundamentalist functional programmer.
However, to do useful things you need to interoperate with libraries written in mainstreem languages.
- Erik Meijer and
Clemens Szyperski. Overcoming Independent Extensibility Challenges, In Communications of
the ACM. Vol. 45, No. 10, pp. 41–44, October 2002.
- Erik Meijer and John Gough.
A Technical Overview of the Commmon Language Infrastructure.
- Erik Meijer and Clemens Szyperski.
What's In A Name: .NET as a Component Framework, In
Proc. First OOPSLA
Workshop on Language Mechanisms for Programming Software Components.
- Erik Meijer and Sigbjorn Finne.
Haskell as a Better Java, In
Proc. Haskell Workshop 2000.
- Daan Leijen and Erik Meijer.
Domain Specific Embedded Compilers ,
2nd USENIX Conference on Domain-Specific Languages'99
- Sigbjorn Finne, Daan Leijen, Erik Meijer, and Simon Peyton Jones.
Calling Hell from Heaven and Heaven from Hell, In Proc. ICFP'99.
- Daan Leijen, Erik Meijer, and Jim Hook.
Haskell As An
Automation Controller, volume 1608 of Springer LNCS, Braga,
- Riccardo Pucella, Dino Oliva, and Erik Meijer.
Aspects de la
programmation d'applications Win32 avec un language fonctionnel .
In Proc. 98 French workshop on applicative languages.
- Sigbjorn Finne, Daan Leijen, Erik Meijer, and Simon Peyton Jones.
H/Direct: A Binary Foreign Language Interface for Haskell
Proc. ICFP'98, 1998.
- Simon Peyton Jones, Erik Meijer, and Daan Leijen.
Scripting COM Components in Haskell, In Proc. International
Conference on Software Reuse, 1998.
Thanks to Kees Koster, I am hooked on programming language design, altough these days I try to avoid language extensions
and use post-compilation rewriting as a low-cost alternative.
In Proc. ECOOP 2005. LNCS 3586.
Erik Meijer and Peter
Drayton. Static Typing Where Possible,
Dynamic Typing When Needed: The End of the Cold War Between Programming
OOPSLA'04 Workshop on Revival of Dynamic Languages.
Erik Meijer and Wolfram Schulte. Programming with Rectangles,
Triangles, and Circles, In Proc.
Erik Meijer and Wolfram Schulte.
Unifying Tables, Objects,
and Documents, In Proc.
Erik Meijer and Wolfram Schulte. XML Types for
C#, BillG ThinkWeek Submission Winter 2001.
Jason Smith, Nigel Perry, and Erik Meijer,
Mondrian for .NET, In Dr Dobb's Journal,
Nigel Perry and Erik Meijer,
Implementing Functional Languages on Object-Oriented Virtual Machines
Erik Meijer, Nigel Perry and Arjan van Yzendoorn,
.NET using Mondrian, In Proc. ECOOP'01.
Mark Shields and Erik Meijer
Rows. In Proc. POPL'01.
Erik Meijer and Mark Shields
XMLambda: A Functional
Programming Language for Constructing and Manipulating XML Documents.
Jeffrey Lewis, Mark Shields,
Erik Meijer and John Launchbury.
Parameters: Dynamic Scoping with Static Types. In
Simon Peyton Jones and John Hughes (editors),
Report on the Programming Language Haskell
98, February 1, 1999.
Simon Peyton Jones, Mark Jones, and Erik Meijer.
classes: Exploring the Design Space. In Proc. Haskell Workshop, 1997.
Erik Meijer and Koen Claessen.
The Design and
Implementation of Mondrian. In Proc. Haskell Workshop, 1997.
Simon Peyton Jones and Erik Meijer.
Typed Intermediate Language. In Proc. Types In Compilation Workshop,
John Peterson (editor), Report on
the Programming Language Haskell 1.4, April 6, 1997.
- Erik Meijer, José Blakely, ACM Queue Interview
on LINQ and the Entity Framework.
- Erik Meijer, Visual Basic 9,
OOPSLA 2007 Demo.
- Erik Meijer and Ted Neward, LINQ from the
Source, OOPSLA 2007 Tutorial.
- Gavin Bierman, Erik Meijer, and Mads Torgersen,
Lost in translation: Formalizing
proposed extensions to C#, OOPSLA 2007.
- Erik Meijer, Confessions Of A Used
Programming Language Salesman (Getting The Masses Hooked On Haskell), OOPSLA 2007
- Erik Meijer, There Is No Impedance Mismatch
(Language Integrated Query In Visual Basic 9),
- Erik Meijer, Brian Beckman, and Gavien Bierman,
LINQ: Reconciling Objects, Relations, and XML In the .NET Framework, In
2006 Industrial Track.
- Erik Meijer and Brian Beckman. XML Support
in VB9. Plan-X 2006 Demo.
- Erik Meijer,
Overview of Visual Basic 9. In Proc.
- Erik Meijer and Brian Beckman. XLinq: XML Programming Refactored (The Return Of The Monoids), In
Proc. XML 2005.
- Gavin Bierman, Erik Meijer,
and Wolfram Schulte.
The Essence of Data Access in
A few versions ago, I was know as "the banana man" because of my work on
Squiggol and applying category theory to structure functional programs. It is amazing how vibrant this
research area still is so many years later.
- Ralf Lämmel and Erik Meijer, Mappings Make
Data Processing Go 'Round, to appear in proceedings of GTTSE 2005.
- John Launchbury, Erik Meijer, and Tim Sheard, editors. Advanced
Functional Programming, volume 1129 of Springer LNCS, Olympia, USA, 1996.
- Johan Jeuring and Erik Meijer, editors. Advanced Functional
Programming, volume 925 of Springer LNCS, Bastad, Sweden, 1995.
- Erik Meijer and Johan Jeuring.
Merging Maps and
Folds for Functional Programming. LNCS 925, 1995.
- Akihiko Takano and Erik Meijer.
Deforestation in Calculational Form. In Proc. FPCA'95, 1995.
- Erik Meijer and Graham Hutton.
Space: Extending fold and unfold to Exponential Types. In Proc.
- Luc Duponcheel and Erik Meijer.
On the Expressive Power of Constructor
Classes. In Functional Programming Glasgow 1994, Workshops in Computing.
- Erik Meijer, Maarten Fokkinga, and Ross Paterson.
Programming with Bananas, Lenses, Envelopes, and Barbed Wire. In
Proc. FPCA'91, volume 523 of LNCS. Springer-Verlag.
- Maarten Fokkinga and Erik Meijer. Program Calculation Properties of
Continuous Algebras. Technical Report 91-4, CWI, 1991.
Transforming programs down to circuits is the logical consequence of transformational programming. I wish I had more time to work on this topic.
Graphical User Interfaces
Every self-respecting functional programmer has implemented at least one GUI library. I am no exception.
My fascination with parsing is a side-effect of my work opn language design. I guess Kees Koster is the one to blame again.
- Daan Leijen and Erik Meijer.
A Practical Parser Library.
Submitted to Haskell Workshop, June 2001.
- Graham Hutton and Erik Meijer.
Parser Combinators. Journal of Functional Programming, 8(4):437-444,
Cambridge University Press, July 1998.
- Graham Hutton and Erik Meijer.
Parser Combinators. Technical Report NOTTCS-TR-96-4, Department of
Computer Science, University of Nottingham, 1996.
- Johan Jeuring, Maarten Fokkinga, Lambert Meertens, and Erik Meijer.
Translating Attribute Grammars into Catamorphisms. The Squigolist, 2(1),
The same holds for compilation.
- Erik Meijer, Ross Paterson.
Lambda-Lifting. Unfinished draft.
- Erik Meijer. More Advice on Proving a Compiler Correct: Improve a
Correct Compiler. In PHOENIX Seminar and workshop on declarative
programming, volume 91 of Workshops in Computer Science. Springer-Verlag,
- Erik Meijer. A BMF for Semantics. Periodica Polytechnica, Ser.
Electrical Engineering, 35(1):1-17, 1991. Technical University of Budapest.
- Erik Meijer. A Taxonomy of Backtracking. In Computer Science in
the Netherlands 1989. SION, 1989.
- Erik Meijer. A Taxonomy of Function Evaluating Machines. In proc.
1988 `Aspenas' workshop on the implementation of functional languages.
Chalmers University of Technology Report 53, 1988.
- Erik Meijer and Kees Koster. The M-Machine. In Computer Science
in the Netherlands 1988, Volume 1, pages 45-61. SION, 1988.
- Erik Meijer. Generalized Expression Evaluation. Technical Report
88-5, KUN, 1988.
- Erik Meijer. Petri net Models for the lambda-calculus. In
Advances in Petri nets, volume 266 of LNCS. Springer-Verlag, 1987.
My PhD thesis was an attempt to apply transformational programming and Squiggol to
transform the denotational semantics of a programming language into a compiler for that language.
What I learned is that recursive domains with function spaces are a bitch when it comes to transformations.
Since joining Microsoft, I have refocused my creative energy from writing research papers to filing patents.
- 7155703, Virtual Method Protection.
- 7168063, System and Methods For Employing Tagged Types In A Dynamic
- 7219329, System and Methods Providing Lightweight Runtime Code
- 7389498, Core Object-Oriented Type System For Semi-Structured Data