| 2025.09.27: |
Consistent hashing |
| 2025.08.26: |
Implementing Forth in Go and C |
| 2025.05.01: |
Bloom filters |
| 2024.12.18: |
Implementing Raft: Part 5 - Exactly-once delivery |
| 2024.11.22: |
GoMLX: ML in Go without Python |
| 2024.11.11: |
ML in Go with a Python sidecar |
| 2024.11.02: |
Ranging over functions in Go 1.23 |
| 2024.10.10: |
Implementing Raft: Part 4 - Key/Value Database |
| 2024.09.14: |
Notes on running Go in the browser with WebAssembly |
| 2024.08.23: |
SentencePiece BPE Tokenizer in Go |
| 2024.07.30: |
Building static binaries with Go on Linux |
| 2024.07.04: |
Locally patching dependencies in Go |
| 2024.05.31: |
Reading Google Sheets from a Go program |
| 2024.04.25: |
Tokens for LLMs: Byte Pair Encoding in Go |
| 2024.03.06: |
The life of an Ollama prompt |
| 2024.02.22: |
Gemma, Ollama and LangChainGo |
| 2024.02.21: |
gemini-cli: Access Gemini models from the command-line |
| 2024.01.30: |
Using Gemini models in Go with LangChainGo |
| 2024.01.13: |
Sign in with Google in Go |
| 2023.12.22: |
Using Gemini models from Go |
| 2023.12.09: |
Sign in with GitHub in Go |
| 2023.11.22: |
Using Ollama with LangChainGo |
| 2023.11.10: |
Retrieval Augmented Generation in Go |
| 2023.10.16: |
Better HTTP server routing in Go 1.22 |
| 2023.09.16: |
static-server: an HTTP server in Go for static content |
| 2023.09.09: |
Introduction to CORS for Go programmers |
| 2023.08.22: |
My favorite prime number generator |
| 2023.07.24: |
Common pitfalls in Go benchmarking |
| 2023.07.21: |
Preview: ranging over functions in Go |
| 2023.07.08: |
Ungrammar in Go and resilient parsing |
| 2023.06.03: |
Plugins case study: Envoy WASM extensions |
| 2023.05.06: |
FAAS in Go with WASM, WASI and Rust |
| 2023.03.28: |
RPC-based plugins in Go |
| 2023.03.17: |
The power of single-method interfaces in Go |
| 2023.03.04: |
Higher-order functions in Go |
| 2023.02.16: |
Playing with indirect calls in WebAssembly |
| 2022.12.14: |
Go and Proxy Servers: Part 3 - SOCKS proxies |
| 2022.11.19: |
SSH port forwarding with Go |
| 2022.11.09: |
Go and Proxy Servers: Part 2 - HTTPS Proxies |
| 2022.10.24: |
Go and Proxy Servers: Part 1 - HTTP Proxies |
| 2022.10.01: |
Serving static files and web apps in Go |
| 2022.09.17: |
Basic Go tooling for generics |
| 2022.09.05: |
Sudoku, Go and WebAssembly |
| 2022.09.03: |
Parent links in Go ASTs |
| 2022.08.06: |
Error handling with Go tooling |
| 2022.07.09: |
Exploring function parameter types with Go tooling |
| 2022.06.11: |
The Y combinator in Go with generics |
| 2022.06.06: |
Performance of coroutine-style lexers in Go |
| 2022.05.03: |
A faster lexer in Go |
| 2022.04.02: |
Faster sorting with Go generics |
| 2022.03.28: |
Interface method calls with the Go register ABI |
| 2022.02.12: |
File-driven testing in Go |
| 2022.02.05: |
Building binary trees from inorder-depth lists |
| 2021.10.26: |
A comprehensive guide to go generate |
| 2021.10.02: |
Rewriting Go source code with AST tooling |
| 2021.08.28: |
Plugins in Go |
| 2021.07.17: |
Accessing PostgreSQL databases in Go |
| 2021.06.09: |
REST Servers in Go: Part 7 - GraphQL |
| 2021.05.13: |
REST Servers in Go: Part 6 - authentication |
| 2021.04.24: |
Go socket servers with TLS |
| 2021.04.03: |
Go HTTPS servers with TLS |
| 2021.03.06: |
REST Servers in Go: Part 5 - middleware |
| 2021.02.20: |
Life of an HTTP request in a Go server |
| 2021.02.13: |
Generic functions on slices with Go type parameters |
| 2021.02.06: |
REST Servers in Go: Part 4 - using OpenAPI and Swagger |
| 2021.01.27: |
Go internals: invariance and memory layout of slices |
| 2021.01.23: |
REST Servers in Go: Part 3 - using a web framework |
| 2021.01.21: |
REST Servers in Go: Part 2 - using a router package |
| 2021.01.14: |
REST Servers in Go: Part 1 - standard library |
| 2020.12.18: |
Computing the Chinese Remainder Theorem |
| 2020.12.05: |
Unmarshaling Time values from JSON |
| 2020.09.12: |
Writing multi-package analysis tools for Go |
| 2020.08.19: |
Embedding in Go: Part 3 - interfaces in structs |
| 2020.08.17: |
Embedding in Go: Part 2 - interfaces in interfaces |
| 2020.08.15: |
Embedding in Go: Part 1 - structs in structs |
| 2020.06.13: |
You don't need virtualenv in Go |
| 2020.05.23: |
Optional JSON fields in Go |
| 2020.05.16: |
Representing JSON structures in Go |
| 2020.05.02: |
Faking stdin and stdout in Go |
| 2020.04.04: |
Testing flag parsing in Go programs |
| 2020.03.05: |
Implementing Raft: Part 3 - Persistence and Optimizations |
| 2020.02.29: |
Implementing Raft: Part 2 - Commands and Log Replication |
| 2020.02.24: |
Implementing Raft: Part 1 - Elections |
| 2020.02.22: |
Implementing Raft: Part 0 - Introduction |
| 2020.01.21: |
Graceful shutdown of a TCP server in Go |
| 2020.01.07: |
PubSub using channels in Go |
| 2019.11.23: |
"Beating" C with 400 lines of unoptimized assembly |
| 2019.10.01: |
Simple Go project layout with modules |
| 2019.09.16: |
Go internals: capturing loop variables in closures |
| 2019.09.03: |
RSA - theory and implementation |
| 2019.08.03: |
AES encryption of files in Go |
| 2019.07.22: |
Faster XML stream processing in Go |
| 2019.07.15: |
Passing callbacks and pointers to Cgo |
| 2019.07.04: |
Go compiler internals: adding a new statement to Go - Part 2 |
| 2019.07.03: |
Go compiler internals: adding a new statement to Go - Part 1 |
| 2019.05.31: |
GeoIP service as a cloud function |
| 2019.05.07: |
To ORM or not to ORM |
| 2019.04.25: |
Implementing reader-writer locks |
| 2019.03.27: |
Design patterns in Go's database/sql package |
| 2019.03.19: |
Does a concrete type implement an interface in Go? |
| 2019.03.05: |
GitHub webhook payload as a cloud function |
| 2019.02.12: |
Unix domain sockets in Go |
| 2019.02.04: |
Go JSON Cookbook |
| 2019.01.17: |
On concurrency in Go HTTP servers |
| 2018.12.24: |
Beware of copying mutexes in Go |
| 2018.10.04: |
Go hits the concurrency nail right on the head |
| 2018.09.13: |
Go and Algebraic Data Types |
| 2018.08.08: |
On the uses and misuses of panics in Go |
| 2018.03.02: |
Command-line autocomplete for Go documentation |
| 2018.02.20: |
The Expression Problem in Go |
| 2016.05.10: |
Suffix arrays in the Go standard library |
| 2016.05.03: |
Go WebSocket server sample |
| 2016.04.20: |
Book review: "The Go Programming Language" by Alan Donovan and Brian Kernighan |
| 2014.03.27: |
Rewriting the lexer benchmark in Go |