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…

vibe coding ai coding agent claude code coding agents

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…

software testing technical debt legacy code code quality refactoring

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…

large language models artificial intelligence software engineering machine learning ai agent

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.

memory management ai model deployment cache memory python performance python

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 agent model context protocol ai retrieval augmented gen linkedin

AI Coding Agents: A Practical Field Report

What I learned from testing Junie, Claude Code, and Antigravity on real projects

coding agents vibe coding ai coding agent claude code

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.

react tqdm python monkey patching

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.

typescript type safety typescript types typescript type guards

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.

caching strategies caching javascript tips concurrency

Protocol Buffers (Protobuf) explained!

Let's explore together what Protocol Buffers are and what they can bring to your projects!

google protobuf binaryformatter protobuf

Python: type hinting your collections like a pro

When learning a new language knowing the available collections is one of the starting point.

python type checking mypy collections in python

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.

retrieval augmented gen sitemap web scraping llamaindex

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.

retrieval augmented gen long context large language models machine learning artificial intelligence

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…

chatgpt article writing ai detection llm limitation

LangChain/RAG semantic splitting explained!

You may have heard of semantic splitting, but do you know how it works?

langchain llamaindex retrieval augmented retrieval generation retrieval augmented gen

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…

python pydantic

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…

llamaindex langchain

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…

pydantic user interface python schema validation

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 access management permission management

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…

python access management permission management

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.

retrieval augmented gen retrieval generation semantic search large language models

Attraction-Repulsion Algorithm

Or how to layout graph nodes on a canvas using an iterative approach!

algorithms python

Python: simple tricks to prevent circular import issues

Example of a circular import error

python programming circular reference

Lessons I learned while developing a Sudoku solver application

First lesson: do not rush into writing source code

sudoku solver algorithms optimization techniques sudoku sudoku puzzles

Python: context manager

Or how to prepare things before working with them, and then ensure they are correctly released.

python python context manager

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…

retrieval augmented gen semantic search full text search llamaindex llamaindex rag

(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…

python serialization json deserialization configuration file

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.

llm chatgpt text completion knowledgemanagementsystem

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…

stable diffusion ai clip model image generation image generator

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

text classification text classification model bert text classification model finetuning hugging face tutorials

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.

event based architecture network performance websocket buffering

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…

knowledge graph retrieval augmented gen graphviz large language models

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 programming python optimization for loop in python

Python Pandas library: the tricks behind DataFrame filtering

Spoiler alert, it is mostly about operator overloading and predicates!

python pandas dataframe operator overloading predicate data filtering

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!

retrieval augmented gen knowledge base vector database vector search retrieval generation

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.

generative ai tools llamaindex tool selection retrieval augmented gen ai agent

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!

chatgpt large language models genai prompt engineering

Python cheatsheet: function and method parameters

Advanced things about function parameters, during function definition and call. Positional vs keyword arguments, dynamic arguments, …

python arguments cheatsheet functions in python

RAG: Hybrid Search Based on Two Indexes

The proposition I will explore in this article.

retrieval augmented gen hybrid search semantic search full text search knowledge base

(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

retrieval augmented gen website scraping knowledge base information extraction

Python cheatsheet: operator overloading

Operator overloading refers to the ability of using some built-in operators like '+', '*', … with class instances.

python operator overloading python programming cheatsheet

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…

ai innovation evolution of technology generative ai market

RAG: prepare your knowledge domain

Considerations about constructing knowledge bases for use in Retrieval-Augmented Generation.

retrieval augmented retrieval generation knowledge base vector database vector search

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.

chatbot platforms directed acyclic graph task scheduling conversational ai retrieval augmented

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.

task scheduling directed acyclic graph task dependencies computer science graph algorithms

Dynamically registering your flask blueprint endpoints

Dynamically loading your Flask's blueprint is a great way to structure your endpoints and avoid duplicating code.

flask flask blueprint dynamic code loading flask application flask app

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…

retrieval augmented ai assistants chatbots ai assistant knowledge management large language models

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

large language models embeddings search retrieval augmented vector database vector search

(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 retrieval generation langchain conversational ai

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.

retrieval augmented artificial intelligence prompt engineering large language models chatgpt prompt

Keyword based similar content with vector databases

Concept of mixing keywords with embeddings for fast similarity search.

embeddings search vector database similarity search keyword research text classification

Demystifying Launch Screens, Splash Screens on Mobile Apps

What are their differences?

mobile apps user experience