New Kivik web site

Just a quick note to mention the new web site I launched this weekend for Kivik, my open-source CouchDB driver for Go. http://kivik.io/ will be the future home of all Kivik related news, rather than cluttering this blog with such details as I have in the past.

My Reservations about the Agile Principles

As a software developer, I’ve read the Manifesto for Agile Software Development countless times. It’s sort of a high-tech analog to the Hippocratic Oath for software people. Its full text is: We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: …

Continue reading ‘My Reservations about the Agile Principles’ »

The Go/HTTP handler impedance mismatch

When it comes to writing web apps in Go, I have yet to see a clean solution for a very fundamental problem. I see an impedance mismatch between Go idioms and the necessities of the HTTP protocol. It’s by no means exclusive to Go, but this is where it bothers me, so I’ll limit my …

Continue reading ‘The Go/HTTP handler impedance mismatch’ »

Automated Testing False Dichotomy #2: All vs None

This is the second installment in my series The False Dichotomies of Automated Testing. If you’ve ever met a recent test convert, you’ve probably heard them talk about the mythical creature that is “100% test coverage.” As with most benevolent mythical creatures, this one is highly sought after, and possibly even worshiped. It is claimed …

Continue reading ‘Automated Testing False Dichotomy #2: All vs None’ »

The False Dichotomies of Automated Testing

This is the first in a series of posts about automated testing for software developers. I’ve been fascinated by this thing called “programming” since I first learned I could enter BASIC programs into my family’s Commodore 64 when I was 8 years old. I became a full-time software developer in 2006. And I “got religion” …

Continue reading ‘The False Dichotomies of Automated Testing’ »

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’ »

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’ »

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

It’s been just over a month now, since my last day as an employee of Booking.com. 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’ »