<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Victor Laurance - Software Engineer</title><link>https://laurance.dev/es/</link><description>Recent content on Victor Laurance - Software Engineer</description><generator>Hugo</generator><language>es</language><lastBuildDate>Fri, 09 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://laurance.dev/es/index.xml" rel="self" type="application/rss+xml"/><item><title>Apache Kafka con Java: Arquitectura, Idempotencia y Resiliencia de Extremo a Extremo</title><link>https://laurance.dev/es/blog/kafka-java/</link><pubDate>Fri, 09 Oct 2026 00:00:00 +0000</pubDate><guid>https://laurance.dev/es/blog/kafka-java/</guid><description>&lt;p>¿Qué ocurre realmente cuando tu aplicación ejecuta &lt;code>kafkaTemplate.send(...)&lt;/code>?&lt;/p>
&lt;p>Si tu respuesta inmediata es &amp;ldquo;el mensaje llega a una cola y un worker lo procesa&amp;rdquo;, estás operando Apache Kafka bajo el modelo mental de un broker tradicional como RabbitMQ o AWS SQS. Kafka es algo fundamentalmente distinto: es un &lt;strong>registro distribuido de confirmaciones (commit log), inmutable y de solo anexado (append-only)&lt;/strong>.&lt;/p>
&lt;p>Esta diferencia cambia por completo las reglas: cómo particionas la carga, cómo escalan los consumidores, cómo garantizas el orden de entrega y, lo más crítico de todo, &lt;strong>cómo evitas procesar eventos por duplicado o perder datos cuando la red falla o los nodos se reinician&lt;/strong>.&lt;/p></description></item><item><title>Cómo Funcionan las IAs Generativas (LLMs)</title><link>https://laurance.dev/es/blog/funcionamento-llms/</link><pubDate>Tue, 22 Sep 2026 00:00:00 +0000</pubDate><guid>https://laurance.dev/es/blog/funcionamento-llms/</guid><description>&lt;p>Cada vez que alguien me pregunta &amp;ldquo;¿pero cómo funciona realmente ChatGPT?&amp;rdquo;, solía encontrarme con dos respuestas prefabricadas: o un &amp;ldquo;es magia&amp;rdquo; disfrazado de explicación, o una inmersión en matemáticas avanzadas que desconectaba al interlocutor en la segunda frase. No tiene por qué ser así. Se puede explicar con rigor, sin simplificar hasta desvirtuar la realidad y sin exigir conocimientos de cálculo. Eso es exactamente lo que quiero hacer aquí.&lt;/p>
&lt;h2 id="no-es-magia-es-un-predictor-de-la-siguiente-palabra-pero-a-escala-gigantesca">No es magia: es un predictor de la siguiente palabra, pero a escala gigantesca&lt;/h2>
&lt;p>En su esencia, un LLM (Large Language Model, &amp;ldquo;modelo de lenguaje grande&amp;rdquo;) hace una sola cosa: dado un fragmento de texto, calcula cuál es la palabra más probable que debería venir a continuación. Funciona con el mismo principio que el autocorrector del teclado de tu teléfono cuando sugiere la siguiente palabra mientras escribes, solo que entrenado con una fracción sustancial de todo lo escrito públicamente en internet, con miles de millones de parámetros internos, en lugar de unas pocas conversaciones personales.&lt;/p></description></item><item><title>Hilos Virtuales y Concurrencia en Java 25 con Spring Boot 4</title><link>https://laurance.dev/es/blog/virtual-threads/</link><pubDate>Mon, 21 Sep 2026 00:00:00 +0000</pubDate><guid>https://laurance.dev/es/blog/virtual-threads/</guid><description>&lt;p>Cualquier backend en Java que necesite soportar un alto volumen de solicitudes simultáneas se enfrenta al mismo obstáculo fundamental: los hilos del sistema operativo son costosos. Cada uno reserva memoria en la pila (stack), y el sistema operativo no puede gestionar más de unos pocos miles sin degradar su rendimiento. Durante años, la respuesta de la industria fue migrar a stacks reactivos como WebFlux, Reactor y callbacks, reemplazando el código imperativo simple por un modelo mucho más complejo de leer y depurar. Los Hilos Virtuales (Virtual Threads) llegaron precisamente para resolver este cuello de botella sin pagar ese precio, y Java 25 ha madurado esta tecnología mucho más allá de su lanzamiento inicial en 2023.&lt;/p></description></item><item><title>Aplicando Arquitectura Hexagonal en una Aplicación Spring Boot</title><link>https://laurance.dev/es/blog/hexagonal-architecture/</link><pubDate>Sun, 13 Sep 2026 00:00:00 +0000</pubDate><guid>https://laurance.dev/es/blog/hexagonal-architecture/</guid><description>&lt;p>Si has mantenido una aplicación Spring Boot durante suficiente tiempo, es muy probable que hayas visto reglas de negocio, controladores y entidades JPA mezclados en el mismo lugar. Funciona, hasta el día en que necesitas cambiar de base de datos, escribir pruebas unitarias decentes o simplemente comprender dónde termina la lógica de negocio y dónde comienza el framework. Fue precisamente este tipo de fricción lo que me llevó a estudiar a fondo la Arquitectura Hexagonal, y en este artículo quiero mostrar cómo apliqué estos conceptos en una aplicación Spring Boot real.&lt;/p></description></item><item><title>Veira Streaming</title><link>https://laurance.dev/es/projects/veira/</link><pubDate>Sun, 30 Aug 2026 00:00:00 +0000</pubDate><guid>https://laurance.dev/es/projects/veira/</guid><description>&lt;h2 id="descripción-general">Descripción general&lt;/h2>
&lt;p>Veira es una plataforma de streaming desarrollada como un proyecto de ingeniería de software.&lt;/p>
&lt;p>El objetivo del proyecto es explorar de forma práctica conceptos de backend, frontend, sistemas distribuidos, arquitectura, mensajería, nube y DevOps.&lt;/p>
&lt;p>Más allá de construir una aplicación de streaming, el proyecto funciona como un laboratorio de ingeniería para experimentar con diferentes estrategias arquitectónicas y documentar las decisiones tomadas.&lt;/p>
&lt;h2 id="arquitectura">Arquitectura&lt;/h2>
&lt;p>La arquitectura se construye y evoluciona progresivamente.&lt;/p></description></item></channel></rss>