Blog

Latest articles and resources

31 May 2026
HyperFrames-Gradle : Transforming AsciiDoc into MP4 Video

The `hyperframes-gradle` plugin transforms AsciiDoc into MP4 video via HyperFrames. AsciidoctorJ carries the configuration DSL. The Node.js bridge is isolated behind ProcessBuilder. This plugin fills the gap between slides and standalone videos. Here is why it exists, how it interfaces with capsule-gradle, and what it brings to the content production pipeline.

18 May 2026
Auditing my LLM Consumption: SQLite, OpenCode, Ollama Cloud, and Why My Pro Subscription Blows the Global Market Away

I opened the OpenCode SQLite database to audit my actual consumption over 73 days. 2.6 billion tokens, 1,022 sessions, total API cost of 22 cents. Comprehensive comparison with Anthropic Claude ($300K+), OpenAI GPT, Groq, HuggingFace, Together AI, and Chinese providers. Result: my Ollama Cloud Pro subscription at €20/month is the best deal on the global market, even compared to direct Chinese offers.

14 May 2026
The "Independent Plugin + Consumer Root" Architecture: Why My Gradle Builds Are Doubling

One clone, one `./gradlew tasks`, and your Gradle plugin is functional. Zero configuration, zero READMEs to read. Here is the architecture I deployed across my 6 foundry/public/ plugins: a minimalist consumer root + an autonomous `{name}-plugin/` folder. Why this "apparent duplication" pattern is the most productive for Gradle plugin development — with native dogfooding, build isolation, and a clear DAG contract.

12 May 2026
The Knowledge Graph as a Recommendation Engine: How I Killed Chronological "Related Articles"

Current "related articles" on cheroliv.com are simply the 4 most recent posts. A semantic aberration corrected by a three-layer recommendation engine: explicit references (xref), emerging ontology (NLP clusters), and chronological fallback. All plugged into the graphify Knowledge Graph, consumed by bakery — without engine knowing anything about it.

11 May 2026
27× to 45× more efficient than Claude and GPT: how a fleet of 23 fine-tuned AI experts crushes the market

Efficiency factor of 27× to 45× against Claude, GPT and the like: how a fleet of 23 AI experts fine-tuned on my workspace crushes the market. Architecture, dataset, training and full deployment.

08 May 2026
Custom Gradle Plugin to Drive Two Ollama Pro Instances in Parallel

A custom build.gradle.kts to control two Ollama Pro instances from Gradle tasks — start, stop, sign-in, model pull, and health check. From driven infra to build tool.

08 May 2026
Running Two Ollama Pro Subscriptions on the Same Machine with Docker

Docker allows you to duplicate an Ollama Pro subscription on the same machine by isolating identity keys and network ports. Here is how to do it, step by step.

07 May 2026
Install Kitty terminal and configure Zsh as the default shell under Xubuntu

This post presents the complete process for installing and configuring the kitty terminal on Ubuntu.

06 May 2026
DGX Spark vs Cloud vs LLM Subscriptions — The Economic Benchmark That Kills the Local Hardware Dream

At $4,699 for the DGX Spark, $20/month for Ollama Pro, and $1.38/h for a H100 in the cloud — the math is quick. This benchmark compares all options available in 2026 for running LLMs, from inference to fine-tuning. Verdict: the Spark is a luxury item, not a profitable tool. The real reason to buy local hardware in 2026 isn't economic — it's political.

04 May 2026
The LLM Governance Matrix — Why Your AI Security Starts with the Directory Tree

What if your AI's security depended not on a prompt, but on a file system? This architecture manifesto defines a 4×4 matrix — physical zone × LLM access right — that makes secret leaks, the mixing of open/closed source, and the publication of opinions disguised as facts mechanically impossible. No prompts to write. No rules to remember. Just folders.

03 May 2026
OSS/CSS Granularization — Why I Split foundry/ in Two

