After diving seriously into Rust, I gained a fresh appreciation for Go’s elegance. Far from being stuck in the 70s, Go brought real novelties compared to the options available at the time.
In praise of Go


After diving seriously into Rust, I gained a fresh appreciation for Go’s elegance. Far from being stuck in the 70s, Go brought real novelties compared to the options available at the time.

Ever wondered what happens when you cast a string to a byte slice in Go? This deep dive explores the runtime mechanics, memory allocation implications, and why understanding immutability matters for writing efficient Go code.

A mysterious exitFunc led me to a 4-year-old workaround hiding a mutex bug. Instead of fixing the root cause, someone had silently restarted the pod on panic. A reminder that masking problems robs you of growth—always dig deeper and find the real bug.

A journey through four generations of programming languages—from procedural C to modern Go and Rust—exploring how each solved the problems of its predecessors while introducing new tradeoffs in memory management, performance, and developer experience.

Building a distributed job scheduler doesn’t require Kafka, Redis, or complex coordination protocols. For small-to-medium scale SaaS products, your database can handle the coordination. Here’s how to build one in Go.