software engineering craftmanship blog
Home / About

View on GitHub
22 October 2022


A different approach to Convolution

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.

5 September 2022


Visualize Catch2 benchmarks with Vega-Lite

Whereas there are many tools that visualize unit test results, fully automated visualizations of benchmark results are hard to find. This article shows step by step, how to create a bar chart with Vega-Lite from scratch and how to use it to visualize Catch2 benchmark results for C++.

3 August 2022


Keep your C++ dependencies up-to-date with Renovate & CPM

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?

21 February 2021


Continuous Integration for JavaScript with npm

Whereas there are numerous guidelines on how to setup specific tools like npm, combining all components to a build assembly line can be a tedious task. This article is intended to be a starting point, that gets you up and running with selected tools and references for vanilla JavaScript development. You can take it from there, exchange parts, add some more and dig into their configurations.

8 March 2020


Testing all equals and hashCode methods

One thing, that leads to many discussions, is how and if equals and 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 equals and hashCode methods within one single test class.