`foundry/` mixed open source code and private code in the same folder. The RAG and the knowledge graph couldn't tell the difference. The solution? Split this functional area in two — OSS/ for the public (Apache 2.0, free indexing), CSS/ for closed source (private dataset only). No more need to tell the LLM to be careful. The file system does it for it. And I took the opportunity to move cheroliv.com where it should have always been: in office/sites/.

02 May 2026
Automated Epistemic Compartmentalization — How the LLM Protects My Mental Garden

The STIMULUS pattern does more than just capture raw ideas and dilute them into workspace documents. It adds a critical layer: the LLM is responsible for classifying each piece of information as Vision (publishable on the blog), Opinion (confined to the private circle), or Strategy (restricted dilution). This automated epistemic segregation is what allows for free thinking in Circle 0 without fear of inappropriate publication.

01 May 2026
Our First Hire: the Dataset Anonymizer — MVP0 on Probation

Before doing RAG, fine-tuning, or SaaS, you need clean data. Our first hire on probation — the Anonymizer — detects and cleans PII in multi-technology sources (SQL, pgvector, ONNX, Graphify, JSON, YAML, AsciiDoc). This is the MVP0. Without it, everything else is either illegal or technically degraded. Here is how this brick transforms a universal problem into a marketable product.

30 April 2026
The Developer's Secret Garden: How Spatial Ontology Aligns LLMs Without Prompt Engineering

What if the best way to align an LLM wasn't a prompt, but a file system? My workspace is structured into four concentric circles of trust, from the most intimate to the most public. The LLM doesn't have to memorize the rules — it sees them in every file path. Here is how this spatial ontology makes agent governance more robust than a block of text rules.

29 April 2026
Supabase → Firebase Migration: Connecting a Contact Form to Firestore Without a Backend

My contact form had been running on a mock for months. The initial Supabase plan was abandoned in favor of Firebase. I describe the project creation, Firestore configuration, rewriting the submission JS, cleaning up dead code, and what this migration says about the "finish what you started" mindset.

28 April 2026
DeepSeek-V4-Pro, Kimi K2.6, GLM-5.1 : Three LLMs Put to the Test of Long-Context Vibe Coding

For three weeks, I ran three major models through my Gradle plugin development sessions with Opencode. 30K token context, Eager/Lazy/Hot/Warm/Cold governance, refactoring tasks, TDD, and architecture. Here is which one survived — and why the others faltered.

27 April 2026
Agent Context Audit: When Your Own Governance Becomes the Problem — and How to Fix It Without Losing Anything

After two articles on structuring and backing up agent context, I discovered that the file documenting the method itself had become the biggest token consumer. A section-by-section audit of a 627-line `AGENT_MODUS_OPERANDI`, identification of duplicates, and an encyclopedic split solution that preserves engineering without saturating the context.

26 April 2026
Sliding Window and Cold Wave: When Agent Context Explodes and You Need to Archive Without Losing

After months of Opencode sessions, governance files are exploding. 5200 lines loaded automatically. I am conceptualizing a sliding window and "identical cold wave" mechanism to maintain a light active context without losing anything.

25 April 2026
When Gradle 9, Docker 29, and Testcontainers clash: debugging a JHipster build

A `./gradlew build` that fails with eleven successive errors, from a non-existent `reportsDir` variable to Docker Engine 29 rejecting the docker-java 1.32 client. Here is the complete debugging log of a JHipster build on Gradle 9, Java 21, and Testcontainers 2.0.5.

24 April 2026
Governing an AI Agent with AsciiDoc: My Eager/Lazy Strategy for Context-Leak-Free Opencode Sessions

Faced with context leak between AI agent sessions, I developed a handcrafted governance strategy based on AsciiDoc files. The principle: an auto-loaded Eager dashboard, a Lazy owner's manual on demand, and an essential end-of-session procedure.

22 April 2026
Why `serve` displayed an ugly site while `publishSite` was perfect

