<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>alafourca.dev — Ingeniería sin filtros</title><description>Alejandro Lafourcade — Ingeniero de Software. Artículos sobre arquitectura, Java, Go y decisiones técnicas reales.</description><link>https://alafourca.dev/</link><language>es</language><item><title>Día 18: Cambiar de proveedor sin tocar el core</title><link>https://alafourca.dev/blog/undefined/</link><guid isPermaLink="true">https://alafourca.dev/blog/undefined/</guid><description>ReportService tenía el proveedor hardcodeado. Cambiar a SMS exigía abrir el core. DIP: depende de la abstracción, no del proveedor. #100ArchitectureDays.</description><pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate></item><item><title>Día 17: Liskov, cuando heredar miente</title><link>https://alafourca.dev/blog/undefined/</link><guid isPermaLink="true">https://alafourca.dev/blog/undefined/</guid><description>Penguin extends Bird. En runtime, fly() explota. LSP: la herencia biologica no es herencia de comportamiento. Dia 17 de #100ArchitectureDays.</description><pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate></item><item><title>Día 16: El if nuevo que rompió 5 features</title><link>https://alafourca.dev/blog/undefined/</link><guid isPermaLink="true">https://alafourca.dev/blog/undefined/</guid><description>Cada canal nuevo obligaba a abrir NotificationService y rezar. Sprint 4 rompió EMAIL. Sprint 7, lo mismo al agregar SLACK. Open/Closed Principle: extender sin tocar lo que ya anda. Día 16 de #100ArchitectureDays.</description><pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate></item><item><title>Día 15: Tu código es DRY pero nadie lo entiende. Bienvenido al infierno de la abstracción.</title><link>https://alafourca.dev/blog/undefined/</link><guid isPermaLink="true">https://alafourca.dev/blog/undefined/</guid><description>Dos funciones parecidas no son la misma función. La abstracción incorrecta es peor que la duplicación, y probablemente tu codebase está lleno de ellas. Día 15 de #100ArchitectureDays.</description><pubDate>Fri, 24 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Día 14: Cambiaste una clase y rompiste 10 más. Efecto dominó.</title><link>https://alafourca.dev/blog/undefined/</link><guid isPermaLink="true">https://alafourca.dev/blog/undefined/</guid><description>Alto acoplamiento, baja cohesión. Cambias un DTO y te explota medio sistema. Cómo separar modelos por capa para eliminar el efecto dominó. Día 14 de #100ArchitectureDays.</description><pubDate>Thu, 23 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Día 13: Tu clase tiene 50 métodos. Hace de todo. No hace nada bien.</title><link>https://alafourca.dev/blog/undefined/</link><guid isPermaLink="true">https://alafourca.dev/blog/undefined/</guid><description>Ese OrderService, UserManager o PedidoController que todos tocan y nadie entiende es un God Object — y te está costando plata real. Cómo identificarlo y desarmarlo con SRP. Día 13 de #100ArchitectureDays.</description><pubDate>Tue, 21 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Día 12: 5.000 personas hicieron click al mismo tiempo. Tu servidor pidió perdón.</title><link>https://alafourca.dev/blog/undefined/</link><guid isPermaLink="true">https://alafourca.dev/blog/undefined/</guid><description>Tu API no tiene límites. Cualquiera puede hacer las requests que quiera, a la velocidad que quiera. Rate limiting y el algoritmo Token Bucket. Día 12 de #100ArchitectureDays.</description><pubDate>Tue, 14 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Día 11: System.out.println en producción — la confesión que nadie hace</title><link>https://alafourca.dev/blog/undefined/</link><guid isPermaLink="true">https://alafourca.dev/blog/undefined/</guid><description>Tus logs son ruido puro. Sin timestamp, sin nivel, sin contexto. A las 3AM con producción caído, ese println no te va a salvar. Día 11 de #100ArchitectureDays.</description><pubDate>Mon, 13 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Día 10: Le pusiste índices a todo y ahora los INSERT tardan 800ms</title><link>https://alafourca.dev/blog/undefined/</link><guid isPermaLink="true">https://alafourca.dev/blog/undefined/</guid><description>Los índices no son gratis. Cada uno acelera una lectura pero frena todas las escrituras. Las 4 reglas para indexar sin romper tu base. Día 10 de #100ArchitectureDays.</description><pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Día 9: Tu app funcionó todo el QA. El lunes a las 9am explotó con 100 usuarios.</title><link>https://alafourca.dev/blog/undefined/</link><guid isPermaLink="true">https://alafourca.dev/blog/undefined/</guid><description>Connection pools, leaks silenciosos y la matemática de por qué 9 conexiones pueden manejar miles de requests. Día 9 de #100ArchitectureDays.</description><pubDate>Thu, 09 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Día 8: El usuario subió un Excel y tu servidor pidió perdón</title><link>https://alafourca.dev/blog/undefined/</link><guid isPermaLink="true">https://alafourca.dev/blog/undefined/</guid><description>HTTP no fue diseñado para operaciones de minutos. Batch processing, async patterns y cómo dejar de torturar a tus usuarios. Día 8 de #100ArchitectureDays.</description><pubDate>Wed, 08 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Día 7: ¿Quién te mandó a optimizar si ni siquiera mediste?</title><link>https://alafourca.dev/blog/undefined/</link><guid isPermaLink="true">https://alafourca.dev/blog/undefined/</guid><description>Optimizás a ciegas porque nunca mediste. Profiling con Actuator y Micrometer para encontrar el cuello de botella real. Día 7 de #100ArchitectureDays.</description><pubDate>Tue, 07 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Día 6: Tu caché no funciona y es tu culpa</title><link>https://alafourca.dev/blog/undefined/</link><guid isPermaLink="true">https://alafourca.dev/blog/undefined/</guid><description>Pusiste @Cacheable en todo y la app sigue lenta. El problema no es el caché — es lo que estás cacheando. Día 6 de #100ArchitectureDays.</description><pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Día 5: N+1 Queries — el bug que tu DBA ya sabe que tenés</title><link>https://alafourca.dev/blog/undefined/</link><guid isPermaLink="true">https://alafourca.dev/blog/undefined/</guid><description>Para mostrar 50 usuarios hacés 250 queries a la base de datos. Tu DBA te odia y tiene razón. Día 5 de #100ArchitectureDays.</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Día 4: Tu endpoint devuelve TODO. El frontend explota. La red llora.</title><link>https://alafourca.dev/blog/undefined/</link><guid isPermaLink="true">https://alafourca.dev/blog/undefined/</guid><description>Offset vs cursor pagination: cuándo usar cada una y por qué tu app necesita esto ya. Día 4 de #100ArchitectureDays.</description><pubDate>Tue, 31 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Día 3: Agregaste un índice y la consulta sigue lenta. El problema no era el índice.</title><link>https://alafourca.dev/blog/undefined/</link><guid isPermaLink="true">https://alafourca.dev/blog/undefined/</guid><description>EXPLAIN ANALYZE es tu mejor amigo. Aprende a leer un query plan antes de optimizar a ciegas. Día 3 de #100ArchitectureDays.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Día 2: El SELECT * que arruinó tu API (y vos ni te enteraste)</title><link>https://alafourca.dev/blog/undefined/</link><guid isPermaLink="true">https://alafourca.dev/blog/undefined/</guid><description>Tu API responde en 10 segundos porque estás trayendo columnas que nadie necesita. Día 2 de #100ArchitectureDays.</description><pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate></item><item><title>#100ArchitectureDays: 110 problemas reales de arquitectura, con código, sin humo</title><link>https://alafourca.dev/blog/undefined/</link><guid isPermaLink="true">https://alafourca.dev/blog/undefined/</guid><description>Arranco un reto de 110 días donde resuelvo un problema real de arquitectura de software por día. Con Spring Boot, código que compila, y métricas reales.</description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Día 1: Tu app tarda 11 segundos en arrancar y vos pensás que es normal</title><link>https://alafourca.dev/blog/undefined/</link><guid isPermaLink="true">https://alafourca.dev/blog/undefined/</guid><description>De 10.7s a 1.3s de startup. El problema no es Spring Boot — es cómo inicializás tus servicios. Día 1 de #100ArchitectureDays.</description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Spring Boot 4: lo que cambió, lo que se rompió y lo que nadie te cuenta</title><link>https://alafourca.dev/blog/undefined/</link><guid isPermaLink="true">https://alafourca.dev/blog/undefined/</guid><description>Llevo meses migrando proyectos a Boot 4. Esto es todo lo que aprendí — con las cicatrices para probarlo.</description><pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Lombok fue creado para resolver problemas que Java ya no tiene</title><link>https://alafourca.dev/blog/undefined/</link><guid isPermaLink="true">https://alafourca.dev/blog/undefined/</guid><description>Y seguimos usándolo por costumbre, no por necesidad.</description><pubDate>Thu, 18 Dec 2025 00:00:00 GMT</pubDate></item><item><title>Oye, tenemos que hablar sobre tu .gitignore</title><link>https://alafourca.dev/blog/undefined/</link><guid isPermaLink="true">https://alafourca.dev/blog/undefined/</guid><description>Está mal y te voy a demostrar por qué. 8 minutos que te van a ahorrar años de frustración.</description><pubDate>Mon, 04 Aug 2025 00:00:00 GMT</pubDate></item><item><title>String Templates en Java: la feature que Oracle mató antes de nacer</title><link>https://alafourca.dev/blog/undefined/</link><guid isPermaLink="true">https://alafourca.dev/blog/undefined/</guid><description>String Templates prometía ser la forma moderna de construir strings en Java 21. Pero Oracle la retiró en Java 23. Esta es la historia de la feature que no sobrevivió.</description><pubDate>Fri, 05 Jul 2024 00:00:00 GMT</pubDate></item><item><title>Hilos virtuales en Java 21: adiós a WebFlux, hola a Proyecto Loom</title><link>https://alafourca.dev/blog/undefined/</link><guid isPermaLink="true">https://alafourca.dev/blog/undefined/</guid><description>Tu servidor aguanta 200 requests simultáneos? Con hilos virtuales de Java 21 puede manejar millones. Sin WebFlux. Sin Reactor. Código sincrónico puro.</description><pubDate>Mon, 24 Jun 2024 00:00:00 GMT</pubDate></item></channel></rss>