Skip to main content

Raymii.org Raymii.org Logo

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

Hi there!

I'm Remy, a developer from The Netherlands with a focus on C++, 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++ and Qt stack running on Yocto Linux. It controls hardware, runs the UI and has a few utilities for IoT connectivity and configuration. Technologies I'm fluid in include C, C# & C++, Windows (MFC/Win32), .NET (Core, Xaml, Framework and C++/CLI), Flash, Qt, PowerShell and ARM kernel drivers. I was Linux and UNIX sysadmin for over 10 years before I got into development.

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

Bare Metal Vi, boot into Vi without an OS!

22-04-2023 22:30 | Remy van Elst

This guide shows you how to run Vi without an operating system, bare metal. This is a follow up on my article from 2014 where I made a custom linux distro that would Boot to Vim, VIM as PID 1. This time we go further, we boot into Vi without an operating system. This is made possible by Cosmopolitan, a libc that outputs a POSIX-approved polyglot format that runs natively on Linux + Mac + Windows + FreeBSD + OpenBSD + NetBSD + BIOS with the best possible performance and the tiniest footprint imaginable.

Read more...

OpenVMS 9.2 for x86, Installing HAProxy and troubleshooting UNIX file paths

19-04-2023 22:30 | Remy van Elst

This article shows you how to install HAProxy on OpenVMS 9.2 for x86. I've often used HAProxy in my career as a sysadmin and find it a very useful tool. HAProxy is an open source, fast, reliable load balancer for TCP and HTTP-based applications. This guide assumes you've set up your OpenVMS system via my guide and the second part of my guide, that will give you a fully licensed OpenVMS installation with networking and SSH access. Since I've used HAProxy so very often to set up high-available clusters and load balancers, I was surprised but happy to see it ported to OpenVMS. This guide shows the setup but also a few OpenVMS specific quirks, like file paths and troubleshooting error messages / logs.

Read more...

OpenVMS 9.2 for x86, Getting Started part 3, the WebUI

16-04-2023 22:30 | Remy van Elst

OpenVMS on x86 is now available for hobbyists! Almost a year after the official release. This is a part 3 of my getting started guide. Part 2 ended with a working network setup and SSH access. In part 3 we'll do something very exciting, installing the WebUI, a web based management interface for OpenVMS. I'll also share a few smaller tidbits, like how to use the interactive text editor via an ssh session and how to use unzip.

Read more...

Site update, cookie consent popup (for a static site)

Published: 22-03-2023 | Last update: 16-04-2023 19:30 | Author: Remy van Elst

A small site update this time, just to let you know that I've added a cookie consent popup to this static site. If you reject all cookies, you should not see any advertisements and aren't tracked by Google Analytics. It's open source, cookieconsent by Orest Bida.

Read more...

OpenVMS 9.2 for x86, Getting Started part 2, auto boot, licenses, PAKs, networking and SSH

15-04-2023 22:30 | Remy van Elst

OpenVMS on x86 is now available for hobbyists! Almost a year after the official release. This is a part 2 of my getting started guide. Part 1 ended with an installed system, this part continues with automatic startup, activating the license files (PAKs) and setting up networking including SSH access.

Read more...

OpenVMS 9.2 for x86, Getting Started part 1, install guide with VirtualBox

11-04-2023 22:30 | Remy van Elst

OpenVMS on x86 is now available for hobbyists! Almost a year after the official release. This is a part 1 of my getting started guide, showing you how to install OpenVMS on VirtualBox on Windows 10/11. More parts will follow, documenting license installation, network setup, ssh, application installation etc.

Read more...

OpenVMS 9.2 for x86 is finally available for hobbyists!

Published: 09-04-2023 23:59 | Last update: 11-04-2023 22:29 | Author: Remy van Elst

OpenVMS x86 is now available for (most) hobbyists! Almost a year after the official release most hobbyists can now login to the Service Portal to download their copy of OpenVMS 9.2 for x86, X86E921OE.ZIP and the PAK (license) files (x86community-20240401.zip), valid until April 2024.

Read more...

Named Booleans prevent C++ bugs and save you time

17-02-2023 20:21 | Remy van Elst

During a recent code review I found a hard to spot bug, a misplaced parenthesis in an if statement. I often employ a technique I call named booleans, which would have prevented this bug. It's a simple technique, instead of a long if statement, give every comparison a seperate boolean variable with a descriptive name and use those variables is the if statement. This post shows the bug in question, an example of my named booleans technique and another tip regarding naming magic numbers.

Read more...

Johnnie 'QObject' Walker, replace a service locator pattern while you're at it

14-01-2023 04:30 | Remy van Elst

I've seen many C++ code bases where there was the concept of a service locator. An global static object that anyone can query to get a class. This is handy with old legacy spiderweb intertwined code that gets everything from everywhere, but not so useful when you're trying to unit test code, it is not visible from the header what dependencies you need. My preference goes to dependency injection, give all the dependencies to the class' constructor and use them that way. Makes it easy to mock and if you have many dependencies, it serves as a starting point to refactor in to a more clearly separated architecture. This article shows a piece of code that uses QObject, the Qt object base class, to replace a servicelocator. All QObjects can have a parent QObject, thus a tree is formed, which you can walk back up and search. This effectively replaces the servicelocator, since you can just request a certain type of QObject.

Read more...

APT keeps complaining that the HTTPS certificate cannot be validated?

11-01-2023 05:31 | Remy van Elst

Recently a few of my Ubuntu 20.04 and Debian 11 servers failed to run an apt update because it insisted that the HTTPS certificate for a repository could not be validated, while curl on the same system had no issues connecting. Join me on a deep dive into certificate validation and troubleshooting apt, digging into the C++ source code for apt and GnuTLS and in the end, it turned out to be my own fault due to permission on a folder. However, the error messages were totally unhelpful resolving the mysterious validation problem. This article was written over the period of a few days, chronologically during troubleshooting.

Read more...

Sparkling Network

Published: 12-01-2019 | Last update: 08-01-2023 | Author: Remy van Elst

This is an overview of all the servers in the Sparkling Network, mostly as an overview for myself, but it might be interesting for others. It also has a status overview of the nodes. Prices are monthly, excluding VAT.

Read more...

View all Items