GoAug 2026
Async work in Go: goroutines & channels
A slow network call inside a hot path can drag down the whole request if it runs synchronously. The fix: push the work onto a channel and return immediately, while a background goroutine started once at startup drains it and sends on its own schedule — paired with a blocking Flush/Shutdown at the end of the program's life so nothing queued gets silently dropped.
GoAug 2026
Go, coming from Java: quirks worth knowing
No exceptions — every fallible function returns (result, error), so if err != nil is everywhere. := infers a type and declares in one step, function-scope only. Every type has a zero value, so nothing is ever truly uninitialized. And internal/ is enforced by the compiler, not a lint rule — outside code simply can't import it.
CI/CDAug 2026
What actually happens in CI before code ships
CI runs on every push — build, test, check quality — before a human looks at it. CD is the later, separate step that ships it. "Linting" is really layered checks (formatting, then bug-pattern detectors) that never run the code — that's what tests are for — and security scanning is a different question again: your own code for anti-patterns, or your dependencies' versions for known CVEs.
GitAug 2026
A git workflow that keeps small teams sane
One ticket, one branch, one PR, off an up-to-date main. Run whatever mirrors CI locally before opening the PR — find out in seconds, not in a queue. Push more commits to the same branch after review feedback instead of opening a new one. And stage deliberately: git add <file>, not -A out of habit.
TypeScriptAug 2026
TypeScript & Expo: notes from a first React Native project
Type annotations are checked at compile time and stripped before anything runs — what executes is plain JS. An interface is a compile-time-only contract, gone once the checker finishes. unknown is an honest placeholder for "exists, shape unconfirmed." And Expo hides most native-build complexity behind one command and a QR code, scanned with the Expo Go app.
ToolingAug 2026
Two WSL gotchas that cost me an afternoon
Both traced back to one root cause: a running terminal doesn't re-read its shell config after you edit it. An unquoted PATH export broke silently on an unescaped-parentheses Windows path, killing every new shell's startup — and a correctly-installed tool still came back "not found" in a terminal that had been open since before the fix.