Ilya Brin - Software Engineer

History is written by its contributors

Go Channel Hell: How We Defeated chan map[string]*map[int]chan struct{}

2025-05-14 8 min read Golang Concurrency Refactoring Ilya Brin

Hey Gopher! 👋

Have you ever seen code like chan map[string]*map[int]chan struct{}? If yes, then you know what channel hell is.

This is a story about how we started simple, reached nightmare, and found an elegant solution. A real-time notification system that grew from 100 users to 100,000, and how we refactored the channel architecture.

Spoiler: we ended up replacing all this horror with 3 simple interfaces and typed channels 🚀

Continue reading

Go Race Detector: Finding and Fixing Data Races

2025-01-15 8 min read Golang Concurrency Debugging Ilya Brin

Hey bug hunter! 👋

Data races are the most insidious bugs in concurrent programs. They hide in production, don’t reproduce locally, and corrupt data in the most unpredictable ways.

Fortunately, Go has a built-in race detector that finds these bugs automatically. It’s like an X-ray for your concurrent code!

Let’s explore what data races are, how to find them, and how to fix them using Go Race Detector 🚀

Continue reading