Posts

Showcase Projects

Instead of pet projects — which for most of us end up frozen in the state shown in the picture1 — I make a point of building showcase projects. The approach has worked out well and (I think) caught on with my team.

Read more →

Service Template

Even among strong engineers you can often hear the following take:

Well, microservices — that’s where everyone tinkers however they like, picks whatever they want, and somehow solves problems on their own.

Unfortunately, this is a common misconception. Let’s talk about the benefits of applying the Service Template1 pattern at the company level.

Read more →

Engineering Maturity

Engineering maturity is a marker of strong preparation, depth of experience, and breadth of perspective.

My current and former coworkers know that I use three terms to characterize the level of engineering maturity:

  • Consistency
  • Systematicity
  • Reproducibility

Let’s go through what I mean by each. I’ll bring examples from my own domain and would be glad to hear yours in the comments.

Read more →

traefik

This post is a response to a comment from one of my subscribers, who suggested the topic for the next post:

… how to set up Docker so the LB routes straight into the right containers

How do I see the task?

Read more →

mkcert

When developing locally, many people skip simulating https and run their services over http.

Here’s the task:

  • Serve traffic locally over https with a valid certificate;
  • Make it easy to reproduce — not just for you, but for everyone on your team.

Read more →

dnsmasq

Many of us, back in the day, did web development, and to develop and test the next project locally we’d add another entry to /etc/hosts along the lines of:

127.0.0.1       next-project.tld

Read more →

http.DefaultClient

“1024 lashes for anyone using http.DefaultClient in their code” — that’s the kind of “joke” you hear at our standups. The problem is that the defaults don’t set any timeouts. There’s a great article on the topic on the Cloudflare blog1.

Read more →

uber/fx + gRPC

I use Uber’s fx1 IoC container in my work. There are camps on both sides — fans and detractors of this kind of solution — but here we’ll focus specifically on using fx.

If you’re not familiar with the basics, I recommend going through the official Quick Start2. It’ll help you get your bearings.

Read more →

Gitlab Subgroup + go get

Given:

  • gitlab, most likely deployed inside an internal network;
  • “perfectionism” that demands everything be filed neatly into folders, or a directive from above;
  • an internal Go package that needs to be installed as a dependency.

Read more →

Jetbrains Space + go get

Given:

  • You’re using Jetbrains Space1.
  • You write code in Go.
  • You need to create a shared library and pull it in as a module across your internal projects.

Read more →