Concurrency Trap #2: Incomplete Work

Introduction In my first post on Goroutine Leaks, I mentioned that concurrency is a useful tool but it comes with certain traps that don’t exist in synchronous programs. To continue with this theme, I will introduce a new trap called incomplete work. Incomplete work occurs...

An Overview of Go's Tooling

Occasionally I get asked “why do you like using Go?” And one of the things I often mention is the thoughtful tooling that exists alongside the language as part of the go command. There are some tools that I use everyday — like go fmt and go build — and ot...

Slow down your code with goroutines

Or: How adding goroutines can keep your CPU busy shuffling things around.

Git: check if a folder changed

Often I need to “do X only if files on some folder changed” or whatever. I always need to Google that or find it on old scripts…

Building an engine with the Veritone Engine Toolkit

Building an engine with the Veritone Engine Toolkit

How I use Postgres with Go

The libraries I love to use with Postgres

Broken windows theory: why code quality and simplistic design are non-negotiable

Integration Testing in Go: Part I - Executing Tests with Docker

Introduction “Testing leads to failure, and failure leads to understanding.” - Burt Rutan Burt Rutan is an aerospace engineer who designed Voyager, the first plane to fly around the world without stopping or refueling. Although Rutan was not a software engineer, his words s...

Sneaky Go interface conversion