The `serve` task of my JBake Gradle plugin displayed rectangular buttons, unreadable text, and partially missing CSS, while `publishSite` produced a perfect site. Root cause: JBake CLI arguments passed with incorrect syntax. Here is the full diagnostic and how I fixed it.

21 April 2026
OpenCode and the incomplete PATH: why your tools weren't in the agent's shell

OpenCode executes non-interactive shells that do not source .zshrc. Result: SDKMAN, NVM, ~/apps and pnpm are missing from the agent's PATH. Full diagnostic of the problem, comparison of SDKMAN vs NVM behavior, and definitive solution via .zshenv + ~/.nvm/current symlink.

19 April 2026
Integrating Graphify into a Gradle workflow: from Knowledge Graph to PlantUML diagram in one command

Graphify extracts a Knowledge Graph from your codebase. The PlantUML Gradle plugin transforms this graph into deterministic PlantUML diagrams. Complete pipeline: pip install graphify → graphify . --no-viz → ./gradlew generateKnowledgeGraphDiagram → PNG diagrams versioned in Git.

18 April 2026
The super tip for the fg command: when Ctrl+Z saves your terminal session

Have you launched a command that blocks your terminal? Ctrl+Z suspends it, fg resumes it. Discover how fg, bg and jobs transform your terminal productivity.

17 April 2026
VS Code in the Home: local installation and font customization without sudo

Install VS Code in your Linux home to maintain full control without sudo. Then customize the fonts of the menu and the file explorer — a journey fraught with pitfalls that finally leads to a readable UI.

16 April 2026
Migration of an Asciidoctor RevealJS plugin to buildSrc Kotlin: reverse engineering a Groovy API

How to migrate the configuration of an `AsciidoctorJRevealJSTask` task from the root buildscript to a standalone buildSrc Kotlin plugin, replacing the Groovy DSL `ruby { gems() }` with its underlying mechanisms discovered via bytecode introspection.

15 January 2026
JBake Architecture Portfolio - Vision and Use Cases

Discover how I solved a series of complex Mockito mocking problems in Gradle plugin tests, from "Wanted but not invoked" errors to cascading "Unfinished Stubbing".

14 January 2026
Hybrid Architecture: The Best of Both Worlds with Supabase and Spring Boot

Combine Supabase for simple CRUD and Spring Boot for complex logic. A pragmatic, scalable, and cost-effective hybrid architecture.

15 November 2025
The Art of Preloading: Eliminating Theme "Flash" with JavaScript and CSS

07 November 2025
Efficient Logging in Gradle Plugin Functional Tests

Complete guide to implementing a robust and independent logging system in Gradle plugin functional tests with SLF4J and Logback

01 November 2025
Displaying Colored Squares in AsciiDoc: A Practical Guide

A practical guide for integrating color samples in AsciiDoc using the `pass:[]` macro with inline HTML and CSS. Compatible with JBake and all processors.

20 October 2025
Internationalization of a JBake static site with Thymeleaf

Complete guide to implementing internationalization in JBake with Thymeleaf: message files for the UI, folder organization for multilingual articles.

05 October 2025
Install and Verify Tor Browser on Ubuntu

Complete procedure for downloading, verifying, and launching Tor Browser on Ubuntu, with reflections on cryptographic verification and ethical and educational browsing within the Tor network.

27 September 2025
Article 5: The Adventure of the Shared libs.versions.toml

A deep dive into the Gradle version catalog (libs.versions.toml) and how to share it in a composite build, through a concrete problem encountered with our site-baker plugin.

26 September 2025
Article 4: The Gradle Configuration Cache Trap

An unexpected debugging adventure that plunged us into the intricacies of Gradle's configuration cache. Discover why our builds were behaving strangely and how we solved the problem.

25 September 2025
Article 3 : Integrating Jackson for YAML Parsing with TDD in a Gradle Plugin

Discover how to integrate the Jackson library to parse YAML configuration files into Kotlin objects within a Gradle plugin, following a Test-Driven Development (TDD) approach.

