So I got this idea of making a Rubik’s Cube solver in Ruby and I would call it RubyCube. Hilarious, right? But kind of stupid, because nobody really cares what the solver is written in as long as it actually works. Looking back, I think similarly few users would care whether I vibe-coded it with AI or handcrafted each line, especially given that I’m not open-sourcing it. Here, for what matters, I vibe-coded the front entirely (I just told Copilot to use three.js, don’t ask me more) and manually coded the backend solver in Ruby. ...
January Update
Almost the end of January and no blog post yet ! Time to remedy that. One reason for the silence is I don’t have much going on, in the past 6 months or so Claude Code and other coding agents have made such progress that pretty much anyone at my company (former QA, designers etc) is able to contribute new features to our product. It was foreseable and gradual for the past 2 years so it’s not a huge shock, though it came faster than I expected, and last year (2025) caused a big questioning about my career as a software engineer. What value can I add when anyone with minimal experience can contribute to the codebase ? The situation is not so dire yet, I do have some answers at the present (like I’m good at debugging, experience with the whole stack, etc) but nothing that feels particularly future proof. Take debugging, it takes 30 seconds of searching to find a “vscode debugger mcp” that lets agent use VSCode integrated debugging (not that I would trust it enough to install it, but we’re bound to have an official one someday). We’re already at the point where a multiple agent setup can create an app, launch it, interact with it in a browser, and debug the backend, without human assistance. Am I a better debugger than a swarm of Claude-5.2-banana agents running in the background ? I don’t believe so. ...
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! ...
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. ...
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. ...