RSSAmplifier

Blog

Patrick Desjardins Blog

Technical blog posts by Patrick Desjardins

patrickdesjardins.comRSS feed ↗200 posts

Latest posts

5-8x Coding Improvement that Could be Doubled

In the two previous blog posts and in , I discussed the impact of AI on software development and experimented with a new way of developing software. In this article, I'll discuss my conclusions after three months of using several different approaches. The last three months have been interesting, es…

Using epaper for studying

A few months ago, I and within a few weeks I was taking page after page of notes using . I initially liked it, but I missed taking notes with a pen. Something about scribbling, annotating, and illustrating my thoughts helps me focus and retain better than copy-pasting or typing. When I was doing my…

HATEOAS as the Natural Interface for Autonomous Agents

The web was built for humans using a browser. APIs were built for developers who read documentation. Both scenarios never anticipate autonomous agents that must reason about what to do next. As LLM agents increasingly interact with services, a question emerges that few people are addressing directly…

Generating Documentation with AI

I will argue that generating documentation with AI is useful, specifically the kind that lives as dedicated documentation files in folders alongside the code, and specifically for business logic and architecture. My thesis is that this documentation is valuable because it serves humans and AI agents…

How to test in TypeScript 2026 edition

I wrote in , , , and about TypeScript and private functions. Eleven years later, I still believe that relaxing encapsulation to ease testability has the best return on investment (ROI). In this blog post I will argue that separating classes and interfaces preserves a portion of the encapsulation wh…

Mastodon Thread on a Static Website

I recently visited and noticed a simple idea that I liked: comments do not need to live inside the website database. They can live on the social web, and the website can point to the discussion. For a static website, this is appealing because I do not want to run a comment server, to moderate a loc…

Replacing NextJS With a Rust Static Site Generator

I recently moved this website away from NextJS as the static generation engine. The site was working, but it had become heavier than what I needed. Most pages are static. Most content is markdown. The build was doing a lot of framework work for a problem that had become much smaller than the framewo…

Audiobook machine version 3 using an ELECROW ESP32 Rotary Display 240x240

I built an audiobook machine for my daughter in January 2022 using a Raspberry Pi and RFID cards (). In early 2026, I built a second version for my son using an ESP32 and a TFT display (). Over time, I wanted to replace my daughter's original device because the RFID cards became cumbersome whenever…

How to Transfer Files Between Computers Using HDMI (Part 8: Registration, CRC, and a Working Transfer)

ended on a frustrating note. Pagination was supposed to fix missing frames, but the real capture path still failed. I could loop the video twelve times, record 850 megs of footage, and still be short six frames. The decoder would report something like: > We have not receive all frames. We received…

How a GPU Turned Kokoro TTS Bottleneck From Minutes Into Seconds

I recently ran into a very practical performance problem in a study-generation pipeline. The application takes lesson notes from Trilium, turns them into teaching scripts, generates flashcards, synthesizes narration with Kokoro TTS, renders a simple MP4 with ffmpeg, and uploads the result to YouTube…

Automatic Audio Note Summary with Flash Card using AI

I recently and I am taking my notes in which allows accessing notes through an API. Since I save all my courses in a hierarchy of course → lesson → objective, I can automatically generate summaries from my own notes. My idea was not to generate notes from the course content itself but rather t…

React to React Native using AI

Early in my career, I started with VB5 and VB6 before moving to web development using PHP. Since then, I have stayed focused on the web because the ease of distribution and the ability to reach millions of users across devices always felt like a major advantage. Throughout those years, the iPhone ap…

Codex usage as bad as Claude

A month ago : >I’ve ended up using Codex every day. Last weekend I even used it for 5 hours straight and never hit a limit. That honeymoon phase lasted about three weeks. Lately, I’ve noticed I can barely use it for normal coding for more than 30 to 45 minutes before hitting a wall. Even worse,…

What is Code Quality in the Era of AI?

I have been coding for over 28 years now. I have worked with Visual Basic, Java, C++, PHP, JavaScript, TypeScript, Python, and even a little bit of Rust. Having worked at over 15 companies and on at least double that many projects, I have seen a great deal of code. Throughout my education, my profes…

Silicon Valley: Pursuit of Leadership

Silicon Valley is an interesting place to be. It sits at the center of innovation with large companies and funders shaping entire industries. After spending enough time here, it is easy to believe that the world operates like Silicon Valley. However, when you stay connected with family and friends o…

Speed Parallel of AI to Cars

I recently had an interesting conversation with one of our VPs. I was describing that we need to embrace the direction of AI. Today, AI is moving people from walking speed to car speed. When you think about it, that level of speed on a highway is significant, and it comes with real risk. Humans had…

