RSSAmplifier

Blog

Balthazar Rouberol

blog.balthazar-rouberol.comRSS feed ↗74 posts

Latest posts

On AI-assisted interviews

Yesterday, I ran an interview for a Senior SRE position. After a surprisingly good start, it became clear that the candidate was using some form of AI assistance. At the end of the interview, I became absolutely convinced that our conversation was streamed to an LLM that was answering our questions for her. So, what happened?

A much better TTRPG sound mixer than mine

A small overview of tat , a TTRPG sound mixer that the PARADISO game studio just open-sourced. I took it for a spin, and I'm happy to report that it's simply better than mine.

Fighting Big Tech AI scrapers with sticks and rocks

A sad story of how I'm attempting to stop AI scrapers from abusing my git forge using the crude tools at my disposal.

I somehow wrote my own build system

I've grown tired of using make over the years. Because I'm pretty good at making bad decisions, I've obviously decided to write my own build system to replace it.

Pushing to multiple git remotes at once

I recently learned that it was possible to configure git to push to several remotes at once. I wanted to do this for this very blog, where I somehow rely on 2 distinct git repositories.

Creating yearly reminders from the macOS terminal

I found a way to easily create yearly reminders (such as birthdays) from the macos command line, using osascript .

A french character sheet for Pirate Borg

I'm going to set sails to the Dark Carribean and GM a couple of Pirate Borg games for friend and family during the holiday season. But for that, I needed a french character sheet.

Running an interactive Ypsilon 14 terminal

I built an interactive prop for The Haunting of Ypsilon 14 Motherhsip scenario, by standing on shoulders of giants, and then fully integrated that interactive terminal in Foundry, as a Journal entry.

Evaluating interdependant helm variables

I introduce an evalValue helm template that allows the definition of inter-dependent helm values in YAML files to take a bit of the pain and misery away from having to maintain charts.

Visualizing a YAML value files overlay

