Blog

Últimos artículos y recursos

31 May 2026
HyperFrames-Gradle: Convertir AsciiDoc a video MP4

El plugin `hyperframes-gradle` transforma el AsciiDoc en un video MP4 mediante HyperFrames. AsciidoctorJ lleva el DSL de configuración. El puente Node.js está aislado detrás de ProcessBuilder. Este plugin cubre la brecha entre diapositivas y videos independientes. Así que aquí está por qué existe, cómo se articula con capsule-gradle, y qué aporta al pipeline de producción de contenido.

18 May 2026
Auditoría de mi consumo LLM: SQLite, OpenCode, Ollama Cloud, y por qué mi suscripción Pro está revolucionando el mercado mundial

He abierto la base SQLite de OpenCode para auditar mi consumo real durante 73 días. 2,6 mil millones de tokens, 1 022 sesiones, costo total de API de 22 céntimos. Comparación exhaustiva con Anthropic Claude ($300K+), OpenAI GPT, Groq, HuggingFace, Together AI y los proveedores chinos. Resultado: mi suscripción Ollama Cloud Pro a 20 €/mes es la mejor oferta del mercado mundial, incluso frente a las ofertas directas chinas.

14 May 2026
La arquitectura “Plugin independiente + raíz consumidora”: ¿por qué mis builds de Gradle se duplican?

Con solo clonar, ejecutando `./gradlew tasks`, tu plugin Gradle funciona. Cero configuración, cero README por leer. Esta es la arquitectura que he desplegado en mis 6 plugins foundry/public/: una raíz mínima del consumidor + un directorio `{name}-plugin/` independiente. ¿Por qué este patrón de «duplicación aparente» es el más productivo para el desarrollo de plugins Gradle — con dogfooding nativo, aislamiento de compilaciones y contrato DAG claro?

12 May 2026
El Knowledge Graph como motor de recomendación: cómo maté los « artículos conexos » cronológicos

Los «artículos relacionados» actuales en cheroliv.com son solo los últimos 4 posts publicados. Una aberración semántica corregida por un motor de recomendación de tres capas: referencias explícitas (xref), ontología emergente (clusters NLP) y fallback cronológico. Todo conectado al Knowledge Graph de graphify, consumido por bakery — sin que engine sepa nada de todo eso.

11 May 2026
27× a 45× más eficaz que Claude y GPT: cómo una flota de 23 expertos en IA afinados domina el mercado

Factor de eficiencia de 27× a 45× frente a Claude, GPT y similares: cómo una flota de 23 expertos en IA afinados en mi espacio de trabajo supera el mercado. Arquitectura, conjunto de datos, entrenamiento e implementación completos.

08 May 2026
Plugin Gradle interno para pilotar dos instancias de Ollama Pro en paralelo

Un build.gradle.kts personalizado para controlar dos instancias de Ollama Pro desde tareas de Gradle — inicio, parada, sign-in, descarga de modelos y comprobación de salud. De una infraestructura gestionada a la herramienta de compilación.

08 May 2026
Utilizar dos suscripciones Ollama Pro simultáneamente en la misma máquina con Docker

Docker permite duplicar una suscripción Ollama Pro en la misma máquina aislándose las claves de identidad y los puertos de red. Así es como hacerlo, paso a paso.

07 May 2026
Instalar el terminal Kitty y configurar ZSh como shell predeterminado en Xubuntu

Esta publicación presenta el proceso completo de instalación y configuración del terminal kitty en Ubuntu.

06 May 2026
DGX Spark vs Nube vs Suscripciones LLM — El Benchmark Económico Que Mata el Sueño del Hardware Local

A $4 699 el DGX Spark, $20/mois Ollama Pro, $1.38/h el H100 en la nube — el cálculo es rápido. Este benchmark compara todas las opciones disponibles en 2026 para ejecutar LLMs, desde la inferencia hasta el fine‑tuning. Veredicto: el Spark es un objeto de lujo, no una herramienta rentable. La verdadera razón para comprar hardware local en 2026 no es económica — es política.

04 May 2026
La Matriz de Gobernanza LLM — Por qué la Seguridad de su IA comienza con la arborescencia

