Blog
Laatste artikelen en bronnen
HyperFrames-Gradle : AsciiDoc omzetten naar een MP4-video
De plugin `hyperframes-gradle` converteert AsciiDoc naar een MP4-video via HyperFrames. AsciidoctorJ biedt de configuratie-DSL. De Node.js-bridge is geïsoleerd achter ProcessBuilder. Deze plugin vult het gat tussen slides en standalone video's. Dit verklaart waarom het bestaat, hoe het samenwerkt met `capsule-gradle`, en wat het toevoegt aan de productiepijplijn voor inhoud.
Audit van mijn LLM‑consumptie : SQLite, OpenCode, Ollama Cloud, en waarom mijn pro‑abonnement de wereldwijde markt opschudt
Ik heb de SQLite-database van OpenCode geopend om mijn werkelijke verbruik over 73 dagen te controleren. 2,6 miljard tokens, 1 022 sessies, totale API-kosten van 22 cent. Uitgebreide vergelijking met Anthropic Claude ($300K+), OpenAI GPT, Groq, HuggingFace, Together AI en de Chinese leveranciers. Resultaat: mijn Ollama Cloud Pro‑abonnement van 20 € per maand is de beste aanbieding op de wereldmarkt, inclusief vergeleken met directe Chinese aanbiedingen.
De architectuur « Onafhankelijke plugin + consumentenroot »: Waarom worden mijn Gradle-builds geduplicerd?
Een klone, een `./gradlew tasks`, en je Gradle-plugin werkt. Nul configuratie, nul README om te lezen. Dit is de architectuur die ik heb ingezet op mijn 6 foundry/public/ plugins: een minimale consumer-root + een autonoom `{name}-plugin/` map. Waarom dit patroon van 'schijnbare duplicatie' het meest productief is voor Gradle-pluginontwikkeling – met native dogfooding, buildisolatie en duidelijk DAG-contract.
De Knowledge Graph als aanbevelingsmotor : hoe ik de chronologische gerelateerde artikelen heb doodgemaakt
De huidige « gerelateerde artikelen » op cheroliv.com zijn gewoon de 4 laatste gepubliceerde berichten. Een semantische anomalie gecorrigeerd door een drie‑lagen aanbevelingsmotor: expliciete referenties (xref), emergent ontology (NLP‑clusters) en een chronologisch fall‑back. Alles is aangesloten op de Knowledge Graph van graphify, verbruikt door bakery — zonder dat engine er iets van weet.
27× tot 45× effectiever dan Claude en GPT: hoe een vloot van 23 fine-getunede AI-experts de markt domineert
Efficiëntiefactor van 27× tot 45× ten opzichte van Claude, GPT en consorten: hoe een vloot van 23 AI-experts, gefine-tuned op mijn workspace, de markt verplettert. Architectuur, dataset, training en volledige implementatie.
Huisgemaakte Gradle-plugin voor het parallel uitvoeren van twee Ollama Pro‑instanties
Aangepast build.gradle.kts-bestand om twee Ollama Pro‑instanties vanaf Gradle‑taken te besturen — starten, stoppen, inloggen, modellen pullen en gezondheidscontrole. Van infra aangestuurd door het build‑tool.
Twee Ollama Pro-abonnementen combineren op dezelfde machine met Docker
Docker maakt het mogelijk om een Ollama Pro-abonnement op dezelfde machine te dupliceren door de identiteitssleutels en netwerkpoorten te isoleren. Hier is hoe u dit stap voor stap doet.
Kitty-terminal installeren en Zsh configureren als standaardshell onder Xubuntu
Deze blogpost presenteert de volledige procedure voor installatie en configuratie van de kitty‑terminal op Ubuntu.
DGX Spark versus Cloud versus LLM‑abonnementen — De economische benchmark die de droom van lokale hardware doodt
Voor $4 699 de DGX Spark, $20/maand Ollama Pro, $1,38/uur de H100 in de cloud — de berekening is snel gedaan.
De LLM Governance Matrix – Waarom de veiligheid van uw AI begint met de architectuur
En wat als de veiligheid van uw AI niet afhankelijk zou zijn van een prompt maar van een bestandssysteem? Dit architectuurmanifest definieert een 4×4‑matrix – fysieke zone × LLM‑toegangsrecht – die mechanisch onmogelijk maakt dat geheimen uitlekken, open‑ en gesloten‑broncode mengen en meningen vermomd als feiten gepubliceerd worden. Geen prompt om te schrijven. Geen regel om te onthouden. Gewoon mappen.
De granulering OSS/CSS — Waarom heb ik foundry/ in tweeën gesplitst
foundry/` vermengde open‑sourcecode en privécode in dezelfde map. De RAG en de kennisgraf wisten geen onderscheid te maken. Oplossing? Splits dit functionele gedeelte in twee — OSS/ voor het publiek (Apache 2.0, vrije indexering), CSS/ voor de gesloten bron (privédataset alleen). Er is geen noodzaak meer om de LLM voorzichtigheid bij te brengen; het bestandssysteem doet dat voor hem. En ik heb er gebruik van gemaakt om cheroliv.com op te slaan waar het altijd al had moeten horen: in office/sites/.
Geautomatiseerde epistemische compartimentering — Hoe de LLM mijn mentale tuin beschermt
Het patroon STIMULUS neemt niet genoegen met het vastleggen van rauwe ideeën en het verdunnen ervan in de documenten van de werkruimte. Het voegt een kritieke laag toe: het LLM is verantwoordelijk voor het classificeren van elke informatie als Visie (publiceerbaar op de blog), Mening (beperkt tot de privé kring) of Strategie (beperkte verspreiding). Deze automatische epistemische segregatie is wat het mogelijk maakt om vrij te denken in Cirkel 0 zonder angst voor ongepaste publicatie.
Onze eerste medewerker : de dataset-anonimiseur — MVP0 in proefperiode
Voordat je RAG, fine-tuning of SaaS doet, heb je schone data nodig. Onze eerste aanstelling in proeftijd — de Anonymiseur — detecteert en verwijdert PII uit multi-technologische bronnen (SQL, pgvector, ONNX, Graphify, JSON, YAML, AsciiDoc). Dit is de MVP0. Zonder hem is de rest ofwel illegaal, wel technisch verouderd. Zo toont deze bouwsteen hoe een universeel probleem wordt omgezet in een marktbaar product.
Onze eerste aanname: de Dataset-anonimiseur — MVP0 in proefperiode
Voordat je aan RAG, fine-tuning of SaaS begint, zijn schone gegevens nodig. Onze eerste nieuwe medewerker in de proefperiode — de Anonymiseur — detecteert en reinigt PII in multi-technologiebronnen (`SQL`, `pgvector`, `ONNX`, `Graphify`, `JSON`, `YAML`, `AsciiDoc`). Dit is de MVP0. Zonder deze is al het andere ofwel illegaal, ofwel technisch verslechterd. Hier is hoe deze bouwsteen een universeel probleem transformeert in een vermarktbaar product.
De Geheime Tuin van de Ontwikkelaar: Hoe Ruimtelijke Ontologie LLM's Aligneert Zonder Prompt Engineering
Wat als de beste manier om een LLM uit te lijnen geen prompt is, maar een bestandssysteem? Mijn workspace is gestructureerd in vier concentrische vertrouwenscirkels, van het meest intieme tot het meest publieke. De LLM hoeft de regels niet te onthouden — hij ziet ze bij elk bestandspad. Hier is hoe deze ruimtelijke ontologie agent-governance robuuster maakt dan een blok tekstuele regels.
Migratie Supabase → Firebase : Een contactformulier aansluiten op Firestore zonder backend
Mijn contactformulier draaide al maanden op een mock.
DeepSeek-V4-Pro, Kimi K2.6, GLM-5.1: Drie LLMs onderworpen aan de test van lange‑context vibe coding
Gedurende drie weken heb ik drie belangrijke modellen laten draaien op mijn sessies voor Gradle‑pluginontwikkeling met Opencode. Context: 30K tokens, governance: Eager/Lazy/Hot/Warm/Cold, taken voor refactoring, TDD en architectuur. Hier is degene die heeft overleefd — en waarom de anderen zijn afgehaakt.
Agent Context Audit: Wanneer uw eigen bestuur het probleem wordt — en hoe u het kunt herstellen zonder iets te verliezen.
Na twee artikelen over de structurering en de back-up van het agent-context, ontdek ik dat het bestand dat de methode documenteert zelf de grootste tokenverbruiker is geworden. Sectie-voor-sectie audit van een AGENT_MODUS_OPERANDI van 627 regels, identificatie van duplicaten, en een oplossing voor encyclopedische splitsing die de engineering behoudt zonder de context te verzadigen.
Sliding Window en Koude Golf: Wanneer de Agent-context explodeert en je moet archiveren zonder verlies
Na maanden van Opencode-sessies exploderen de governance-bestanden. 5200 automatisch geladen regels. Ik conceptualiseer een mechanisme van sliding window en "vague froide identique" om een lichte actieve context te behouden zonder iets te verliezen.
Wanneer Gradle 9, Docker 29 en Testcontainers de moed verliezen: debuggen van een JHipster-build
Een `./gradlew build` dat mislukt bij elf opeenvolgende fouten, sinds een variabele `reportsDir` die ontbreekt tot Docker Engine 29 die de docker-java-client 1.32 weigert. Hier is het volledig debuglogboek van een JHipster-build met Gradle 9, Java 21 en Testcontainers 2.0.5.
Een AI-Agent aansturen met AsciiDoc: Mijn Eager/Lazy-strategie voor Opencode-sessies zonder contextlekken
Om het verlies van context tussen sessies van een AI-agent aan te pakken, heb ik een handmatige governancestrategie ontwikkeld op basis van AsciiDoc-bestanden. Het principe: een automatisch geladen Eager-dashboard, een Lazy-gebruikershandleiding op aanvraag en een onontkoombare procedure voor het beëindigen van de sessie.
Waarom `serve` een lelijke website toonde, terwijl `publishSite` perfect was?
De taak `serve` van mijn Gradle JBake-plugin toonde rechthoekige knoppen, onleesbare tekst en een gedeeltelijk ontbrekend CSS, terwijl `publishSite` een perfect site produceerde. Oorzaak: JBake-CLI-argumenten werden doorgegeven met een verkeerde syntaxis. Hier volgt de volledige diagnose en hoe ik het heb opgelost.
OpenCode en het onvolledige PATH: waarom waren je tools niet in de shell van de agent?
OpenCode voert niet‑interactieve shells uit die .zshrc niet bronnen. Resultaat: SDKMAN, NVM, ~/apps en pnpm zijn afwezig in de PATH van de agent. Volledige diagnose van het probleem, vergelijking van het gedrag van SDKMAN versus NVM, en definitieve oplossing via .zshenv + symlink ~/.nvm/current.
Graphify integreren in een Gradle-workflow: van de Knowledge Graph naar het PlantUML-diagram in één commando
Graphify extraheert een Knowledge Graph uit uw codebase. De Gradle PlantUML-plugin transformeert deze graf naar deterministische PlantUML-diagrammen. Volledige pipeline: pip install graphify → graphify . --no-viz → ./gradlew generateKnowledgeGraphDiagram → versie‑beheerde PNG‑diagrammen in Git.
Graphify integreren in een Gradle-workflow: van de Knowledge Graph naar het PlantUML-diagram in één opdracht
Graphify haalt een Knowledge Graph uit jouw codebase. De Gradle PlantUML-plug-in zet deze graaf om in deterministische PlantUML-diagrammen. Volledige pipeline: pip install graphify → graphify . --no-viz → ./gradlew generateKnowledgeGraphDiagram → versiebeheerde PNG-diagrammen in Git.
Het super-tip van de opdracht fg : wanneer Ctrl+Z je terminalsessie redt
Je hebt een opdracht gestart die je terminal blokkeert? Ctrl+Z zet deze op pauze, fg hervat deze. Ontdek hoe fg, bg en jobs jouw productiviteit in de terminal transformeren.
VS Code in het thuismap: lokale installatie en aanpassing van fonts zonder sudo
Installeer VS Code in uw Linux home voor volledige controle zonder sudo. Pas daarna de lettertypen van het menu en de bestandsverkenner aan — een traject vol obstakels dat uiteindelijk leidt tot een leesbare gebruikersinterface.
Migratie van een Asciidoctor RevealJS-plugin naar buildSrc Kotlin: reverse engineering van een Groovy-API
Hoe migreer je de configuratie van een `AsciidoctorJRevealJSTask`-taak van het root buildscript naar een zelfstandige Kotlin buildSrc-plugin, waarbij de Groovy-DSL `ruby { gems() }` wordt vervangen door de onderliggende mechanismen die via bytecode-introspectie zijn ontdekt.
JBake Architectuurportfolio - Visie en Gebruikscases
Ontdek hoe ik een reeks complexe Mockito-mockingsproblemen heb opgelost in de tests van een Gradle-plugin, van de fout "Wanted but not invoked" tot cascaderende "Unfinished Stubbing".
Hybride architectuur : Het beste van twee werelden met Supabase en Spring Boot
Combineer Supabase voor eenvoudig CRUD en Spring Boot voor complexe logica. Pragmatische hybride architectuur, schaalbaar en kosteneffectief.
Hybride Architectuur: Het Beste van Twee Werelden met Supabase en Spring Boot
Combineer Supabase voor eenvoudige CRUD en Spring Boot voor complexe logica. Een pragmatische, schaalbare en kosteneffectieve hybride architectuur.
De Kunst van Voorladen: Verwijder het 'Flash' van het thema met JavaScript en CSS
Efficiënt loggen in functionele tests voor Gradle-plugins
Volledige handleiding voor het implementeren van een robuust en onafhankelijk logsysteem in functionele tests van Gradle‑plugins met SLF4J en Logback
Gekleurde vierkantjes weergeven in AsciiDoc: Praktische gids
Praktische gids voor het integreren van kleurstalen in AsciiDoc met behulp van de macro pass:[] met inline HTML en CSS. Compatibel met JBake en alle processors.
Internationalisering van een statische JBake-site met Thymeleaf
Installeren en controleren Tor Browser onder Ubuntu
Volledige procedure voor het downloaden, verifiëren en starten van Tor Browser onder Ubuntu, met een reflectie op cryptografische verificatie en ethisch en educatief browsen op het Tor‑netwerk.
Artikel 5 : Het avontuur van het gedeelde libs.versions.toml
Een duik in het versie‑catalogus van Gradle (`libs.versions.toml`) en hoe je dit kunt delen in een composite build, aan de hand van een concreet probleem dat we zijn tegengekomen met onze site‑baker-plugin.
Artikel 4: Het valkuil van de Gradle-configuratiecache
Onverwachte debugavontuur dat ons in de details van Gradle’s configuratiecache liet duiken. Ontdek waarom onze builds zich vreemd gedroegen en hoe we het probleem hebben opgelost.
Artikel 3: Integratie van Jackson voor YAML‑parsing met TDD in een Gradle‑plugin
Ontdek hoe je de Jackson-bibliotheek kunt integreren om YAML-configuratiebestanden te parseren naar Kotlin-objecten binnen een Gradle-plugin, door een Test‑Driven Development (TDD)-benadering te volgen.
Artikel 2: Een Gradle-plugin ontwikkelen met een TDD-benadering
In dit artikel gaan we onderzoeken hoe we een stevige ontwikkelingsbasis voor een Gradle-plugin kunnen opzetten met behulp van een testgedreven ontwikkelingsaanpak (TDD - Test-Driven Development).
Artikel 1 : Een Gradle-plugin maken van A tot Z met de opdracht gradle init
Een stap-voor-stap gids om een Gradle-pluginproject te initialiseren met de standaardtaak `init`, de gegenereerde structuur te begrijpen en de eerste build-opdrachten uit te voeren.
Artikel 0: Instellen van de omgeving voor het maken van Gradle-plugins
Voordat we onze eerste plugin gaan programmeren, moeten we onze machine voorbereiden. Deze handleiding laat je zien hoe je de essentiële tools kunt installeren en configureren: een JDK, IntelliJ IDEA, Gradle en JBake.
CI/CD Python – Deel 3: Verder gaan met Poetry, Docker en geavanceerde publicatie
Deel 3 - Volledige gids voor het opzetten van een robuust CI/CD-pipeline met GitHub Actions, van linting en automatische tests tot automatische implementatie op PyPI bij releases.
Deel 2: Industrialiseren en beveiligen van een geavanceerd Python CI/CD-pipeline
Deel 2 - Volledige gids voor het opzetten van een robuuste CI/CD-pipeline met GitHub Actions, van linting en geautomatiseerde tests tot automatisch deployen naar PyPI bij releases.
Deel 1: Een eenvoudige CI/CD-pipeline opzetten voor Python en PyPI
Deel 1 - Volledige gids voor het opzetten van een robuuste CI/CD-pipeline met GitHub Actions, van linting en geautomatiseerde tests tot automatische implementatie op PyPI bij releases.
Ontwikkeling van een Muziek-Discord bot : Functionele Architectuur en Log‑gedreven Ontwikkeling
Koelen en monitoren van de temperatuur van zijn laptop onder Ubuntu
Verhaal van een debugging: de grilligheden van Firefox temmen met Bootstrap 5
Los de Gradle-unittestuitdaging op met `gradle.properties
Ontdek een effectieve techniek voor het unittesten van Gradle-plugins die afhankelijk zijn van `gradle.properties`. Dit artikel legt uit hoe je `ExtraPropertiesExtension` gebruikt om eigenschappen te simuleren, wat geïsoleerde, betrouwbare en onderhoudbare tests garandeert, geïllustreerd met PlantUML-diagrammen.
Gradle-taakbeheer optimaliseren met Kotlin DSL en buildSrc
Optimaliseer Gradle met buildSrc en Kotlin DSL voor herbruikbare taken en schonere builds.
TDD van een configureerbare Kotlin-Gradle-plugin met JBake en JGit
Deze post presenteert het volledige proces van ontwerp en testen (TDD) van een Gradle-plugin geschreven in Kotlin DSL. Deze plugin automatiseert de generatie van statische websites met *JBake* en de *Git-implementatie* via *JGit*, alles gebaseerd op een YAML-configuratiebestand.
AsciiDoc : Ontdek en beheers de syntaxis voor effectieve documentatie
Duik in de syntaxis van AsciiDoc en leer hoe je duidelijke, gestructureerde en krachtige documenten kunt schrijven voor al je documentatie- en publicatiebehoeften.
Een lokale service op internet blootstellen vanaf Ubuntu: Volledige gids over poortforwarding
Hoe stel je poort forwarding in om een lokaal draaiende service op Ubuntu toegankelijk te maken vanaf buiten je thuisnetwerk.
Mockito debuggen: Het oplossen van de fout "Wanted but not invoked" in de tests van Gradle-plugins
Ontdek hoe ik een reeks complexe Mockito-mockingproblemen heb opgelost in de tests van een Gradle‑plugin, van de fout "Wanted but not invoked" tot de kettingreactie van "Unfinished Stubbing".
Kotlin Arrow: Navigatie beheersen in de Either monade
Ontdek de geavanceerde technieken om efficiënt te navigeren in de rechter- en linkerkant van de Either-monade met de Kotlin Arrow-bibliotheek.
Praktische gids: zoeken naar bestanden onder linux
Leer hoe je efficiënt bestanden kunt zoeken onder Linux met Zsh met behulp van find, locate en grep.
Linux memo
Eenvoudig memo over unix/linux en de bash-terminal
Een poort van het Linux-subsysteem voor de Windows-host blootstellen
Een poort van het Linux-subsysteem blootstellen voor de Windows-host, met de opdracht `wsl --install`.
Installeer Pandoc
Installeer Pandoc, wat een documenttransformatortool is, op Linux en Windows WSL
Implementatie van kotlin.Triple in JavaScript, TypeScript en Python
Laten we een implementatie voorstellen van kotlin.Triple in JavaScript, TypeScript en Python
Inleiding tot Google Apps Script
Volledige introductie tot Google Apps Script
Expresstraining over Google Form Script en Automatisering
Express opleiding over Google Form Script en Automatisering
Memo Python
simpele memo Python
Webontwikkelaar
Opleiding Webontwikkeling
Kaartspellen (TCGs)
Training ruilkaartspellen (TCG)
Memo Typescript
eenvoudig memo Typescript
Notitie CSS
simpel CSS-memo
Memo HTML
simpel memo HTML
Javascript memo
eenvoudige JavaScript-memo
Memo kadering
een eenvoudig memo over de afbakening van een project
Mémo Kotlin
simple memo kotlin
JVM-memo
simpele memo JVM
Memo Gradle
simpele memo gradle
Training - Kotlin: enum, sealed classes
Programmeren in kotlin: enum, sealed classes
Training - Kotlin
Programmeren in Kotlin, plan.
Memo ontwerpsysteem
Eenvoudig memo van nuttige links en referenties in het design systeem
Kubernetes, Microk8s, Docker: eerste stappen
Installatie, opzetten van micro kubernetes, docker en het opstarten van een hello world op Linux/Unix
Gradle: Een extern proces uitvoeren vanaf een Gradle-taak
Hoe lanceer je een extern binair bestand vanaf een Gradle-taak
Kotlin: NotImplementedException, NotImplementedError
Nog niet geïmplementeerd, maakt het mogelijk de juiste uitzondering te werpen.
onttarren
de untar-toepassing
Gradle: Opnieuw de tests uitvoeren, zelfs wanneer de tests up-to-date zijn.
Voeg het argument --rerun-tasks toe aan de opdrachtregel.
Docker installeert de applicatie niet, maar haalt deze eerder op.
docker optimalisatie
Gherkin in het Frans:
BDD, cucumber, gherkin in het Frans
Gradle cli: een parameter overschrijven
./gradlew -Pparam_component=CUSTOM
Memo git
simpele memo git
Downloaden vanaf een URL
wget URL-stofzuiger
Een opstartbare schijf maken
Maak zijn opstartbare schijf
Uitzippen via CLI in een doelmap
uitpakken via de commandolijn
Toon de som van de bestandsgroottes in de mappenlijst
de som van de bestandsgroottes in een map
Een branch verwijderen op GitHub
aanvulling memo git
Asciidoc/Markdown Memo
eenvoudig memo ascidoc/markdown
Debian: Installeer een .deb-bestand vanaf de opdrachtregel
installeren .deb bestanden via de opdrachtregel
Gradle: resources-map zichtbaar in de IDE
Voeg een map toe aan de classpath van een Gradle-build
Groovy script, grab en ivy configuratie
gradle groovy ivy
Groovy: een beetje algebra, de GGD en het KGV
van de algebra in groovy
Bash: Zoek bestanden op extensie, output naar bestand met find
een beetje bash met find
Een digitaal project beheren met een watervalmethodologie
een beetje methodologie van digitale projecten met de waterval-methode
Lijst de databases in een PostgreSQL-instantie
tasten van postgres
Groovy: Hernoem bestanden recursief
recursie in Groovy
Groovy: Zoeken naar bestanden met criterium, kopie van de selectie
patroongebaseerde bestandszoekopdracht in Groovy
Groovy: Bestandsmanipulatie, zoeken en verwijderen
bestandsmanipulatie en zoeken naar tekens in Groovy
Groovy: Vervang een tekenreeks in een String en laad een Properties vanaf een bestand
manipulatie van Properties en zoeken naar patroon in Groovy
Groovy: ASCII-tekens
Groovy, lussen en manipulatie van ASCII-code