Reverse Address Resolution Protocol (RARP)

These days, we take certain things for granted: there’s always DHCP, PXE-enabled clients and modern UEFI firmware with rich UI and mouse support. Imagine we are in the 1980s: the Xerox Alto already exists, but it’s still too early even for BOOTP. Though the world looked very different back then, the problem of network booting was already there. The concept is simple: computer contains bootstrap code stored in a non-volatile memory (e.g. ROM), which allows it to connect to a server and retrieve the kernel over a network. ...

27 Apr 2025 · 6 min · 1074 words · Anton Troyanov

Importance of tests readability

We all love to say that tests are important and strive to get at least 80% test coverage. But very often, tests are not considered to be a real code. Developers treat tests as second-class citizens. It’s just a test; who cares if it is messy, right? And nowadays, with all the AI coding assistant tools, we can just ask the machine to write tests for us because writing tests is boring. ...

12 Apr 2025 · 5 min · 1039 words · Anton Troyanov

Go test inside LXD container

When you’re testing software that interacts with another system, it’s common to mock all the dependencies. But let’s be real – mocks are great for simulating interactions, yet they don’t give you any guarantees that the actual integration between systems will work as expected. What is the purpose of mocking database if your code relies on the database behavior (e.g. unique index constraint)? You should always consider writing integration tests! ...

30 Mar 2025 · 3 min · 630 words · Anton Troyanov

Git conditional user.email

I do have my global .gitconfig where I prefer to have my personal email address, and for every work related repository I used to do git config user.email [email protected] but there are always situations when I forget to do this. Here comes the solution: includeIf that is available since git 2.13 and makes it a bit easier. In my ~/.gitconfig I do have: [includeIf "gitdir:~/D/canonical"] path = ~/D/canonical/.gitconfig And under ~/D/canonical I simply have another .gitconfig where I set my user.email to my corporate email address. And voila, it will automagically apply a proper email for every git repository under configured path. ...

21 Mar 2025 · 1 min · 109 words · Anton Troyanov

Hello world

Back in a day I had a homepage – a place where I collected interesting findings and discussed various topics with others via guestbooks. But with the rise of social networks that quickly became obsolete as everyone moved to MySpace, then Facebook, and later Twitter or Mastodon. Yet, despite all these social media platforms, I never felt like I had a true home on the web. This blog is my attempt to change this. Here, I’ll share my findings on anything related to software development (and not only) that can potentially be interesting to others. ...

17 Mar 2025 · 1 min · 95 words · Anton Troyanov