¿Y si la seguridad de su IA no dependiera de un prompt sino de un sistema de archivos? Este manifiesto de arquitectura define una matriz 4×4 — zona física × derecho de acceso LLM — que hace mecánicamente imposible la fuga de secretos, la mezcla open/closed source y la publicación de opiniones disfrazadas de hechos. Ningún prompt que escribir. Ninguna regla que retener. Sólo carpetas.

03 May 2026
La Granularización OSS/CSS — Por qué corté foundry/ en dos

foundry/` mezclaba código abierto y código privado en la misma carpeta. El RAG y el knowledge graph no sabían distinguir. ¿La solución? Dividir esta zona funcional en dos — OSS/ para el público (Apache 2.0, indexación libre), CSS/ para el código cerrado (dataset privado únicamente). Ya no hace falta decirle al LLM que sea cauteloso. El sistema de archivos lo hace por él. Y aproveché para ubicar cheroliv.com donde siempre debió estar: en office/sites/.

02 May 2026
Compartimentación Epistémica Automatizada — Cómo el LLM protege mi Jardín Mental

El patrón STIMULUS no se limita a capturar ideas crudas y a diluirlas en los documentos del espacio de trabajo. Añade una capa crítica: el LLM es responsable de clasificar cada información en Vision (publicable en el blog), Opinion (confidencial al círculo privado) o Estrategia (diluición restringida). Esta segregación epistémica automatizada es lo que permite pensar libremente en Círculo 0 sin temor a una publicación inadecuada.

01 May 2026
Nuestro Primer Contratado: el Anonimizador de Conjuntos de Datos — MVP0 en Período de Prueba

Antes de hacer RAG, fine-tuning o SaaS, se necesitan datos limpios. Nuestro primer empleado en período de prueba — el Anonimizador — detecta y limpia los PII en fuentes multi-tecnológicas (SQL, pgvector, ONNX, Graphify, JSON, YAML, AsciiDoc). Es el MVP0. Sin él, todo lo demás es o ilegal o técnicamente degradado. Aquí se muestra cómo este componente transforma un problema universal en un producto comercializable.

01 May 2026
Nuestro Primer Contratado: el Anonimizador de Datasets — MVP0 en Período de Prueba

Antes de hacer RAG, fine-tuning o SaaS, se necesita datos limpios. Nuestro primer contratado durante el periodo de prueba — el Anonimizador — detecta y limpia los PII en fuentes multi-tecnológicas (SQL, pgvector, ONNX, Graphify, JSON, YAML, AsciiDoc). Es el MVP0. Sin él, todo lo demás es ilegal o técnicamente degradado. Así es como este bloque transforma un problema universal en un producto comercializable.

30 April 2026
El Jardín Secreto del Desarrollador: Cómo la Ontología Espacial Alinea los LLMs Sin Ingeniería de Prompts

Y si la mejor forma de alinear un LLM no fuera un prompt, sino un sistema de archivos? Mi espacio de trabajo está estructurado en cuatro círculos de confianza concéntricos, desde el más íntimo hasta el más público. El LLM no tiene que memorizar las reglas — las ve en cada ruta de archivo. Aquí está cómo esta ontología espacial hace que la gobernanza agente sea más robusta que un bloque de reglas textuales.

29 April 2026
Migración Supabase → Firebase : Conectar un Formulario de Contacto a Firestore sin Backend

Mi formulario de contacto estuvo funcionando con un mock durante meses. El plan inicial de Supabase fue abandonado en favor de Firebase. Yo cuento la creación del proyecto, la configuración de Firestore, la reescritura del JS de envío, la limpieza del código muerto, y lo que esta migración dice del estado de ánimo «finir ce qu'on a commencé».

28 April 2026
DeepSeek-V4-Pro, Kimi K2.6, GLM-5.1 : Tres LLMs a la prueba del Vibe Coding Long Contexto

Durante tres semanas, ejecuté tres modelos principales en mis sesiones de desarrollo de plugins Gradle con Opencode. Contexto de 30K tokens, gobernanza Eager/Lazy/Hot/Warm/Cold, tareas de refactorización, TDD y arquitectura. Aquí está cuál sobrevivió — y por qué los demás fallaron.

27 April 2026
Auditoría de Contexto del Agente: Cuando Su Propia Gobernanza Se Convierte en el Problema — y Cómo Repararla sin Perder Nada

Después de dos artículos sobre la estructuración y la copia de seguridad del contexto del agente, descubro que el archivo que documenta el método se ha convertido él mismo en el mayor consumidor de tokens. Auditoría sección por sección de un AGENT_MODUS_OPERANDI de 627 líneas, identificación de duplicados y solución de división enciclopédica que preserva la ingeniería sin saturar el contexto.

26 April 2026
Sliding Window y Vague Fría : cuando el contexto del agente explota y hay que archivar sin perder

Tras meses de sesiones Opencode, los archivos de gobernanza explotan. 5200 líneas cargadas automáticamente. Conceptualizo un mecanismo de ventana deslizante y una "ola fría idéntica" para mantener un contexto activo ligero sin perder nada.

25 April 2026
Cuando Gradle 9, Docker 29 y Testcontainers se ponen la rata al caldo: depuración de una compilación JHipster

Un `./gradlew build` que falla con once errores sucesivos, desde una variable `reportsDir` inexistente hasta Docker Engine 29 que rechaza el cliente docker-java 1.32. Aquí tienes el registro completo de depuración de una compilación JHipster en Gradle 9, Java 21 y Testcontainers 2.0.5.

24 April 2026
Gobernar un Agente de IA con AsciiDoc: Mi Estrategia Eager/Lazy para Sesiones de Opencode sin Fuga de Contexto

Ante la fuga de contexto entre las sesiones de un agente de IA, he desarrollado una estrategia artesanal de gobernanza basada en archivos AsciiDoc. El principio: un tablero Eager de autocarga, un manual del propietario Lazy bajo demanda y un procedimiento de fin de sesión obligatorio.

22 April 2026
¿Por qué `serve` mostraba un sitio feo mientras que `publishSite` era perfecto?

La tarea `serve` de mi plugin Gradle JBake mostraba botones rectangulares, textos ilegibles y un CSS parcialmente ausente, mientras que `publishSite` producía un sitio perfecto. Causa raíz: argumentos CLI de JBake pasados con una sintaxis incorrecta. Aquí está el diagnóstico completo y cómo lo corregí.

21 April 2026
OpenCode y el PATH incompleto: por qué sus herramientas no estaban en el shell del agente

OpenCode ejecuta shells no interactivos que no cargan .zshrc. Resultado: SDKMAN, NVM, ~/apps y pnpm no aparecen en el PATH del agente. Diagnóstico completo del problema, comparación del comportamiento de SDKMAN vs NVM, y solución definitiva mediante .zshenv + symlink ~/.nvm/current.

19 April 2026
Integrar Graphify en un flujo de trabajo Gradle: del Knowledge Graph al diagrama PlantUML en un solo comando

Graphify extrae un Knowledge Graph de tu base de código. El plugin Gradle PlantUML transforma este grafo en diagramas PlantUML deterministas. Pipeline completo: pip install graphify → graphify . --no-viz → ./gradlew generateKnowledgeGraphDiagram → diagramas PNG versionados en Git.

19 April 2026
Integrar Graphify en un flujo de trabajo Gradle: del Knowledge Graph al diagrama PlantUML en un solo comando

Graphify extrae un Knowledge Graph de tu base de código. El plugin Gradle PlantUML transforma este grafo en diagramas PlantUML deterministas. Pipeline completo: pip install graphify → graphify . --no-viz → ./gradlew generateKnowledgeGraphDiagram → diagramas PNG versionados en Git.

18 April 2026
El mejor truco del comando `fg` : cuando `Ctrl+Z` salva tu sesión de terminal

¿Has ejecutado un comando que bloquea tu terminal? Ctrl+Z la suspende, fg la reanuda. Descubre cómo fg, bg y jobs transforman tu productividad en el terminal.

17 April 2026
VS Code en el Home: instalación local y personalización de fuentes sin sudo

Instala VS Code en tu home de Linux para mantener el control total sin sudo. Luego personaliza las fuentes del menú y del explorador de archivos — un recorrido lleno de obstáculos que finalmente lleva a una UI legible.

16 April 2026
Migración de un plugin Asciidoctor RevealJS a buildSrc Kotlin: ingeniería inversa de una API Groovy

¿Cómo migrar la configuración de una tarea AsciidoctorJRevealJSTask del script de compilación raíz a un plugin buildSrc Kotlin independiente, reemplazando el DSL Groovy ruby { gems() } por sus mecanismos subyacentes descubiertos mediante introspección de bytecode?

15 January 2026
Portafolio de Arquitectura JBake - Visión y Casos de Uso

Descubre cómo resolví una serie de problemas complejos de mocking con Mockito en las pruebas de un plugin de Gradle, desde el error "Wanted but not invoked" hasta los "Unfinished Stubbing" en cascada.

14 January 2026
Arquitectura híbrida: Lo mejor de los dos mundos con Supabase y Spring Boot

Combinen Supabase para el CRUD simple y Spring Boot para la lógica compleja. Arquitectura híbrida pragmática, evolutiva y económica.

14 January 2026
Arquitectura Híbrida : Lo Mejor de los Dos Mundos con Supabase y Spring Boot

Combina Supabase para el CRUD sencillo y Spring Boot para la lógica compleja. Arquitectura híbrida pragmática, escalable y económica.

15 November 2025
El Arte de la Precarga: Eliminar el "Flash" del Tema con JavaScript y CSS

07 November 2025
Registro Eficaz en las Pruebas Funcionales de Complementos Gradle

Guía completa para implementar un sistema de registro robusto e independiente en las pruebas funcionales de plugins Gradle con SLF4J y Logback

01 November 2025
Mostrar cuadrados de colores en AsciiDoc: Guía práctica

Guía práctica para integrar muestras de color en AsciiDoc utilizando la macro pass:[] con HTML y CSS en línea. Compatible con JBake y todos los procesadores.

20 October 2025
Internacionalización de un sitio estático JBake con Thymeleaf

05 October 2025
Instalar y verificar Tor Browser en Ubuntu

Procedimiento completo para descargar, verificar y lanzar Tor Browser en Ubuntu, con una reflexión sobre la verificación criptográfica y la navegación ética y educativa en la red Tor.

27 September 2025
Artículo 5 : La Aventura del libs.versions.toml Compartido

Un vistazo al catálogo de versiones de Gradle (libs.versions.toml) y cómo compartirlo en un build composite, a través de un problema concreto encontrado con nuestro plugin site‑baker.

26 September 2025
Artículo 4 : La Trampa del Caché de Configuración Gradle

Una aventura inesperada de depuración que nos sumergió en las sutilezas del caché de configuración de Gradle. Descubra por qué nuestras compilaciones se comportaban de manera extraña y cómo resolvimos el problema.

25 September 2025
Artículo 3: Integración de Jackson para el análisis de YAML con TDD en un plugin de Gradle

Descubra cómo integrar la biblioteca Jackson para parsear archivos de configuración YAML en objetos Kotlin en un plugin Gradle, siguiendo un enfoque de Desarrollo Guiado por Pruebas (TDD).

24 September 2025
Artículo 2: Desarrollar un Plugin Gradle con un enfoque TDD

En este artículo, vamos a explorar cómo establecer una base de desarrollo sólida para un plugin Gradle utilizando un enfoque de Desarrollo Dirigido por Pruebas (TDD - Test-Driven Development).

23 September 2025
Artículo 1 : Crear un Plugin Gradle de A a Z con el comando gradle init

Una guía paso a paso para inicializar un proyecto de plugin Gradle utilizando la tarea estándar `init`, entender la estructura generada y ejecutar los primeros comandos de build.

22 September 2025
Artículo 0: Configuración del entorno para crear plugins Gradle

Antes de codificar nuestro primer plugin, debemos preparar nuestra máquina. Esta guía le muestra cómo instalar y configurar las herramientas esenciales: un JDK, IntelliJ IDEA, Gradle y JBake.

19 July 2025
CI/CD Python – Parte 3: Profundizando con Poetry, Docker y publicación avanzada

Parte 3 - Guía completa para configurar un pipeline CI/CD robusto con GitHub Actions, desde el lintado y las pruebas automatizadas hasta el despliegue automático en PyPI durante los lanzamientos.

18 July 2025
Parte 2: Industrializar y asegurar un pipeline CI/CD de Python avanzado

Parte 2 - Guía completa para implementar una canalización CI/CD robusta con GitHub Actions, linting y pruebas automatizadas hasta el despliegue automático en PyPI durante los lanzamientos.

17 July 2025
Parte 1 : Configurar un pipeline CI/CD sencillo para Python y PyPI

Parte 1 - Guía completa para configurar un pipeline CI/CD robusto con GitHub Actions, desde el linting y las pruebas automatizadas hasta el despliegue automático en PyPI durante las versiones.

16 July 2025
Desarrollo de un Bot Discord Musical: Arquitectura Funcional y Desarrollo Basado en Logs

15 July 2025
Enfriar y supervisar la temperatura de su portátil bajo Ubuntu

14 July 2025
Relato de una depuración: domar los caprichos de Firefox con Bootstrap 5

13 July 2025
Resolver el desafío de las pruebas unitarias de Gradle con `gradle.properties

