Writing testable Go code

When I say “testable code”, what I mean is code that can be easily programmatically verified. We can say that code is testable when we don’t have to change the code itself when we’re adding a unit test to it. It doesn’t matter if you’re follow...

Mid-stack inlining in Go

In the previous post I discussed how leaf inlining allows the Go compiler to reduce the overhead of function calls and extend optimisation opportunities across function boundaries. In this post I’ll discuss the limits of inlining and leaf vs mid-stack inlining. The limits o...

Show me your code: how buildkit can help integrating GoReleaser with multi-arch Docker manifests

A discussion with Tibor and Geanluca about Docker buildkit and GoReleaser.

Writing REST API Client in Go

API clients are very helpful when you’re shipping your REST APIs to the public. And Go makes it easy, for you as a developer, as well as for your users, thanks to its idiomatic design and type system. But what defines a good API client?

Publishing libraries with GoReleaser

What if I told you you can now automate the release of your libraries as well?

Inlining optimisations in Go

This is a post about how the Go compiler implements inlining and how this optimisation affects your Go code. n.b. This article focuses on gc, the de facto Go compiler from golang.org. The concepts discussed apply broadly to other Go compilers like gccgo and tinygo but may differ...

Mounting Google Cloud Storage bucket to Kubernetes Pod

You may ask why doing this if we can use a PersistentVolume? Though there may be multiple scenarios when mounting a GCS bucket to you Kubernetes Pod is a good option:

How to Manage Database Timeouts and Cancellations in Go

One of the great features of Go's database/sql package is that it's possible to cancel database queries while they are still running via a context.Context instance. On the face of it, usage of this functionality is quite straightforward (here's a basic example). But once you st...

Getting Started With Dgraph and GraphQL+-

Introduction I have spent a career building business applications that work with databases, starting with SQL and then moving to No-SQL. I’ve been curious how Graph databases work and how to build applications with them. It seems the sweet spot for a Graph database is when your...

Getting Started With Dgraph and GraphQL+-

Introduction I have spent a career building business applications that work with databases, starting with SQL and then moving to No-SQL. I’ve been curious how Graph databases work and how to build applications with them. It seems the sweet spot for a Graph database is when your...