Resetting CircleCI Checkout SSH Keys
Lately I’ve been having some weird problems with CircleCI and some of my OSS projects (most recently CIDER) - the SSH checkout keys that CircleCI uses to fetch the code from GitHub started to disap...
Lately I’ve been having some weird problems with CircleCI and some of my OSS projects (most recently CIDER) - the SSH checkout keys that CircleCI uses to fetch the code from GitHub started to disap...
Today I’ve noticed that Oh My Zsh provides one really useful command (implemented as a shell function) - take. I guess with a name like this it’s not immediately obvious what the command does, but ...
I’ve been using Zsh on-and-off for a very long time (15+ years), but I still occasionally learn something new about it.1 Yesterday I was setting up oh-my-zsh on a new computer and I’ve noticed they...
Many programming languages have a function for combining the elements of multiple collections (e.g. arrays or lists) together. Typically this function is named zip. Here’s an example from Haskell: ...
You never get a second chance to make a first impression. Lately I’ve been learning OCaml and I thought it might be a good time to share a few initial impressions, while they are still fresh. Of ...
One thing that was a bit weird for me in OCaml early on was how to introduce multiple let bindings (e.g. in the body of a function definition). Think something like this in Clojure: (let [a 1 ...
Update (2026): I’ve written an updated version of this article that covers the modern OCaml tooling stack – neocaml + ocaml-eglot instead of tuareg + merlin-mode. I’ve promised you articles about ...
Live as if you were to die tomorrow. Learn as if you were to live forever. – Mahatma Gandhi For as long as I’ve been into programming I’ve been learning some new programming languages on the s...
If you’re into programming puzzles you probably know that there’s a whole class of problems about doing something (e.g. some calculations) with the digits of a number. This means you need to break ...
Many programming languages have a function for combining the elements of multiple collections (e.g. arrays or lists) together. Typically this function is named zip. Here’s an example from Haskell: ...