24 September 2025
Article 2 : Developing a Gradle Plugin with a TDD Approach

In this article, we will explore how to set up a solid development base for a Gradle plugin using a Test-Driven Development (TDD) approach.

23 September 2025
Article 1: Creating a Gradle Plugin from A to Z with the gradle init command

A step-by-step guide to initializing a Gradle plugin project using the standard `init` task, understanding the generated structure, and running the first build commands.

22 September 2025
Article 0 : Setting Up the Environment for Creating Gradle Plugins

Before coding our first plugin, we need to prepare our machine. This guide shows you how to install and configure the essential tools: a JDK, IntelliJ IDEA, Gradle, and JBake.

19 July 2025
Python CI/CD – Part 3: Going Further with Poetry, Docker, and Advanced Publishing

Part 3 - Comprehensive guide to setting up a robust CI/CD pipeline with GitHub Actions, from linting and automated tests to automatic deployment on PyPI during releases.

18 July 2025
Part 2: Industrializing and Securing an Advanced Python CI/CD Pipeline

Part 2 - Complete guide to setting up a robust CI/CD pipeline with GitHub Actions, from linting and automated tests to automatic deployment on PyPI during releases.

17 July 2025
Part 1: Setting up a simple CI/CD pipeline for Python and PyPI

Part 1 - Complete guide to setting up a robust CI/CD pipeline with GitHub Actions, from linting and automated tests to automatic deployment on PyPI during releases.

16 July 2025
Developing a Musical Discord Bot: Functional Architecture and Log Driven Development

15 July 2025
Cooling and monitoring laptop temperature under Ubuntu

14 July 2025
Debugging Story: Taming Firefox's Quirks with Bootstrap 5

13 July 2025
Solving the Gradle Unit Testing Challenge with `gradle.properties`

Discover an effective technique for unit testing Gradle plugins that depend on `gradle.properties`. This article explains how to use `ExtraPropertiesExtension` to simulate properties, ensuring isolated, reliable, and maintainable tests, illustrated with PlantUML diagrams.

11 July 2025
Optimizing Gradle Task Management with Kotlin DSL and buildSrc

Optimize Gradle with buildSrc and Kotlin DSL for reusable tasks and cleaner builds.

09 July 2025
TDD of a configurable Kotlin Gradle Plugin with JBake and JGit

This post presents the complete design and testing process (TDD) of a Gradle plugin written in Kotlin DSL. This plugin automates the generation of static sites with *JBake* and *Git deployment* via *JGit*, all from a YAML configuration file.

20 June 2025
AsciiDoc: Discover and Master the Syntax for Effective Documentation

Dive into AsciiDoc syntax and learn how to write clear, structured, and powerful documents for all your documentation and publishing needs.

28 May 2025
Exposing a local service on the Internet from Ubuntu: Complete guide to port forwarding

How to configure port forwarding to make a local service running on Ubuntu accessible from outside your home network.

17 November 2024
Debugging Mockito: Solving the "Wanted but not invoked" error in Gradle plugin tests

Discover how I resolved a series of complex Mockito mocking issues in a Gradle plugin test, from the "Wanted but not invoked" error to cascading "Unfinished Stubbing".

24 September 2024
Kotlin Arrow: Mastering Either Monad Navigation

Découvrez les techniques avancées pour naviguer efficacement dans les côtés right et left de la monade Either avec la bibliothèque Kotlin Arrow.

23 September 2024
Practical Guide: Searching for Files under Linux

Apprenez à rechercher efficacement des fichiers sous linux avec Zsh en utilisant find, locate, et grep.

23 September 2024
Linux memo

Simple mémo sur unix/linux et le terminal bash

01 February 2024
Expose a Linux subsystem port to the Windows host

Exposer un port linux subsystem pour l'hôte windows, avec la commande `wsl --install`.

30 January 2024
Install Pandoc

Installer Pandoc qui est un tranformateur de document, sur linux et windows wsl

