How to Write an Abstract

January 19, 2019

How do you write an abstract for a (industry) conference talk proposal? I like to use a three paragraph structure. The first paragraph gives a quick overview of what attendees can expect to learn if they attend the talk. The second paragraph gives motivation and background—why should attendees care about what I have to say? The third and final paragraph goes into more detail on the points I intend to cover.

Read more


Doom Emacs Workflows

January 10, 2019

I recently switched to Doom Emacs from Spacemacs. The Doom documentation is currently quite sparse, so I’ve posted here my personal notes on using Doom along with a description of my workflow (something I find vital but missing from most documentation). Doom might be for you if

  • you like Emacs but want to use Vim keybindings;
  • you don’t have time to configure all the nice libraries like helm; and
  • you find Spacemacs too slow.

I’m not going into detail on how Emacs works or basic Vim keybindings here—the focus is on the things I found different and useful.

Read more


New Site

October 30, 2018

I’ve just moved house—I’m now living near Cambridge—so it seems appropriate I should update my digital home as well.

Read more


Uniting Church and State: FP and OO Together

June 2, 2017

This is a post about church and state, and how we can unite the two for a better world, while avoiding unfortunate side effects.

Political metaphors aside, this really is a post about Church—Alonzo Church—and how we can use his idea of Church encoding to unite pure FP and imperative OO to achieve, if not a better world, at least better code.

Read more


Opaque and Transparent Interpreters

June 27, 2016

The interpreter is the über pattern of functional programming. Most large programs written in a functional style can be viewed as using this pattern. Amongst many reasons, interpreters allow us to handle effects and still keep desirable properties such as substitution.

Given the importance of interpreters it is not surprising there are many implementation strategies. In this blog post I want to discuss one of the main axes along which implementation strategies vary, which is how far we take reification of actions within the interpreter.

Read more