Descubre una técnica eficaz para probar unitariamente plugins Gradle que dependen de `gradle.properties`. Este artículo explica cómo usar `ExtraPropertiesExtension` para simular propiedades, garantizando pruebas aisladas, fiables y mantenibles, ilustrado con diagramas PlantUML.

11 July 2025
Optimizar la Gestión de las Tareas de Gradle con Kotlin DSL y buildSrc

Optimiza Gradle con buildSrc y Kotlin DSL para tareas reutilizables y builds más limpios.

09 July 2025
TDD de un plugin Gradle Kotlin configurable con JBake y JGit

Este post presenta el proceso completo de diseño y pruebas (TDD) de un plugin Gradle escrito en Kotlin DSL. Este plugin automatiza la generación de sitios estáticos con *JBake* y el despliegue Git vía *JGit*, todo ello a partir de un archivo YAML de configuración.

20 June 2025
AsciiDoc : Descubrir y dominar la sintaxis para una documentación eficaz

Sumérjase en la sintaxis de AsciiDoc y aprenda a redactar documentos claros, estructurados y potentes para todas sus necesidades de documentación y publicación.

28 May 2025
Exponer un servicio local en Internet desde Ubuntu: Guía completa del reenvío de puertos

¿Cómo configurar el reenvío de puertos para hacer accesible un servicio local que se ejecuta en Ubuntu desde fuera de tu red doméstica?

