Announcing Kivik: the general-purpose CouchDB client API for Go and GopherJS

For nearly 3 months now, I’ve spent most of my free time working on a new open-source project: a Go client library for CouchDB and PouchDB. As I’m now putting together the last major feature for a 1.0 release, I feel it’s time to make my work public. So today I am announcing Kivik! View …

Continue reading ‘Announcing Kivik: the general-purpose CouchDB client API for Go and GopherJS’ »


Configuring CouchDB 1.6.1 with LetsEncrypt free SSL certificate on Debian 8 (jessie)

Enable jessie-backports, if not already enabled on your system. As described here: echo deb jessie-backports main | sudo tee /etc/apt/sources.list.d/backports.list > /dev/null aptitude update Install certbot as described here: sudo aptitude install certbot -t jessie-backports Configure a web server, so certbot can communicate with the outside world. I use lighttpd. sudo aptitude install lighttpd …

Continue reading ‘Configuring CouchDB 1.6.1 with LetsEncrypt free SSL certificate on Debian 8 (jessie)’ »


Remembering significant minutiae

Today I reached a meaningless milestone. My most popular post on StackOverflow, the leading Q&A site for programmers, earned its 500th vote*. The post is short, and pretty hilariously insignificant. The question asks how to repeat a simple search-and-replace operation. My answer was essentially to add a single character, the letter “g”, to their code. …

Continue reading ‘Remembering significant minutiae’ »


Installing Docker 1.12 in Debian 9 (stretch)

Debian ships with an old version of Docker, and the official installation instructions for Docker on Debian are a bit dubious (run an entirely untrusted shell script as root! yay!), not to mention error-prone, and result in a completely non-functional Docker installation on Debian, thanks to aufs being deprecated. So these instructions should make it …

Continue reading ‘Installing Docker 1.12 in Debian 9 (stretch)’ »


Praise for Let’s Encrypt — Free, automated SSL certificates

After a few weeks of not hacking one of my hobby projects, I decided to get back to it today, only to discover that the SSL certificate guarding it had expired. Being just a hobby project, it wasn’t important, but it was annoying. But before I went to buy another $9.99 SSL certificate for the …

Continue reading ‘Praise for Let’s Encrypt — Free, automated SSL certificates’ »

warn “Use of Perl has been deprecated.\n”;

It’s been just over a month now, since my last day as an employee of Which means it’s been just over a month now since I wrote my last line of professional Perl. This is worth celebrating! Now don’t get me wrong. It’s not that I hate Perl. In fact, I’ve really enjoyed using …

Continue reading ‘warn “Use of Perl has been deprecated.\n”;’ »

Question to fellow programmers: Do you like auto-complete?

I’ve always found auto-complete to be an insanity-inducing feature in my programming text editor. Inevitably, it causes me to type the wrong thing, or hit TAB too many times. Enter-complete I find to be even more infuriating. But auto-complete, especially in text editors designed for programmers, is often very a elaborate feature. It’s often context-sensitive, …

Continue reading ‘Question to fellow programmers: Do you like auto-complete?’ »

How I got go-spew to work with GopherJS

go-spew is a very handy library used for dumping arbitrarily complex data structures in a (roughly) human-readable format. This is immensely helpful when debugging or writing automated tests in programs. Coupled with a package like go-difflib, it can make comparing the expected and actual results of a test not only easy, but into something approaching …

Continue reading ‘How I got go-spew to work with GopherJS’ »

My new project:

I’m working on a new mini-project. It’s in large part inspired by… well, many things. Motivation The most immediate inspiration comes from Patrick McKenzie’s blog, which I just finished reading in its entirety earlier this week while I was in Paris (well, I skipped a few posts that didn’t matter to me). His blog basically …

Continue reading ‘My new project:’ »