Recent posts

With Canon, you can't. A story of horrible customer support

I present to you a tragedy in 11 parts, about me trying to report a bug against the software of a large hardware company. Unsurprisingly, to these people, software doesn’t... (read)

Model Checking for the Working Man (m/f)

Correctly designing a concurrent system is hard. Formal methods make it easier, and they're really not so intimidating as you think. (read)

The Ultimate Guide to Modern CMake

CMake is a great tool for managing a C++ system’s build. It builds quickly, supports the major use cases, and is quite flexible. The problem is, it’s too flexible, and... (read)


There always seems to be a lot of confusion about Model-View-… umm… and-then-something-more architectures. Everybody seems to get the Model and the View parts. The Model is where your data... (read)

(See all: Blog | Essays)


Most interesting projects

RoboMind Map Editor

A fully client-side HTML5 tile-based map editor for the RoboMind educational programming environment.


Windows Path Editor

The non-frustrating way to editor your PATH if you use a lot of command-line tools on Windows.

(GitHub page)


The address bar is the new command line! Search any website directly from your address bar, with a simple configuration tweak to your browser.



A bookmarklet to quickly copy/paste hyperlinks between different devices you own.



Here's how to get in touch.