Skip to main content Logo (IEC resistor symbol) logo

Quis custodiet ipsos custodes?
Home | About | All pages | RSS Feed | Gopher

Hi there!

I'm Remy, a developer with a focus on C, C++, linux and embedded systems.

I currently work for De Jong DUKE were I develop software for an embedded platform that powers coffee machines. This is a C++, C and Qt stack running on Yocto linux and Nucleus RTOS. It controls hardware, runs the UI and has a few utilities for IoT connectivity and configuration. Technology is mostly C++ but includes Microsoft Visual C++, Flash, Qt and ARM kernel drivers.

I've been a Linux and UNIX sysadmin for over 10 years.

To read more or get in touch, click here.

This is my personal website, these articles do not reflect or are based on work, opinions or policies of any of my (previous) employers. Any resemblance to reality is pure coincidence.

Latest Items

Bash bits: split a file in blocks and do something with each block

02-09-2019 | Remy van Elst

Bash Bits are small examples, tips and tutorials for the bash shell. This bash bit shows you how to split a file into blocks (multiline) and do something with each block. This can be used for certificate chains or other files which have multiline blocks.


Bash bits: find has a -delete flag

14-07-2019 | Remy van Elst

Bash Bits are small examples, tips and tutorials for the bash shell. This bash bit shows you that find has a -delete option. I recently found this out, before I would always use -exec rm {} ;. The delete flag is shorter, performs better and is easier to remember.


Only zero is false, everything else is true in C++

12-07-2019 | Remy van Elst

When using numbers in a boolean (implicit conversion), remember that only zero evaluates to false. Anything else, including negative numbers, will evaluate to true. This snippet talks about the rules for implicit conversion in C++ when using booleans. For seasoned programmers it's nothing new, but I found it interesting.


GNUplot tips for nice looking charts from a CSV file

06-07-2019 | Remy van Elst

Recently I had to do some testing which resulted in a lot of log data. Looking at a bunch of text is not the same as seeing things graphically, this particular logdata was perfect to put in a graph. My goto favorite tool for graphs and charts is gnuplot. Not only is it very extensible, it is also reproducable. Give me a configfile and command over 'do this, then this and then such and such' in Excel to get a consistent result. In this article I'll give tips for using gnuplot, which include parsing a CSV file, a second axis, environment variables, A4 PDF's and a ton of styling options for a nice looking chart.


Gherkin 30% keyboard build log and review

29-06-2019 | Remy van Elst

The Gherkin keyboard is a 30% (actually a 30 key) keyboard kit. I've built one and used it for a while, this article covers the build and my experiences with such a small board.


connman operstate list

25-06-2019 | Remy van Elst

Recently I was debugging connection issues with a system that uses connman as it's network management software. In the log it was visible that the connection went away and came back, logged with 'operstate' $number $state. I couldn't easily find an overview of all the possible states, but since it's open source we can take a look at the code to find out. Publishing it here for future reference.


C++ template definitions in a .cpp file (instead of a header file)

22-06-2019 | Remy van Elst

In this snippet I'll show you how to place your C++ template definitions in a seperate .cpp file. I'd recommend you to just put template definitions in your header file, or a .hpp file, but if you really want to there is a trick to get them in a seperate .cpp file. The trick is to explicitly instanciate every template you're going to use at the end of the .cpp file. With many different templates and types this becomes cumbersome, but for certain usecases it could be useful.


C++ create and write to a CSV file with a variadic template

17-06-2019 | Remy van Elst

In this snippet I'll show you a variadic template to write to a file. In line with my other experiments to get a better grasp at templates, this example improves on my earlier attempt by using a variadic template, thus allowing you to provide an infinite number of columns to the csv file of any type that has the overloaded << operator.


C++ create and write to a CSV file

Published: 07-06-2019 | Last update: 16-06-2019 | Author: Remy van Elst

In this quick snippet I'll show you how to create and write to a csv file. It includes checking if the file is writable, and if it's not there, creates it with a different first row as header. It's a quick example, I've used it to log some test data. It can probably be improved.


Dark Reader, dark mode for any website

15-06-2019 | Remy van Elst

Recently I discovered a firefox extension that converts any website into a dark version. Works both on firefox for mobile and on the desktop (and all other major browsers), is open source, causes less strain on the eyes and improves battery life. Just as the earlier post on Blokada, I find this such a cool piece of software I wanted to share it with all my readers.


Cooking with C++ templates and stronger types

13-06-2019 | Remy van Elst

To gain a better understanding of C++ templates I'm playing around with them. Most of the online guides stop at the example of a simple template to, for example, get the max of two inputs, or cover just a bit more (like how to overload operators for your specific template classes to make << and + / - work). Combining templates with a stronger type to pass stuff around led me to a test kitchen. As in, some code with ingredients, amounts and an oven. One small thing kept it from working, after some feedback it turned out I was passing the wrong parameters to the template. Afterwards the error also made sense. This post covers both my learning and a small piece on stronger types.


View all Items