17 November 2024
Depuración de Mockito: Resolver el error "Wanted but not invoked" en las pruebas de plugins Gradle

Descubra cómo resolví una serie de problemas complejos de mocking de Mockito en las pruebas de un plugin Gradle, del error "Wanted but not invoked" a los "Unfinished Stubbing" en cascada.

24 September 2024
Kotlin Arrow : Dominar la navegación en la mónada Either

Descubre las técnicas avanzadas para navegar eficientemente por los lados right y left de la monada Either con la biblioteca Kotlin Arrow.

23 September 2024
Guía práctica: búsqueda de archivos bajo linux

Aprendan a buscar eficientemente archivos bajo Linux con Zsh utilizando find, locate y grep.

23 September 2024
Memo Linux

Simple memorando sobre unix/linux y la terminal bash

01 February 2024
Exponer un puerto del subsistema Linux para el host Windows

Exponer un puerto del subsistema Linux para el host Windows, con el comando `wsl --install`.

30 January 2024
Instalar Pandoc

Instalar Pandoc que es un transformador de documento, en Linux y Windows WSL

25 December 2023
Implementación de kotlin.Triple en JavaScript, TypeScript y Python

Proponemos una implementación de kotlin.Triple en JavaScript, TypeScript y Python

22 December 2023
Introducción a Google Apps Script

