Merry Christmas! 2025 Retrospective

Merry Christmas! 2025 Retrospective What a year it has been! I got my second kid early this year and was plenty busy with child-rearing as my number one priority, but I somehow managed to put some stuff out. Let’s get through it. The good Blogging 28 posts in 2025. I managed to keep the blog alive, with around two new posts per month. I enjoy the process — it’s a nice outlet for venting and also sharing my projects. It even sometimes forced me to work on something new just to have something to write about! ...

December 20, 2025 · 4 min · Jerome Marhic

Podpocket release

I’ve been frustrated with YouTube Music as a podcast player ever since Google retired Google Podcast last year, mostly because they now play ads before each episode! So I’ve decided to develop and release a minimal podcast player, Podpocket. It was really a pleasure to develop it with Pocketbase, as it handled everything I need: authentication (including oauth) setup in a few clicks a UI to create new collections (sqlite tables), and a complete admin dashboard Even Cron jobs (to refresh the RSS feeds periodically) And best of all, it’s written in Go so you can extend it super easily. For instance, I added an endpoint to register new RSS feeds, and I still have a single unified backend. This is unlike Firebase where you end up with a split architecture where some calls go directly to Firebase services and others to your custom backend. I’m definitely going to reuse it in my next project. A fun feature is the user impersonation that lets an admin login as another user. ...

December 11, 2025 · 2 min · Jerome Marhic

2025 11 24 Monday morning

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. ...

November 24, 2025 · 2 min · Jerome Marhic

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. ...

November 5, 2025 · 3 min · Jerome Marhic

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). ...

October 24, 2025 · 1 min · Jerome Marhic

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. ...

October 15, 2025 · 2 min · Jerome Marhic

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. ...

September 25, 2025 · 2 min · Jerome Marhic

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. ...

August 16, 2025 · 4 min · Jerome Marhic

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 9, 2025 · 2 min · Jerome Marhic

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. ...

August 8, 2025 · 3 min · Jerome Marhic