<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://rubenrosales.dev/es/</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/" />
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/about</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/about" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/about" />
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/services</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/services" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/services" />
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/projects</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects" />
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog" />
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/legal-notice</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/legal-notice" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/legal-notice" />
<changefreq>yearly</changefreq>
<priority>0.2</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/privacy-policy</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/privacy-policy" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/privacy-policy" />
<changefreq>yearly</changefreq>
<priority>0.2</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/projects/integracion-crm-erp-ia</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/integracion-crm-erp-ia" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/integracion-crm-erp-ia" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/projects/procesamiento-documental-ia-universidad</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/procesamiento-documental-ia-universidad" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/procesamiento-documental-ia-universidad" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/projects/analisis-noticias-ia</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/analisis-noticias-ia" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/analisis-noticias-ia" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/projects/plataforma-educativa-ia-formacion</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/plataforma-educativa-ia-formacion" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/plataforma-educativa-ia-formacion" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/projects/procesamiento-documental-ia</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/procesamiento-documental-ia" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/procesamiento-documental-ia" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/projects/procesamiento-pedidos-ia-ftp</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/procesamiento-pedidos-ia-ftp" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/procesamiento-pedidos-ia-ftp" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/projects/nps-casas-alquiler</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/nps-casas-alquiler" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/nps-casas-alquiler" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/projects/app-inventario-barcode</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/app-inventario-barcode" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/app-inventario-barcode" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/projects/plataforma-educativa-deporte</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/plataforma-educativa-deporte" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/plataforma-educativa-deporte" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/projects/noticias-procesadas-ia</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/noticias-procesadas-ia" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/noticias-procesadas-ia" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/projects/gestion-inmobiliaria</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/gestion-inmobiliaria" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/gestion-inmobiliaria" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/projects/gestion-becas-universitarias</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/gestion-becas-universitarias" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/gestion-becas-universitarias" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/projects/sistema-gestion-ruido-iot</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/sistema-gestion-ruido-iot" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/sistema-gestion-ruido-iot" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/projects/sistema-gestion-nominas</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/sistema-gestion-nominas" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/sistema-gestion-nominas" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/projects/traspaso-vehiculos</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/traspaso-vehiculos" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/traspaso-vehiculos" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/projects/agricultura-precision-prototipo</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/agricultura-precision-prototipo" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/agricultura-precision-prototipo" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/projects/contabilidad-ifrs-16</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/contabilidad-ifrs-16" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/contabilidad-ifrs-16" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/projects/control-cerraduras-sistema</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/control-cerraduras-sistema" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/control-cerraduras-sistema" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/projects/control-produccion-cooperativas</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/control-produccion-cooperativas" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/control-produccion-cooperativas" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/projects/control-inventario</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/control-inventario" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/control-inventario" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/projects/control-remoto-iot</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/control-remoto-iot" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/control-remoto-iot" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/projects/red-videovigilancia</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/red-videovigilancia" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/red-videovigilancia" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/detectar-procesos-manuales-automatizables</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/detectar-procesos-manuales-automatizables" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/detectar-procesos-manuales-automatizables" />
<lastmod>2026-06-17T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/ia-aplicada-empresas-valor-real</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/ia-aplicada-empresas-valor-real" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/ia-aplicada-empresas-valor-real" />
<lastmod>2026-06-14T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/agentes-ia-produccion-patrones-errores-arquitectura</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/agentes-ia-produccion-patrones-errores-arquitectura" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/agentes-ia-produccion-patrones-errores-arquitectura" />
<lastmod>2026-06-11T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/integrar-ia-sistemas-existentes</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/integrar-ia-sistemas-existentes" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/integrar-ia-sistemas-existentes" />
<lastmod>2026-06-08T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/rag-negocio-cuando-usar</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/rag-negocio-cuando-usar" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/rag-negocio-cuando-usar" />
<lastmod>2026-06-05T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/automatizacion-documental-ocr-ia</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/automatizacion-documental-ocr-ia" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/automatizacion-documental-ocr-ia" />
<lastmod>2026-06-02T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/disenar-integraciones-crm-erp-herramientas</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/disenar-integraciones-crm-erp-herramientas" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/disenar-integraciones-crm-erp-herramientas" />
<lastmod>2026-05-30T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/flujo-manual-a-sistema-automatico</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/flujo-manual-a-sistema-automatico" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/flujo-manual-a-sistema-automatico" />
<lastmod>2026-05-27T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/arquitectura-productos-internos-web-apis-despliegue</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/arquitectura-productos-internos-web-apis-despliegue" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/arquitectura-productos-internos-web-apis-despliegue" />
<lastmod>2026-05-24T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/integracion-a-medida-o-n8n</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/integracion-a-medida-o-n8n" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/integracion-a-medida-o-n8n" />
<lastmod>2026-05-21T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/next-js-16-rsc-server-actions-guia-completa</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/next-js-16-rsc-server-actions-guia-completa" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/next-js-16-rsc-server-actions-guia-completa" />
<lastmod>2026-05-18T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/nestjs-arquitectura-modular-escalable</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/nestjs-arquitectura-modular-escalable" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/nestjs-arquitectura-modular-escalable" />
<lastmod>2026-05-15T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/typescript-tipos-avanzados-genericos-utiles</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/typescript-tipos-avanzados-genericos-utiles" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/typescript-tipos-avanzados-genericos-utiles" />
<lastmod>2026-05-12T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/testing-vitest-jest-estrategia-cobertura</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/testing-vitest-jest-estrategia-cobertura" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/testing-vitest-jest-estrategia-cobertura" />
<lastmod>2026-05-09T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/performance-next-js-bundle-size-core-vitals</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/performance-next-js-bundle-size-core-vitals" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/performance-next-js-bundle-size-core-vitals" />
<lastmod>2026-05-06T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/seguridad-api-authentication-authorization-tokens</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/seguridad-api-authentication-authorization-tokens" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/seguridad-api-authentication-authorization-tokens" />
<lastmod>2026-05-03T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/bases-de-datos-postgres-postgres-indexes-queries</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/bases-de-datos-postgres-postgres-indexes-queries" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/bases-de-datos-postgres-postgres-indexes-queries" />
<lastmod>2026-04-30T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/docker-compose-desarrollo-local-consistencia</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/docker-compose-desarrollo-local-consistencia" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/docker-compose-desarrollo-local-consistencia" />
<lastmod>2026-04-27T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/ci-cd-github-actions-automatizar-testing-deploy</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/ci-cd-github-actions-automatizar-testing-deploy" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/ci-cd-github-actions-automatizar-testing-deploy" />
<lastmod>2026-04-24T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/react-hooks-custom-hooks-logica-reutilizable</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/react-hooks-custom-hooks-logica-reutilizable" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/react-hooks-custom-hooks-logica-reutilizable" />
<lastmod>2026-04-21T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/tailwind-css-utilidad-primero-no-bloat</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/tailwind-css-utilidad-primero-no-bloat" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/tailwind-css-utilidad-primero-no-bloat" />
<lastmod>2026-04-18T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/prisma-orm-migraciones-tipos-seguridad</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/prisma-orm-migraciones-tipos-seguridad" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/prisma-orm-migraciones-tipos-seguridad" />
<lastmod>2026-04-15T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/arquitectura-frontend-layered-features-modulos</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/arquitectura-frontend-layered-features-modulos" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/arquitectura-frontend-layered-features-modulos" />
<lastmod>2026-04-12T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/error-handling-boundaries-observabilidad-frontend</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/error-handling-boundaries-observabilidad-frontend" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/error-handling-boundaries-observabilidad-frontend" />
<lastmod>2026-04-09T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/estado-global-context-api-vs-zustand-redux</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/estado-global-context-api-vs-zustand-redux" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/estado-global-context-api-vs-zustand-redux" />
<lastmod>2026-04-06T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/ux-formularios-validacion-user-friendly</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/ux-formularios-validacion-user-friendly" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/ux-formularios-validacion-user-friendly" />
<lastmod>2026-04-03T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/accesibilidad-web-wcag-screen-readers-teclado</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/accesibilidad-web-wcag-screen-readers-teclado" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/accesibilidad-web-wcag-screen-readers-teclado" />
<lastmod>2026-03-31T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/migracion-legacy-a-moderno-estrategia</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/migracion-legacy-a-moderno-estrategia" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/migracion-legacy-a-moderno-estrategia" />
<lastmod>2026-03-28T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/escala-datos-particionamiento-sharding</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/escala-datos-particionamiento-sharding" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/escala-datos-particionamiento-sharding" />
<lastmod>2026-03-25T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/cache-redis-estrategias-invalidacion</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/cache-redis-estrategias-invalidacion" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/cache-redis-estrategias-invalidacion" />
<lastmod>2026-03-22T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/api-versioning-breaking-changes-deprecation</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/api-versioning-breaking-changes-deprecation" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/api-versioning-breaking-changes-deprecation" />
<lastmod>2026-03-19T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/observabilidad-metricas-logs-traces-distributed-tracing</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/observabilidad-metricas-logs-traces-distributed-tracing" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/observabilidad-metricas-logs-traces-distributed-tracing" />
<lastmod>2026-03-16T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/despliegue-blue-green-canary-progressive-rollout</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/despliegue-blue-green-canary-progressive-rollout" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/despliegue-blue-green-canary-progressive-rollout" />
<lastmod>2026-03-13T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/documentacion-tecnica-readme-arquitectura-decisiones</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/documentacion-tecnica-readme-arquitectura-decisiones" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/documentacion-tecnica-readme-arquitectura-decisiones" />
<lastmod>2026-03-10T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/escalabilidad-horizontal-load-balancing-stateless</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/escalabilidad-horizontal-load-balancing-stateless" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/escalabilidad-horizontal-load-balancing-stateless" />
<lastmod>2026-03-07T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/refactoring-tecnicas-deuda-tecnica-mejora-continua</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/refactoring-tecnicas-deuda-tecnica-mejora-continua" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/refactoring-tecnicas-deuda-tecnica-mejora-continua" />
<lastmod>2026-03-04T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/feedback-loop-desarrollo-rapido-iteracion</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/feedback-loop-desarrollo-rapido-iteracion" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/feedback-loop-desarrollo-rapido-iteracion" />
<lastmod>2026-03-01T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/crecimiento-equipo-documentacion-procesos-escala</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/crecimiento-equipo-documentacion-procesos-escala" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/crecimiento-equipo-documentacion-procesos-escala" />
<lastmod>2026-02-26T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/nextauth-autenticacion-segura-nextjs</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/nextauth-autenticacion-segura-nextjs" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/nextauth-autenticacion-segura-nextjs" />
<lastmod>2026-02-23T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/seo-next-js-metadata-structured-data</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/seo-next-js-metadata-structured-data" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/seo-next-js-metadata-structured-data" />
<lastmod>2026-02-20T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/webhooks-eventos-arquitectura-push-basada</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/webhooks-eventos-arquitectura-push-basada" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/webhooks-eventos-arquitectura-push-basada" />
<lastmod>2026-02-17T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/testing-e2e-playwright-automated-workflows</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/testing-e2e-playwright-automated-workflows" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/testing-e2e-playwright-automated-workflows" />
<lastmod>2026-02-14T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/multitenancy-saas-aislamiento-datos-seguridad</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/multitenancy-saas-aislamiento-datos-seguridad" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/multitenancy-saas-aislamiento-datos-seguridad" />
<lastmod>2026-02-11T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/machine-learning-modelos-produccion-no-trampa</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/machine-learning-modelos-produccion-no-trampa" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/machine-learning-modelos-produccion-no-trampa" />
<lastmod>2026-02-08T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/analitycs-eventos-seguimiento-usuarios-sin-invasividad</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/analitycs-eventos-seguimiento-usuarios-sin-invasividad" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/analitycs-eventos-seguimiento-usuarios-sin-invasividad" />
<lastmod>2026-02-05T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/feature-flags-experimentation-rollout-controlado</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/feature-flags-experimentation-rollout-controlado" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/feature-flags-experimentation-rollout-controlado" />
<lastmod>2026-02-02T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/es/blog/backup-disaster-recovery-plan-continuidad</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/backup-disaster-recovery-plan-continuidad" />
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/backup-disaster-recovery-plan-continuidad" />
<lastmod>2026-01-30T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/" />
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/about</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/about" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/about" />
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/services</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/services" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/services" />
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/projects</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects" />
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog" />
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/legal-notice</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/legal-notice" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/legal-notice" />
<changefreq>yearly</changefreq>
<priority>0.2</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/privacy-policy</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/privacy-policy" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/privacy-policy" />
<changefreq>yearly</changefreq>
<priority>0.2</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/projects/integracion-crm-erp-ia</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/integracion-crm-erp-ia" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/integracion-crm-erp-ia" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/projects/procesamiento-documental-ia-universidad</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/procesamiento-documental-ia-universidad" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/procesamiento-documental-ia-universidad" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/projects/analisis-noticias-ia</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/analisis-noticias-ia" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/analisis-noticias-ia" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/projects/plataforma-educativa-ia-formacion</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/plataforma-educativa-ia-formacion" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/plataforma-educativa-ia-formacion" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/projects/procesamiento-documental-ia</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/procesamiento-documental-ia" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/procesamiento-documental-ia" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/projects/procesamiento-pedidos-ia-ftp</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/procesamiento-pedidos-ia-ftp" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/procesamiento-pedidos-ia-ftp" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/projects/nps-casas-alquiler</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/nps-casas-alquiler" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/nps-casas-alquiler" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/projects/app-inventario-barcode</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/app-inventario-barcode" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/app-inventario-barcode" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/projects/plataforma-educativa-deporte</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/plataforma-educativa-deporte" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/plataforma-educativa-deporte" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/projects/noticias-procesadas-ia</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/noticias-procesadas-ia" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/noticias-procesadas-ia" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/projects/gestion-inmobiliaria</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/gestion-inmobiliaria" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/gestion-inmobiliaria" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/projects/gestion-becas-universitarias</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/gestion-becas-universitarias" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/gestion-becas-universitarias" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/projects/sistema-gestion-ruido-iot</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/sistema-gestion-ruido-iot" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/sistema-gestion-ruido-iot" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/projects/sistema-gestion-nominas</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/sistema-gestion-nominas" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/sistema-gestion-nominas" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/projects/traspaso-vehiculos</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/traspaso-vehiculos" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/traspaso-vehiculos" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/projects/agricultura-precision-prototipo</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/agricultura-precision-prototipo" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/agricultura-precision-prototipo" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/projects/contabilidad-ifrs-16</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/contabilidad-ifrs-16" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/contabilidad-ifrs-16" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/projects/control-cerraduras-sistema</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/control-cerraduras-sistema" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/control-cerraduras-sistema" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/projects/control-produccion-cooperativas</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/control-produccion-cooperativas" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/control-produccion-cooperativas" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/projects/control-inventario</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/control-inventario" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/control-inventario" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/projects/control-remoto-iot</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/control-remoto-iot" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/control-remoto-iot" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/projects/red-videovigilancia</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/projects/red-videovigilancia" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/projects/red-videovigilancia" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/detectar-procesos-manuales-automatizables</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/detectar-procesos-manuales-automatizables" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/detectar-procesos-manuales-automatizables" />
<lastmod>2026-06-17T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/ia-aplicada-empresas-valor-real</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/ia-aplicada-empresas-valor-real" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/ia-aplicada-empresas-valor-real" />
<lastmod>2026-06-14T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/agentes-ia-produccion-patrones-errores-arquitectura</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/agentes-ia-produccion-patrones-errores-arquitectura" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/agentes-ia-produccion-patrones-errores-arquitectura" />
<lastmod>2026-06-11T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/integrar-ia-sistemas-existentes</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/integrar-ia-sistemas-existentes" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/integrar-ia-sistemas-existentes" />
<lastmod>2026-06-08T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/rag-negocio-cuando-usar</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/rag-negocio-cuando-usar" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/rag-negocio-cuando-usar" />
<lastmod>2026-06-05T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/automatizacion-documental-ocr-ia</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/automatizacion-documental-ocr-ia" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/automatizacion-documental-ocr-ia" />
<lastmod>2026-06-02T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/disenar-integraciones-crm-erp-herramientas</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/disenar-integraciones-crm-erp-herramientas" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/disenar-integraciones-crm-erp-herramientas" />
<lastmod>2026-05-30T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/flujo-manual-a-sistema-automatico</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/flujo-manual-a-sistema-automatico" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/flujo-manual-a-sistema-automatico" />
<lastmod>2026-05-27T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/arquitectura-productos-internos-web-apis-despliegue</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/arquitectura-productos-internos-web-apis-despliegue" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/arquitectura-productos-internos-web-apis-despliegue" />
<lastmod>2026-05-24T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/integracion-a-medida-o-n8n</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/integracion-a-medida-o-n8n" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/integracion-a-medida-o-n8n" />
<lastmod>2026-05-21T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/next-js-16-rsc-server-actions-guia-completa</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/next-js-16-rsc-server-actions-guia-completa" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/next-js-16-rsc-server-actions-guia-completa" />
<lastmod>2026-05-18T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/nestjs-arquitectura-modular-escalable</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/nestjs-arquitectura-modular-escalable" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/nestjs-arquitectura-modular-escalable" />
<lastmod>2026-05-15T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/typescript-tipos-avanzados-genericos-utiles</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/typescript-tipos-avanzados-genericos-utiles" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/typescript-tipos-avanzados-genericos-utiles" />
<lastmod>2026-05-12T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/testing-vitest-jest-estrategia-cobertura</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/testing-vitest-jest-estrategia-cobertura" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/testing-vitest-jest-estrategia-cobertura" />
<lastmod>2026-05-09T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/performance-next-js-bundle-size-core-vitals</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/performance-next-js-bundle-size-core-vitals" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/performance-next-js-bundle-size-core-vitals" />
<lastmod>2026-05-06T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/seguridad-api-authentication-authorization-tokens</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/seguridad-api-authentication-authorization-tokens" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/seguridad-api-authentication-authorization-tokens" />
<lastmod>2026-05-03T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/bases-de-datos-postgres-postgres-indexes-queries</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/bases-de-datos-postgres-postgres-indexes-queries" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/bases-de-datos-postgres-postgres-indexes-queries" />
<lastmod>2026-04-30T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/docker-compose-desarrollo-local-consistencia</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/docker-compose-desarrollo-local-consistencia" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/docker-compose-desarrollo-local-consistencia" />
<lastmod>2026-04-27T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/ci-cd-github-actions-automatizar-testing-deploy</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/ci-cd-github-actions-automatizar-testing-deploy" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/ci-cd-github-actions-automatizar-testing-deploy" />
<lastmod>2026-04-24T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/react-hooks-custom-hooks-logica-reutilizable</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/react-hooks-custom-hooks-logica-reutilizable" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/react-hooks-custom-hooks-logica-reutilizable" />
<lastmod>2026-04-21T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/tailwind-css-utilidad-primero-no-bloat</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/tailwind-css-utilidad-primero-no-bloat" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/tailwind-css-utilidad-primero-no-bloat" />
<lastmod>2026-04-18T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/prisma-orm-migraciones-tipos-seguridad</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/prisma-orm-migraciones-tipos-seguridad" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/prisma-orm-migraciones-tipos-seguridad" />
<lastmod>2026-04-15T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/arquitectura-frontend-layered-features-modulos</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/arquitectura-frontend-layered-features-modulos" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/arquitectura-frontend-layered-features-modulos" />
<lastmod>2026-04-12T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/error-handling-boundaries-observabilidad-frontend</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/error-handling-boundaries-observabilidad-frontend" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/error-handling-boundaries-observabilidad-frontend" />
<lastmod>2026-04-09T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/estado-global-context-api-vs-zustand-redux</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/estado-global-context-api-vs-zustand-redux" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/estado-global-context-api-vs-zustand-redux" />
<lastmod>2026-04-06T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/ux-formularios-validacion-user-friendly</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/ux-formularios-validacion-user-friendly" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/ux-formularios-validacion-user-friendly" />
<lastmod>2026-04-03T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/accesibilidad-web-wcag-screen-readers-teclado</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/accesibilidad-web-wcag-screen-readers-teclado" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/accesibilidad-web-wcag-screen-readers-teclado" />
<lastmod>2026-03-31T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/migracion-legacy-a-moderno-estrategia</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/migracion-legacy-a-moderno-estrategia" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/migracion-legacy-a-moderno-estrategia" />
<lastmod>2026-03-28T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/escala-datos-particionamiento-sharding</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/escala-datos-particionamiento-sharding" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/escala-datos-particionamiento-sharding" />
<lastmod>2026-03-25T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/cache-redis-estrategias-invalidacion</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/cache-redis-estrategias-invalidacion" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/cache-redis-estrategias-invalidacion" />
<lastmod>2026-03-22T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/api-versioning-breaking-changes-deprecation</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/api-versioning-breaking-changes-deprecation" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/api-versioning-breaking-changes-deprecation" />
<lastmod>2026-03-19T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/observabilidad-metricas-logs-traces-distributed-tracing</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/observabilidad-metricas-logs-traces-distributed-tracing" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/observabilidad-metricas-logs-traces-distributed-tracing" />
<lastmod>2026-03-16T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/despliegue-blue-green-canary-progressive-rollout</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/despliegue-blue-green-canary-progressive-rollout" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/despliegue-blue-green-canary-progressive-rollout" />
<lastmod>2026-03-13T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/documentacion-tecnica-readme-arquitectura-decisiones</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/documentacion-tecnica-readme-arquitectura-decisiones" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/documentacion-tecnica-readme-arquitectura-decisiones" />
<lastmod>2026-03-10T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/escalabilidad-horizontal-load-balancing-stateless</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/escalabilidad-horizontal-load-balancing-stateless" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/escalabilidad-horizontal-load-balancing-stateless" />
<lastmod>2026-03-07T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/refactoring-tecnicas-deuda-tecnica-mejora-continua</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/refactoring-tecnicas-deuda-tecnica-mejora-continua" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/refactoring-tecnicas-deuda-tecnica-mejora-continua" />
<lastmod>2026-03-04T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/feedback-loop-desarrollo-rapido-iteracion</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/feedback-loop-desarrollo-rapido-iteracion" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/feedback-loop-desarrollo-rapido-iteracion" />
<lastmod>2026-03-01T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/crecimiento-equipo-documentacion-procesos-escala</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/crecimiento-equipo-documentacion-procesos-escala" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/crecimiento-equipo-documentacion-procesos-escala" />
<lastmod>2026-02-26T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/nextauth-autenticacion-segura-nextjs</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/nextauth-autenticacion-segura-nextjs" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/nextauth-autenticacion-segura-nextjs" />
<lastmod>2026-02-23T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/seo-next-js-metadata-structured-data</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/seo-next-js-metadata-structured-data" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/seo-next-js-metadata-structured-data" />
<lastmod>2026-02-20T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/webhooks-eventos-arquitectura-push-basada</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/webhooks-eventos-arquitectura-push-basada" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/webhooks-eventos-arquitectura-push-basada" />
<lastmod>2026-02-17T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/testing-e2e-playwright-automated-workflows</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/testing-e2e-playwright-automated-workflows" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/testing-e2e-playwright-automated-workflows" />
<lastmod>2026-02-14T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/multitenancy-saas-aislamiento-datos-seguridad</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/multitenancy-saas-aislamiento-datos-seguridad" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/multitenancy-saas-aislamiento-datos-seguridad" />
<lastmod>2026-02-11T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/machine-learning-modelos-produccion-no-trampa</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/machine-learning-modelos-produccion-no-trampa" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/machine-learning-modelos-produccion-no-trampa" />
<lastmod>2026-02-08T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/analitycs-eventos-seguimiento-usuarios-sin-invasividad</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/analitycs-eventos-seguimiento-usuarios-sin-invasividad" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/analitycs-eventos-seguimiento-usuarios-sin-invasividad" />
<lastmod>2026-02-05T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/feature-flags-experimentation-rollout-controlado</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/feature-flags-experimentation-rollout-controlado" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/feature-flags-experimentation-rollout-controlado" />
<lastmod>2026-02-02T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://rubenrosales.dev/en/blog/backup-disaster-recovery-plan-continuidad</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://rubenrosales.dev/en/blog/backup-disaster-recovery-plan-continuidad" />
<xhtml:link rel="alternate" hreflang="es" href="https://rubenrosales.dev/es/blog/backup-disaster-recovery-plan-continuidad" />
<lastmod>2026-01-30T16:02:20.973Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
</urlset>
