Hi there 👋

I am Igor and I write here about tech stuff and what I learn along the way.

German salary breakdown

Salary and income are generally a taboo topic in many cultures, and Germany is no exception. It is uncommon to discuss your income at all, as deemed private. Personally, I totally get it and feel the same way. However, this veil of secrecy often obscures details that distort the big picture. As an employee, the most important figure regarding your compensation is a gross salary. Gross salary is the base amount a company offers you; every other calculation is relative to this number. After all mandatory deductions are made, what you keep is your net income. It sounds simple enough, but there is more to it than that. ...

April 19, 2026 · 2 min

Setting up this log section

Just spent some time setting up this new log section for my blog. The idea is to have a place where I can share more casual, diary-style posts without the pressure of making them super polished and comprehensive like my main blog posts (single post kekw). This or just the wish to tinker with Hugo, haven’t decided yet.

February 9, 2026 · 1 min

Response Body and Connection Reuse in Go

Introduction If you have ever used the net/http package in Go, you know that you should close Response.Body. The io.ReadCloser type and its accompanying comment make this very clear. type Response struct { ... // The http Client and Transport guarantee that Body is always // non-nil, even on responses without a body or responses with // a zero-length body. It is the caller's responsibility to // close Body. The default HTTP client's Transport may not // reuse HTTP/1.x "keep-alive" TCP connections if the Body is // not read to completion and closed. // // The Body is automatically dechunked if the server replied // with a "chunked" Transfer-Encoding. // ... Body io.ReadCloser ... } If you are attentive, you might also notice the part about reusing the connection. The comment states that for the underlying connection to be reused, the Body should be read to completion. However, for me, it’s unclear who’s responsible for that. Why? I am not exactly sure - maybe because I’ve gotten used to Close methods handling all termination logic, or because the comment on the next line looks like a good-to-know detail rather than a call to action. ...

January 16, 2025 · 9 min