In this article, I introduce yaml-overlay , a small CLI tool that overlays the argument YAML values files from lowest to highest precedence, associates a color for each file, and colorizes each value in the resulting YAML overlay according to its provenance. This can be very useful when dealing with Kubernetes charts deployments with many different value files (environment values, default values,…

Migrating my code from Github to a self-hosted Forgejo instance

Now that Github is fully enshittified and focused on selling access to AI models built on your own code, I've decided to move my personal projects to a self-hosted Forgejo instance.

Curating and filtering RSS feeds

RSS feeds are one of my favorite features of the Internet of Yore. Simply put, they allow you to subscribe to sites you like, into an aggregator. Instead of visiting all these sites in search for something new, you simply subscribe to these sites in your aggregator, and you'll see new articles come in. In this article, I present feedzgerald , a small CLI tool used to filter online RSS feeds in…

My corner of the TTRPG universe

I've recently grown tired of playing Dungeons and Dragons, and have taken a keen interest in expanding my TTRPG universe. This article will walk you through the games I'm excited to GM or play, as well as my favourite TTRPG Youtube channels and actual plays.

My Far Realm house rules

A quick walkthrough of my house rules to mechanically represent the living and breathing paradox that is the Far Realm, by having time, space as well as reality change over time for players and monsters.

A french character sheet for Mothership

I'm excited to be GM-ing The Haunting of Ypsilon 14 Mothership 1E module for a group of friends in a couple of weeks. I couldn't find a French 1/1 translation of the original character sheet, so I made one. It's there if you need it!

Blackholing tracking domains by running Pihole as a DHCP server

My new ISP provided router does not allow me to change the advertised DNS server IP. By running pihole with a DHCP server, I can get around this limitation to ensure that tracking domains are blackholed for everyone at home.

On building your own tools

A love letter to the act of building your own tools, aimed at solving your own problems.

Detecting if a decorated function would be a bound method at runtime

TIL how to dynamically detect if a decorated function would be a a bound method when called.

The Mystery of the Silent Process

I've recently had to debug why a program in charge of regularly dumping the Wikimedia wikis data would simply... stop, without any prior knowledge of this (rather large) codebase. I'm reproducing my (mostly) un-edited debugging notes to show the actual debugging process that led to a very simple-looking fix, and is intended to showcase how tools such as strace and a debugger are essential to my…

Making a DIY book of terrains

I recently stumbled upon the Giant Book of Battle Mats , which is a book of A3 laminated TTRPG battlemaps. The way I see it, the core idea of the book is to immerse the players into combat by providing a rich visual experience. The main issue I have with that book though, is that the maps are too rich in details, which impedes their reusability. The first time you run a battle on one of these…

My dungeon master toolkit

One of my favourite aspect of being a dungeon master is building my own tools. I do this with a single goal in mind: improving the immersion by removing much of the in-game friction. This article will walk you through these tools and provide you with the resources you need should you want to use them as well.

Just enough Makefile to be dangerous

Over the years, I've developed a mix of appreciation and frustration for make . While it's conveniently ubiquitous across UNIX systems and widely used, its syntax often feels perplexing and unwieldy, posing debugging challenges. In this article, I share best practices I've embraced to make working with make a more satisfying experience.

Pinning your SQLite version across environments

This article discusses the challenges of maintaining consistent versions of the SQLite library in different environments for a project that relies heavily on it. Unlike traditional databases, where server versions can be easily pinned, SQLite is embedded in applications, leading to potential feature mismatches due to what version is made available by each environment's system package manager.

How to profile a FastAPI asynchronous request

In this article, I share the challenges I faced when trying to profile requests in an asynchronous FastAPI server. The traditional profiler, cProfile , provided inaccurate results due to the nature of asynchronous functions, which resulted in misleading statistics. To overcome this, I explored pyinstrument , a statistical profiler with built-in support for asynchronous Python code.

Preventing a pull request from being merged until it's safe

Sometimes, a pull request is ready to go, but shouldn't be merged before some other changes are merged first. While the patch is valid on its own, it might depend on other changes, and could even break the application if merged before the other. I'll demonstrate a simple technique relying on Github Actions and pull request labels to block a pull request from being merged, until deemed safe to do…

Neapolitan pizza dough recipe

I have created a small Neapolitan pizza dough recipe calculator so I don't have to figure out the recipe from scratch everytime I'm making pizza.

Merging multiple mp3 files into an audiobook with chapters

A quick walkthough of how to convert multiple mp3 files into a fully-fledged audiobook m4b file, with chapters and metadata.

Generating pretty maps ready to be gift-wrapped

I have been toying with the idea of generating visually pleasing maps centered on a given address, to have them printed and framed. The way I see it, it would make an original and personalised gift for the person living there. So when Marcelo de Oliveira Rosa Prates' prettymaps blew up on Reddit, I decided to try it.

Monitoring my solar panel power production

I have recently acquired two solar panels from Sunology advertising a cumulated instantaneous production of up to 810W. The panels come with a smart plug emitting the data to Tuya , in order to retain and graph historical data. However, the only available granuarity for that data is daily kWh production. In order to optimize the orientation and placement of the panels, as well as measure the…

Speeding up a 21h job to 8 minutes: a story of SQLAlchemy optimization

In this article published on the Alan tech blog , we explain how my team has reduced the runtime of our longest nightly job from 21h to about 8 minutes, by using simple profiling and SQLAlchemy optimizations.

My DIY Dungeons and Dragons ambiance mixer

I find that an immersive sound ambiance is key to helping tabletop RPG players engage. It can increase their stress and sense of urgency during a fight, galvanize them during a harrowing speech, or break their heart when they realize they've just lost something and there's no getting it back. In that article, I will walk you through the design of my fully DIY sound mixer, inspired by the Launchpad…

Can't enough be enough?

In this article, I will explain the impact the Datadog IPO and the years that followed it had on me, both financially and psychologically, as transparently as I can. The intention is to examine how such an event can change one's life, either positively or not, and give you some return of experience on the choices that I made.

Measuring the coverage of a rust program in Github Actions

In this article, I will go through how I set up code coverage measurement for bo , my text editor written in Rust, and publicly hosted the coverage report on S3.

Tools I'm thankful for

Software engineers sometimes have a reputation for being overly critical when it comes to tools and programming languages. The web is full of rants, heated debates and articles about what technology is "better" and which is "crap". It was thus refreshing to read an post titled Software I'm thankful for , that shone a light on some pieces of software in a positive light. In honor of this article,…

Sending a webhook from Synology DSM to Discord

Given the fact that running a Datadog agent on a Synology Play NAS is not obvious, I wanted to enable Discord webhooks push notifications (as this is where my Datadog alerts are already being sent). This way, I'd get plenty of alerts "for free" without having to configure new Datadog …

River monitoring with Datadog

Last month, Ardèche experienced very heavy precipitations in the span of couple of hours. As a result, the dam located upriver from me opened the floodgates (literally), which caused the Chassezac level to raise by about 6.5m in about 1.5h. I've setup some monitoring using Datadog and Pagerduty to make sure I know about it as soon as possible.

To the Underdark and back

I've recently designed a 2 session long (6h) detour into the Underdark, that would feed into one of my player's character's backstory. The goal was to allow him to meet his long-disappeared father, while introducing both the players and the characters to the strange and dangerous land that is the Underdark.

Metaprocrastinating on writing a book by writing a text editor

If you have been following my Essential Tools and Practices for the Aspiring Software Developer posts and were anxious to read more, you might have noticed that they stopped coming after a while. I have a draft for the last chapter, and I regularly think about getting back to it, at least to get some closure. Alas, procrastination being what it is, I never did. My procrastination level became…

Cleaning up the Dungeondraft tag list

I have spent quite a lot of time using Dungeondraft recently, as I've designed many homebrewed places and encounters. The more maps I created, the more assets pack I bought from CartographyAssets , to further enrich and improve them. I quickly started to realize that some of these asset packs caused the tag list to be filled with entries that weren't linked to any assets at all. This made the…

Running the Port Nyanzaru Dinosaur Race

When I was preparing for Port Nyanzaru, in Tomb of Annihilation , I started reading what other Dungeons Masters had to say about the city. A lot of them would mention that the dinosaur race was a must-do, and that if done properly, it could really be a high point in the start of the adventure. The problem was, I felt that the official rules regarding this race were, well, underwhelming, to say the…

Shell productivity tips and tricks

This chapter will walk you through different features of your shell allowing you to do more while typing less, such as autocompletion, keyboard shortcuts, history navigation and shell expansions. Even mastering some of these should make you immensely more productive in your shell day-to-day!

Customizing your shell

It is very common for programmers to tweak and customize their terminal and shell for hours, add or write new plug-ins, all in pursuit of the “perfect environment” and an increase of productivity. In that spirit, this chapter will cover different recommendations of terminal configurations, as well as a deep dive into how to customize your prompt, add colors, experiment with color palettes, for…

The shell's building blocks

Something I still find striking after years of using a shell almost daily is how simple yet powerful its building blocks are. Chapter 1 covered commands, I/O streams and pipes. This chapter will cover environment variables, aliases and functions.

My pizza recipe

I've always enjoyed a good looking Neapolitan pizza. You know, the ones with the puffy, slightly burned crust . I have probably baked dozens of them during the last couple of years, but only recently did I become satisfied enough with my recipe to feel comfortable sharing it.

Text processing in the shell

One of the things that makes the shell an invaluable tool is the amount of available text processing commands, and the ability to easily pipe them into each other to build complex text processing workflows. These commands can make it trivial to perform text and data analysis, convert data between different formats, filter lines, etc. This chapter will go over some of the most common and useful…

Discovering the terminal

This chapter will help you take your first steps in the terminal, this almost mythical (The Matrix, anyone?) application we oftentimes imagine hackers type in really fast. We will see how it works and how it can empower you, increase your productivity and give you insights about how your computer works.

How to setup a personal wireguard VPN

This article will provide guidance about how to setup a Wireguard VPN between a server and your phone, allowing you to avoid being snooped on while you travel.

My DIY proposal

I proposed to my girlfriend by building her a Zelda chest and developing an Android application for the occasion.

On letting go

I have been feeling more and more burdened in the recent months. It first wasn't clear to me why I was feeling that way: I'm in the most happy and fulfilling relationship I've ever been in, we just moved to a beautiful apartment we both fell in love with, I'm …

Managing my infra like it's 2019

I recently realized that I was routinely managing thousands of servers and petabytes of data in my daily job, but was still managing my own personal infrastructure like I was living in 1999.