Cuando trabajamos con herramientas en fase experimental, como Symfony AI, la velocidad de evolución es tanto una ventaja como un desafío. Entre la versión v0.9.0 y la v0.12.0, el componente no solo refinó sus firmas de API y su arquitectura interna, sino que introdujo herramientas esenciales para construir agentes verdaderamente resilientes y preparados para los […]
Desarrollo
Cuando una aplicación PHP empieza a crecer, uno de los primeros problemas de rendimiento suele aparecer en el peor lugar posible: la experiencia del usuario. Un registro que tarda demasiado.Una compra que demora varios segundos.Una API que parece «congelarse» antes de responder. En muchos casos, el problema no es PHP en sí. El problema es […]
En nuestras publicaciones anteriores, establecimos las bases para escribir código elegante con LINQ y desglosamos cómo dominar los joins avanzados. Asimismo, pusimos sobre la mesa las alarmas de por qué las aplicaciones sufren cuando se enfrentan a millones de registros. Cuando tu dataset pasa de miles a millones de filas, ya no basta con escribir […]
Si has seguido esta serie, ya sabes qué son las Blazor Web Apps, dominas los Render Modes y entiendes a la perfección cómo lidiar con el ciclo de vida y el prerendering (puedes repasar el último artículo aquí). Llegados a este punto, tu aplicación funciona… pero, ¿está realmente lista para producción? En cuanto intentas estructurar […]
En los artículos anteriores vimos por qué el ORM consume tanta memoria y cómo mitigarlo con flush() por bloques, clear() y toIterable(). Si llegaste hasta aquí, ya estás convencido del problema. Este artículo es el siguiente paso: cómo salir del ORM conscientemente cuando no lo necesitas, sin abandonar el ecosistema Doctrine ni romper la arquitectura […]
En el artículo anterior vimos cómo elegir y aplicar los diferentes Render Modes. Parecía bastante sencillo: pones @rendermode InteractiveAuto y listo. Pero en cuanto empiezas a construir componentes reales, con llamadas a bases de datos, APIs o JavaScript, aparece el primer susto: «Mi componente está ejecutando las peticiones dos veces… y no es un bug.» […]
En el artículo anterior vimos cómo sobrevivir cuando tienes que procesar millones de registros con Doctrine: usando flush() por bloques, clear() y toIterable(). Pero ¿por qué funcionan realmente esas técnicas? La respuesta está en dos piezas internas de Doctrine que la mayoría de los desarrolladores subestiman o directamente desconocen: el UnitOfWork y el proceso de […]
C# vs Go: Entendiendo sus diferencias clave
2026-05-06Si has trabajado con C# en el ecosistema .NET, seguramente has oído hablar de Go, el lenguaje que Google creó para resolver problemas de escalabilidad y concurrencia en entornos modernos de nube. Aunque ambos son lenguajes potentes y modernos, sus filosofías son muy distintas. C# apuesta por la flexibilidad, la orientación a objetos y un […]
En el artículo anterior vimos cómo Blazor evolucionó de ser «o WebAssembly o Server» a un modelo unificado mucho más potente. Pero saber que existe no es lo mismo que saber usarlo bien. Hoy nos vamos a ensuciar las manos con la decisión más importante que tomarás al trabajar con Blazor Web Apps en .NET […]
Continuación de: «Nuevo look en el blog: descubre la mecánica detrás de mi tema minimalista en WordPress« En el artículo anterior te conté la filosofía detrás de Jure Minimal Blog: por qué decidí construir mi propio tema desde cero, qué decisiones de diseño tomé y cómo quedó el resultado visual. Si todavía no lo leíste, […]