Articles
I write about what I learn: programming, productivity, and building side projects.
Four Agent Frameworks in Sixteen Months
How Gama went from LangChain to LangGraph to Google ADK to Mastra to the Claude Agent SDK — and what we'd tell our December 2024 selves.
If Claude Writes the Code, What Makes Me Still a Developer?
It's been three months since I last wrote a line of code.
Watching, Not Waiting: When AI Coding Crossed the Speed Threshold
I know that feedback about using AI as a dev is so mid-2025, but I feel there are still some things to say.
Designing AI‑Ready Systems: Making Code Easy for Assistants
Most leverage from AI doesn't come from writing AI code—it comes from writing code that AI can use. When your system exposes clear contracts and ex...
Building a Modular AI Copilot: From Monolithic to Dynamic Context
How we built Vasco's Copilot — from a LangChain-and-Gemini prototype to a modular architecture where each page declares its own context and tools.
Seven Hours, Zero Internet, and Local AI Coding at 40,000 Feet
Seven hours on a plane, zero internet, and a curiosity about local AI coding. That's how I found myself downloading 13GB of AI models in an airport...
AI-Assisted Development: A Three-Act Play
Developers on my team use Cursor's Tab feature. Designers use vibe-coded prototypes to gather feedback from stakeholders. I rely on Claude Code to ...
Turning Claude Code Into My Best Design Partner
When I first started using Claude Code, I had a naive approach to working with it. I would describe the task directly in the prompt, press Enter, a...
Two Hours with Cursor Changed My Mind About AI Coding
For the first time in my career, I have absolutely no idea what the software engineer job will look like in five or ten years.
Spliit by the Stats: Usage, Costs, Donations
A transparency report on Spliit's first year, sharing figures on visits and usage, the roughly $115 monthly hosting costs, the donations that nearl...
Spliit Is Now Available in Eight Languages
Thanks to open-source contributors from around the world, Spliit now supports eight languages, and this post credits the people who added each tran...
We Need an Open Source Alternative to Splitwise
After Splitwise began limiting free usage in late 2023, this post argues that a widely used app should be more than just free, and explains why bui...
Announcing Receipt Scanning Using AI
Spliit now lets you create an expense by taking a photo of a receipt, using OpenAI's GPT-4 with Vision to automatically extract the title, category...
13 tips for better Pull Requests and Code Review
Would you like to become better at crafting pull requests and reviewing code? Here are the 13 tips from my latest book that you can use in your dai...
The simplest example to understand Server Actions in Next.js
Server Actions are a new feature in Next.js. The first time I heard about them, they didn’t seem very intuitive to me. Now that I’m a bit more used...
Intro to React Server Components and Actions with Next.js
React is living something these days. Although it was created as a client UI library, it can now be used to generate almost everything from the ser...
How to give code review as a junior developer?
By focusing on learning, providing constructive feedback with a positive tone, and embracing the opportunity to contribute, junior developers can m...
How well should I know React before applying to my first job?
A recurring question I hear from people learning React: “how do I know if I’m ready to apply to junior React developer jobs?”. Very often, they’re ...
A better learning path for React with server components
What if we took advantage of React Server Components not only to improve how we use React, but also how we help people learn it from the beginning?
Display a view counter on your blog with React Server Components
A short tutorial with a cool use case for React Server Components, Streaming and Suspense with Next.js: adding a view counter on a blog, calling th...
Using Zod & TypeScript for more than user input validation
If you have ever created an API or a form accepting user input, you know what data validation is, and how tedious it can be. Fortunately, libraries...
Display your Gumroad products on your Next.js website
If you sell some products on Gumroad and also have a personal website, maybe you’d like to automatically list your products on this website. And if...
Use Next.js Image component in posts with Markdown
Next.js has a wonderful Image component that lazy loads images and optimizes their dimensions. Here is how to use it when generating your blog from...
Create OG images for your blog with Next.js
Vercel recently announced a new library to generate OpenGraph (OG) images. A short tutorial to see how to use it to generate OG images for your Nex...
Combining scripts and DSLs is Kotlin’s most underrated feature
The more I play with Kotlin, the more convinced I am that a combo of two of its features is vastly underrated: first, the ability to create domain-...
Walk in the steps of successful makers, and fail
Following advice by successful people might not be enough. A short essay about survivorship bias, and how it can make you forget the most important...
Purchasing Power Parity: fair pricing for your SaaS product
Using Purchasing Power Parity, you can offer a fair pricing based on your user’s location. Here I explain what it is, then I show you how I impleme...
How I use Pandoc to create programming eBooks
Here is the story of how I built my eBooks, especially the last one. After some trial and errors, in the end, I used the same recipe as the two pre...
Reimplement Redux with vanilla React in 12 lines of code
Redux is an awesome library to handle the state of big applications, React or not. But when you think about it, the basic features of Redux can be ...
Understand how React hooks work
The reason hooks cause developers to struggle is that they look simple, just basic functions, but they are a lot more complex than that. The comple...
Back to basics with Node.js and Express, the time of a side project
Although I love React and am more used to single-page applications (SPA), I decided to leave them aside the time of a side project and to use plain...
Why you should have side projects
As a developer, you may have acquired some skills that you don’t find the time to practice. Or you may want to learn new ones, but your daily job d...
Create an animated 3D book in CSS, step by step
A couple of days ago, I created a 3D version for the book I’m writing, with CSS only. Because I couldn’t find an easy way to do it, I created a sma...
On distraction and developer productivity
When twenty developers were asked to keep a precise diary of what tasks they worked on during the day minute by minute, the results were surprising...
I’m writing a new book: Become an Outstanding Developer
When you’ve been working as a developer for several years, improving at coding is not enough to become better at your job. Of course, it’s a very i...
I tried Flutter for a week and made an app
It’s been some time that I hear about Flutter, the UI library by Google supposed to be a concurrent for React. I’m a huge fan of React, and on the ...
Create a React hook to add dark theme to your app
Thanks to a recent evolution in mobile and desktop operating systems, it is more and more common for users to expect two UI themes for apps and web...
This blog is proudly powered by Gatsby (with some super powers)
This blog has been using Gastby for a year now. Before that I used a home-made tool I was proud of, but it was very minimalistic. Switching to Gast...
Beginner Guide to Deep Work for Developers
Have you ever dreamed to wake up one morning and realize you felt different, more powerful. As if you had this super power inside of you that it wa...
One year as a morning person
I’ve been living in Montréal for almost two years now. I’m currently going in vacation in France to see friends and family, for the fifth time in t...
Lost with Redux and sagas? Implement them yourself!
You can use everyday a library such as React, Redux or Redux-Saga. You can be perfectly efficient with it. You can be able to tell others why it is...
React hooks: get the current state, back to the future
React Hooks are trully awesome, but the more I play with them the more I discover tricks, and sometimes spend a lot of time figuring out why my cod...
So I wrote a technical book 😁
Big week for me: I finished writing my eBook in French about React, and I couldn’t be prouder. Eight months, and it was not easy, but it’s so worth...
Est-il utile d’apprendre React ?
Plusieurs tweets m’ont interpelé récemment, par rapport au fait que l’écosystème JavaScript s’est dégradé, car concentré autour de plus en plus d’o...
Pourquoi j’écris un livre sur React ?
Voilà quelques mois, j’étais à la recherche d’un nouveau projet personnel. Bien souvent ce type de recherche aboutit au développement d’une nouvell...
Bootstrap a Reason-React project with Parcel
Not that long ago I used Create-React-App a lot to quickly boostrap my React projects. That’s why I naturally used Reason Scripts when I wanted to ...
Create reusable high-order React components with Recompose
Writing reusable components in React is something every React developer care about (or should care about). Wether it’s to create a toolbox of style...
Create a simple and tested Redux-like app with Reason React
In the past few weeks I’ve become a big fan of Reason, and in particular its association to React with Reason React. And because both Reason and Re...
Writing modern JavaScript code
Remember when JavaScript was a language used to make elements change on the page when the cursor was over them? These days are over, every language...
Play with cryptography with OpenPGP.js
For about a year now, I use ProtonMail as my mail provider. If you don’t know it, you should definitively give it a look! The mails are encrypted _...
Use the coolest ES6 features everywhere
If you use JavaScript you probably know that recently a lot of new features arrived with ES2015 (also known as ES6): classes, const/let keywords, d...
A new blog, a new blog management system
Today I’m starting a new blog. I started a few blogs in the past. Personal blogs, where I talked about a lot of things. This blog is very different...
Vivre sans télé, c’est possible ? (Spoiler : oui)
En réponse à cet article sur Medium, voici mon retour d’expérience sur la suppression de la télé de mon quotidien. Pour commencer, je pense avoir é...
Comment j’ai l’intention de reprendre le contrôle de mes données
À l’occasion du (fantastique) dernier BreizhCamp, j’ai eu le plaisir d’assister à la keynote du fondateur et ex-président de Mozilla Europe, Trista...
Bien développer est-il un art ?
Ces derniers temps j’ai entendu plusieurs fois que des développeurs passionnés considéraient le développement comme un art. Par exemple, le manifes...