Introducción completa a Google Apps Script

20 December 2023
Formación Express sobre Google Form Script y Automatización

Formación Express sobre Script y Automatización de Google Forms

19 November 2023
Memo Python

simple memo Python

24 August 2023
Desarrollo web

Formación Web dev

21 August 2023
Juegos de cartas coleccionables (TCGs)

Entrenamiento de juegos de cartas coleccionables (TCG)

19 August 2023
Memorando TypeScript

simple memorando Typescript

14 August 2023
Nota CSS

simple memo CSS

13 August 2023
Nota HTML

simple memo HTML

04 August 2023
Memorando JavaScript

simple memo Javascript

31 December 2022
Memorando de encuadre

un simple memorando sobre el alcance de un proyecto.

29 May 2022
Memo Kotlin

simple memo kotlin

28 May 2022
Memo JVM

memo simple JVM

23 May 2022
Memo Gradle

simple memo gradle

17 May 2022
Entrenamiento - kotlin: enum, clases selladas

Programación en kotlin: enum, clases selladas

12 May 2022
Entrenamiento - Kotlin

</think>

09 January 2022
Memorándum de sistema de diseño

Nota simple de los enlaces útiles y las referencias en el sistema de diseño

03 November 2020
Kubernetes, Microk8s, Docker: primeros pasos

