Jacek's Blog
Software Engineering Consultant
What does the math tell us about how many job applicants we should look at before hiring one? While onboarding our new employees, how can ideas from the TCP networking protocol help us to identify the optimal workload for them? Why would giving employees unlimited vacation days most likely lead to less vacation being taken? Algorithms to live By - The Computer Science of Human Decisions gives some fascinating insights into such questions.
The Phoenix Project is a novel that has been declared a must-read by many IT executives. It provides smart solutions to the problems that most IT companies struggle with and is at the same time educating to read. What principles does it teach, and where does it fall short?
Why do American coworkers always communicate so clearly and directly, but at the same time criticize rather indirectly and cushioned? When do Asian coworkers finally jump in and say something in a meeting? How do German coworkers get done anything innovative in their fixated planning madness? After having experienced many strange situations in projects with people from around the world, I found Erin Meyer’s book The Culture Map to be so insightful that I would declare it a must-read for any software professional who works with or in international teams.
What separates the truly great software developers from the average ones? People have lots of opinions about this, but it’s often hard to describe what makes the code of a great engineer so good - and what part of it novice programmers should really try to learn from. John Ousterhout’s book A philosophy of Software Design aims to answer this question and actually introduces some extraordinarily appropriate vocabulary for your next discussion about software quality.
This is my trip report from the late 2022 Oceansprint hackathon on Lanzarote. For more information please also have a look on the website: https://oceansprint.org
This article is about how to filter unique items from heterogeneous lists on the type level in Haskell. This example, without further context, might look a bit esoteric by itself, but I learned a lot writing it and wanted to share the experience.
This is my trip report from the awesome NixOS community hackathon on Lanzarote. For more information please also have a look on the website: https://oceansprint.org
This article explains how to quickly set up a C++ project environment with
complete toolchain- and dependency management with nix
.
nix
is a powerful package manager for Linux and
other Unix systems (It is indeed a more powerful alternative to conan
and docker
) that makes package
management reliable and reproducible.
After setting up the project and playing around with it, we will parametrize
the project description in order to automatically build it with different
compilers and dependency library versions (GCC 7 & 8, Clang 7 & 8, lib boost
1.6.6 - 1.6.9, lib poco
1.9.0 & 1.9.1).
While learning Haskell and using its really smart library dependency management tools (cabal
and stack
), i realized that the C++ eco system has a problem:
There are no handy established tools that let the developer declare which libraries (and versions) are required for a project which can then be automatically installed in a portable way.
Nix
however convinced me to be more versatile and powerful than Conan and handier than Docker, Vagrant, etc. (although it’s fair to say that i am mixing use cases here a little bit!)
In this article, i am going to showcase this great tool a little bit.
This article picks up an example operating system kernel code snippet that is written in C++, but looks like “C with classes”. I think it is a great idea to implement Embedded projects/kernels in C++ instead of C and it’s nice to see that the number of embedded system developers that use C++ is rising. Unfortunately, I see stagnation in terms of modern programming in embedded/kernel projects in the industry. After diving through the context i demonstrate how to implement a nice iterator as a zero cost abstraction that helps tidy up the code.