Modules Part 06: Vendoring

Series Index Why and What Projects, Dependencies and Gopls Minimal Version Selection Mirrors, Checksums and Athens Gopls Improvements Vendoring Introduction It’s no secret that I am a fan of vendoring when it’s reasonable and practical to use it for your application projects....

what.Happens - a debug logging package for developers only

Package what provides some handy debug-logging functions that can be enabled and disabled via build flags. No more information leaks in your production code!

Modules Part 05: Gopls Improvements

Series Index Why and What Projects, Dependencies and Gopls Minimal Version Selection Mirrors, Checksums and Athens Gopls Improvements Vendoring Prelude This is a guest post written by Rohan Challa, a member of the Go team working on gopls. This document is a follow up to Bill Ken...

Docker Images : Part III - Going Farther To Reduce Image Size

Series Index Reducing Image Size Details Specific To Different Languages Going Farther To Reduce Image Size Introduction In the first two parts of this series, we covered the most common methods to optimize Docker image size. We saw how multi-stage builds, combined with Alpine-ba...

GopherCon 2020 Update

It’s been a few weeks since our first release about GopherCon and COVID-19, so we wanted to share an update. You all are the backbone of this conference and so important to us!

Leader Election inside Kubernetes

Ever needed a simple leader election mechanism on something that will run on a Kubernetes cluster? There’s an easy way to do that! A couple of days ago I was working on an app that needed to do some work from time to time, but only in a single replica. Easy thing to do if...

go test -v streaming output

The testing package is one of my favourite packages in the Go standard library, not just because of its low noise approach to unit testing, but, over the lifetime of Go, it has received a steady stream of quality of life improvements driven by real world usage. The most recent ex...

GopherCon 2020 COVID-19 Response

Many in the community are facing concerns about COVID-19, the disease caused by the newly discovered coronavirus [1]. We at Gopher Academy are following the status of COVID-19 carefully in preparation for the June conference.

Are large slices more expensive than smaller ones?

Programmers have a tendency to be superstitious. Particularly, when a programmer hears that copies are expensive, they start to see them everywhere, especially when they learn that, in Go, every assignment is a copy. Consider this code; x is three orders of magnitude larger than...

Kubernetes Jobs: shut down sidecar when main container finishes

Kubernetes Pod lifecycle does not cover everything just yet. I’m working on an app that listens to Buildkite job.scheduled webhook and creates a Kubernetes Job to execute it. The idea is to have a “scale-to-zero” approach, with the max number of nodes being def...