New AI Work Process of 5 Days

I am currently leading a squad of four engineers, and we are working in an unconventional way: one week at a time. While short sprints have existed in the past, we are taking a slightly different twist. The reason I introduced this new work lifecycle was that we are developing a product with an AI-f…

Automating The Gatekeeper

As AI continues to transform the development of software, we must fundamentally shift our habits to keep pace. Many traditional workflows have not yet adapted to this new reality, including early requirement gathering, permission systems, and the standard practices for design and code reviews. I hav…

The AI-First Lifecycle

Today, I want to talk about how software engineering is changing with AI. More specifically, how the entire software lifecycle needs to adapt. Right now, most of the attention is on coding. We see constant updates about tools like Claude, Codex, or Cursor, and how they improve developer productivity…

The AI Meeting Paradox

Today I want to talk about how AI is transforming meetings. I have noticed more and more people using it during discussions. In the past, it was already common to have laptops open in meetings, and sometimes a few people would search Google while someone was speaking. Today it feels different. Many…

The Vibe Coding Plateau

Today, I want to talk about the difference between having a vibe coding project as a side project and using the same approach at work. The main difference is the long-term consequences of the code, but also the fact that the code will continue to be worked on by other people. I notice that many deve…

Kokoro TTS: Free using GPU with Many Voices

I recently had many voices to generate from English text. By many, I mean about 5,000 paragraphs. One requirement I had was to produce a non-robotic voice. After searching, I was open to using a service like OpenAI TTS and paying for it, but it was quite a large amount of text to generate. Since I h…

Gemini brings my son's name in the wrong context

For a little while, I moved from ChatGPT to Gemini for questions that were not related to a specific code base. Recently, I was doing some research in a new thread about houses in different areas of the United States. Suddenly, I noticed that Gemini added a note: > If you are moving to a new propert…

The Consequences of Easy Access to AI

The Dunning–Kruger effect occurs when individuals with limited knowledge in a domain believe that they have suddenly become experts in it. With easy access to AI tools, the Dunning–Kruger effect appears stronger than ever. Software engineering has always had areas, such as user interface design,…

AI and Playwright MCP

User interfaces and automation have always been tricky. After all, part of the process requires seeing the final result, as theoretically styling can fall into many traps. For a long time, people created unit tests using Jest or other UI frameworks and, with utility functions, could test React compo…

Cancelled Claude Code Pro

At the beginning of the year, I subscribed to a year of Claude Code Pro (200$). Last weekend, I cancelled it. The reason is simple: I was hitting the limit every evening after 30 to 60 minutes. Instead of upgrading from Pro to Max, which would have increased the price by 10x, I decided to try OpenAI…

AI Blinders remain why human still have an edge for now

> The black side panels added to a horse's head during a race are primarily called blinkers (or blinders in the United States). These devices are plastic cups attached to a fabric hood placed over the horse's head and under the bridle to limit the animal's wide peripheral vision Much like a racehors…

20$ of Codex Pro vs 20$ Claude Pro

I have paid $20 a month for Claude Pro since the start of the year. I usually only have time to code at night once my kids are sleeping, which gives me a tight window of two to three hours. The problem is how Claude handles usage. You get a set amount of data you can use every five hours. Even if yo…

AI Coding, Trust and Review

The more I use AI, the more I believe it represents the future of accelerated development; however, I am also increasingly wary of its tendency to "drift" in the wrong direction. While it consistently finds solutions, they aren't always the optimal ones, a reality that persists whether using Claude,…

Transforming Software Development one Agent at a Time

My journey into professionally developing agents that perform software engineering tasks is going beyond having the system simply write code. As I work more and more with agents, I realize that they are excellent at following very clear directives, but they often won’t think further. A part of me…

How to make your AI agents remember and forget?

Like humans, an agent interacting with a large language model has memory constraints. Similarly, some models have larger capacity to retain information and act upon it. The LLM receives a limited number of tokens describing the memory it can use to reason and generate accurate responses. This capaci…

Code Quality in 2026 with AI

I have been working extensively with multiple AI agents coding in parallel. Imagine dozens of agents operating at the speed of ten engineers. The volume of new code reaches thousands of lines every day. The question is inevitable: how do we preserve quality? The answer may surprise some, but it is n…

Multi-Agents and the Future

I joined Roblox few months ago. My job description contained this paragraph: > Driving technical excellence and strategic innovation across Roblox's core operations. Lead the development of high-impact internal products that empower teams and shape the future of how Roblox operates. Use AI to trans…

Making a Systemd Journal Dashboard

