Practical Go patterns: error handling, context, and concurrency

Practical Go patterns: error handling, context, and concurrency

Error handling in Go Go’s approach to error handling is often a topic of debate among developers. Some love it, some hate it, but one thing is for sure: it’s unique. In Go, errors are values, and you handle them using the if err != nil pattern. This might seem verbose, but it encourages explicit error checking and handling. The if err != nil pattern Let’s look at a simple example:...

July 10, 2026 · 4 min · 778 words · Maxim Zhirnov
Практические рисунка: обработка ошибок, контекст и параллелизм

Практические рисунка: обработка ошибок, контекст и параллелизм

Обработка ошибок в Go Подход к обработке ошибок в Go часто становится предметом споров среди разработчиков. Кому-то он нравится, кому-то нет, но одно можно сказать наверняка: он уникален. В Go ошибки являются значениями, и вы обрабатываете их с помощью шаблона if err != nil. Это может показаться многословным, но такой подход поощряет явную проверку и обработку ошибок. Шаблон if err != nil Рассмотрим простой пример: func readFile(filename string) ([]byte, error) { data, err := ioutil....

July 10, 2026 · 4 min · 705 words · Maxim Zhirnov
Implementing Network-Level Rate Limiting with eBPF and Go: A Deep Dive into Kernel-Space Traffic Control

Implementing Network-Level Rate Limiting with eBPF and Go: A Deep Dive into Kernel-Space Traffic Control

Why Your User Space Rate Limiter Is Probably Crying If you’ve ever tried to implement rate limiting in user space, you know the feeling. Packets arrive at the network interface, traverse through several kernel layers, bounce around in syscall overhead, and by the time your beautifully crafted rate limiting logic gets a chance to inspect them, you’ve already lost the performance battle. It’s like trying to stop a tsunami with a garden hose while wearing roller skates....

January 12, 2026 · 14 min · 2972 words · Maxim Zhirnov
Внедрение rate limiting на уровне сети с использованием eBPF и Go

Внедрение rate limiting на уровне сети с использованием eBPF и Go

Почему ваш ограничитель скорости в пользовательском пространстве, вероятно, плачет Если вы когда-либо пытались реализовать ограничение скорости в пользовательском пространстве, то знаете это чувство. Пакеты поступают на сетевой интерфейс, проходят через несколько уровней ядра, обрабатываются системными вызовами, и к тому времени, когда ваша тщательно продуманная логика ограничения скорости получает возможность их проверить, вы уже проиграли битву за производительность. Это как пытаться остановить цунами садовым шлангом, катаясь на роликах. eBPF (расширенный Berkeley Packet Filter) меняет всё уравнение....

January 12, 2026 · 5 min · 986 words · Maxim Zhirnov
Building an A/B Testing System in Go: From Zero to Production-Ready Experiments

Building an A/B Testing System in Go: From Zero to Production-Ready Experiments

Building an A/B Testing System in Go: A Practical Guide to Smart Experimentation So you want to run A/B tests in Go. Good news: it’s not rocket science. Bad news: it’s also not as simple as flipping a switch. But here’s the thing—once you’ve got it working, you’ll have superpowers to validate your ideas with real data instead of gut feelings. And that’s when things get interesting. In this article, we’ll build a complete A/B testing system from scratch....

January 7, 2026 · 11 min · 2242 words · Maxim Zhirnov