Learning Diary: Ultimate Go Notebook by William Kennedy

Background

I tend to read a technical book twice before I can convince myself that I've actually read it. The first time is a cover-to-cover read to absorb the shape of the ideas. The second time is slower — with a codebase open next to the book, writing notes and translating every concept into running code.

This post is to share the notes and code I've written while working through William Kennedy's Ultimate Go Notebook. This was inspired by the idea of learning in public, and I hope you can learn a thing or two from my notes.

A few disclaimers:

  • This is not a substitute for the book. Kennedy's explanations carry far more than my notes can. You will rob yourself of a lot of useful knowledge if you use these posts as a replacement for the book.
  • Every concept I write about is applied to CloudMeta — a multi-tenant cloud resource metadata collector with a channel-based extraction pipeline, PostgreSQL storage, and a REST API. All code examples come from this real codebase, not playground snippets. Each post has two kinds of examples: a concept-clear example that isolates the idea in a minimal program, and a practical example that shows the same idea inside CloudMeta where real tradeoffs apply.
  • These notes were written primarily for my own understanding. I had no intention of sharing them at the beginning. As such, you might find some mistakes — I've tried to get rid of those, but it's possible I missed some. If you find any, please reach out via email.
  • Lastly, these posts will differ from the more expository deep-dive posts I'll also publish on this blog. If you manage to gain from my learning diary, that's great. If you come across a topic you want to understand more deeply, you can leverage the numerous resources online — or reach out to me to write about it.

Part One — Foundations

Part Two — Language Mechanics

Part Three — Concurrency

Part Four — Testing, Generics & Performance