I’m running several projects on my mini PC: 1. Discord bot 2. YouTube Radio 3. My personal note-taking server using Trilium 4. An AI RAG system I developed for Trilium 5. A Google Home audiobook service All of them write their logs to the Linux systemd journal. To inspect logs, I had to manually S…

Running Local LLM on a Nvidia 5080 for Coding

Few weekends ago, I wanted to see what would be the best model of coding that I could run locally on my Intel 9 with 32 gig of ram and my Nvidia 5080 with 8gig of vram. The idea was to run to QWEN 3.0 to have a local Claude. The result was impressive in term of how fast the response occured but the…

YouTube Streaming Radio with More AI

I recently built a that allows me to queue YouTube videos from my phone and stream only the audio back to me. I've been using it during my commute for over two weeks now. I've since improved several parts of the system, such as having AI suggest other videos to queue based on the last few tracks I…

YouTube Streaming Radio with Auto AI Summary

I go to the office every day of the week. I , and my commute is only 15–20 minutes, perfect for listening to an audiobook you can find on YouTube. Many of the videos I like are roughly that length. However, streaming a YouTube video from my phone has a few inconveniences. The first issue is that I…

Audiobook Machine Version 2 with ESP-32

Several years ago, I built an audiobook machine using a Raspberry Pi and RFID cards (see the about the project). My daughter has been using it almost every night. I recorded more than 50 different stories, and it quickly became a hit. However, the machine was clunky. It had a few issues with wires…

Trilium with RAG for AI Prompting

I recently . I like Trilium a lot for its simplicity and because it is easy to move to another system later. At the same time, it remains flexible without becoming complex. Trilium has a BETA feature that allows you to provide a ChatGPT API key to perform AI prompting. Unfortunately, it never worked…

Recapitulation 2025

I realized that I skipped the recapitulation of 2024 and 2023. The last one was . Another year with a lower amount of writing with 22 blog posts. 2024 had 18 and 2023 exactly 25. Far from the average of one per 1.5 per week in the first 7 years. Nonetheless, I continue enjoying the time I spend on t…

Trilium Note Taking with Mini-PC server host

I have been using Microsoft OneNote since I joined Microsoft as a software engineer in 2014. I am paying Microsoft for storage as my notes increased largely when I did my Master's degree. I was uploading PDFs, annotating with a pen and taking note with a pen as well. However, I am slowly taking only…

Python Retirement Simulator using past Sp500 performance

I have recently read more about Monte Carlo simulation and the . I opted for Python and a framework called to try different hyperparameters. I never used Optuna, but I recall from my machine learning master's degree that it is ideal to optimize toward a maximum value, which in my case would be the…

Software Engineering and Remote Work

I will skim some of the context, but in recent years, I have been in many different companies and teams with different operational models, including remote, hybrid, and in-office. In one of my experiences, the team was entirely on-site and then moved to a hybrid model. In this short article, I'll de…

TypeScript Injection of Value Using Decorator

TypeScript is a great language for writing code that is type-safe and easy to read. However, sometimes you need to inject a value into a class or function. This can be done using a decorator. In this article, we will see how we can inject from a single source of truth values into a class. We will al…

SSE Streaming using HTTP Post?

known as SSE uses by default HTTP GET with the EventSource JavaScript object. However, when handling a large volume of data, HTTP GET using a query string falls short. Relying on HTTP Post and a large body is better. In this article, I'll show how to use SSE with HTTP POST when connecting to an API…

Python Coroutine vs Future

Most of my day, I use TypeScript and JavaScript. The concept of asynchronous programming is relatively straightforward, involving async functions that must be awaited. To set everything in perspective for a TypeScript developer, here is a simple code: function mySyncFunction(): string { return "Test…

Python Asynchronous with to_thread

Up to recently, I was using an older style to invoke a synchronous function in Python that required using a worker pool. However, there is a more elegant way, more concise and straightforward possibility using Python 3.9+. The new function is part of async.io and is named to_thread. Before Python ve…

Python Modulo

I was writing code in Python that required a modulo. The code worked until the number was negative. -321 % 10 Applying a modulo 10 to a number is an easy way to get the last digit. 321 modulo 10 is 1. I was expecting -321 modulo 10 to be 1. That is the case in JavaScript, not in Python. In Python, -…

3D Printed a Race Lap Counter

My son received a Carrera race track for his birthday. He loves it! I recently started learning CAD and 3D printing and quickly built a simple dual-flap system that flips when the car crosses the finish line. It was simple, cost less than 1$ to print. However, looking at the design, I could see some…

Python Asynchronous Queue

The library asyncio offers a queue. A producer injects data into the queue. A consumer reads data from the queue. The queue is first-in, first-out (FIFO) and is useful when there is incoming data that is difficult to synchronize with the output process. For example, a system might receive data and s…