Author Archives: bullgare

Heroes 3 on a Steam Deck

That’s how you install it: original — copy (better structured but a bit less detailed) — That’s how you add a Jebus Outcast template —

DDD/Clean Architecture go linters

Origin (in Russian) Tech talk (paid access only, unfortunately): Presentation: Linters Dependencies between layers: Others: — to check using all microtypes in enums/switches. + — to prevent using struct tags in Domain models (Value Objects). — to prevent changing Value Objects (Domain models) from outside of the …

Read more

Protobuf: safer usage for buf

A drop-in replacement for buf issued by Ozon. Repository: Presentation (for subscribers only, unfortunately):

Maps internals in Go

Idea Map is passed as a value, but it consists of a pointer to hmap which has all the details on map implementation. So, if you change/add to map, it will be reflected everywhere. And that’s why you cannot assign to an uninitialized map (no memory allocated, no hash seed generated yet). runtime/map.go

Buckets …

Read more

mountebank for mocking and stubbing http services (rest+graphql+grpc) can be used to stub http(s)/tcp/smtp protocols. And has community plugins for grpc, graphql, websockets. You can configure it with imposters.ejs like below:


HTTP Toolkit — another alternative to Charles Proxy for http calls interception It has a free version which does something similar to Charles Proxy, so you can hack into the middle of any request/response according to the rules specified.

YouType to show flag icon for current locale on MacOS

It has reacher functionality, but I use it only to show a flag for my current locale in a tray.

Add new video sticker pack to telegram

If you have an animated gif-file, you can convert it to webm video respecting rules described in the docs ( For stickers, one side must be exactly 512 pixels in size – the other side can be 512 pixels or less. For emoji, the video must be exactly 100×100 pixels in size Video duration must …

Read more

Docker and Kubernetes basics for developers

Docker Docker containers are much more lightweight compared to classic VMs as they leverage host OS instead of starting their own OS. Containers are using 2 features of Linux-based OS: Namespaces and Cgroups (Control Groups). Namespace Lets you allocate resources in an isolated environment (like a sandbox). On a container start, docker daemon generates a …

Read more

Go’s Concurrency and Channel Internals

Go is implementing CSP (Communicating Sequential Processing): processes are communicating through channels, they can block each other while waiting for read/writes to channels. Actor model makes inter-process communications more explicit and non-blocking. CSP vs Actor explained — Channels requirements goroutine-safe store and pass data across goroutines FIFO can block/unblock goroutines