Shell scripts should be written to be clear first

Flow: A delightfully tiny but powerful HTTP router for Go

Last year I wrote a new HTTP router for Go called Flow. I've been using it in production on this site and in a couple of other projects since, and I'm pretty happy with how it's working out so decided to share it a bit more widely. My aim with Flow was to bring together my favo...

Increasing Cohesion in Go with Generic Decorators

Cohesion is part of the low coupling, high cohesion principle that’s supposed to keep your code maintainable. While low coupling means few dependencies, high cohesion roughly translates to single responsibility. Highly cohesive code (a module or a function) is focused on a...

Introducing a library for OpenAPI contract testing with Go's `net/http` package

I've recently been working on building a Go API, which is driven through an OpenAPI specification, and has almost all of the code generated through the awesome oapi-codegen. One of the common concerns of using OpenAPI, or really any documentation, that is always difficult is keep...

Testing Go `net/http` handlers

When writing Go web services, it's very likely that you'll be unit testing the HTTP handlers, as well as doing some wider integration tests on your application. Something nice about Go is the httptest package in the standard library, providing a very handy means to test HTTP logi...

@TwitterDev x @Charmcli: Developer Tools discovery session

Twitter Spaces with Twitter and Charm folks, discussing favorite developer tools.

Announcing GoReleaser v1.9 — the 10k stars release

This release contains several minor improvements and a couple of new features! Let’s have a look!

Using SSH Certificates with Go’s SSH Client

A couple of weeks ago I was working on adding SSH Certificate Authentication support to Wish, and did not find any good, to the point documentation on how to use certificates from the Go SSH client — hence this post.

All About the Move to Hugo

I finally got done, moving the blog from Nikola to Hugo today. I already wrote about why I did it. These are a few more thoughts about what went into the endeavour; and some colophonesque details. One, really small hope, is that it will help me learn Go. The DevOps world that I n...

All About the Move to Hugo

I finally got done, moving the blog from Nikola to Hugo today. I already wrote about why I did it. These are a few more thoughts about what went into the endeavour; and some colophonesque details. One, really small hope, is that it will help me learn Go. The DevOps world that I n...