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.
Navigation Convention¶
- File names describe topics and do not encode their reading order.
- The sidebar grouping is defined in
mkdocs.yml; folder-levelindex.mdfiles are not required. - Measurements on Go pages come from Go 1.26 on the hardware named on each page; reproduce them on yours.