The Many Roles of a CTO: One Title, Multiple Realities
Behind the ‘CTO’ title lie vastly different missions and scopes depending on the organization. A deep dive into ground realities and a framework to clarify the role.
Behind the ‘CTO’ title lie vastly different missions and scopes depending on the organization. A deep dive into ground realities and a framework to clarify the role.

Ten years ago, the “make or buy” question often boiled down to a simple calculation: do we have the developers to build it? Today, with agentic AI accelerating development and standardizing practices, the equation deserves to be revisited. Not that the answer has become simpler. It’s still “it depends.” But the criteria on which it depends have evolved. Overview of the decision framework The Myths That Lead to Bad Decisions Let’s start by clearing out the reflexes that lead to dead ends — on both sides. ...
I’m open-sourcing SD Generator CLI, a tool to stop fighting with Stable Diffusion workflows.
Introducing SILK-CLI, a CLI tool for authors integrating LLMs into their writing workflow.
The answer is no. LLMs won’t replace developers, at least not in their current form.
Hello, In the previous article, we explored the theory of the builder pattern. Let’s see a more concrete example : Let’s assuming that we are building a Role Playing Game core model. Here are the basic rules: A player can be a Hero : a Warrior, a Wizard, or a Thief (we keep it simple) Every Hero has 4 main characteristics: Health, Strength, Spirit, and Speed, that are counted in points. Heroes have a Level, and starting characteristics are based on this level (Health starts at Level * 10, Strength and Spirit start at Level * 5, and Speed starts at Level * 3) Warrior has a (+2 Strength, -2 Spirit) Modificator, Wizard has (+2 Spirit, -2 Strength) Modificator Player can improve 2 Characteristics of 1 points each or 1 characteristic of 2 points, in order to cutomize his Hero. A naive implementation of the Hero class would be : ...
Hello, In this article, I’d like to present you the Builder pattern and how I use it in my C# code. The Builder Pattern is a Creational design pattern, like the Factory Method Pattern I already covered un this previous article. Its main focus is to provide a light DSL to build objects by settings startup properties, by seperating the process of constructing an object from the object itself. Basically, the idea is to create a class with mutable fields, that will be initialized with dedicated methods, and a final method that create the object itself from thoses values. Here is an abstract example : ...
Hello, I’d like to introduce you Canopy, a Selenium overlay written in F#. It brings you the concision and the clarity of F# to your selenium tests. First of all, we have to create a new F# console application, then we install canopy in our project: As you can see, the canopy nuget will bring back the selenium ecosystem. Lets create our first test. It will check that a search of “canopy F#” in google will feature the official Canopy website as the first result. Here is the little bootstrapping needed by Canopy : ...
In this article, I’ll demonstrate how to buid a simple and maintainable process manager for Node.js, leveraging its Event Loop. The main idea is have a core processor that will be able to run a serie of tasks, in a synchronous way. As you may know, Javascript is by essence an asynchronous language. Let take simple example : 1 2 3 4 5 6 7 8 function CrawlingAWebPageAndGetLinks(){ // do the stuff the method pretend; } (function program(){ var result = CrawlingAWebPageAndGetLinks(); console.log(result); })(); As the execution flow is asynchroneous, the result variable will not be valued before the crawling method ends, and the usage of the variable will occurs before its valuation The standard solution in javascript to handle this issue is to use a callback method : ...
The Factory Method pattern is one of the most useful creational design patterns. It allows us to delegate the creation of an object to a dedicated class, improving testability and respecting the Single Responsibility Principle.