What I'm doing now?
In general Coding: Golang/gRPC/Protobuf/Bazel. Reading: in progress “ Reminiscences of a stock operator ” by Edwin Lefèvre Books I’ve read so far . – Updated October, 2025
Recent content on Software Engineering by Eugene Khabarov
In general Coding: Golang/gRPC/Protobuf/Bazel. Reading: in progress “ Reminiscences of a stock operator ” by Edwin Lefèvre Books I’ve read so far . – Updated October, 2025
Books, I’ve reviewed Books, I’ve read 2026 2025 2024 2023 2022 2021 2020 2019 2018 2017 2016 2015-2010 Books I’m reading now Books, I’ve reviewed “ Protocol Buffers Handbook: Getting deeper into Protobuf internals and its usage ” by Clément Jean Books, I’ve read 2026 " Flash Crash " by Liam Vaughan, 22.02.2026 2025 " 438 Days " by Jonathan Franklin,…
genrule + cat genrule + Go binary Add a generator dependency Golang uses code generation heavily. Here-and-there developers generate gRPC stubs, parts of source code, documentation, commit messages, etc. Go even has a special //go:generate directive. Bazel moves code generation to the next level. In this post, I’ll show you how to produce and build Go code with Bazel and with generators…
Whenever we work with gRPC and protobuf, we generate code. The code generator has some rules, and we know beforehand what to expect. In this post, I’ll show you how to use this knowledge. Let’s say we build a REST API on top of the gRPC one, and one or more of our list endpoints have two parameters: page and limit . The first specifies a page to return within a list, and the last is…
Outcome Pipeline for PR Workflow Pipeline for Tag CI/CD pipeline is a piece of automation that resided outside of usual developers’ duties. On the other side, it’s an essential component of any system. Today, we’ll see how to simplify life with a correctly set up pipeline. Outcome By the end of this part, we build two pipelines. The first one will build binaries for every pull…
Any tool has some purpose to use and requirements. The build tool’s purpose is to provide a simplified and straightforward way to build a complex code base and produce several completely different artifacts, such as libraries, binaries, Docker images, etc. The purpose does not include deploying these artifacts, though these artifacts should be ready for deployment. Build tool has to help be…
Outcome Service One Protobuf definition. Implementation It’s time to run go build , right? BUILD files Rules and targets proto_library (rules_proto) go_proto_library (rules_go) go_library (rules_go) proto_descriptor_set (rules_proto) go_binary (rules_go) go_image (rules_docker) container_image (rules_docker) k8s_object Outcome By finishing this part, we will have a Go binary and a Docker…
Outcome What is Envoy proxy? What is the protobuf descriptor set? Configuration: envoy.yaml Envoy admin interface Static configuration Listeners Filter chains: HTTP connection manager Access log settings Routes matching HTTP filters: gRPC-JSON transcoder Clusters BUILD file Outcome In this part we’re going to build Envoy container with all necessary information for transcodging inside. What…
Outcome What is Kubernetes? k8s on localhost What is Tilt? Bazel again Tilt and Bazel: the flow Run Tilt with Bazel WORKSPACE file tools/BUILD file wrapper.sh K8s objects: namespace, deployments, and services :yaml targets :yaml targets with rules_ytt Outcome By finishing this part, we can set up the local Kubernetes cluster, deploy our gRPC service with Envoy , and automatically update those two…
Glossary Outcome Additional resources Updated plan External authorization service (ext_authz) What is the “authz” service in a nutshell? denied/allowed functions Envoy configuration service-one Glossary Authentication (authn) is a verification of the user’s identity. Authorization (authz) is a verification of the user access permissions. Outcome This part will show you how to…
Intro Working on different projects, I’ve been using various ways for building apps, like a go build or make something and other magic commands. The more significant project, the more magic behind the build process. But, the issue is, there should not be any magic. Any build command or tool should be clear and straightforward, at least for developers who use it. While in most cases, I see…
Intro Recently I was working on go-syslog 1 package making some changes for a private project. This package parses incoming Syslog 2 records and returns structured data. My first questions, when I opened a file https://github.com/influxdata/go-syslog/blob/develop/rfc3164/machine.go were: “What a heck is that?”, “Who is writing in Golang but in C-like style?” and “How…
In software engineering, dependency injection is a technique in which an object receives other objects that it depends on Source: Wikipedia In the most of my applications Dependency Injection(DI) looks like this: let’s say we have a gRPC server with one method called GetEntity which will be listening for incoming connections on 0.0.0.0:5000 and it will be returning entities from database.…
After my recent tweet Finally set up #spotify-tui + spotifyd on #FreeBSD. pic.twitter.com/OKUtxGgH0t — Evgeny Khabarov 🇨🇦 (@eekhabarov) March 29, 2020 I was asked questions about the set up, so this article is an answer for them. Due to Spotify has no official application for my beloved FreeBSD and Spotify web player requires enabled DRM in browser, I have no idea what DRM is and what it’s…
Read the docs before writing Golang code Go Tour Project organization or How to write Go code Effective Go is a must read Golang FAQ Language specification Package docs Golang blog Books The Go Programming Language by Alan A. A. Donovan Go in Action by William Kennedy Go in Practice: Includes 70 Techniques by Matt Butcher
In the first part I was talking about building simplest gRPC API. But the real world is complex and real APIs rarely look like a calculator. Today we will be looking at layered application which consists of number of parts or layers . Our task is to expose data from database to the world through gRPC API. This time we will be writing Order API. Let’s go! Application layers Our application…
Talk Date Slides/Videos When "go build" isn't enough: Introduction to Bazel Jan 14, 2026 video (ATX Golang meetup) video (Conf 42) godoc pdf Protobuf-First APIs: gRPC & Co. Oct 27, 2020 godoc pdf Interfaces in Go Dec 4, 2019 godoc pdf protoc-gen-struct-transformer plugin Nov 6, 2019 video godoc pdf Concurrency in Go May 29, 2019 godoc pdf NOTE : For the “godoc” version of…
Hi 👋, I’m Eugene, a Build 🛠️ & Developer Experience Engineer with 20+ years in software engineering — the last 5 spent in the glorious trenches of build systems, developer tooling, and convincing monorepos to behave themselves. My main obsession is Bazel . Not in a “ I read the docs once ” way — in a “ I’ve stared at Starlark stack traces at…
In this article I’m going to describe how to build simplest gRPC API. Building such API is consists of several steps: First of all, we have to define our API interface with protocol buffers or protobuf. Then we have to generate Golang server and client stubs with protoc command. And finally we need to implement our API. What our service will be doing is a calculations. At the moment it has…