<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title type="text">Blog Bitix</title>
    <subtitle type="text">Blog sobre el lenguaje de programación Java y la distribución GNU/Linux que uso habitualmente, Arch Linux, lo que aprendo sobre el software libre, la programación web y otros temas relacionados con la tecnología y la informática. El contenido puede contener trazas de asuntos fuera de tema y estar asistido por IA.</subtitle>
    <link rel="self" href="https://picodotdev.github.io/blog-bitix/index.xml"/>
    <link href="https://picodotdev.github.io/blog-bitix/" />
    <id>https://picodotdev.github.io/blog-bitix/</id>
    <updated>2026-08-13T21:30:00+02:00</updated>
    <author><name>picodotdev</name></author>
    <generator>Hugo</generator>
    <icon>https://picodotdev.github.io/blog-bitix/assets/favicon.ico</icon>
    <logo>https://picodotdev.github.io/blog-bitix/assets/images/blog-bitix.svg</logo>
    <rights>https://creativecommons.org/licenses/by-sa/4.0/</rights>
    
    <entry>
        <id>https://picodotdev.github.io/blog-bitix/2026/08/trilogia-batman-arkham-cuando-un-juego-de-superheroes-te-sorprende/</id>
        <title>Trilogía Batman Arkham: cuando un juego de superhéroes te sorprende</title>
        <updated>2026-08-13T21:30:00+02:00</updated>
        <published>2026-08-13T21:30:00+02:00</published>
        <link rel="alternate" type="text/html" href="https://picodotdev.github.io/blog-bitix/2026/08/trilogia-batman-arkham-cuando-un-juego-de-superheroes-te-sorprende/"/>
        <author><name>picodotdev</name></author>
        <content type="html">
        <![CDATA[

        <p><strong>No soy muy aficionado a las películas de superhéroes, así que llegué a la trilogía <em>Batman: Arkham</em> de Rocksteady sin muchas expectativas, más por probar que por ser fan. Sin embargo, tras completar los tres juegos, Arkham Asylum, Arkham City y Arkham Knight. me he encontrado con una de las mejores experiencias de combate que he jugado. Su sistema de <em>freeflow combat</em>, las investigaciones de modo detective y los acertijos de Enigma consiguen que, nunca se haga aburrido. En este artículo repaso qué hace tan especial a esta saga, desde sus mecánicas de combate hasta la evolución gráfica y jugable entre entregas.</strong></p>
        
        <p><a href="https://picodotdev.github.io/blog-bitix/2026/08/trilogia-batman-arkham-cuando-un-juego-de-superheroes-te-sorprende/">Continuar leyendo en Blog Bitix</a></p>

        ]]>
        </content>
        
            
                <category term="juegos"/>
            
        
    </entry>
    
    <entry>
        <id>https://picodotdev.github.io/blog-bitix/2026/08/externalizar-la-logica-de-negocio-con-el-motor-de-reglas-drools/</id>
        <title>Externalizar la lógica de negocio con el motor de reglas Drools</title>
        <updated>2026-08-07T22:30:00+02:00</updated>
        <published>2026-08-07T22:30:00+02:00</published>
        <link rel="alternate" type="text/html" href="https://picodotdev.github.io/blog-bitix/2026/08/externalizar-la-logica-de-negocio-con-el-motor-de-reglas-drools/"/>
        <author><name>picodotdev</name></author>
        <content type="html">
        <![CDATA[

        <p><strong>Toda plataforma de cierta complejidad requiere gestionar reglas de negocio, lógica que cambia con frecuencia o que conviene desacoplar del código. Este artículo analiza en qué casos resulta conveniente externalizar dicha lógica mediante un motor de reglas y en cuáles no, centrándose en Drools, sus distintas formas de definición de reglas (DRL, DMN, tablas de decisión). El ejemplo de código práctico muestra una integración entre Drools con Spring Boot exponiendo una regla de negocio como un endpoint REST que otros servicios pueden consumir.</strong></p>
        
        <p><a href="https://picodotdev.github.io/blog-bitix/2026/08/externalizar-la-logica-de-negocio-con-el-motor-de-reglas-drools/">Continuar leyendo en Blog Bitix</a></p>

        ]]>
        </content>
        
            
                <category term="java"/>
            
                <category term="programacion"/>
            
                <category term="planeta-codigo"/>
            
        
    </entry>
    
    <entry>
        <id>https://picodotdev.github.io/blog-bitix/2026/06/como-desacoplar-despliegue-y-release-con-feature-flags-y-tests-a-b-usando-flagsmith/</id>
        <title>Cómo desacoplar despliegue y release con feature flags y tests A/B usando Flagsmith</title>
        <updated>2026-06-25T23:30:00+02:00</updated>
        <published>2026-06-25T23:30:00+02:00</published>
        <link rel="alternate" type="text/html" href="https://picodotdev.github.io/blog-bitix/2026/06/como-desacoplar-despliegue-y-release-con-feature-flags-y-tests-a-b-usando-flagsmith/"/>
        <author><name>picodotdev</name></author>
        <content type="html">
        <![CDATA[

        <p><strong>Desplegar sin liberar y experimentar sin intuición. En sistemas de software complejos, las feature flags y los tests A/B son herramientas clave para separar el despliegue del release y tomar decisiones basadas en métricas reales. En este artículo exploramos ambos conceptos y cómo implementarlos con Flagsmith en una aplicación Java.</strong></p>
        
        <p><a href="https://picodotdev.github.io/blog-bitix/2026/06/como-desacoplar-despliegue-y-release-con-feature-flags-y-tests-a-b-usando-flagsmith/">Continuar leyendo en Blog Bitix</a></p>

        ]]>
        </content>
        
            
                <category term="programacion"/>
            
        
    </entry>
    
    <entry>
        <id>https://picodotdev.github.io/blog-bitix/2026/06/introduccion-y-ejemplo-de-procesar-mensajes-con-spring-cloud-stream/</id>
        <title>Introducción y ejemplo de procesar mensajes con Spring Cloud Stream</title>
        <updated>2026-06-17T22:00:00+02:00</updated>
        <published>2026-06-17T22:00:00+02:00</published>
        <link rel="alternate" type="text/html" href="https://picodotdev.github.io/blog-bitix/2026/06/introduccion-y-ejemplo-de-procesar-mensajes-con-spring-cloud-stream/"/>
        <author><name>picodotdev</name></author>
        <content type="html">
        <![CDATA[

        <p><strong>Las aplicaciones distribuidas emplean comunicación basada en mensajes para lograr un intercambio asíncrono y desacoplado entre servicios. Spring Kafka ofrece una integración directa con Apache Kafka mediante la anotación KafkaListener y KafkaTemplate, sin embargo, cuando los mensajes fluyen entre múltiples <em>topics</em>, esta aproximación de bajo nivel se vuelve compleja. Spring Cloud Stream resuelve este problema simplificando el modelo de desarrollo al usar las interfaces funcionales de Java, Consumer, Function y Supplier para modelar consumidores, procesadores y productores de forma agnística al <em>broker</em> de mensajes, declarativa y altamente configurable.</strong></p>
        
        <p><a href="https://picodotdev.github.io/blog-bitix/2026/06/introduccion-y-ejemplo-de-procesar-mensajes-con-spring-cloud-stream/">Continuar leyendo en Blog Bitix</a></p>

        ]]>
        </content>
        
            
                <category term="java"/>
            
                <category term="planeta-codigo"/>
            
        
    </entry>
    
    <entry>
        <id>https://picodotdev.github.io/blog-bitix/2026/06/evitar-los-nullpointerexception-en-java-con-jspecify/</id>
        <title>Evitar los NullPointerException en Java con JSpecify</title>
        <updated>2026-06-05T19:30:00+02:00</updated>
        <published>2026-06-05T19:30:00+02:00</published>
        <link rel="alternate" type="text/html" href="https://picodotdev.github.io/blog-bitix/2026/06/evitar-los-nullpointerexception-en-java-con-jspecify/"/>
        <author><name>picodotdev</name></author>
        <content type="html">
        <![CDATA[

        <p><strong>Si llevas tiempo programando en Java, sabrás de sobra que el NullPointerException es uno de esos errores que aparece cuando menos lo esperas y que no en vano se le conoce como el <em>error del billón de dólares</em>: omnipresente, frustrante y, en teoría, completamente evitable. A diferencia de lenguajes más modernos como Kotlin, Java nunca fue diseñado para garantizar la seguridad frente a nulos a nivel del sistema de tipos, aunque el ecosistema ha evolucionado si no para resolver el problema para mitigarlo. Desde la llegada de Optional en Java 8 hasta la reciente adopción de JSpecify por parte de Spring, existen hoy herramientas y estándares para detectar y mitigar los NPE en tiempo de compilación, que vale la pena conocer.</strong></p>
        
        <p><a href="https://picodotdev.github.io/blog-bitix/2026/06/evitar-los-nullpointerexception-en-java-con-jspecify/">Continuar leyendo en Blog Bitix</a></p>

        ]]>
        </content>
        
            
                <category term="java"/>
            
        
    </entry>
    
    <entry>
        <id>https://picodotdev.github.io/blog-bitix/2026/05/analisis-estatico-de-codigo-java-con-spotless-y-error-prone/</id>
        <title>Análisis estático de código Java con Spotless y Error Prone</title>
        <updated>2026-05-27T20:00:00+02:00</updated>
        <published>2026-05-27T20:00:00+02:00</published>
        <link rel="alternate" type="text/html" href="https://picodotdev.github.io/blog-bitix/2026/05/analisis-estatico-de-codigo-java-con-spotless-y-error-prone/"/>
        <author><name>picodotdev</name></author>
        <content type="html">
        <![CDATA[

        <p><strong>Mantener la consistencia en el código de un equipo no debería depender de la disciplina individual de cada desarrollador. El análisis estático de código automatiza esta tarea, desde verificar que se siguen las convenciones de formateo hasta detectar patrones que pueden convertirse en errores en producción. En este artículo repaso las herramientas disponibles para Java, comparo las opciones más habituales, Checkstyle, PMD y Spotbugs con alternativas como Spotless y Error Prone, y explico cómo integrarlas en el flujo de trabajo con Gradle.</strong></p>
        
        <p><a href="https://picodotdev.github.io/blog-bitix/2026/05/analisis-estatico-de-codigo-java-con-spotless-y-error-prone/">Continuar leyendo en Blog Bitix</a></p>

        ]]>
        </content>
        
            
                <category term="java"/>
            
        
    </entry>
    
    <entry>
        <id>https://picodotdev.github.io/blog-bitix/2026/05/introduccion-y-uso-de-las-especificaciones-de-cloudevents-y-asyncapi/</id>
        <title>Introducción y uso de las especificaciones de CloudEvents y AsyncAPI</title>
        <updated>2026-05-18T20:30:00+02:00</updated>
        <published>2026-05-18T20:30:00+02:00</published>
        <link rel="alternate" type="text/html" href="https://picodotdev.github.io/blog-bitix/2026/05/introduccion-y-uso-de-las-especificaciones-de-cloudevents-y-asyncapi/"/>
        <author><name>picodotdev</name></author>
        <content type="html">
        <![CDATA[

        <p><strong>En los sistemas distribuidos, la integración entre servicios no se limita a las APIs REST. La comunicación asíncrona mediante mensajes es igualmente habitual, y también requiere un contrato claro entre las partes. Para cubrir esta necesidad existen dos especificaciones complementarias. Una CloudEvents, que estandariza el formato del sobre de cualquier menssaje o event, y otra AsyncAPI, que describe la API completa de un servicio orientado a mensajes, de forma análoga a lo que hace OpenAPI para REST. En este artículo exploramos ambas especificaciones y las ponemos en práctica con una aplicación Spring Boot que produce y consume eventos Kafka encapsulados como CloudEvents, acompañada de su documento AsyncAPI correspondiente.</strong></p>
        
        <p><a href="https://picodotdev.github.io/blog-bitix/2026/05/introduccion-y-uso-de-las-especificaciones-de-cloudevents-y-asyncapi/">Continuar leyendo en Blog Bitix</a></p>

        ]]>
        </content>
        
            
                <category term="programacion"/>
            
                <category term="planeta-codigo"/>
            
        
    </entry>
    
    <entry>
        <id>https://picodotdev.github.io/blog-bitix/2026/05/procesos-orquestados-fiables-y-observables-en-servicios-distribuidos-con-temporal/</id>
        <title>Procesos orquestados fiables y observables en servicios distribuidos con Temporal</title>
        <updated>2026-05-05T20:30:00+02:00</updated>
        <published>2026-05-05T20:30:00+02:00</published>
        <link rel="alternate" type="text/html" href="https://picodotdev.github.io/blog-bitix/2026/05/procesos-orquestados-fiables-y-observables-en-servicios-distribuidos-con-temporal/"/>
        <author><name>picodotdev</name></author>
        <content type="html">
        <![CDATA[

        <p><strong>Temporal es una herramienta open source que permite modelar procesos de larga duración directamente en código, con garantías de fiabilidad y resiliencia ante fallos. En este artículo explico sus conceptos fundamentales, workflows, actividades y señales, y los pongo en práctica implementando en Java un proceso de compra de entradas con múltiples microservicios implicados.</strong></p>
        
        <p><a href="https://picodotdev.github.io/blog-bitix/2026/05/procesos-orquestados-fiables-y-observables-en-servicios-distribuidos-con-temporal/">Continuar leyendo en Blog Bitix</a></p>

        ]]>
        </content>
        
            
                <category term="java"/>
            
                <category term="programacion"/>
            
        
    </entry>
    
    <entry>
        <id>https://picodotdev.github.io/blog-bitix/2026/04/la-libreria-zalando-logbook-para-emitir-trazas-de-peticiones-web/</id>
        <title>La librería Zalando Logbook para emitir trazas de peticiones web</title>
        <updated>2026-04-26T11:30:00+02:00</updated>
        <published>2026-04-26T11:30:00+02:00</published>
        <link rel="alternate" type="text/html" href="https://picodotdev.github.io/blog-bitix/2026/04/la-libreria-zalando-logbook-para-emitir-trazas-de-peticiones-web/"/>
        <author><name>picodotdev</name></author>
        <content type="html">
        <![CDATA[

        <p><strong>Las trazas en llamadas REST son fundamentales para la observabilidad en microservicios, ya que la red es un medio poco fiable con múltiples puntos de fallo. Sin un service mesh, cada servicio debe instrumentar sus propias llamadas HTTP, lo que con soluciones manuales resulta limitado y difícil de mantener. Zalando Logbook resuelve esto ofreciendo soporte para las librerías HTTP más populares de Java y Spring Boot, con funcionalidades avanzadas como correlación petición/respuesta, filtrado y ofuscación de datos sensibles. El artículo complementa el ejemplo con una configuración de Log4j2 que distingue entre entornos locales con salida en consola y entornos productivos con formato JSON estructurado para GCP.</strong></p>
        
        <p><a href="https://picodotdev.github.io/blog-bitix/2026/04/la-libreria-zalando-logbook-para-emitir-trazas-de-peticiones-web/">Continuar leyendo en Blog Bitix</a></p>

        ]]>
        </content>
        
            
                <category term="java"/>
            
        
    </entry>
    
    <entry>
        <id>https://picodotdev.github.io/blog-bitix/2026/04/parchear-una-clase-de-una-libreria-java-para-solucionar-un-error/</id>
        <title>Parchear una clase de una librería Java para solucionar un error</title>
        <updated>2026-04-12T14:00:00+02:00</updated>
        <published>2026-04-12T14:00:00+02:00</published>
        <link rel="alternate" type="text/html" href="https://picodotdev.github.io/blog-bitix/2026/04/parchear-una-clase-de-una-libreria-java-para-solucionar-un-error/"/>
        <author><name>picodotdev</name></author>
        <content type="html">
        <![CDATA[

        <p><strong>Hay un chiste en el que alguien le pregunta al técnico, «¿500 € solo por girar un tornillo?», y el técnico responde, «No, por girar el tornillo ha sido 1 €, por saber hacia que lado girarlo 499». Pues el siguiente artículo es lo equivalente que me ha pasado con un error en una aplicación de Java.</strong></p>
        
        <p><a href="https://picodotdev.github.io/blog-bitix/2026/04/parchear-una-clase-de-una-libreria-java-para-solucionar-un-error/">Continuar leyendo en Blog Bitix</a></p>

        ]]>
        </content>
        
            
                <category term="java"/>
            
                <category term="planeta-codigo"/>
            
        
    </entry>
    
    <entry>
        <id>https://picodotdev.github.io/blog-bitix/2026/04/me-cambio-al-proveedor-de-telecomunicaciones-digi/</id>
        <title>Me cambio al proveedor de telecomunicaciones Digi</title>
        <updated>2026-04-01T23:00:00+02:00</updated>
        <published>2026-04-01T23:00:00+02:00</published>
        <link rel="alternate" type="text/html" href="https://picodotdev.github.io/blog-bitix/2026/04/me-cambio-al-proveedor-de-telecomunicaciones-digi/"/>
        <author><name>picodotdev</name></author>
        <content type="html">
        <![CDATA[

        <p><strong>Cunado un proveeedor da buen servicio y te trata bien hace más difícil cambiarse. Por otro lado, como consumidor uno busca lo mejor o más adecuando entre la oferta. Han sido casi 10 años los que he estado en pepephone inicialmente con ADSL luego fibra, inicialmente sin tarifa de datos en el móvil luego con la convergencia entre la fibra y datos, además cliente de pepeenergy. Ahora me cambio a Digi principalmente por el precio, en los primeros dias con Digi todo correcto. A continuación, más detalles.</strong></p>
        
        <p><a href="https://picodotdev.github.io/blog-bitix/2026/04/me-cambio-al-proveedor-de-telecomunicaciones-digi/">Continuar leyendo en Blog Bitix</a></p>

        ]]>
        </content>
        
            
                <category term="opinion"/>
            
        
    </entry>
    
    <entry>
        <id>https://picodotdev.github.io/blog-bitix/2026/03/el-jueguito-para-movil-clash-royale/</id>
        <title>El jueguito para móvil Clash Royale</title>
        <updated>2026-03-19T12:00:00+02:00</updated>
        <published>2026-03-19T12:00:00+02:00</published>
        <link rel="alternate" type="text/html" href="https://picodotdev.github.io/blog-bitix/2026/03/el-jueguito-para-movil-clash-royale/"/>
        <author><name>picodotdev</name></author>
        <content type="html">
        <![CDATA[

        <p><strong>Clash Royale es un de los juegos más populares para móvil, gratuito pero con una calidad elevada. Un juego competitivo y estrategia de partidas casuales de tres minutos. En el artículo comento varios aspectos de este juego, sus mecanismos para crear adicción, la toxicidad de algunos jugadores, su modelo de negocio, el algoritmo de matchmaking, elementos del juego, estrategias y consejos.</strong></p>
        
        <p><a href="https://picodotdev.github.io/blog-bitix/2026/03/el-jueguito-para-movil-clash-royale/">Continuar leyendo en Blog Bitix</a></p>

        ]]>
        </content>
        
            
                <category term="juegos"/>
            
        
    </entry>
    
    <entry>
        <id>https://picodotdev.github.io/blog-bitix/2026/03/la-revolucion-de-los-asistentes-de-inteligencia-artificial/</id>
        <title>La revolución de los asistentes de inteligencia artificial</title>
        <updated>2026-03-08T12:00:00+02:00</updated>
        <published>2026-03-08T12:00:00+02:00</published>
        <link rel="alternate" type="text/html" href="https://picodotdev.github.io/blog-bitix/2026/03/la-revolucion-de-los-asistentes-de-inteligencia-artificial/"/>
        <author><name>picodotdev</name></author>
        <content type="html">
        <![CDATA[

        <p><strong>El tema de actualidad en este momento es la IA, está por ver si va a ser una evolución útil o una nueva burbuja. Que diferencia hay entre un buscador y un asistente de IA y revisitaindo anteriores evoluciones y burbujas está por ver si realmente son una mejora para realizar diferentes trabajos.</strong></p>
        
        <p><a href="https://picodotdev.github.io/blog-bitix/2026/03/la-revolucion-de-los-asistentes-de-inteligencia-artificial/">Continuar leyendo en Blog Bitix</a></p>

        ]]>
        </content>
        
            
                <category term="programacion"/>
            
        
    </entry>
    
    <entry>
        <id>https://picodotdev.github.io/blog-bitix/2026/01/crear-diagramas-graficos-con-el-formato-de-texto-mermaid/</id>
        <title>Crear diagramas gráficos con el formato de texto Mermaid</title>
        <updated>2026-01-17T00:00:00+02:00</updated>
        <published>2026-01-17T00:00:00+02:00</published>
        <link rel="alternate" type="text/html" href="https://picodotdev.github.io/blog-bitix/2026/01/crear-diagramas-graficos-con-el-formato-de-texto-mermaid/"/>
        <author><name>picodotdev</name></author>
        <content type="html">
        <![CDATA[

        <p><strong>La documentación es imprescindible en la programación o al menos de enorme ayuda que facilita comprender el elemento documentado. Sin embargo, ela documentación es uno de los aspecto que no siempre se le da la relevancia que se le da a otros aspectos. En la documentación ténica se incluyen diagramas que son una representación gŕafica del objeto documentado. Hay diagramas de diferentes tipos que representa un aspecto del objeto documentado como un diagramas de secuencia, de estado, de clases, entidad releación o de arquitectura. Habitualmente estos diagramas se crean con una herramienta gráfica y se exportan como una imagen, la dificultad está en la actualización de esa imagen que es mucho más compleja. Mermeaid es un formato de texto que permite crear diagramas con un formato de texto.</strong></p>
        
        <p><a href="https://picodotdev.github.io/blog-bitix/2026/01/crear-diagramas-graficos-con-el-formato-de-texto-mermaid/">Continuar leyendo en Blog Bitix</a></p>

        ]]>
        </content>
        
            
                <category term="planeta-codigo"/>
            
                <category term="programacion"/>
            
        
    </entry>
    
</feed>