📓 Learning Log¶
One line per day — the chronological index of everything I've learned. Each entry links to its full day note in
journal/. Regenerate withscripts/gen-learning-log.py.
Format: Day NNN — date — topic — ⏱ min — 🎚 confidence/5 — [note](link)
Month 1 — Fundamentals¶
Week 1
- Day 001 — 2026-06-26 — Toolchain & First Program — ⏱ 90 — 🎚 ⅗ — note
- Day 002 — 2026-06-27 — Variables, Constants & iota — ⏱ 90 — 🎚 ⅗ — note
- Day 003 — 2026-06-28 — Numeric & String Types, Conversions — ⏱ 100 — 🎚 ⅗ — note
- Day 004 — 2026-06-29 — Control Flow (if / for / switch) — ⏱ 90 — 🎚 ⅘ — note
- Day 005 — 2026-06-30 — Functions, Multiple Returns & defer — ⏱ 100 — 🎚 ⅗ — note
- Day 006 — 2026-07-01 — Packages & Modules — ⏱ 100 — 🎚 ⅗ — note
- Day 007 — 2026-07-02 — Week 1 Review Day — ⏱ 75 — 🎚 ⅘ — note
Week 2
- Day 008 — 2026-07-03 — Arrays & Slice Basics (len/cap) — ⏱ 90 — 🎚 ⅗ — note
- Day 009 — 2026-07-04 — Slice Internals: Backing Array, append & Aliasing Gotchas — ⏱ 95 — 🎚 ⅗ — note
- Day 010 — 2026-07-05 — Slice Tricks: Filter, Insert, Delete, Copy in Place — ⏱ 90 — 🎚 ⅘ — note
- Day 011 — 2026-07-06 — Maps & Sets, comma-ok, Ordered Iteration — ⏱ 90 — 🎚 ⅘ — note
- Day 012 — 2026-07-07 — Strings, Runes, Bytes & UTF-8 — ⏱ 90 — 🎚 ⅗ — note
- Day 013 — 2026-07-08 — Structs & Struct Tags — ⏱ 90 — 🎚 ⅗ — note
- Day 014 — 2026-07-09 — Week 2 Review Day — ⏱ 75 — 🎚 ⅘ — note
Week 3
- Day 015 — 2026-07-10 — Methods & Receivers (Value vs Pointer) — ⏱ 90 — 🎚 ⅗ — note
- Day 016 — 2026-07-11 — Interfaces & Implicit Satisfaction — ⏱ 90 — 🎚 ⅗ — note
- Day 017 — 2026-07-12 — Type Assertions & Type Switches — ⏱ 90 — 🎚 ⅗ — note
- Day 018 — 2026-07-13 — Errors as Values & Wrapping (%w) — ⏱ 90 — 🎚 ⅗ — note
- Day 019 — 2026-07-14 — Custom & Sentinel Errors; errors.Is / As / Join — ⏱ 90 — 🎚 ⅗ — note
- Day 020 — 2026-07-15 — panic, recover & When to Use Them — ⏱ 90 — 🎚 ⅗ — note
- Day 021 — 2026-07-16 — Week 3 Review + Recall — ⏱ 75 — 🎚 ⅘ — note
Week 4
- Day 022 — 2026-07-17 — Struct Embedding & Composition — ⏱ 90 — 🎚 ⅗ — note
- Day 023 — 2026-07-18 — Generics Fundamentals — ⏱ 95 — 🎚 ⅗ — note
- Day 024 — 2026-07-19 — Generic Data Structures: Stack & Set — ⏱ 90 — 🎚 ⅘ — note
- Day 025 — 2026-07-20 — Project: Model + JSON Storage — ⏱ 95 — 🎚 ⅗ — note
- Day 026 — 2026-07-21 — Project: CLI Commands & Flags — ⏱ 90 — 🎚 ⅗ — note
- Day 027 — 2026-07-22 — Project: Tests + README — ⏱ 95 — 🎚 ⅘ — note
- Day 028 — 2026-07-23 — Week 4 + Month 1 Review · Tag v0.1.0 — ⏱ 75 — 🎚 ⅘ — note
Month 2 — Standard Library, Tooling & Testing¶
Week 1
- Day 029 — 2026-07-24 — io.Reader & io.Writer — ⏱ 90 — 🎚 ⅗ — note
- Day 030 — 2026-07-25 — bufio & Buffered I/O — ⏱ 90 — 🎚 ⅗ — note
- Day 031 — 2026-07-26 — os, Files & Exit Codes — ⏱ 90 — 🎚 ⅗ — note
- Day 032 — 2026-07-27 — fmt Verbs Deep Dive — ⏱ 90 — 🎚 ⅘ — note
- Day 033 — 2026-07-28 — strings, strconv & bytes — ⏱ 90 — 🎚 ⅗ — note
- Day 034 — 2026-07-29 — strings.Builder & Efficient Concatenation — ⏱ 90 — 🎚 ⅘ — note
- Day 035 — 2026-07-30 — Week 1 Review + Recall — ⏱ 90 — 🎚 ⅘ — note
Week 2
- Day 036 — 2026-07-31 — encoding/json: Marshal & Unmarshal — ⏱ 90 — 🎚 ⅗ — note
- Day 037 — 2026-08-01 — Struct Tags & Custom (Un)Marshaler — ⏱ 90 — 🎚 ⅗ — note
- Day 038 — 2026-08-02 — time: Durations, Formatting & Timers — ⏱ 90 — 🎚 ⅗ — note
- Day 039 — 2026-08-03 — net/http Client & Requests — ⏱ 90 — 🎚 ⅗ — note
- Day 040 — 2026-08-04 — context: Timeouts & Cancellation — ⏱ 90 — 🎚 ⅗ — note
- Day 041 — 2026-08-05 — log/slog: Structured Logging — ⏱ 90 — 🎚 ⅗ — note
- Day 042 — 2026-08-06 — Week 2 Review + Recall — ⏱ 90 — 🎚 ⅘ — note
Week 3
- Day 043 — 2026-08-07 — Table-Driven Tests & Subtests — ⏱ 90 — 🎚 ⅗ — note
- Day 044 — 2026-08-08 — t.Parallel & Test Helpers — ⏱ 90 — 🎚 ⅗ — note
- Day 045 — 2026-08-09 — httptest for Handlers — ⏱ 90 — 🎚 ⅗ — note
- Day 046 — 2026-08-10 — Coverage & testify — ⏱ 90 — 🎚 ⅗ — note
- Day 047 — 2026-08-11 — Benchmarks (testing.B) — ⏱ 90 — 🎚 ⅗ — note
- Day 048 — 2026-08-12 — Fuzzing (testing.F) & Examples — ⏱ 90 — 🎚 ⅗ — note
- Day 049 — 2026-08-13 — Week 3 Review + Recall — ⏱ 90 — 🎚 ⅘ — note
Week 4
- Day 050 — 2026-08-14 — go vet & golangci-lint — ⏱ 90 — 🎚 ⅗ — note
- Day 051 — 2026-08-15 — Makefile & Task Automation — ⏱ 90 — 🎚 ⅗ — note
- Day 052 — 2026-08-16 — Build Tags & Cross-Compilation — ⏱ 90 — 🎚 ⅗ — note
- Day 053 — 2026-08-17 — pprof Quickstart — ⏱ 90 — 🎚 ⅗ — note
- Day 054 — 2026-08-18 — GitHub Actions CI for Go — ⏱ 90 — 🎚 ⅗ — note
- Day 055 — 2026-08-19 — Project: URL Shortener — ⏱ 90 — 🎚 ⅗ — note
- Day 056 — 2026-08-20 — Month 2 Review + Tag v0.2.0 — ⏱ 90 — 🎚 ⅘ — note
Month 3 — Concurrency¶
Week 1
- Day 057 — 2026-08-21 — Goroutines & the go statement — ⏱ 90 — 🎚 ⅗ — note
- Day 058 — 2026-08-22 — Channels: unbuffered vs buffered — ⏱ 90 — 🎚 ⅗ — note
- Day 059 — 2026-08-23 — Channel axioms (close, nil, direction) — ⏱ 90 — 🎚 ⅗ — note
- Day 060 — 2026-08-24 — select & time.After — ⏱ 90 — 🎚 ⅗ — note
- Day 061 — 2026-08-25 — Deadlocks & how to spot them — ⏱ 90 — 🎚 ⅗ — note
- Day 062 — 2026-08-26 — Generators & done channels — ⏱ 90 — 🎚 ⅗ — note
- Day 063 — 2026-08-27 — Week 1 Review Day — ⏱ 75 — 🎚 ⅘ — note
Week 2
- Day 064 — 2026-08-28 — sync.Mutex & RWMutex — ⏱ 90 — 🎚 ⅗ — note
- Day 065 — 2026-08-29 — sync.WaitGroup in Depth — ⏱ 90 — 🎚 ⅘ — note
- Day 066 — 2026-08-30 — sync.Once & sync.Pool — ⏱ 90 — 🎚 ⅗ — note
- Day 067 — 2026-08-31 — Atomic Operations — ⏱ 90 — 🎚 ⅗ — note
- Day 068 — 2026-09-01 — The Race Detector (-race) — ⏱ 90 — 🎚 ⅘ — note
- Day 069 — 2026-09-02 — The Go Memory Model — ⏱ 90 — 🎚 ⅗ — note
- Day 070 — 2026-09-03 — Week 2 Review Day — ⏱ 75 — 🎚 ⅘ — note
Week 3
- Day 071 — 2026-09-04 — Worker Pool Pattern — ⏱ 90 — 🎚 ⅗ — note
- Day 072 — 2026-09-05 — Fan-Out / Fan-In — ⏱ 90 — 🎚 ⅗ — note
- Day 073 — 2026-09-06 — Pipelines — ⏱ 90 — 🎚 ⅗ — note
- Day 074 — 2026-09-07 — Bounded Parallelism & Semaphores — ⏱ 90 — 🎚 ⅗ — note
- Day 075 — 2026-09-08 — context Cancellation & Propagation — ⏱ 90 — 🎚 ⅗ — note
- Day 076 — 2026-09-09 — errgroup & Rate Limiting — ⏱ 90 — 🎚 ⅗ — note
- Day 077 — 2026-09-10 — Week 3 Review Day — ⏱ 75 — 🎚 ⅘ — note
Week 4
- Day 078 — 2026-09-11 — Project: Crawler Design & Fetch — ⏱ 90 — 🎚 ⅗ — note
- Day 079 — 2026-09-12 — Project: Worker Pool & Dedup — ⏱ 90 — 🎚 ⅗ — note
- Day 080 — 2026-09-13 — Project: Context & Graceful Shutdown — ⏱ 90 — 🎚 ⅗ — note
- Day 081 — 2026-09-14 — Project: Rate Limiting — ⏱ 90 — 🎚 ⅗ — note
- Day 082 — 2026-09-15 — Project: Tests with -race — ⏱ 90 — 🎚 ⅘ — note
- Day 083 — 2026-09-16 — Profiling Concurrent Code — ⏱ 90 — 🎚 ⅗ — note
- Day 084 — 2026-09-17 — Month 3 Review + Tag v0.3.0 — ⏱ 75 — 🎚 ⅘ — note
Month 4 — Web, REST & Databases¶
Week 1
- Day 085 — 2026-09-18 — net/http Server & ServeMux — ⏱ 90 — 🎚 ⅗ — note
- Day 086 — 2026-09-19 — http.Handler & HandlerFunc — ⏱ 90 — 🎚 ⅗ — note
- Day 087 — 2026-09-20 — Routing with chi — ⏱ 90 — 🎚 ⅗ — note
- Day 088 — 2026-09-21 — Middleware Chains — ⏱ 90 — 🎚 ⅗ — note
- Day 089 — 2026-09-22 — JSON Request/Response Helpers — ⏱ 90 — 🎚 ⅘ — note
- Day 090 — 2026-09-23 — Graceful Shutdown & Timeouts — ⏱ 90 — 🎚 ⅗ — note
- Day 091 — 2026-09-24 — Week 1 Review + Recall — ⏱ 75 — 🎚 ⅘ — note
Week 2
- Day 092 — 2026-09-25 — database/sql Basics — ⏱ 90 — 🎚 ⅗ — note
- Day 093 — 2026-09-26 — pgx & Postgres Connection Pooling — ⏱ 90 — 🎚 ⅗ — note
- Day 094 — 2026-09-27 — sqlc for Type-Safe Queries — ⏱ 90 — 🎚 ⅗ — note
- Day 095 — 2026-09-28 — Migrations with golang-migrate — ⏱ 90 — 🎚 ⅗ — note
- Day 096 — 2026-09-29 — Repository Pattern — ⏱ 90 — 🎚 ⅘ — note
- Day 097 — 2026-09-30 — Transactions & Context — ⏱ 90 — 🎚 ⅗ — note
- Day 098 — 2026-10-01 — Week 2 Review + Recall — ⏱ 60 — 🎚 ⅘ — note
Week 3
- Day 099 — 2026-10-02 — Request Validation — ⏱ 90 — 🎚 ⅗ — note
- Day 100 — 2026-10-03 — Per-Request Structured Logging — ⏱ 90 — 🎚 ⅗ — note
- Day 101 — 2026-10-04 — Pagination & Filtering — ⏱ 90 — 🎚 ⅗ — note
- Day 102 — 2026-10-05 — Configuration from the Environment — ⏱ 90 — 🎚 ⅘ — note
- Day 103 — 2026-10-06 — Rate Limiting — ⏱ 90 — 🎚 ⅗ — note
- Day 104 — 2026-10-07 — JWT Auth & RBAC — ⏱ 90 — 🎚 ⅗ — note
- Day 105 — 2026-10-08 — Week 3 Review + Recall — ⏱ 60 — 🎚 ⅘ — note
Week 4
- Day 106 — 2026-10-09 — Project: Layered Architecture — ⏱ 90 — 🎚 ⅗ — note
- Day 107 — 2026-10-10 — Project: Handlers & Services — ⏱ 90 — 🎚 ⅗ — note
- Day 108 — 2026-10-11 — Project: Repository & Migrations — ⏱ 90 — 🎚 ⅗ — note
- Day 109 — 2026-10-12 — Project: Integration Tests (testcontainers) — ⏱ 90 — 🎚 ⅗ — note
- Day 110 — 2026-10-13 — Project: OpenAPI Docs — ⏱ 90 — 🎚 ⅗ — note
- Day 111 — 2026-10-14 — Project: Dockerfile & CI — ⏱ 90 — 🎚 ⅗ — note
- Day 112 — 2026-10-15 — Month 4 Review + Tag v0.4.0 — ⏱ 90 — 🎚 ⅘ — note
Month 5 — gRPC & Architecture¶
Week 1
- Day 113 — 2026-10-16 — Protocol Buffers &
.protoFiles — ⏱ 90 — 🎚 ⅗ — note - Day 114 — 2026-10-17 — Code Generation with
protoc&buf— ⏱ 90 — 🎚 ⅗ — note - Day 115 — 2026-10-18 — Unary RPCs — ⏱ 90 — 🎚 ⅗ — note
- Day 116 — 2026-10-19 — Server & Client Streaming — ⏱ 90 — 🎚 ⅗ — note
- Day 117 — 2026-10-20 — Bidirectional Streaming — ⏱ 90 — 🎚 ⅗ — note
- Day 118 — 2026-10-21 — Deadlines, Metadata & Status Codes — ⏱ 90 — 🎚 ⅗ — note
- Day 119 — 2026-10-22 — Week 1 Review & Active Recall — ⏱ 90 — 🎚 ⅘ — note
Week 2
- Day 120 — 2026-10-23 — Logging & Recovery Interceptors — ⏱ 90 — 🎚 ⅗ — note
- Day 121 — 2026-10-24 — Auth Interceptors — ⏱ 90 — 🎚 ⅗ — note
- Day 122 — 2026-10-25 — TLS & Secure Transport — ⏱ 90 — 🎚 ⅗ — note
- Day 123 — 2026-10-26 — grpc-gateway / REST Transcoding — ⏱ 90 — 🎚 ⅗ — note
- Day 124 — 2026-10-27 — Reflection & grpcurl — ⏱ 90 — 🎚 ⅘ — note
- Day 125 — 2026-10-28 — Testing gRPC Services — ⏱ 90 — 🎚 ⅗ — note
- Day 126 — 2026-10-29 — Week Review + Recall — ⏱ 90 — 🎚 ⅘ — note
Week 3
- Day 127 — 2026-10-30 — Hexagonal Architecture (Ports & Adapters) — ⏱ 90 — 🎚 ⅗ — note
- Day 128 — 2026-10-31 — Dependency Injection (Manual) — ⏱ 90 — 🎚 ⅗ — note
- Day 129 — 2026-11-01 — Dependency Injection with
wire— ⏱ 90 — 🎚 ⅗ — note - Day 130 — 2026-11-02 — Domain Modeling & Boundaries — ⏱ 90 — 🎚 ⅗ — note
- Day 131 — 2026-11-03 — Architecture Decision Records (ADRs) — ⏱ 90 — 🎚 ⅘ — note
- Day 132 — 2026-11-04 — Redis Cache-Aside — ⏱ 90 — 🎚 ⅗ — note
- Day 133 — 2026-11-05 — Week Review + Recall — ⏱ 90 — 🎚 ⅘ — note
Week 4
- Day 134 — 2026-11-06 — gRPC Service Skeleton — ⏱ 90 — 🎚 ⅗ — note
- Day 135 — 2026-11-07 — Hexagonal Layering — ⏱ 90 — 🎚 ⅗ — note
- Day 136 — 2026-11-08 — Redis Job Queue — ⏱ 90 — 🎚 ⅗ — note
- Day 137 — 2026-11-09 — Retries & Dead-Letter — ⏱ 90 — 🎚 ⅗ — note
- Day 138 — 2026-11-10 — Tests & Metrics — ⏱ 90 — 🎚 ⅗ — note
- Day 139 — 2026-11-11 — Docs & ADRs — ⏱ 90 — 🎚 ⅘ — note
- Day 140 — 2026-11-12 — Month 5 Review + Tag v0.5.0 — ⏱ 90 — 🎚 ⅘ — note
Month 6 — Production & Capstone¶
Week 1
- Day 141 — 2026-11-13 — Structured Logging with slog — ⏱ 90 — 🎚 ⅗ — note
- Day 142 — 2026-11-14 — Prometheus Metrics (client_golang) — ⏱ 90 — 🎚 ⅗ — note
- Day 143 — 2026-11-15 — OpenTelemetry Tracing — ⏱ 90 — 🎚 ⅗ — note
- Day 144 — 2026-11-16 — Health & Readiness Endpoints — ⏱ 90 — 🎚 ⅘ — note
- Day 145 — 2026-11-17 — Correlation IDs & Log Context — ⏱ 90 — 🎚 ⅘ — note
- Day 146 — 2026-11-18 — Dashboards & Alerting Basics — ⏱ 90 — 🎚 ⅗ — note
- Day 147 — 2026-11-19 — Week 1 Review + Recall — ⏱ 90 — 🎚 ⅘ — note
Week 2
- Day 148 — 2026-11-20 — Multi-stage Docker builds — ⏱ 90 — 🎚 ⅗ — note
- Day 149 — 2026-11-21 — docker-compose for a local stack — ⏱ 90 — 🎚 ⅗ — note
- Day 150 — 2026-11-22 — Image hardening & distroless — ⏱ 90 — 🎚 ⅗ — note
- Day 151 — 2026-11-23 — GitHub Actions: build, test, scan — ⏱ 95 — 🎚 ⅗ — note
- Day 152 — 2026-11-24 — Secrets & 12-factor config — ⏱ 90 — 🎚 ⅘ — note
- Day 153 — 2026-11-25 — Signals & graceful shutdown — ⏱ 95 — 🎚 ⅘ — note
- Day 154 — 2026-11-26 — Week 2 review + recall — ⏱ 75 — 🎚 ⅘ — note
Week 3
- Day 155 — 2026-11-27 — pprof CPU & heap profiling — ⏱ 90 — 🎚 ⅗ — note
- Day 156 — 2026-11-28 — Escape analysis & allocations — ⏱ 90 — 🎚 ⅗ — note
- Day 157 — 2026-11-29 — sync.Pool & optimization — ⏱ 90 — 🎚 ⅗ — note
- Day 158 — 2026-11-30 — Load testing (k6 / vegeta) — ⏱ 90 — 🎚 ⅗ — note
- Day 159 — 2026-12-01 — govulncheck & gosec — ⏱ 90 — 🎚 ⅗ — note
- Day 160 — 2026-12-02 — AuthN/Z hardening & rate limiting — ⏱ 90 — 🎚 ⅗ — note
- Day 161 — 2026-12-03 — Week 3 review + recall — ⏱ 75 — 🎚 ⅘ — note
Week 4
- Day 162 — 2026-12-04 — Capstone: Architecture & Setup — ⏱ 90 — 🎚 ⅗ — note
- Day 163 — 2026-12-05 — Capstone: REST + gRPC APIs — ⏱ 90 — 🎚 ⅗ — note
- Day 164 — 2026-12-06 — Capstone: Persistence & Cache — ⏱ 90 — 🎚 ⅗ — note
- Day 165 — 2026-12-07 — Capstone: Observability & Deploy — ⏱ 90 — 🎚 ⅗ — note
- Day 166 — 2026-12-08 — Capstone: Integration Tests — ⏱ 90 — 🎚 ⅗ — note
- Day 167 — 2026-12-09 — Capstone: Docs, Demo & ADRs — ⏱ 90 — 🎚 ⅘ — note
- Day 168 — 2026-12-10 — Month 6 Review + Tag v1.0.0 (Graduation) — ⏱ 75 — 🎚 ⅘ — note