When it comes to algorithms, performance is the first non functional requirement that comes into mind. Besides efficiency of the algorithm itself (complexity, branches, multiplications,…), there are a lot of things that can be done during implementation. Some optimizations might lead to higher code complexity, reduced readability and overall decreased maintainability. In this article we’ll take a different approach to implement the convolution algorithm in C/C++. It should be fast (enough) while being as maintainable as possible.
Looking for new versions of libraries and updating them can be a tedious task, especially if you have to deal with multiple dependencies and many repositories. Renovate is a tool that can scan your dependencies and update them to the latest version. But can this also be utilized in a C++ project with CPM.cmake?
Continuous Integration  goes far beyond testing and building code nowadays. Test code coverage and other reports might get created, documentation might get updated and metrics and statistics might get refreshed. This article shows how these results can be pushed back into the repository using GitHub Actions .
One thing, that leads to many discussions, is how and if
hashCode methods should be tested.
Most of the time these methods get generated.
It doesn’t seem right to test generated code.
On the other hand, not testing these methods leads to poor test coverage statistics. In rare cases, when these methods are not regenerated or edited manually, they might cause bugs, that are very hard to find. In this post, I’ll show you an effective way to test all
hashCode methods within one single test class.