Saltar al contenido

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript... y lo que venga ;)

20 años online

el blog de José M. Aguilar

Inicio El autor Contactar

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web
ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript...

¡Microsoft MVP!
martes, 12 de mayo de 2026
Yo mismo, escribiendo este post

En 2006 estábamos en pleno apogeo de los blogs personales de contenido técnico. La comunidad de desarrolladores estaba creciendo a pasos agigantados, y los blogs eran una de las formas más populares de compartir conocimientos, experiencias y descubrimientos. Yo era un gran consumidor de estos contenidos y seguía fielmente a autores que, aún hoy, son referentes para mí en muchos aspectos.

Y aunque no sabía muy bien a dónde iba, el 8 de mayo decidí subirme a ese tren con la ilusión de aportar mi pequeño granito de arena a la comunidad y devolverle al menos una pequeña parte de lo que tanto me había dado a lo largo de los años.

Han pasado veinte años desde que escribí el primer post en Variable Not Found.

En este tiempo he publicado más de 1.600 entradas en las que he compartido mis conocimientos, experiencias y descubrimientos sobre desarrollo web, centrado sobre todo, aunque no exclusivamente, en el ecosistema de Microsoft. Los más de seis millones de visualizaciones que han tenido mis posts a lo largo de los años me han dado la oportunidad de alcanzar una audiencia global y conectar con personas de todo el mundo que comparten mi pasión por la tecnología, y llegar profesionalmente a lugares que nunca imaginé.

Muchas gracias a todos los que me habéis acompañado en este viaje, habéis leído mis posts, dejado comentarios, compartido mis contenidos y, en general, apoyado mi trabajo de alguna manera. Sin vosotros, nada de esto habría sido posible.

Pero como de costumbre, me gusta aprovechar estas fechas para mirar con frialdad y reflexionar sobre cómo vamos evolucionando y a dónde nos dirigimos. Porque, al igual que el año pasado, la cosa sigue pintando muy mal: el número de visitas sigue cayendo en picado, y la mayoría de los lectores que quedan por aquí son robots obteniendo el contenido publicado 😢

¿Vale la pena seguir adelante? Pues no lo tengo nada claro...

¿Es el fin de los blogs técnicos?

Realmente, si mirara hacia fuera y viera que el resto de blogs técnicos siguen existiendo y manteniendo su audiencia, podría pensar que el problema es mío: quizás mis contenidos ya no son interesantes para la comunidad, quizás no estoy haciendo un buen trabajo promocionándolos, o quién sabe.

Pero la realidad es que el descalabro de los blogs técnicos es generalizado. Solo hay que ver que muchos de los sitios que antes eran referentes en la comunidad han cerrado o han dejado de publicar con una regularidad razonable. Cada vez es más difícil encontrar contenido de calidad y actualizado con frecuencia.

Esto podría deberse a varios factores, como el auge de las redes sociales y canales alternativos (vídeos, podcasts, streaming...), la saturación de contenido en internet o la falta de tiempo y motivación para mantener un blog. Pero, sobre todo, creo que la dramática caída en el número de visitantes está consiguiendo que el esfuerzo de mantener un blog no merezca la pena. Al fin y al cabo, esto tiene sentido si hay alguien al otro lado, ¿no?

El factor que más está contribuyendo al vertiginoso descenso de las visitas a mi blog es la dramática caída en el uso de buscadores, algo de lo que dependía el tráfico de la mayoría de sitios de contenido técnico especializado. En mi caso, más del 80% del tráfico de Variable Not Found procedía de búsquedas orgánicas, así que es lógico que este batacazo salpique directamente a las métricas. A día de hoy, solo un 16% de los visitantes llega a través de buscadores.

Pero analizando las estadísticas de visitantes del blog, hay más datos que encienden las alarmas. En el último año, las páginas vistas han caído un 21%, aunque curiosamente el número de usuarios distintos ha subido un 58%:

Periodo Usuarios distintos Páginas vistas
2022-2023 90.000 (-16%) 150.000 (-17%)
2023-2024 62.000 (-31%) 121.000 (-19%)
2024-2025 29.000 (-53%) 80.000 (-34%)
2025-2026 46.000 (+58%) 64.000 (-21%)

Es decir, hay más visitantes, pero menos comprometidos con el sitio y sus contenidos. ¿Extraño, verdad?

Se puede explicar si echamos un vistazo al origen de los visitantes. Sospechosamente, más del 70% de los visitantes proceden de países como China o Singapur, algo raro teniendo en cuenta que mis contenidos no son precisamente los más amigables para esa audiencia. El año pasado, este porcentaje era solo del 3%, lo que indica que algo ha cambiado radicalmente en el último año.

Pero, además, sumémosle que el tráfico directo (es decir, que no viene de búsquedas, ni redes sociales ni enlaces externos) también sobrepasa el 70% del total, mientras que el año pasado era del 18%. Es decir, que la mayoría de los visitantes han comenzado a llegar a mi sitio sin pasar por ningún intermediario, lo que es muy raro teniendo en cuenta que no tengo una marca personal especialmente fuerte, ni una comunidad muy activa, ni los hábitos de consumo actuales incluyen visitar directamente los sitios web.

