Software Engineering Handbook

A personal reference for systems engineering in Go, deep enough to use at work and trust under pressure — not a cheat sheet. Each page is written to actually teach its topic: a plain-language definition, why it matters, and worked examples with real numbers or a traced-through case, not just a name and a hint.

Use the Topic Map to find a page by area or by question. Pages can be read in any order; each links to the background it relies on.

Contents

  • Go Internals — How Go values are laid out, escape analysis, the GMP scheduler, channels and the memory model, goroutine leaks, the garbage collector, the compiler, unsafe/cgo/syscalls.
  • Operating Systems — Processes, threads, system calls, virtual memory, scheduling, file descriptors, I/O models, synchronization.
  • Performance and Benchmarking — Benchmark methodology with statistics, pprof, the execution tracer, allocation and cache efficiency, load testing and tail latency.
  • Storage and Files — Storage hardware, the Linux I/O stack, fsync and durability, encoding, and doing all of it correctly from Go.
  • Networking — TCP, UDP, DNS, TLS, the Go netpoller, TCP servers, binary protocols, HTTP and gRPC.
  • Databases — Indexes, storage engines, WAL, MVCC, isolation, query optimization.
  • Build a Storage Engine in Go — An LSM key-value store with a WAL, skip list, SSTables, bloom filters, compaction, recovery, snapshots, and transactions, plus a B+tree with a buffer pool — all tested and benchmarked, with source in labs/.
  • Debugging and Production — Panics, goroutine and core dumps, Delve, concurrency bugs, Linux observability tools, incident handling.
  • Distributed Systems — Partial failure and clocks, Raft implemented in Go, a replicated key-value store with linearizable reads, leases and fencing, testing with simulation and linearizability checking; plus replication, partitioning, CAP, and distributed transactions.
  • System Design — The design framework and worked case studies.
  • Reference — Tools (Git, Nginx, Prometheus, Terraform, Bash, CI/CD, Docker, Kubernetes) and a VPS/k3s platform tutorial.
  • File names describe topics and do not encode their reading order.
  • The sidebar grouping is defined in mkdocs.yml; folder-level index.md files are not required.
  • Measurements on Go pages come from Go 1.26 on the hardware named on each page; reproduce them on yours.