How the ArduinoJson logo was made

ArduinoJson, my popular JSON library for embedded systems, finally has its logo! This article describes how the logo was created. Finding a designer To design this logo, I used Fiverr, which is a website that allows creatives to offer their service for a reasonable amount of money. In this case,…

READ MORE

[C++] What's new in clang-format 5

Clang 5 was released last week. It's a good opportunity to talk about a not-enough-known tool: Clang-format. Clang-format is part of the Clang project but can be used without the Clang compiler. It's an independent executable. Clang-format is a code linter for C++. It takes a non-formatted code as input…

READ MORE

[C++] Lightweight float to string conversion

This article presents a simple algorithm for converting floats to string. It's designed to have a small code and limited RAM usage, making it a perfect fit for embedded systems. As a matter of fact, it's part of ArduinoJson 5.10. It features: Small code size Small memory usage No…

READ MORE

[C++] How to GetProcAddress() like a boss

When programming on Windows, you usually use the functions from another DLL through an import .lib that links the functions used in your program with the functions exported by a DLL. Manual DLL loading However, there are a few situations where you cannot use this scheme: You may simply not…

READ MORE

[DIY] Fix a Riviera & Bar Kettle

I own a Riviera&Bar Kettle model QD 658 A. It's been working for years, but recently it started to go crazy. It would start heating to 100°C by itself as if a ghost pressed the button. This article explains how to fix this. Explanations: The problem is…

READ MORE

[Synology] Auto connect VPN at startup

The built-in VPN client of Synology DSM 6 is excellent, but it lacks one key feature: being able to connect the VPN automatically after a reboot. Prerequisite: 1. You need to have SSH enabled on the Synology 2. You need basic knowledge of Unix (sudo, cat, vi, chmod, ln -s)…

READ MORE

[Linux] daemon() considered harmful

I'm currently writing a Linux program that is supposed to run in the background. When it was time to implement the --daemonize, I look at the current options and I was quite surprised to learn that daemon() or fork() are not the best way to write a daemon nowadays. Indeed,…

READ MORE

Embrace abstractions!

Abstraction is probably the most powerful concept in programming. Nevertheless, from time to time, I hear (or read) people questioning the value of abstractions. Here is my answer. We are surrounded by abstractions An abstraction is a simplified model (a mental model, if you will) that is used in place…

READ MORE