Go errors: sentinel errors, error structs or fmt.Errorf — how to choose
Three Go error patterns explained through a concrete ClaudeGate code review case. When to create a sentinel error, an error struct, or just use fmt.Errorf.
Lessons learned, problems and solutions
Three Go error patterns explained through a concrete ClaudeGate code review case. When to create a sentinel error, an error struct, or just use fmt.Errorf.
Propagating errors from goroutines, collecting all failures from a batch, and surviving panics without crashing the program. The essential patterns for robust concurrent code.
Mastering Go channels: buffered vs unbuffered, select, fan-out, fan-in and worker pool. The essential patterns for making your goroutines communicate without race conditions.
Learning Go parallelism from scratch: goroutines, sync.WaitGroup, the classic loop closure trap and the race detector. With a concrete example — 10 URLs in 1s instead of 10s.
The concurrency vs parallelism distinction explained with a simple analogy, and how Go + Event Sourcing / CQRS leverage both: aggregate single-writer, fan-out projections, pipeline with backpressure.
Four words everyone mixes up. What they precisely mean, how Go expresses them, and how synchronous/asynchronous and concurrent/parallel work together.
The real resources, mental traps, conventions and a concrete learning path to learn Go when coming from PHP, Python or JavaScript.
A Bash script that displays Claude Code quotas in real time in the status bar — context, session, weekly quotas. Zero workflow interruption.
How to write unit tests for a production Bash script without an external framework. Mocking patterns, function isolation, readable assertions.
How to receive an email for every comment on a PHP blog using PHPMailer, Gmail SMTP and without Composer. Manual installation, secure config, best-effort pattern.