Otra semana de contenidos interesantes en la web 🙂
Según Milan Milanović, solo 3–4 horas al día son realmente productivas al programar, porque el resto del tiempo se pierde por límites cognitivos, reuniones e interrupciones. Si conseguimos optimizar ese tiempo, mejorará nuestro rendimiento y la calidad del software que desarrollemos, mucho más que intentar trabajar más horas.
Bruno Capuano nos habla sobre la generación de embeddings, tanto de texto como de imágenes, en nuestro equipo local, y nos presenta una biblioteca de código abierto que ha desarrollado para facilitar esta tarea en .NET.
¿En qué se diferencian las colecciones Readonly de las Immutables? ¿Y qué son las colecciones Frozen? Pues aunque parezcan lo mismo, Davide Bellone nos muestra que son cosas muy diferentes.
La primera preview de .NET 11 ya trae algunas novedades interesantes. Steven Giesel nos muestra que el nuevo runtime async es una realidad, y que va a mejorar mucho el rendimiento de las aplicaciones asíncronas.
El resto de enlaces a contenidos interesantes, a continuación.
Por si te lo perdiste...
- Propiedades semi-automáticas en C#
José M. Aguilar - Evaluación en cliente de EF Core: sus peligros y cómo evitarla
José M. Aguilar
.NET
- Logging profesional en .NET: Diseña Telemetría, no Prints
Gerson Azabache Martínez - Collection Expression Arguments in C# 15 are "out"
Steven Giesel - Writing a native VLC plugin in C#
Martin Finkel - Introducing the Coding Agent Explorer (.NET)
Tore Nestenius - New runtime async is hitting .NET 11
Steven Giesel - Exploring .NET 11 Preview 1 Runtime Async: A dive into the Future of Async in .NET
Laurent Kempé - How to Implement Abstract Factory Pattern in C#: Step-by-Step Guide
Nick Cosentino - Creating standard and "observable" instruments
Andrew Lock - Readonly vs Immutable vs Frozen in C#: differences and (a lot of) benchmarks
Davide Bellone - Deep C# - Multicast Delegates and Events
Mike James - T4 templates on modern .NET
Ian Griffiths - Getting Started with .NET Scheduling in Hangfire
Peter Ritchie - NuGet Packages: The Suppliers You Forgot to Audit
Martin Stühmer
Publicado por José M. Aguilar a las 8:02 a. m.
Etiquetas: enlaces
No es algo que se utilice habitualmente, y a veces incluso es un detalle desconocido por los desarrolladores, pero las funciones lambda de C# pueden ser estáticas. Y no es porque sea algo nuevo, pues esta característica se introdujo en la versión 9.0 del lenguaje en 2020... simplemente son esos pequeños detalles que se van añadiendo al lenguaje sin hacer mucho ruido, y que a veces pasan desapercibidos.
De hecho, el uso de lambdas estáticas puede ayudarnos a escribir un código más seguro y predecible, además de tener cierto impacto en el rendimiento de nuestras aplicaciones, por lo que merece la pena conocerlas y saber cuándo y cómo usarlas.
En este post vamos a ver qué son las lambdas estáticas, cómo se implementan y cuándo y por qué deberíamos usarlas.
Mucho contenido interesante en la recopilación de enlaces de esta semana, entre los que me gustaría destacar algunas lecturas a las que, como mínimo, vale la pena echar un vistazo.
Ha llegado la primera preview de .NET 11, con un buen puñado de novedades en el runtime, librerías, SDK, C#, ASP.NET y Blazor. En el post del anuncio oficial podéis encontrar el listado completo y enlaces para profundizar en cada una de ellas.
Tenemos un doblete de Ricardo Peres sobre Entity Framework Core. Primero, profundiza en la forma de mapear distintos tipos de relaciones y las novedades que se han introducido en las últimas versiones para facilitar esta tarea, y luego nos habla sobre la validación de estado de entidades en este framework.
GitHub Copilot es indudablemente una herramienta alucinante, pero a veces no es fácil saber qué modo de uso es el más adecuado para cada tarea. José Manuel Alarcón nos lo explica en este artículo.
Y siguiendo con dobletes, el mismo autor nos trae un interesante artículo analizando cómo determinadas narrativas negativas amplificadas en redes sociales pueden generar frustración y malas decisiones en desarrolladores júnior, y propone estrategias prácticas para reconocer ese sesgo y protegerse de él.
Por último, James Randall comparte cómo ha cambiado la programación en 40 años y cómo ha cambiado también su relación con ella. Si tienes ya unos añitos, probablemente te sentirás identificado.
El resto de enlaces, a continuación.
Por si te lo perdiste...
- Invalidar el contenido cacheado por el tag helper "cache" de ASP.NET Core MVC
José M. Aguilar - Abrir Gmail y Google Calendar con una cuenta específica, y cómo anclarlos en la barra de tareas de Windows
José M. Aguilar
.NET
- .NET 11 Preview 1 is now available!
.NET Team - Autentication y Authorization en .NET
Fernando Escolar - Abstract Factory vs Factory Method Pattern in C#: Key Differences Explained
Nick Cosentino - Global Phone Number and Postal Code Validation Made Easy
David McCarter - Implementing strongly-typed IDs in .NET for safer domain models
Ali Hamza Ansari - How to Start a New .NET Project in 2026
Anton Martyniuk - Automatic Service Discovery in C# with Needlr: How It Works
Nick Cosentino - Writing a .NET Garbage Collector in C# - Part 7: Marking handles
Kevin Gosse
En los enlaces interesantes de esta semana, creo que vale la pena destacar el post de Peter Steinberger anunciando OpenClaw, el nuevo nombre de Moltbot, que a su vez fue un nuevo nombre para Clawd. En cualquier caso, una plataforma abierta que, con sus luces y sus sombras, ha traído aire fresco al mundo de los agentes personales inteligentes alojados en nuestra propia infraestructura.
También, gracias a Kevin W. Griffin, esta semana he descubierto la función COUNT(*) OVER() de SQL Server, que permite obtener el número total de filas en una consulta sin necesidad de hacer una consulta previa adicional, muy útil para paginación de datos.
Teresa Torres, por su parte, ha publicado un post muy interesante explicando cómo funciona ChatGPT, con un lenguaje bastante más accesible para humanos "normales" que lo que solemos encontrar por la red.
Por último, David Grace nos recuerda que nuestras excepciones pueden exponer información sensible que podría ser utilizada por algún desalmado, y cómo evitarlo utilizando herramientas proporcionadas por ASPNET Core.
El resto de enlaces, a continuación.
Por si te lo perdiste...
- El código fuente de .NET muy a mano: source.dot.net
José M. Aguilar - Registro y obtención de múltiples implementaciones de servicios en ASP.NET Core, y un caso práctico
José M. Aguilar
.NET
- Exploring the (underwhelming) System.Diagnostics.Metrics source generators
Andrew Lock - Automatic Dependency Injection in C#: The Complete Guide to Needlr
Nick Cosentino - .NET Framework 3.5 Moves to Standalone Deployment in new versions of Windows
Tara Overfield & Brett Lopez - Your Encryption Is Broken — .NET Data Protection Done Right
Martin Stühmer - Reliably Refreshing the WebView2 Control
Rick Strahl - Encrypting Properties with System.Text.Json and a TypeInfoResolver Modifier (Part 2)
Steve Gordon
Muchas veces habéis escrito métodos o funciones en las que recibís un parámetro, dos parámetros, tres, cuatro... Y seguro que alguna vez habéis llegado a un punto en el que habéis tenido la sensación de que el número de parámetros se os ha ido de las manos. En este momento, estaremos percibiendo el code smell llamado "Long Parameter List" o "Lista de Parámetros Larga", todo un clásico en el aromático arte de la programación ;)
Porque, indudablemente, cuando un método o función recibe demasiados parámetros puede volverse difícil de leer, entender y mantener, y son muy propensos a errores de codificación, sobre todo si los tipos de datos de los parámetros son similares o si su orden no es claro o intuitivo.
Pero, ¿cuántos parámetros son demasiados parámetros? ¿Cinco? ¿Diez? ¿Veinte? Como suele ocurrir, no existe una respuesta única y categórica sobre el tema, aunque sí existen algunas recomendaciones que pueden ayudarnos a tomar una decisión cuando nos enfrentamos a esta situación.
Aquí tenemos la colección de enlaces a contenidos interesantes que he recopilado a lo largo de la semana pasada 🙂
En esta ocasión, me gustaría destacar el artículo de Jose Manuel Alarcón sobre la charla de Demis Hassabis y Dario Amodei, CEOs de Google DeepMind y Anthropic respectivamente, en el Foro Económico Mundial de Davos 2026, donde hablaron sobre la llegada de la AGI y su impacto en el desarrollo de software y otras áreas. Muy interesante.
Continuando con gurús, Anders Hejlsberg, el arquitecto detrás de C# y TypeScript, compartió en una entrevista reciente algunas lecciones aprendidas a lo largo de su carrera: retroalimentación temprana, renunciar a preferencias personales, colaboración abierta y muchas otras.
También vale la pena echar un vistazo al post de Braulio Díez, donde describe la a la que se enfrentan a diario las personas que deciden emprender en el mundo tecnológico, ya sea como autónomos o como empresa. Y es que, muy a menudo, desde fuera solo vemos la punta del iceberg.
Volviendo a terrenos más técnicos, encontramos un artículo de Grant Riordan sobre cómo implementar uniones de tipos seguros en C# utilizando la biblioteca OneOf. Muy útil para quienes buscan mejorar la seguridad de tipos en sus aplicaciones.
Y muy interesante también la extensión Renamifier para Visual Studio, creada por Calvin Allen, que permite renombrar proyectos de forma segura, evitando las tareas manuales y problemas habituales asociados con este proceso.
El resto de artículos, a continuación.
Por si te lo perdiste...
- La interfaz IMiddleware: Middlewares tipados per request en ASP.NET Core
José M. Aguilar - Los nuevos métodos LINQ en .NET 9: CountBy(), AggregateBy() e Index()
José M. Aguilar
.NET
- Missed these 12 new C# features?
David Grace - How to Implement Type Safe Unions in C# With OneOf
Grant Riordan - Passing parameters to a hosted MCP Server in C#
Bart Wullems - Creating and consuming metrics with System.Diagnostics.Metrics APIs
Andrew Lock - Microsoft Agent Framework (Preview): AI Agent Development for .NET
Arulraj Aboorvasamy - Introducing OpenSilver 3.3: Blazor Components Now Run Directly Inside XAML Applications
OpenSilver Team - .NET AI Essentials - The Core Building Blocks Explained
Jeremy Likness - Building an MCP App with C# – A Color Picker Sample
Bruno Capuano - Internationalization Architecture for Global .NET Applications
Sudhir Mangla - The Grand Mystery of the Missing 18 Bytes
Steve Gordon

