Go modules and the domain expiry problem

Using a Markov chain to generate readable nonsense with 20 lines of Python

Describes a simple Markov chain algorithm to generate reasonable-sounding but utterly nonsensical text, and presents some example outputs as well as a Python implementation.

Retrieval Augmented Generation in Go

I've been reading more and more about LLM-based applications recently, itching to build something useful as a learning experience. In this post, I want to share a Retrieval Augmented Generation (RAG) system I've built in 100% Go and some insights I learned along the way. Some li...

Fourteen Years of Go

Happy Birthday, Go!

Demystifying function parameters in Go

In this post we're going to talk about how (and why!) different types of function parameters behave differently in Go. If you're new (or even not-so-new) to Go, this can be a common source of confusion and questions. Why do functions generally mutate maps and slices, but not o...

People skills for developers

In the second part of this series on career skills for software engineers, we’ll look at how to deal with that trickiest of species: human beings.

People skills for developers

In the second part of this series on career skills for software engineers, we’ll look at how to deal with that trickiest of species: human beings.

Automating my hard-to-automate garage doors

This is how I automated my garage doors without using a BTN interface. Arriving home is always a pain, I have to open two garages, and disarm the alarm system. I wanted to make that experience better. Once I figured out the alarm part, I started looking into the garages. Usually...

A Charm-ed life for Go CLI tooling

#​483 — November 7, 2023 Unsub  |  Web Version Go Weekly Charm Raises $6M to Build the Next Generation of the Command Line — Like much of the Go community, we’ve been huge fans of Charm’s approach to building useful Go-based to...

Announcing GoReleaser v1.22 — steady improvement

Another boring release, with mostly bug fixes and quality-of-life improvements. Highlights Several new pipes can be skipped with --skip=pipe, check goreleaser release --help for details If you have gomod.proxy enabled, GoReleaser will now check if your go.mod has replace direct...