distcc is a program to distribute compilation of C, C++, Objective C or Objective C++ code across several machines on a network. Just evaluated distcc for building a ~1,4 Mio lines of code C++ code base on Linux with GCC. My local machine is already quite powerful. I usually build on 8 cores simultaneously (ninja… Read More


In this post I give an overview of my evaluation of three different CPU profiling tools: gperftools, Valgrind and gprof. I evaluated the three tools on usage, functionality, accuracy and runtime overhead. The usage of the different profilers is demonstrated with the small demo program “cpuload” available via the github repository gklingler/cpuProfilingDemo. The intent of… Read More

Todays applications grow rapidly, complexity increases and finding bugs becomes more and more difficult. Especially for multi threaded applications, for applications that heavily depend on asynchronous external events or for applications that you don’t have local access to, an appropriate logging facility is invaluable for tracking down bugs. Boost.Log (v2) is a powerful C++ library… Read More


In one of my earlier posts I showed you why and how I use chroots for software development. In situations were the isolation of a chroot is not enough, I sometimes also used virtual machines. Both solutions have its pros and cons: A chroot is quite easy to setup and access with no virtualization overhead… Read More


In my previous post I wrote about include dependencies in general – why they matter and how to keep them at a minimum. In this article I’ll give a quick overview about the tools I evaluated and used to examine and adjust include dependencies of a large C++ project. I’ll cover some useful gcc compiler… Read More


When we think of dependencies, we usually think of “logical dependencies” at first: logical relations between classes, functions etc. Object oriented design, generic programming, encapsulation, design patterns are aimed to cut this “logical dependencies”. But there are also compile time dependencies – dependencies between files and libraries at compile time. This article is on include… Read More


When we develop a piece of software or functionality the following is true in many cases: It does not need to be super performant, it does not need to be robust to handle every imaginable error or flexible and generic to meet any future need. The test coverage does not need to be 100% and… Read More


I recently played around with Docker and tried to get OpenGL with hardware acceleration/direct rendering (DRI) to work. This was no big deal, but there are some things that must be considered and I want to share with you: The graphics driver in the docker container must be the same as on the host system. The X server on… Read More