En mis años trabajando con sistemas legacy he observado los mismos obstáculos una y otra vez: acoplamiento excesivo, lógica enmarañada y deuda técnica disfrazada. Inspirado por estas experiencias, desarrollé una técnica llamada Heuristic Legacy Refactoring (HLR) y un proyecto de código abierto, refactor_heuristic, que aplica heurísticas y métricas objetivas para orientar la modernización eficiente de código heredado. En esta entrada profundizo en cómo combinar herramientas como N...| JMFLORESZAZO
En este experimento parto de una base .NET con deuda técnica deliberada y la someto a un análisis exhaustivo con NDepend. A partir del informe (reglas, métricas y CQLinq), priorizo los smells con ayuda de una IA generativa y aplico refactors en tres oleadas (Quick Wins → Media → Estructural). El resultado es una reducción medible de complejidad, duplicación y acoplamiento en horas, no semanas, y un pipeline con quality gates que evita regresiones. NDepend me da la radiografía; la IA...| JMFLORESZAZO
En los últimos meses (o último año), todo el mundo habla de la Inteligencia Artificial (IA). Hay titulares que insisten en que la IA nos va a quitar el trabajo, que no está lo suficientemente madura o que las empresas no ven retorno de inversión (ROI). Pero, ¿sabes qué? Me parece que cuando hablamos así, detrás de esos grandes titulares, olvidamos lo que realmente importa: el para qué de la IA. Porque es justamente en los casos concretos, reales, donde la IA puede brillar.| JMFLORESZAZO
Motivación y aplicaciones accesibles| JMFLORESZAZO
¿Quieres entender qué son las instancias Spot, cómo aprovechar Kubernetes al máximo y hacer troubleshooting real sin depender de la GUI?| jmfloreszazo.com
Aprende cómo desplegar Jenkins sobre Azure Kubernetes Service utilizando instancias Spot para maximizar el ahorro sin perder rendimiento. Una guía práctica, 100% CLI, que combina automatización eficiente, resiliencia cloud-native y troubleshooting real en producción.| JMFLORESZAZO
Ejemplo| JMFLORESZAZO
Cuando sabes que tu aplicación va a ir a producción en Kubernetes desde el minuto cero, lo último que quieres es mantener un docker-compose.yml, un .aspire.app, un conjunto de manifiestos k8s/, y encima repetir la configuración en CI/CD. La tentación de crear “entornos de desarrollo paralelos” es alta, pero el coste a medio plazo también lo es.| JMFLORESZAZO
En sistemas distribuidos que usan bases de datos relacionales como SQL Server, es común que múltiples hilos o procesos intenten leer y modificar simultáneamente la misma entidad. Este fenómeno se llama concurrencia y, lejos de ser un bug, es una consecuencia natural de los entornos altamente paralelos y asincrónicos.| JMFLORESZAZO
En arquitecturas distribuidas con Service Bus (como Azure Service Bus, RabbitMQ o NServiceBus), es común recibir mensajes que provocan cambios en nuestro modelo de dominio. Pero… ¿qué ocurre cuando ese modelo ya fue modificado por otro proceso?| JMFLORESZAZO
¿Qué es NewSQL y por qué importa?| JMFLORESZAZO
¿Y ahora qué? Del experimento a la herramienta| JMFLORESZAZO
Desde su presentación en noviembre de 2024 por Anthropic, el Model Context Protocol (MCP) ha sido promocionado como el «USB de la inteligencia artificial». La promesa: estandarizar cómo los agentes de IA se conectan con herramientas, fuentes de datos y sistemas externos, evitando la necesidad de adaptadores personalizados. Sin embargo, al igual que ocurrió con ActiveX en su momento, MCP podría ser una gran idea con problemas fundamentales que amenazan su adopción y confiabilidad, espe...| JMFLORESZAZO
Cuando desarrollamos una aplicación, surge una pregunta clave: ¿en qué idioma deben estar sus términos, documentación y código? Aunque el inglés es el estándar global en tecnología, en contextos donde el negocio no opera en inglés, la decisión no es tan simple.| JMFLORESZAZO
Actualmente, estamos presenciando una revolución en el desarrollo de software, impulsada en gran medida por la inteligencia artificial (IA). Esta transformación plantea una cuestión crucial: ¿permanece vigente el concepto de Software Craftsmanship con la inclusión de la IA? Como desarrollador apasionado por este enfoque artesanal, me he cuestionado cómo nos afecta esta evolución. | JMFLORESZAZO
En el desarrollo con C#, una de las decisiones más importantes al modelar objetos es elegir entre clases mutables e inmutables. Este artículo explora sus características, ventajas, desafíos y ejemplos prácticos. En este artículo, utilizaremos las nuevas características de .NET 9.| JMFLORESZAZO
GitHub Copilot, el asistente de codificación impulsado por inteligencia artificial, ha lanzado recientemente las Copilot Extensions para mejorar su ecosistema. Esta característica, ahora en beta pública, permite a los desarrolladores crear extensiones personalizadas que se integran con Copilot. En esta publicación, te guiaremos a través del proceso de crear tu primera extensión para GitHub Copilot.| JMFLORESZAZO
AKS Standard ofrece una configuración más flexible pero requiere una gestión manual significativa.| JMFLORESZAZO