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 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.
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.
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.
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.
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.
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.
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,…
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.
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…
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.
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.
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!
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.
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…
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…
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.
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.
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.
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.
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…
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.
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…
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.
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…
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.
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.
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,…
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 …
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.
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.
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…
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…
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…
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!
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…
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.
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.
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…
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.
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.
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 …
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.