25 December 2023
Implementation of kotlin.Triple in JavaScript, TypeScript, and Python

Proposons une implémentation de kotlin.Triple en JavaScript, TypeScript et Python

22 December 2023
Introduction to Google Apps Script

Introduction complète à Google Apps Script

20 December 2023
Express Training on Google Form Script and Automation

Formation Express sur Google Form Script et Automatisation

19 November 2023
Python Memo

simple Python memo

24 August 2023
Web dev

Training Web dev

21 August 2023
Trading card games (TCGs)

Training trading card games (TCGs)

19 August 2023
TypeScript Memo

simple mémo Typescript

14 August 2023
CSS Memo

simple mémo CSS

13 August 2023
HTML Memo

simple mémo HTML

04 August 2023
Javascript Memo

simple mémo Javascript

31 December 2022
Scoping Memo

simple memo on project scoping.

29 May 2022
Kotlin Memo

simple kotlin memo

28 May 2022
JVM Memo

simple JVM memo

23 May 2022
Gradle Memo

simple gradle memo

17 May 2022
Training - kotlin: enum, sealed classes

Kotlin programming: enum, sealed classes

12 May 2022
Training - Kotlin

Kotlin programming, plan.

09 January 2022
Design system memo

Simple memo of useful links and references in the design system

03 November 2020
Kubernetes, MicroK8s, Docker: first steps

Installation, mise en place de micro kubernetes, docker, et lancement d'un helloworld sur linux/unix

28 September 2020
Gradle: Running an external process from a Gradle task

Comment lancer un binaire externe depuis une tache gradle

27 September 2020
Kotlin: NotImplementedException, NotImplementedError

Pas encore implémenté, permet de lever la bonne exception.

26 September 2020
Untar

l'application untar

25 September 2020
Gradle: Rerun tests even when tests are UP-TO-DATE

ajouter l’argument --rerun-tasks à la ligne commande.

24 September 2020
Docker does not install the application but pulls it instead.

docker optimisation

23 September 2020
Gherkin in French:

BDD, cucumber, gherkin en français

22 September 2020
Gradle CLI: overriding a parameter

./gradlew -Pparam_component=CUSTOM

21 September 2020
Git memo

simple mémo git

20 September 2020
Download from a URL

wget aspirateur d'URL

19 September 2020
Create a bootable disk

faire son disque bootable

18 September 2020
Unzip via CLI into a target folder

dezipper en ligne de commande

17 September 2020
Display the sum of file sizes in the directory list

la somme des tailles de fichiers dans un dossier

16 September 2020
Delete a branch on GitHub

complément mémo git

15 September 2020
Asciidoc/Markdown Cheat Sheet

simple mémo ascidoc/markdown

19 August 2019
Debian: Install a .deb file via the command line

installer des .deb en ligne de commandes

16 August 2019
Gradle: resources folder visible in the IDE

ajouter un dossier au classpath d'un build gradle

14 August 2019
Groovy script, grab ivy configuration

gradle groovy ivy

13 August 2019
Groovy: a bit of algebra, the GCD and the LCM

de l'algebre en groovy

12 August 2019
Bash: Finding files by extension and outputting to a file with find

un peu de bash avec find

01 August 2019
Managing a digital project with a waterfall methodology

un peu de methodo des projets digitals avec la méthodologie en cascade

30 July 2019
List the databases in a PostgreSQL instance

tatonnement de postgres

29 July 2019
Groovy: Rename files recursively

recursion en groovy

19 July 2019
Groovy: File search with criteria, copy selection

recherche de fichier par motif en groovy

18 July 2019
Groovy: File manipulation, search and deletion

manipulation de fichiers et recherche de caracteres en groovy

17 July 2019
Groovy: Replacing a character sequence in a String and loading Properties from a file

manipulation de Properties et recherche de motif en groovy

10 July 2019
Groovy: ASCII Characters

du groovy, des boucles et de la manipulation de code ascii