Articles
I write about AI, Python, TypeScript, software engineering, and more.
Also published on Medium →
AI Coding Agents: A Practical Field Report, a few months later
A few months ago I wrote about AI coding agents and concluded they were best treated as a capable junior developer. I still believe that…
The Golden Rules of Refactoring: How to change code without breaking everything
Refactoring is one of those words developers throw around constantly — often while creating the exact mess they're trying to clean up. To…
The building blocks of Agentic AI
An LLM cannot call a tool. It can only produce text. Everything else, the retrieval, the execution, the feedback loop, is the machinery…
The "Heavy" Cache Pattern: Smart Memory Management for Expensive Resources
A single-item cache with TTL eviction can transform your application's performance while keeping memory usage in check.
Dear AI "Experts"
I used to turn to LinkedIn to stay informed about emerging technologies and read thoughtful perspectives on programming practices. That was…
AI Coding Agents: A Practical Field Report
What I learned from testing Junie, Claude Code, and Antigravity on real projects
Python: A little hack to display the progression on your User Interface (UI)
How I use monkey patching to easily display a real-time progress indicator. Spoiler alert: it's tqdm which is monkey-patched.
Typescript: some things you might want to know if you just started
Typescript strength resides to it adding typing to javascript. You will find in this articles some tricks and tips to better use it.
Things you might want to consider when adding caching to your code
Concurrency and data-caching. Using chaining and proxy to integrate caching. Examples in Javascript but still valable for other languages.
Protocol Buffers (Protobuf) explained!
Let's explore together what Protocol Buffers are and what they can bring to your projects!
Python: type hinting your collections like a pro
When learning a new language knowing the available collections is one of the starting point.
Retrieval-Augmented Generation: why scrapping a website isn't as easy as you might think
To retrieve pertinent content from the pages of a website there are many things to consider. It's what we will explore together.
Why Retrieval-Augmented Generation Is Still Relevant in the Era of Long-Context Language Models
In this article we will explore why 128K tokens and more models can't fully replace using RAG.
Asking ChatGPT how to recognize articles written by ChatGPT…
Yes, it's a bit like asking a snake to bite its own tail. But don't worry I won't only copy past its answer but give you my own opinion…
LangChain/RAG semantic splitting explained!
You may have heard of semantic splitting, but do you know how it works?
Python: retrieving info from Pydantic models
How to extract info from a Pydantic model like the base type, if it is a list, an optional value, the default value…
LangChain/LangGraph vs LlamaIndex, my two cents about it
I started working with LangChain as part of a project for my company. While I discover and started to use LlamaIndex as part of a side…
Python: Using Pydantic… to define User Interface
As you probably already know, Pydantic is mostly a library designed to validate, serialize and deserialize data based on a model defined…
Python: Implementing a taxonomy based access control — second part
On the first part we discovered how to check which ressources are allowed for a given rule.
Python: Implementing a taxonomy based access control - first part
Permission management is one of the things my side project lacks most to become fully operational. As for now it was only about being…
Retrieval-Augmented Generation: Why naive RAG is not enough (and some ways to improve it)
Naive RAG is a term in vogue used to define basic RAG systems. This article will help you understand their limitations and how to fix them.
Attraction-Repulsion Algorithm
Or how to layout graph nodes on a canvas using an iterative approach!
Python: simple tricks to prevent circular import issues
Example of a circular import error
Lessons I learned while developing a Sudoku solver application
First lesson: do not rush into writing source code
Python: context manager
Or how to prepare things before working with them, and then ensure they are correctly released.
RAG: hybrid search based on two indexes — part 2
Previously, we discussed implementing a strategy involving a first retrieval system, which employed a keyword-based approach to limit the…
(Python) Why and how to serialize/deserialize objects.
Serialization is the process of converting in-memory data into a format, typically text or binary, that can be easily transmitted and…
LLMs can't remember conversations, so how can ChatGPT work?
What lies behind ChatGPT is primarily an LLM, a language model that has been trained for a single task: from a text, predict the next word in fact, what is predicted is a token, a small part of the text.
Stable-Diffusion simply explained, or how we can create images from text
A simple but accurate explanation of how stable diffusion work for generating images from a text. Spoiler alert, it starts with the end…
(Hugging Face) — Text classification, going further than the tutorial
Hugging Face's tutorial about text classification train a 2 labels model. This article is about checking if you can go further… (yes)
A case study about delaying and buffering data transmission to fix performance issues
This is about an issue that was encountered a few weeks ago in a side project and how it was fixed.
From Text to Knowledge Graph
This short article will start by giving a brief explanation on what is a knowledge graph and how it can be used in the context of RAG…
Python's tales from the for-loop: when performance does matter
Spoiler alert! We will talk about list construction, memory efficiency, function/variable execution and conditions.
Python Pandas library: the tricks behind DataFrame filtering
Spoiler alert, it is mostly about operator overloading and predicates!
RAG, Knowledge Bases: transposing programming principles
In programming, we distinguish compiled and interpreted languages. For RAG it is the same, knowledge can be indexed beforehand… or not!
GenAI: Select a tool/agent based on a user query
Article about how to automatically select a tool/agent to handle a user query from a list of available tools.
GenAI: ChatGPT and Large Language Models explained
A popularization article to help you understand their capabilities and limitations so you can use them to their full potential!
Python cheatsheet: function and method parameters
Advanced things about function parameters, during function definition and call. Positional vs keyword arguments, dynamic arguments, …
RAG: Hybrid Search Based on Two Indexes
The proposition I will explore in this article.
(RAG) Using a website to build your knowledge base: what you need to know
This article is not a tutorial, it will give you tips to help you conceive your own scrapping mechanism adapted to the website you scrape
Python cheatsheet: operator overloading
Operator overloading refers to the ability of using some built-in operators like '+', '*', … with class instances.
Welcome to the new W.AI.PON race
Since OpenAI released ChatGPT, there have been lots of new products and models that have emmerged. I think rarely the technology has…
RAG: prepare your knowledge domain
Considerations about constructing knowledge bases for use in Retrieval-Augmented Generation.
AI: dynamic task scheduling in the context of advanced chatbots — a case study
If you already read some of my previous articles you already know that I am working on using Directed Acyclic Graph with chatbots.
DAG: Directed Acyclic graphs in computer sciences
A Directed Acyclic Graph, or DAG, is a kind of graph used to represents relationships between elements of a system.
Dynamically registering your flask blueprint endpoints
Dynamically loading your Flask's blueprint is a great way to structure your endpoints and avoid duplicating code.
AI powered assistant: going further than RAG chatbot
ChatGPT and the rise of Large Language Models point to an era when AI assists human beings by giving them access to the knowledge they…
Large Language Models, Embeddings and RAG: fighting commons misconceptions
About two wrong statements I often read in articles talking about Large Language Models and Retrieval-Augmented Generation
(LangChain) Conversational Retrieval Chain, how does it work?
I am someone very curious. I like understanding how things are made. So I dove into the LangChain source code to understand how this…
Retrieval-Augmented Generation (RAG), or the art of feeding the prompt
To increase the capabilities of chatbot based on LLM, like ChatGPT, you can use a technique called RAG to provide a context to answer from.
Keyword based similar content with vector databases
Concept of mixing keywords with embeddings for fast similarity search.
Demystifying Launch Screens, Splash Screens on Mobile Apps
What are their differences?