Instalación, puesta en marcha de micro kubernetes, docker y lanzamiento de un helloworld en linux/unix

28 September 2020
Gradle: Ejecutar un proceso externo desde una tarea gradle

Cómo lanzar un binario externo desde una tarea gradle

27 September 2020
Kotlin: NotImplementedException, NotImplementedError

Aún no implementado, permite lanzar la excepción correcta.

26 September 2020
Untar

la aplicación untar

25 September 2020
Gradle: Volver a ejecutar las pruebas incluso cuando las pruebas están UP-TO-DATE

añadir el argumento --rerun-tasks a la línea de comando.

24 September 2020
Docker no instala la aplicación, sino que la extrae en su lugar.

docker optimización

23 September 2020
Gherkin en español

BDD, cucumber, gherkin en francés

22 September 2020
Gradle cli: sobrecargar un parámetro

./gradlew -Pparam_component=CUSTOM

21 September 2020
Nota git

simple memo git

20 September 2020
Obtener desde una URL

wget aspirador de URLs

19 September 2020
Crear un disco arrancable

hacer su disco booteable

18 September 2020
Descomprimir en CLI dentro de un directorio de destino

descomprimir desde la línea de comandos

17 September 2020
Mostrar la suma de los tamaños de archivo en la lista de directorios

la suma de los tamaños de archivos en una carpeta

16 September 2020
Destruir una branch en github

complemento nota git

15 September 2020
Asciidoc/Markdown Memorando

simple nota ascidoc/markdown

19 August 2019
Debian : Instalar un archivo .deb desde la línea de comandos

instalar paquetes .deb en la línea de comandos

16 August 2019
Gradle: carpeta resources visible en el IDE

añadir una carpeta al classpath de un build gradle

14 August 2019
Script Groovy, configuración grab e ivy

gradle groovy ivy

13 August 2019
Groovy: un poco de álgebra, el mcd y el mcm

del álgebra en Groovy

12 August 2019
Bash : Encontrar archivos por extensión salida a archivo con find

un poco de bash con find

01 August 2019
Gestionar un proyecto digital con una metodología en cascada

un poco de methodo de proyectos digitales con la metodología en cascada

30 July 2019
Listar las bases de datos en una instancia de PostgreSQL

tentoneo de postgres

29 July 2019
Groovy: Renombrar archivos de forma recursiva

recursión en groovy

19 July 2019
Groovy: Búsqueda de archivos con criterio, copia de la selección

búsqueda de archivo por patrón en groovy

18 July 2019
Groovy: Manipulación de archivos, búsqueda y eliminación

manipulación de archivos y búsqueda de caracteres en groovy

17 July 2019
Groovy: Reemplazar una secuencia de caracteres en una String y cargar una Properties desde un archivo

manipulación de Properties y búsqueda de patrón en groovy

10 July 2019
Groovy: Caracteres ASCII

de Groovy, bucles y manipulación de código ASCII