Parser combinators in Rust

I have been working on a side project in Rust recently and thought I would write up some of the interesting things I've encountered while building som…

Releasing haggle-0.2

I just pushed a new release of haggle to Hackage today. The haggle library implements a number of different representations of graph data structures w…

Introducing build-bom

TL;DR The build-bom tool makes it easy to obtain LLVM IR for C/C++ programs without requiring any modifications to build systems by using the low-leve…

Avy Interactive

The excellent avy package for emacs provides an efficient mechanism for positioning the cursor in the current window. The avy workflow is: Active av…

Funny Type Errors Issue 1

I find that I run into a large number of what I would consider Funny Type Errors while using GHC. This is the first post in what will presumably be a…

Metablog 2019

Instead of writing about something productive, I am going to again write about writing. Or at least the infrastructure for writing. First, I decided…

Emacs Startup Optimization

Recently, I had the urge to optimize the startup time of my emacs configuration. I managed to reduce my startup time from three seconds to under half…

Emacs and Terminal Pasting

Over the last few weeks, I've found myself having to copy and paste large chunks of text into emacs running in a terminal. This leads to some annoyan…

Linux Messaging Clients

I recently found myself looking at Linux instant messaging clients again. Sometimes I feel like some kind of Luddite for still using a desktop instan…