La conclusión es clara: gran parte del tráfico de Variable Not Found procede de bots, crawlers, scrapers, y otros bichillos de la fauna digital, probablemente alimentando modelos de IA con esta información. Modelos que más adelante podrán responder a sus usuarios usando esta información, pero que no aportan ningún valor a mi sitio ni a mi trabajo.

Porque lo que es indudable, y además imparable, es que los desarrolladores utilizamos casi exclusivamente la IA para resolver nuestras dudas. La era de buscar en Google y leer un post para resolver un problema concreto se ha acabado. Además, esto también se aprecia viendo el declive de otras comunidades de preguntas y respuestas como StackOverflow, CodeProject o Foros del Web, que han visto caer su tráfico de forma dramática en los últimos años.

No sé si otros blogs técnicos estarán observando esta misma tendencia en sus estadísticas, pero me temo que será así, puntos porcentuales arriba o abajo. Y en este caso, el futuro de los blogs técnicos no pinta nada bien.

Y hay otro detalle que también me preocupa: siempre he dicho que una de las principales utilidades de mi blog era la de servir como un cuaderno de notas donde apuntar lo que iba aprendiendo, y, de paso, que otros pudieran aprovecharlo. Yo era mi principal usuario, y visitaba mi blog con frecuencia para consultar mis propias anotaciones. Pero cuando veo que la mayoría de las veces incluso yo mismo no acudo a mi blog a consultar las dudas porque es más cómodo preguntárselo a mi modelo favorito, creo que algo no va bien.

No es demasiado motivador, ¿verdad?

¿Tiene sentido seguir adelante con Variable Not Found?

Pues no lo tengo nada claro, la verdad. Ya en el análisis del año pasado comentaba que el futuro no pintaba nada bien, y que temía que el blog quedara como pienso para alimentar las IAs, y parece que no me equivocaba demasiado.

Sigo disfrutando mucho escribiendo, principalmente porque me obliga a estudiar y aprender en profundidad sobre los temas que me interesan y porque pienso que a alguien le ayudará, pero si realmente no hay nadie al otro lado, ¿tiene sentido seguir invirtiendo tiempo y esfuerzo en ello? ¿No podría simplemente tomar notas para mi consumo personal y dedicar el tiempo que requiere gestionar el blog (que no es poco) a aprender otras cosas que me interesan?

En cualquier caso, dejarlo no sería una decisión sencilla. Variable Not Found forma parte de mi vida desde hace veinte años, y uno no puede desprenderse de algo así de un día para otro. Eso sí, cuando tenga que hacerlo, pasaré página orgulloso de haber llegado hasta aquí y con la satisfacción de haber intentado devolver a la comunidad una mínima parte de lo que ella me ha dado.

En fin, seamos positivos: de momento seguiré escribiendo como siempre, aunque, sinceramente, no sé por cuánto tiempo más. Que digo yo que alguien tendrá que dar de comer a las IAs, ¿no? 😁

Nuevamente, muchas gracias a todos por estar ahí. Vayamos a donde vayamos, siempre os agradeceré el apoyo que me habéis brindado a lo largo de estos veinte años.

¡Seguimos viéndonos por aquí!

lunes, 11 de mayo de 2026
Desarrollador pensando si crear su nuevo tipo usando class, record, struct o interface

Tras un mini parón por vacaciones, vuelvo a la carga con los enlaces interesantes, esta vez recopilados durante las dos últimas semanas, por lo es especialmente abundante. Cerca de 90 referencias a los que creo que vale la pena echar el vistazo para estar al día de lo que se cuece en .NET, ASP.NET Core, IA, Javascript, CSS y muchos otros temas relacionados con el desarrollo de software.

Por destacar algunos, encontramos a Isaac Ojeda hablando de cómo evitar el temido problema N+1 en Entity Framework Core, todo un clásico que merece ser recordado de vez en cuando-

Y otro clásico: cuando queremos crear un nuevo tipo en C#, ¿debería ser una clase, un record, una struct o una interfaz? Chris Pietschmann nos da su opinión al respecto, y una guía práctica para elegir la mejor opción en cada caso.

Martin Stühmer nos advierte sobre los costes ocultos de los Source Generators en .NET, una tecnología muy potente pero que puede afectar al rendimiento de la compilación si no se usa con cuidado.

Mario Rodriguez nos cuenta uno de los cambios que más pueden impactar en equipos y empresas este año: GitHub Copilot pasa a un modelo de facturación por uso. Si trabajas con esta IA a diario, este enlace es casi de lectura obligatoria.

Khalid Abuhakmeh pone el foco en un problema tan común como traicionero en producción: los límites de tamaño de cookies en ASP.NET Core, con causas y soluciones prácticas para evitar sustos en aspectos como autenticación y sesiones.

