I hack in C++, LISP, Rust, Coq & Idris. I think a lot about writing provably correct code. I write about that here.

I maintain an obscure MP3 tagging project called scribbu, whose source distributions may be found on my distributions page. I wrote a less obscure Emacs package for scoring Elfeed entries: elfeed-score. It's available at MELPA, but you can download source tarballs here as well. You can find a few other things there:

I've started collecting articles & code having to do with the MP3 standard; you can find that here.

Recently, I've been putting this site on the IndieWeb– you can find my package for this here.

  • A bit of enlightenment in writing correct code published
  • How I use the replace function in Idris published
  • Just removed fill-column-indicator from my Emacs configuration published
  • Some first thoughts on matching dependent types in Coq published
  • Understanding cross references in Org Mode published
  • Fixed the figures in the Lambda Calculus posts published
  • Unifying the typed lambda calculii we've seen so far published
  • An introduction to \(\lambda P\) published
  • An introduction to \(\lambda\underline{\omega}\) published
  • An introduction to \(\lambda 2\) published
  • The next step updated , originally published
  • We'll begin at the beginning: Church's Lambda Calculus published
  • Using the Feynman Technique to learn about Type Theory published
  • Org Babel support for Coq published
  • How exactly does Org Mode interact with LaTeX? published
  • I always wondered... published
  • I'm taking more care with a PR than lauded academics do with their data published
  • Adventures with the AWS API in Gnu Guile published
  • Survey of where we are in this effort published
  • Using tools to author more bad code is not a solution to bad code published
  • Configuring Emacs as an IDE for Rust programming updated , originally published
  • Another CherryPy issue published
  • Learning far more than I wanted about the CherryPy framework published
  • Bringing your own domain to Route 53 is easy, once you know how published
  • Good article on sealed traits in Rust published
  • A demonstration site for my indie-org package published
  • Everyone knows the cloud is the future, right? published
  • Rust's hyper crate has a _really_ irritating foot-gun published
  • Snow on the back deck, Santa Cruz Mountains published
  • Finally found a workaround to those warnings about byte-compile-dest-file-function when using Automake with elisp published
  • Trying-out new post types with POSSE published
  • I'm re-working unwoundstack to incorporate different sorts post types published
  • A serious boost regression published
  • Name squatting & RFCs published
  • New release of my pin utility published
  • Thoughts on documenting software projects published
  • Putting unwoundstack on the Indieweb published
  • unwoundstack can now send & receive Webmentions updated , originally published
  • Adding microformats to unwoundstack updated , originally published
  • Some thoughts on how to handle errors in Rust published
  • Finding a bug using klee published
  • First thoughts on reasoning about code published
  • Fixed pin on crates.io published
  • Fixed my RSS Feed published
  • Pros & cons of Rust & C++ when dealing with sum types published
  • Thoughts on where elfeed-score state belongs published
  • A simple question leads down a rabbit-hole published
  • Commenting comes to unwoundstack updated , originally published
  • Guile bindings for libmagic published
  • Track active channels in ERC with less space published
  • How to switch themes without your past catching up with you published
  • How close are your strings? published
  • How I send my captured links to Pinboard published
  • How to get std-options working with Guile in Autotools published
  • Gnus-style scoring for Elfeed published
  • How I install Scheme files with GNU Autotools published
  • How I changed RSS readers from Feedly to Elfeed published
  • Python was my "go-to" scripting language; no longer published