Archive of posts about Programming
Posted on February 28, 2018
You’re building a complex piece of software. Then it comes time to deploy, so you spend a couple weeks stuffing it into a Docker container or a .deb or .rpm package, and debugging the build and deployment process. Then you add some sort of monitoring or logging, set up email or SMS alerts to tell you when it crashes, and probably a dozen other things to make it “production ready.
Continue reading `Dancing Skeletons` →
Filed under:
Programming
Posted on February 7, 2018
Just over a month ago I started a new job. After over a decade as a programmer, I’m now managing programmers at Bugaboo.
And now I don’t know if I had a good day anymore.
I first verbalized this in a discussion last week with my wife.
Me: How was your day?
Continue reading `I don't know if I had a good day anymore` →
Filed under:
Management
Programming
Work
Posted on December 3, 2017
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.
Continue reading `New Kivik web site` →
Filed under:
Go
Programming
Posted on October 18, 2017
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` →
Filed under:
Opinion
Programming
Work
Posted on September 25, 2017
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 discussion to the problem as it affects Go.
Continue reading `The Go/HTTP handler impedance mismatch` →
Filed under:
Go
golang
http
Programming
Posted on September 4, 2017
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.
Continue reading `Automated Testing False Dichotomy #2: All vs None` →
Filed under:
Go
Programming
Work
Posted on August 24, 2017
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.
Continue reading `The False Dichotomies of Automated Testing` →
Filed under:
automated-testing
best-practices
Programming
Work
Posted on April 22, 2017
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!
Continue reading `Announcing Kivik: the general-purpose CouchDB client API for Go and GopherJS` →
Filed under:
couchdb
Go
pouchdb
Programming
Posted on January 30, 2017
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` →
Filed under:
Programming
recruitment
stackoverflow
Posted on October 20, 2016
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 Perl over the years.
Continue reading `warn "Use of Perl has been deprecated.\n";` →
Filed under:
Go
javascript
node.js
Perl
Programming
Work
Posted on October 20, 2016
Atom’s tab-completion drives me nuts.
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.
Continue reading `Question to fellow programmers: Do you like auto-complete?` →
Filed under:
best-practices
Programming
text-editors
Posted on October 19, 2016
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 fun.
Continue reading `How I got go-spew to work with GopherJS` →
Filed under:
Go
gopherjs
Programming
Posted on October 14, 2016
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).
Continue reading `My new project: MinimalPairs.net` →
Filed under:
business
language learning
Languages
Programming
Posted on October 13, 2016
On Monday I had my first brush with what I guess might be called “fame.”
I attended the dotGo 2016 conference in Paris–a conference for Go developers.
I chose my seat in the balcony of the Théâtre de Paris, and within a few minutes the seats next to me filled in, and I began chatting.
Continue reading `Almost Famous` →
Filed under:
conference
fame
Go
golang
Programming
Posted on August 11, 2016
A couple of weeks ago I made a comment to my team at work which I think a couple took harshly, but I believe it is true, and an indication of a deeper problem.
I said “All of the really smart people at this company move to the ‘infrastructure’ teams within a few years, which means we have only new, untrained people writing the real software.
Continue reading `Where are the domain experts?` →
Filed under:
Programming
Work
Posted on August 10, 2016
I wrote this post in October of 2015 as I was adjusting to life without unit tests at a new job. I recently stumbled upon it in my Drafts, and edited it down to a single point for publication.
In October of last year I took a new job at a company with a large group of programmers, and an old (15+ years) code base.
Continue reading `One thing I miss about unit tests: Unit tests as Documentation` →
Filed under:
Programming
unit tests
Posted on November 18, 2015
First, I must give credit where it is due. These instructions are based on Matteo Mattei’s earlier article Install CouchDB 1.6.x on Debian 7 (Wheezy), but with some important changes.
The commands below assume you have sudo properly configured on your system, and that you are running as a standard user.
Continue reading `How to install CouchDB 1.6.1 on Debian 8.2 (jessie)` →
Filed under:
compile
couchdb
database
debian
install
Linux
nosql
Programming
Posted on June 19, 2015
I was recently tasked with developing a new web service application at work. This gave me a reason to investigate Docker as a possible deployment platform, so I’ve been reading about Docker. I just finished reading my second book on the topic, the not-yet-released (but it is available for Kindle) Docker: Up and Running by Karl Matthias and Sean P.
Continue reading `Docker: Up and Running -- A book review` →
Filed under:
book review
docker
Linux
Programming
Reviews
Posted on May 28, 2015
This is my personal, growing checklist of tasks to complete when starting a new programming project. I share it here only on the off chance that it helps someone else. There is no expectation that it should be useful to anyone else.
Create a git repository``` mkdir foo/ cd foo/ git init
Continue reading `My new project checklist` →
Filed under:
checklist
personal
Programming
Posted on May 15, 2015
I’m diving into REST APIs, and I want to implement one in Go, largely as a way to teach myself more about the language. One of the first problems I came up across (within an hour of starting coding) is that the HTTP router I selected (gorilla/mux) doesn’t have any way to issue a 405 - Method Not Allowed response.
Continue reading `In search of the best Go HTTP router for REST` →
Filed under:
golang
Programming
rest
Posted on April 29, 2015
I have a new software project in mind. I want to do it right. So I’ll use a RESTful web API. Which, of course, like any good software developer, I already understood pretty well, but I wanted to just brush up on my REST game, and make sure I got all the best practices down.
Continue reading `How to learn REST: A resource guide` →
Filed under:
api
book review
Programming
rest
Posted on March 5, 2015
Go is all the rage these days, and I decided to give it a try. And as my company uses Debian packages to distribute our software, I need to package my new Go-written project for Debian. Mark Stapelberg has done a lot of leg work to find the best (and official!
Continue reading `Creating a Debian package of a Go project` →
Filed under:
debian
golang
Linux
Programming
Posted on February 22, 2011
I recently upgraded from Debian 5.0 to Debian 6.0, and it went great, except that lighttpd began to complain “Cannot load plugin mod_redirect more than once”. This is because the new default lighttpd configuration shipped with Debian 6.0 includes the ‘mod_redirect’ module, which was not included by default in Debian 5.
Continue reading `lighttpd hackage: Smart module loading` →
Filed under:
debian
lighttpd
Linux
Perl
Programming