This year I'm taking a sabbatical pause to explore the world of tech, especially in Europe. So I've searched for a way to keep a record of what I'm up to: the cities I visit, the events I attend, the people I talk to, the tech I learn... This way, my family can follow my adventures, and I can help my forgetful brain to keep these memories for longer! The obvious answer is a shared photo album. But…
I like bytes, they're handy! I also like laying them in the right way to make things work and work fast. It turns out I'm far from the only byte-nerd out there :) In this post I'll dive deep into how Prometheus , an open source metrics and monitoring service, represents time series information on the disk. To write this post, I've read Prometheus' implementation , played around with real data and…
Automated backups that work are mind-liberating! I've shared in the previous post how I back up my data . In this post I'll explore in detail how I handle encryption to protect my server and the insuing backup disks. What does my system solve? My encryption usage is meant to protect mostly against this threat: if a stranger has access to any of my disks while they are unenergised, they must not be…
Automated backups that work are mind-liberating! I'll share in this and the next post how I've solved it for my use case in my homelab . In this first post I want to explain my goals and my overall setup. In the next post I'll explore in detail how I handle encryption. I'd also love to hear how you handle your backups: share in the comments. What does my system solve? I like to think of my backup…
In the past, I've worked with a system that produced hundreds of thousands of compressed JSON files every day, each weighting around 1MiB uncompressed. We wanted to ingest all that data into datalake for debug and analytics, and for that we've used Spark to append to a delta table. Conceptually, the flow is very straight forward: a job runs every day it lists the new files that need to be ingested…
This is a quick post just to share how much my homelab costs me. Since it's an old laptop tucked near the fridge, one can guess it's not a lot. But I've got measurements! I've measured 3.382 kWh in 11 days 3 hours and 54 minutes (=267.9 hours), so an average of a bit less than 13 W . In a 365-day year, this adds up to 110.6 kWh. My current energy contract has a fixed cost and a per-kWh cost that…
I'm a happy user of Forgejo and I host it on my homelab at git.sitegui.dev to store all my open source code (including this very same page). However, as many other hobbyists and major projects , I have noticed an uptick in the number of crawling requests that my instance serves. My homelab is literally an old laptop close to the fridge , so I could hear the extra load (and it also doesn't help…
I'm coming back home from Rust Week 2026 in Utrecht 🦀. It was two days of interesting and thought-provoking talks, followed by one day of coding together on Rust-related themes. The venue was intelligently chosen: a cinema! No meet up can beat these comfortable human holders: Talking to the sponsors, they use Rust for all sorts of projects, like developing microchips (Espressif), self-hosted…
Today I'll share some points that I've learned while playing with Spark, Parquet and the Delta format. Even if you don't use these technologies, I hope you can spot some neat ideas to reuse somewhere else later. I like to picture in my head that the most important architectural distinction between a datalake table and a typical database (like Postgres) is that compute and storage are handled very…
This very website is served from my home by an Ubuntu Server running on old hardware behind my fridge: I've talked in a local dev meetup about my setup, you can check the slides here: My homelab is at the same time a "production" environment for my digital life and "staging" environment for all sort of crazy project that I want to play with. It's amazing what 10-year-old hardware is capable of!…
This is my last week on my current job, and I was reflecting about some of the things that I've learned in the past 7 years there. There's a lot of course! As a staff data engineer, I worked with many teams and codebases and learned a couple of tricks at scale. So I'm starting a new blog series "performance advice nugget" (or PAN for short), in which I'll share some insights of what worked quite…
Happy pi day ! (not to be confused with pie day, which has more pastry but is less sweat). I need your help: please refresh this page to throw more matches to the ground! I'll use Comte de Buffon's result to estimate π. The underlying relation is: 2 * match_size P(match_crosses_a_line) = -------------- π * line_gap So π can be estimated as: 2 * match_size π ~ -------------- P * line_gap In the…
In Rust, the tokio's ecosystem has a fundamental crate called bytes that abstracts and helps dealing with bytes (you don't say!). I've indirectly used it a billion times and I thought that I had a good mental model of how it worked. So, in the spirit of the "decrusting" series by the excellent Jon Gjengset, I've decided to peek behind the curtains to understand more what axum, tokio, hyper and the…
This blog is written in Rust, and I wanted a way to reload the web pages automatically while I change the posts' contents, styles, etc. This is common-place with JavaScript frameworks, but not automatic in the Rust land. So I've embarked on a side quest to achieve just that: the "type and auto-reload" experience. In the end, I was surprised to learn a bit more about sockets and processes in Linux.…
I've just watched the calmly titled "The 15-game" in the Numberphile Youtube channel and boy oh boy, I cannot stop thinking about it! I will not spoil the end, but if you ever got intrigued by games, maths, brain-teasers, just take a 15-minute break and watch it. At school, I loved to solve the same problem from different angles, not only to increase my chances of getting the good answer, but also…
Around 3 years ago my phone's screen broke and changing the screen would cost close to a half the device's original price. It was cheaper to throw away and buy a new one. This is clearly wasteful, but I guess this is a typical experience with well-known consumer brands. But hey, I don't want to move to a new home because my sink broke! In Europe, new regulations like Right-to-Repair Directive…
They play for 28 hours! We did it and it was pretty cool o/ Well... not all those hours were spent actually playing, we also had to decide what to play next! With more than 500 games available at the event, this sometimes took a while :) You can picture 3 rooms like the one below, full of meeples, cards, coins and fun. It was the 16th edition of the festival 24h Chaud les Jeux! in Cholet . The…
I used to blog as a kid back in the 2010s , and for a long time I wanted to get back to it. Now it's the time! This is my personal space on the web, it's not the shiniest, not the most visited, but it is mine :) For now there isn't much to see here, this first post is mostly a hack to get me going. See you next time!