Oren Eini contrasta cómo se aprendía a programar en los 90 con la forma de hacerlo en la actualidad, y cómo la IA está transformando —y a veces debilitando— la comprensión profunda que necesitan los desarrolladores de hoy.

Esto y mucho más, a continuación.

Por si te lo perdiste...

.NET

lunes, 27 de abril de 2026
Avión moderno llamado TypeScript 7 adelantando a toda velocidad a otro avión más antiguo TypeScript 6

Entre los contenidos interesantes de esta semana, se ha anunciado la beta del esperado TypeScript 7.0 implementado en Go, prometiendo mejoras de rendimiento en compilación de hasta 10 veces respecto a las versiones anteriores. Y según comentan, que la "beta" no engañe: esta versión es ya bastante estable y en muchos escenarios podríamos empezar a usarla ya y disfrutar de sus mejoras, porque además podemos instalarla "side by side" con las versiones actuales.

Por otro lado, he de decir que los constructores primarios de C# no son mi opción por defecto cuando implemento una clase. Pero bueno, como hay que estar abierto a los cambios, me ha parecido interesante el post de Milan Jovanović donde explica por qué los usa al aplicar Inyección de Dependencias.

¿La IA es una moda pasajera, o lo cambia todo? Pienses lo que pienses, lo que es seguro es la tenemos encima, y tenemos que saber cómo lidiar con esta nueva situación. José Manuel Alarcón reflexiona sobre cómo la inteligencia artificial está transformando el trabajo real, lejos de los discursos apocalípticos o utópicos, y qué deberíamos hacer al respecto.

Por cierto, si usas un plan individual de GitHub Copilot, esto te interesa. Se vienen cambios para proteger la calidad del servicio ante el aumento de la demanda actual: nuevos registros en pausa, límites de uso más estrictos, modelos retirados...

Igor Roztropiński reflexiona sobre la complejidad del desarrollo frontend moderno, y se pregunta si es esencial o realmente innecesaria, proponiendo otros enfoques para reducirlo.

Gerson Azabache nos recuerda que los microservicios no son un objetivo sino una herramienta, y no encajan en todo tipo de proyectos.

Y por último, ¿el modelo Claude se llama así por puro chovinismo francés? Seguro que muchos pensábamos que sí. Pero CampusMVP nos cuenta qué hay detrás de este nombre, todo un homenaje al padre de la teoría de la información y uno de los pioneros de la informática moderna.

El resto de enlaces a contenidos interesantes, a continuación.

Por si te lo perdiste...

.NET

lunes, 20 de abril de 2026
Desarrollador programando un cerebro con C#

Vamos una semana más con los enlaces a contenidos que me han llamado la atención durante los últimos días. 

Entre ellos, vale la pena destacar que se ha anunciado la tercera preview de .NET 11, con novedades en C#, librerías, runtime, SDK, ASP.NET Core, Entity Framework y más. Las explica bastante bien Anton Martyniuk en su blog.

¿Los modelos LLM heredan comportamientos de sus "padres"? José Manuel Alarcón comparte un estudio reciente que sugiere que los modelos de lenguaje heredan sesgos cuando son entrenados con contenidos sintéticos. Muy interesante y da para reflexionar un rato sobre lo que viene.

También me ha parecido muy llamativo el proyecto personal de Konrad Kokosa, dotLLM, un motor de inferencia LLM escrito por completo en C#. En su blog explica cómo lo ha construido y los retos a los que se ha enfrentado.

Si trabajáis con Visual Studio y aún no habéis tenido ocasión de probar el agente de depuración de GitHub Copilot, en este post de Harshada Hole encontraréis un vídeo que muestra su uso (podéis ponerle el audio en español).

Y Martin Stühmer nos recuerda que almacenar secretos en appsettings.json es una mala idea, y muestra cómo podemos migrar a una solución más segura usando herramientas de Azure como Managed Identity y RBAC.

El resto de enlaces, a continuación.

Por si te lo perdiste...

.NET

martes, 14 de abril de 2026
Desarrolladores manipulando cadenas

En .NET, todos hemos usado string.Format() cientos de veces. Se trata de una de esas herramientas que llevamos desde siempre en nuestro cinturón y usamos sin pensar demasiado en las implicaciones de rendimiento que puede tener su uso intensivo en escenarios críticos.

Sin embargo, cuando lo utilizamos en aplicaciones de alto rendimiento, en bucles con muchas iteraciones o en sistemas con limitaciones de recursos, es importante pararse un poco a pensar sobre cómo optimizar su uso.

En este artículo exploraremos cómo mejorar el rendimiento de string.Format() utilizando la clase CompositeFormat en .NET, que nos permite evitar el coste de analizar la cadena de formato cada vez que se llama al método.

lunes, 13 de abril de 2026
Dos desarrolladores cargando con el peso de la deuda técnica generada por la IA

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...

.NET