older resources: [Haskell Projects] [Haskellers.com profile] [Publications] [Talks] [Github Projects] [Blog] [Screencasts] [twitter] (available for work in Germany, or remotely)
My web home is rather distributed these days, so this is part sites map, part home page:
Recent projects are likely to appear on my Github account. Currently, these tend to be Javascript projects, such as estr (code traversal, navigation, transformation; online demo).
I have been helping out with the Vim plugin for Tern, a Javascript analyser for intelligent Javascript editing support (types, jump-to-definition, completion, documentation lookup, find-references).
I have started work on typescript-tools, a commandline server and Vim plugin for using TypeScript Language Services (types, jump-to-definition, completion, compiler errors).
I help to manage js-tools, the mailing list for Javascript tool developers, and curate the js-tools resources.
I do have a blog, but tend to be more active in mailing lists, so my blog is not as busy as it should be.
If you are looking for my old Haskell projects, you'll find most of them via my Haskell Community page. I also have a Haskellers profile.
Many of my older publications and talks are available online, as well.

I am a software toolsmith. I enjoy writing software that helps turning computers into useful tools, with a particular focus on writing tools for other software developers - from development tools all the way to programming languages. I have worked with Javascript/TypeScript, Haskell, and lots of other programming languages, starting from way before there was a web.

My interests evolve around (declarative) programming languages: language design and implementation, tool development, and programming techniques. Having looked into most of the major programming paradigms, I've more or less settled on a combination of functional and concurrent programming as the main paradigms I like to see supported well, directly in the language design. Occasionally, logic and object-oriented programming also come in handy as programming paradigms, but language designs built solely around these two tend to be less helpful for general programming.

If this sounds odd to you, consider embedded domain-specific languages and language support for building abstractions: functional abstraction seems to do very well for the latter, making functional languages good hosts for embedded-DSL-based development. Also, object-oriented and logic programming can be supported reasonably well as embedded DSLs, while concurrent programming needs language support, and functional programming without good functional abstraction is just painful.

On a purely technical basis, I have been tempted to stick with Haskell, helping to address its remaining shortcomings. The problem is that this ignores social rationales, in particular, what I would call momentum: so many developers have been using Java and Php that their needs have driven the development of frameworks and tools to ease some of the technical disadvantages of the language (the proliferation of frameworks and complexity of tools have their own disadvantages). However, there is a storm brewing here, with Javascript having the potential to reach more developers than Java or Php ever had -- and its momentum is building rapidly.

Javascript is not without problems, but it is surprising what one can achieve by focussing on the good parts of the language: out of the box, it supports functional, object-oriented, and aspect-oriented programming. Its main problems are a syntax and APIs that hamper extensive use of functional programming, semantics and APIs that hamper equational reasoning, and an inertia (the flip side of momentum) that hampers attempts to change the language (none of which are helpful when looking at concurrency support).

It remains to be seen what can be done in terms of improving the Javascript language or scaffolding it with tool support (ES6 modules and classes, as well as types can be supported by transpilers, so 2013 will see many of these features used in anger), and this is where I would like to focus my efforts in the immediate future. So, if you are looking for a Javascript coder and tool developer with my background and interests, please get in touch. If you are developing Javascript tools yourself, or want to stay up to date in that area, you want to check out our new js-tools group and its list of resources.