Blog
Últimos artículos y recursos
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.
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.
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?
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.
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.
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.
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.
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.
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.
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.
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/.
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.
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.
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.
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.
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é».
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.
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.
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.
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.
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.
¿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í.
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.
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.
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.
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.
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.
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?
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.
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.
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.
El Arte de la Precarga: Eliminar el "Flash" del Tema con JavaScript y CSS
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
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.
Internacionalización de un sitio estático JBake con Thymeleaf
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.
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.
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.
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).
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).
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.
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.
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.
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.
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.
Desarrollo de un Bot Discord Musical: Arquitectura Funcional y Desarrollo Basado en Logs
Enfriar y supervisar la temperatura de su portátil bajo Ubuntu
Relato de una depuración: domar los caprichos de Firefox con Bootstrap 5
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.
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.
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.
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.
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?
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.
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.
Guía práctica: búsqueda de archivos bajo linux
Aprendan a buscar eficientemente archivos bajo Linux con Zsh utilizando find, locate y grep.
Memo Linux
Simple memorando sobre unix/linux y la terminal bash
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`.
Instalar Pandoc
Instalar Pandoc que es un transformador de documento, en Linux y Windows WSL
Implementación de kotlin.Triple en JavaScript, TypeScript y Python
Proponemos una implementación de kotlin.Triple en JavaScript, TypeScript y Python
Introducción a Google Apps Script
Introducción completa a Google Apps Script
Formación Express sobre Google Form Script y Automatización
Formación Express sobre Script y Automatización de Google Forms
Memo Python
simple memo Python
Desarrollo web
Formación Web dev
Juegos de cartas coleccionables (TCGs)
Entrenamiento de juegos de cartas coleccionables (TCG)
Memorando TypeScript
simple memorando Typescript
Nota CSS
simple memo CSS
Nota HTML
simple memo HTML
Memorando JavaScript
simple memo Javascript
Memorando de encuadre
un simple memorando sobre el alcance de un proyecto.
Memo Kotlin
simple memo kotlin
Memo JVM
memo simple JVM
Memo Gradle
simple memo gradle
Entrenamiento - kotlin: enum, clases selladas
Programación en kotlin: enum, clases selladas
Entrenamiento - Kotlin
</think>
Memorándum de sistema de diseño
Nota simple de los enlaces útiles y las referencias en el sistema de diseño
Kubernetes, Microk8s, Docker: primeros pasos
Instalación, puesta en marcha de micro kubernetes, docker y lanzamiento de un helloworld en linux/unix
Gradle: Ejecutar un proceso externo desde una tarea gradle
Cómo lanzar un binario externo desde una tarea gradle
Kotlin: NotImplementedException, NotImplementedError
Aún no implementado, permite lanzar la excepción correcta.
Untar
la aplicación untar
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.
Docker no instala la aplicación, sino que la extrae en su lugar.
docker optimización
Gherkin en español
BDD, cucumber, gherkin en francés
Gradle cli: sobrecargar un parámetro
./gradlew -Pparam_component=CUSTOM
Nota git
simple memo git
Obtener desde una URL
wget aspirador de URLs
Crear un disco arrancable
hacer su disco booteable
Descomprimir en CLI dentro de un directorio de destino
descomprimir desde la línea de comandos
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
Destruir una branch en github
complemento nota git
Asciidoc/Markdown Memorando
simple nota ascidoc/markdown
Debian : Instalar un archivo .deb desde la línea de comandos
instalar paquetes .deb en la línea de comandos
Gradle: carpeta resources visible en el IDE
añadir una carpeta al classpath de un build gradle
Script Groovy, configuración grab e ivy
gradle groovy ivy
Groovy: un poco de álgebra, el mcd y el mcm
del álgebra en Groovy
Bash : Encontrar archivos por extensión salida a archivo con find
un poco de bash con find
Gestionar un proyecto digital con una metodología en cascada
un poco de methodo de proyectos digitales con la metodología en cascada
Listar las bases de datos en una instancia de PostgreSQL
tentoneo de postgres
Groovy: Renombrar archivos de forma recursiva
recursión en groovy
Groovy: Búsqueda de archivos con criterio, copia de la selección
búsqueda de archivo por patrón en groovy
Groovy: Manipulación de archivos, búsqueda y eliminación
manipulación de archivos y búsqueda de caracteres en groovy
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
Groovy: Caracteres ASCII
de Groovy, bucles y manipulación de código ASCII