News
Building a Simple REST API in Go Without Frameworks
This guide walks through building a simple RESTful API in Go from scratch—no frameworks, just Go’s net/http package. It covers set...
How to Organize Your Go Projects Like a Pro
Learn how to structure Go code the right way: from single-file projects to packages, internal modules, and proper imports, explain...
Go: When Should You Use Generics? When Shouldn't You?
To be clear, I’ll provide general guidelines, not hard and fast rules. Use your own judgement. But if you aren’t sure, I recommend...
Here's What You Need to Know About Vulnerability Management for Go
Go provides tooling to analyze your codebase and surface known vulnerabilities. This tooling is backed by the Go vulnerability dat...
Go Project Templates: How to Get Started
Anyone can write templates, which are packaged and distributed as modules, leveraging the Go module proxy and checksum database fo...
Everything You Need to Know About All Comparable Types
In this blog post, we hope to shine some light on the language mechanics behind all comparable types.
A Beginner's Guide to Code Coverage for Go Integration Tests
In this blog post we’ll give an example of how these new features work, and outline some of the use cases and workflow for collect...
Inside Go Channels: Buffers, Locks, and the Runtime Memory Model
Go channels are a core concurrency feature designed to safely coordinate goroutines without manual locks. Beneath their simple syn...
A Tour of Slog: Everything You Need to Know About Structured Logging With Slog
By including structured logging in the standard library, we can provide a common framework that all the other structured logging p...
Go Concurrency Face-Off: Channels vs Mutexes
Demystify when to use channels and when to use mutexes, and why blindly following "Go concurrency patterns" can backfire.
Building a Go Dependency Scanner From Scratch
Build a Go dependency scanner with the standard library: parse go.mod, query OSV for vulnerabilities, and analyze licenses.
Streamlining Go Concurrency Using a Worker Pool
Before you start spawning thousands of goroutines, let's take a step back and understand how to do this efficiently.