GoReleaser: 3 years later

GoReleaser’s journey begins in December 21, 2016: the day I made its very first commit. It has been a long road since then. I didn’t have big aspirations for it. Just wanted to reliably automate my workflow in another project, so, the first version was pretty hacky,...

Inlined defers in Go

Go’s defer keyword allows us to schedule a function to run before a function returns. Multiple functions can be deferred from a function. defer is often used to cleanup resources, finish function-scoped tasks, and similar. Deferring functions are great for maintability. By...

Most Startups Should Not Invest in ML/AI (yet)

Chances are you should instead be investing in data engineering so you can take a deep look at your properly labeled and processed data instead of throwing hundreds of thousands of dollars in Machine Learning (ML). ML isn’t magical, you need a lot of clean, labeled data. Th...

Slow Down in Startup Innovation

Looking back at the last 10 years, two specific trends are very clear to me, here they are highlighted by Fred Wilson: “The massive experiment in using capital as a moat to build startups into sustainable businesses has now played out and we can call it a failure for the m...

HTML, CSS and Go, Together at Long Last: Vugu Premise and Example

Huh, what’s a Vugu? Vugu is a Go library that makes it easy to write HTML markup and Go code which is compiled and run in the browser using WebAssembly.

Some Thoughts on Library Design

As programmers we use libraries a lot. But library design is hard. In this article, I will walk through some considerations in designing a library.

Modules Part 03: Minimal Version Selection

Series Index Why and What Projects, Dependencies and Gopls Minimal Version Selection Mirrors, Checksums and Athens Gopls Improvements Vendoring Introduction Every dependency management solution has to solve the problem of picking a version of a dependency. Many of the version sel...

API Clients for Humans

Most developers, at one point or another, have either built a web API or have been a consumer of one. An API client is a package that provides a set of tools that can be used to develop software that consumes a specific API.

Using MySQL as a Pub/Sub

If you compare MySQL or PostgreSQL with Kafka or RabbitMQ, at first, it seems they are entirely different software. And usually, that’s true, as you would use them for quite different tasks. What they have in common is processing streams of data, and they specialize in spec...

Navigating the uncharted waters of SSL/TLS certificates and gRPC with Go

There are different ways to establishing a secure TLS connection with Go and gRPC. Contrary to popular belief, you don’t need to manually provide the Server certificate to your gRPC client in order to encrypt the connection.