Vietnam has been hit hard by heavy rain lately, but the skies were clear this morning. I drove my daughter to school on a scooter, and since we were early we took a longer route across the river. From the bridge we saw a giant rubber duck they installed on the other side of the river, pretty cool ! Arrived at school she asked me to stay for the morning dance, so I watched her jumping to the sound of DJ Raphi’s ABC song with 50 other kindergartners. That was an energetic morning ! Just what I needed so I could resume work on this sprint ticket. ...
2025 11 05 November Update
A lot going on these days! I succumbed to the hype and installed Omarchy, the new Linux distro by DHH. It’s basically Arch Linux with a tiling window manager (Hyprland), but it comes pre-configured and installable with an ISO, which is super convenient compared to the usual Arch install process. So out of the box you get a very good-looking desktop with nice shortcuts and documentation. Some will disagree with DHH’s preferences and choices, but realistically I would never have taken the time to configure Hyprland properly myself, so it’s nice to be able to rely on somebody’s taste (I trust DHH’s taste more than mine in that regard!). Same goes for the rest of the desktop environment (waybar for the top bar, walker for the app launcher…). That was my main issue with Arch, too much choice and alternatives that I don’t really care about (I just want internet, not to have to choose a network manager…). So I really see the appeal of Omarchy for many people, and it seems to be gaining popularity. ...
Rip Daniel Narodistky
Sadly, this week saw the passing of Chess Grandmaster and streamer Daniel Narodistky and it came as a shock for a lot of people including me. I was particularly a fan of his “speedrun” videos, it really helped demystify chess. I used to think high level chess was this impenetrable mix of “opening” knowledge and thinking 20 moves in advance, but he really showed how each move made sense in an almost obvious way, either positionally or tactically. Watching his videos you get the feeling that you grasp chess and that, of course you could have won that game too, that was easy ! (only to lose against a 1000 ELO in your next game). ...
Logic riddle (October update)
A programmer says “I have 2 kids, and the sum of their age is 4”. The logician thinks and says “not enough info”. The programmer adds “The eldest likes Bluey”. The logician smiles and replies “Ah ! You must be using vibe coding a lot”. Alright, I’ve been working on a new project, Goxy: an OpenAI proxy that track & limit spending. You can set an hourly limit (say 1$ per hour) and the proxy will return 429 errors when the spend reaches the limit. That lets you release LLM using projects while being confident you won’t get hit with a thousand-dollar bill at the end of the month. ...
September Update
I just came back from a two weeks vacation in France with my daughter, and without my laptop, which was pretty nice. As a result I don’t have much to say for this month ! After coming back I had an idea for a small project, a “guess who” app that I vibecoded in a few hours with Firebase Studio. It got me a Next.js+tailwindcss app pretty quickly, with LLM calls handled by Genkit. Originally it was using the Gemini API and hosted on Firebase, but I’ve changed it to GPT-5 and Fly.io for hosting. ...
Training a small LLM
So in my [last post about Pilish]({% post_url 2025-08-09-pillmish %}) I mentioned that a follow up to get better results would be to use a LLM with word level tokenization. It’s actually a bad idea in general because the vocabulary size can be huge, and that’s why most LLM these days use BPE or subword tokenization, but I decided to give it a quick try and train a LLM from scratch with word level tokenization. Back in 2023 I used to be quite into finetuning and all that but this year I haven’t done much low level tinkering with LLM so it was a good exercise. ...
Pillmish
A few days ago, I heard about Pilish for the first time. As Wikipedia puts it, Pilish is a style of constrained writing in which the lengths of consecutive words or sentences match the digits of the number π (pi). My second thought (right after “who would enjoy doing that”) was, this sounds easy for LLMs! So I set out to make a minimal proof of concept. Long story short, the trick is to constrain the output to follow the digits of Pi—the same way that structured output (JSON, etc.) works. With Hugging Face Transformers, it’s easy to do with a custom logits_processor. Here, we just constrain the tokens to those matching the desired number of characters at each step. I shared the code on GitHub. ...
August 2025 Update (GPT-5, Veo 3, Gemini CLI, Open Source)
Lot of things going on this summer, but yesterday’s big news was the release of ChatGPT 5. I don’t have an opinion on it yet, but I guess it’s nice to have a single model (at least exposed, even if this is routed under the hood) instead of switching between 4o and o4-mini-high, etc. Recently I’ve been on the market for a “CLI Agent” (synchronous, like Claude Code, not async like Devin and co.). I’ve been using Gemini CLI with good results — as long as I’m within the free PRO requests. As soon as it switches to the “flash” model it becomes useless, can’t edit a file properly, and just loops on itself. I wouldn’t pay for it. Claude Code seems too expensive; I might give OpenAI Codex a try with GPT-5, but I haven’t heard much about it. ...
Maths notes (1)
So I started reading a paper about diffusion (the original DDPM paper) and I was quickly out of my depth. I needed a refresher about probabilities, and actually even more basic stuff like exponential and integration. And I thought why not share the notes here! So this blog post is the content of a python notebook about exponential and the normal distribution, exported to markdown with jupyter nbconvert. It’s not deep or anything, just a nice refresher for myself. Kind of a pain to write math formulas and get them displayed in my Jekyll blog but got it working with Mathjax. ...
I apologize for the confusion. You're absolutely right.
Google did me dirty this week and I’m salty, so let me tell you. The other day I received an email informing me that my YouTube Premium subscription had been renewed, which surprised me because I canceled it about 6 months ago, and I haven’t missed it ever since (thanks, yt-dlp!). I first thought it was my daughter’s shenanigans, but after a closer look I had only “paused” the subscription instead of canceling it, and Google conveniently failed to inform me it was going to be restarted… No advance email like “your subscription will restart in a few days,” just “whoops, we restarted your subscription and you’ve been charged 13 euros, teehee.” ...