Let’s see how to edit descriptions of Jira issues in Vim or Neovim. We will do this by installing a browser extension that can open text fields in an external editor. We will also cover how to make Jira issues syntax-highlighted in Vim, how to enable spell checking, and how to use snippets to speed up the writing of Jira issues. The approach described in the blog post can be used to edit text fields on other sites as well, such as GitHub or Stack Overflow.
Read More
My Career So Far
In this post, I take a trip down memory lane by looking back at my professional career so far.
Read More
Choosing a Software-Engineering Career Path
In this article, I provide tips on choosing a software-engineering career path that is right for you. We will take a look at whether you should stay as a Senior Software Engineer, switch into management (Engineering Manager), or move into technical leadership (Staff Software Engineer).
Read More
When You Import a Python Package and It Is Empty
Recently, I have stumbled upon an apparently strange situation in which a non-empty Python package was empty after it got imported. Let’s take a close look at that issue because it may happen to anyone.
Read More
Accidentally Overwriting Another Local Variable in C and C++
An example of a subtle bug that you can run into in C and C++: accidentally overwriting another local variable. Such an issue can manifest only on certain systems, and can be hard to debug if you have not seen it before. An oldie but goodie.
Read More
Not All Developers Want to Be Managers, and That’s OK
My personal musings on the common thought that a senior developer is only a stepping stone to a manager.
Read More
Even a Feature That You Do Not Use Can Bite You
Let’s have a look at a simple piece of Python code that I have both accidentally written and seen in code reviews which does an entirely different thing than expected.
On Incomplete HTTP Reads and the Requests Library In Python
The requests library is arguably the mostly widely used HTTP library for Python. However, what I believe most of its users are not aware of is that its current stable version happily accepts responses whose length is less than what is given in the Content-Length header. If you are not careful enough to check this by yourself, you may end up using corrupted data without even noticing. I have witnessed this first-hand, which is the reason for the present blog post. Let’s see why the current requests version does not do this checking (spoiler: it is a feature, not a bug) and how to check this manually in your scripts.
Read More
Implementing multiprocessing.pool.ThreadPool from Python in Rust
In this post, we will implement multiprocessing.pool.ThreadPool
from Python in Rust. It represents a thread-oriented version of multiprocessing.Pool
, which offers a convenient means of parallelizing the execution of a function across multiple input values by distributing the input data across processes. We will use an existing thread-pool implementation and focus on adjusting its interface to match that of multiprocessing.pool.ThreadPool
.
Read More
When auto Seemingly Deduces a Reference in C++
One of the first things that C++ programmers learn about auto
is that bare auto never deduces a reference. In the present post, I show you two examples when it seemingly does. The first one involves proxy objects. The second one concerns structured bindings from C++17.
Read More