Tras una semana de parón debido a las fiestas, volvemos con una nueva entrega de enlaces interesantes. En esta ocasión, al tratarse de dos semanas de cosecha, tenemos una recopilación bastante cargadita de contenidos a los que vale la pena echar un vistazo.
Pero como siempre, destacaremos unos cuantos.
José Manuel Alarcón nos habla de que el uso de la IA sin un control adecuado podría introducir deuda técnica en nuestros proyectos, y nos ofrece una guía para evitarla.
Con tanta novedad en el mundo de las herramientas IA para desarrolladores, a veces no es fácil distinguir conceptos que a priori parecen similares, pero en realidad son muy diferentes. Para ayudarnos un poco con esto, Juan Luis Guerrero nos explica las diferencias entre agentes, skills y comandos en el contexto de herramientas como Claude Code, Codex, Copilot CLI y Gemini CLI.
Fernando Escolar nos recuerda la importancia de mejorar continuamente nuestro código con pequeños cambios, que, aunque no sean espectaculares, pueden marcar una gran diferencia en la calidad y mantenibilidad de nuestro software.
Gerson Azabache nos habla de "workers" o tareas en segundo plano para lograr que nuestras aplicaciones respondan de forma rápida y eficiente, consiguiendo una experiencia de usuario más fluida, y luego nos enseña cómo implementarlos en .NET con IHostedService.
Y para terminar, todo un clásico: ¿quieres mostrar una dirección de correo electrónico en tu sitio web sin que los spammers se ceben con ella? Spencer Mortensen nos cuenta las técnicas de ofuscación de correo electrónico que siguen funcionando en 2026.
El resto de contenidos interesantes, a continuación.
Por si te lo perdiste...
- Cómo detectar y reaccionar a cambios en settings de ASP.NET Core, en tiempo real
José M. Aguilar - Ámbito local implícito en sentencias using de C#
José M. Aguilar
.NET
- Tu App Necesita Workers Silenciosos: El Patrón que Usa Amazon para No Hacerte Esperar & * Background Jobs en .NET con IHostedService: Procesa Tareas en Segundo Plano
Gerson Azabache Martínez - Using LLMs and MCP in .NET
Ricardo Peres - Configuring contextual options with Microsoft.Extensions.Options.Contextual
Andrew Lock - How .NET handles exceptions internally (and why they're expensive)
Ali Hamza Ansari - URL Pattern Matching in .NET
Gérald Barré - How to build .NET obfuscator
Andrii Kurdiumov - Explore union types in C# 15
Bill Wagner - Convert Anything to Markdown in .NET — Meet ElBruno.MarkItDotNet
Bruno Capuano - Source code generated string enums with exhaustion support
Steven Giesel - What’s New in .NET 11 Preview 1 & 2: Runtime Async, Zstandard, Blazor TempData, and Vector Search
Arulraj Aboorvasamy - Libraries I Stopped Using in .NET (And I Don’t Regret It)
Miguel Teherán - ASP.NET Core: Why I Couldn’t Upgrade FluentValidation Past 11.4 in My Calzolari.Grpc.AspNetCore.Validation Package (and How I Finally Fixed It)
Anthony Giretti - Testing C# Source Generators: A Practical Guide
Nick Cosentino
Publicado por José M. Aguilar a las 8:01 a. m.
Etiquetas: enlaces
Pues nos vamos de Semana Santa con unos cuantos enlaces interesantes para entretenernos durante las vacaciones, en caso de haberlas 😎
Y como siempre me gusta destacar algunos, comencemos por Mark Seemann, que trata un tema algo controvertido, pero interesante: si usamos agentes IA para generar nuestro código sin supervisión, ¿quién es responsable de ese código? ¿podríamos ir a prisión por un código generado por una IA? Spoiler: ándate con cuidado, por si acaso.
José Manuel Alarcón nos cuenta esta semana qué son los proyectos greenfield y brownfield, términos usados últimamente con mucha frecuencia. Y de paso, también nos envía una llamada de atención sobre el cambio de política de datos de GitHub, que les permitirá en poco tiempo utilizar nuestro código para entrenar a sus modelos de IA, y nos cuenta cómo evitarlo.
Daniel Rosenwasser ha anunciado TypeScript 6.0, la última versión del lenguaje antes de dar el esperado salto a Go, previsto para TypeScript 7.0. En esta nueva versión se han incluido mejoras en el lenguaje y el sistema de tipos y soporte para nuevas APIs.
Nick Cosentino nos lleva a las bases explicando las diferencias entre el patrón Singleton y las clases estáticas en C# y cuándo deberíamos usarlas.
Y la frikada de la semana la encontramos en el blog de Chema Alonso, que nos cuenta cómo es posible guardar, descargar y ejecutar el juego Doom desde el DNS de Cloudflare.
El resto de enlaces a contenidos que no puedes perderte, a continuación.
Por si te lo perdiste...
- Forzar casts imposibles con C#
José M. Aguilar - Constructores con parámetros en entidades EF Core
José M. Aguilar
.NET
- Feature Flags en .NET: Controla tu Código Sin Hacer Deploy
Gerson Azabache Martínez - Singleton vs Static Class in C#: Key Differences Explained
Nick Cosentino - SOLID Principles in C#: Beginner Guide with .NET Examples
Dirk Strauss - Speed Up .NET CI with Test Sharding
Gérald Barré - C# Tip: How to JSON Serialize and Deserialize values as DateTime, DateTimeOffset, DateOnly and TimeOnly
Davide Bellone - Introducing NtpTick: A lightweight NTP client for .NET
Jiří Činčura - Improving .NET Security Code with C# 14 Property Extensions
Wesley Cabus - Build an AI-Powered Excel Translator in C# Using OpenAI and XlsIO
Mohan Chandran - Compile-Time options validation with the OptionsValidator source generator
Bart Wullems - Generating Structured Code Using Azure, OpenAI and .NET
Ricardo Peres
La semana pasada encontré gran cantidad de contenidos interesantes sobre desarrollo web, .NET, IA, acceso a datos, MAUI y otros temas, aunque me gustaría destacar varios artículos, todos relacionados con la inteligencia artificial, a los que, como mínimo, deberías echarles un vistazo.
En primer lugar, Fernando Escolar nos explica detalladamente las distintas piezas que componen un agente de IA, y cómo se relacionan entre sí.
Miguel Durán comparte un proyecto personal que ha creado para comprobar qué modelos de IA podemos ejecutar en nuestra máquina local, muy útil para usar IA generativa sin pasar por caja y sin enviar datos hacia fuera.
Por último, Addy Osmani nos habla de la deuda de comprensión que se genera al usar código generado por IA, y cómo esto puede afectar a los desarrolladores a largo plazo.
El resto de enlaces, a continuación.
Por si te lo perdiste...
- Aprovecha al máximo los archivos .http en Visual Studio usando variables dinámicas
José M. Aguilar - Backing fields en Entity Framework Core
José M. Aguilar
.NET
- C# class types explained with examples
David Grace - CoreSync: a .NET library that provides data synchronization between databases
Adolfo Marinucci - records ToString and inheritence
Steven Giesel - Implementing RFC-compliant HTTP caching for HttpClient in .NET
Gérald Barré - C# 14 New Features: A Developer Guide for .NET 10
Dirk Strauss - Writing a .NET Garbage Collector in C# - Part 9: Frozen segments and new allocation strategy
Kevin Gosse - Local LLM Chat Completions in .NET — Just C#
Bruno Capuano - Implementing the Strategy Pattern with .NET Dependency Injection
Ricardo Peres
En .NET, es bastante habitual que nuestros métodos o funciones reciban objetos de tipo IEnumerable<T> con la intención de que iteremos sobre ellos para lograr el comportamiento deseado. Esta abstracción es muy poderosa, ya que nos permite trabajar con cualquier colección o secuencia de datos sin preocuparnos por su implementación concreta, pero, si no somos cuidadosos, puede llevarnos a errores y comportamientos inesperados.
Por ejemplo, es muy frecuente realizar múltiples enumeraciones sobre la misma instancia de IEnumerable<T>, algo que a veces puede ocurrir de forma inconsciente, y se convierte en un problema cuando la secuencia es muy extensa o su contenido no es replicable. De hecho, muchas herramientas y entornos de desarrollo nos advierten sobre este problema durante la edición y compilación para que estemos atentos.
Otro problema común es asumir que la secuencia es finita, algo que no tiene por qué ser siempre cierto. Las enumeraciones en este caso pueden llevar a bucles infinitos o a un consumo excesivo de recursos.
En este artículo exploraremos distintos escenarios que pueden darse y cómo podemos evitarlos.
Esta semana me he topado con bastantes contenidos interesantes 😊
Por citar algunos, ya tenemos aquí la segunda preview de .NET 11, con novedades interesantes como el runtime asíncrono, soporte nativo para trazas alineadas con OpenTelemetry, mejorillas en Blazor, soporte para OpenAPI 3.2.0, nuevas plantillas de proyecto, mejoras en rendimiento y más. Si quieres conocer todos los detalles, no te pierdas el anuncio oficial.
Bipin Joshi nos habla de las Minimal APIs una vez pasó el hype inicial: qué nos aportan, las ventajas e inconvenientes de su ausencia de código ceremonial y sus escenarios de uso ideales.
Gurveer Arora continúa exprimiendo el potencial de HTML y CSS con su serie NoJS, y en esta ocasión nos trae un clon de Flappy Bird hecho sin una sola línea de JavaScript. Porque poderse, se puede.
También me ha parecido interesante la lectura de The WebAssembly Component Model, una arquitectura para la construcción de librerías y aplicaciones interoperables utilizando WebAssembly.
Y Ricardo Peres continúa explorando las APIs de sincronización en .NET, y en esta ocasión nos habla de las herramientas que tenemos a nuestra disposición para sincronizar distintos procesos, como Mutex, Semaphore y EventWaitHandle.
El resto de enlaces, a continuación.
Por si te lo perdiste...
- ¡Cuidado con las excepciones no controladas de servicios en segundo plano (BackgroundService) en ASP.NET Core!
José M. Aguilar - Antipatrones de asincronía en C#
José M. Aguilar
.NET
- .NET 11 Preview 2 is now available!
.NET Team - Splitting the NetEscapades.EnumGenerators packages: the road to a stable release
Andrew Lock - FullJoin in .NET 11
Steven Giesel - .NET Synchronisation APIs - Part 2 - Out-of-Process Synchronisation
Ricardo Peres
Ya he publicado los enlaces a contenidos interesantes que he ido descubriendo a lo largo de la semana pasada 😊
En esta entrega, destacamos el repaso de Martin Stühmer a los errores más comunes en la gestión de sesiones en aplicaciones ASP.NET Core y cómo evitarlos para mejorar su seguridad de nuestras aplicaciones.
Se ha lanzado la versión 1.0 del SDK oficial de MCP para C#. Aún no he tenido tiempo de probarlo, pero así al vistazo parece que puede facilitarnos un poco la vida a la hora de integrar nuestras aplicaciones con modelos de lenguaje y otros servicios de IA.
Y seguimos con más lanzamientos, Jetbrains han anunciado ReSharper para Visual Studio Code, Cursor y editores compatibles. Como fan incondicional de esta herramienta desde hace años, me alegra que ahora esté también disponible más allá de Visual Studio.
Por último, Gerson Azabache nos recuerda la importancia de hacer ejercicio, especialmente para los desarrolladores, que pasamos muchas horas sentados frente al ordenador y a menudo descuidamos nuestra salud física.
Muchos más enlaces a contenidos interesantes, a continuación.
Por si te lo perdiste...
- Gestión centralizada de paquetes NuGet en soluciones y proyectos .NET
José M. Aguilar - Si las shadow properties no existen como propiedades en la entidad, ¿cómo podemos inicializarlas en el seed de Entity Framework Core?
José M. Aguilar
.NET
- Why IEnumerable Can Kill Performance in Hot Paths
Ali Hamza Ansari - Creating case-sensitive folders on Windows using C#
Gérald Barré - Writing a .NET Garbage Collector in C#
Kevin Gosse

