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 ;)

18 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, 11 de marzo de 2025
Aseo público con información sobre los urinarios

Quizás sea el único del mundo que desconocía la existencia de "Tech on the toilet", la iniciativa de Google que lleva casi veinte años llevando información de calidad a los aseos de sus oficinas para que los desarrolladores, mientras hacen sus necesidades, puedan mejorar sus habilidades de desarrollo de software.

Pero como seguro que habrá algún despistado más, me ha parecido interesante compartirlo por aquí, así que vamos allá 🙂

¿En el baño? ¿En serio?

En 2006, Google estaba creciendo a un ritmo vertiginoso y se enfrentaba al desafío enorme de mantener la calidad de su software. En ese contexto, un grupo de ingenieros de Google apasionados del testing, llamados "Google Testing Grouplet", estaban convencidos de que las pruebas automatizadas eran la clave para evitar costosos errores y andaban buscando la forma de fomentar su uso e instaurar en la compañía la cultura de tests.

En el intercambio de ideas, alguien sugirió de forma frívola que quizás habría que colgar carteles en los baños... y así fue como nació la iniciativa "Testing on the Toilet" (TotT).

El primer episodio de TotT (un ejemplo simple de código con una sugerencia de mejora) fue escrito por un ingeniero de las oficinas centrales de Mountain View, y colgado por un voluntario en los aseos de las oficinas de Londres. Al poco tiempo, más ingenieros empezaron a escribir artículos, que otros voluntarios se encargaban de colgar en los baños de sus oficinas, por lo que comenzó a llegar a cientos de desarrolladores por todo el mundo.

Las reacciones iniciales fueron diversas: desde respuestas positivas y agradecimientos por la facilidad de acceso a estos conocimientos, hasta opiniones en contra por considerar que no era el lugar adecuado para ello. Pero lo cierto es que TotT tuvo un éxito rotundo y se convirtió en una tradición en Google, incluso dando lugar a otras iniciativas internas similares (como Learning on the Loo -LotL- para consejos para reducir el estrés y mejorar la eficiencia y la satisfacción laboral) e incluso a papers de investigación demostrando la eficacia de TotT a la hora de fomentar la adopción de herramientas internas.

A día de hoy, la idea sigue intacta: crear pequeñas "pildoritas" semanales de conocimiento, de una página como máximo, con el objetivo de que pudieran ser leídas y asimiladas en muy poco tiempo. Los artículos son escritos por los propios ingenieros de Google (de hecho, cualquiera puede proponerlos), y son cuidadosamente seleccionados y editados para proporcionar información valiosa de forma concisa y práctica. Luego, en cada oficina se descargan, imprimen, plastifican y cuelgan en los aseos, para uso y disfrute de los usuarios 🙂

Artículos Test on the Toilet en urinarios

Aunque nació como algo de consumo interno, en 2007 decidieron presentar públicamente "Test on the Toilet" y compartir sus experiencias con la humanidad para que otros desarrolladores pudieran también beneficiarse de ella. En la misma línea, comenzaron a publicar periódicamente en su blog los artículos (bueno, los que era relevantes fuera de Google), incluso colgarlos en formatos listos para que cualquiera pueda descargarlos, imprimirlos y empapelar sus propios aseos con ellos.

Los contenidos se publican bajo licencia Creative Commons Attribution-ShareAlike 4.0, por lo que cualquiera puede utilizarlos y compartirlos, siempre y cuando se respeten las condiciones de la licencia.

Ejemplo de Testing on the Toilet

Inicialmente, debido a su origen, los artículos estaban centrados en el testing, pero con el tiempo se han ido ampliando a otros temas relacionados con la calidad del software, buenas prácticas de codificación, machine learning, desarrollo web y otros, así que, en noviembre de 2024, la iniciativa se renombró a "Tech on the Toilet", ampliando de esta forma su alcance a otros ámbitos, pero siempre con el objetivo de seguir fomentando la cultura de la calidad del software.

Conclusiones

Independientemente de si nos gusta la idea o no, lo cierto es que es una forma super original de dar la oportunidad al que lo desee (está claro que siempre podemos decidir no leerlo) de aprovechar esos ratillos muertos para aprender algo nuevo.

Y por supuesto, aunque no estemos dispuestos a empapelar nuestros aseos con estos artículos, siempre podemos seguirlos en su blog y leerlos en cualquier otro momento, porque realmente tienen información muy valiosa y, por su naturaleza, escritos de forma muy concisa y fácil de leer.

¿Qué os parece la idea? ¿La veis positiva? ¿O preferís aprovechar el break para ver unos TikToks? 😜

Publicado en Variable not found.


lunes, 10 de marzo de 2025
Enlaces interesantes

Esta semana llegamos a la entrega número 600 de los enlaces interesantes, ¡quién lo iba a decir cuando publiqué la primera recopilación, allá por abril de 2010! Desde entonces, exceptuando los periodos vacacionales y alguna semana que por motivos personales o profesionales no haya podido ser, cada día dedico un buen rato a revisar mis fuentes y seleccionar los contenidos que me parecen más interesantes para compartirlos con vosotros. Luego, normalmente los domingos, me siento a escribir la entrada, añadiendo una pequeña introducción y organizando los enlaces por categorías para facilitar su consulta.

Por cuantificarlo de alguna forma, cada recopilación suele tener entre 60 y 70 links, así que he compartido como mínimo 36.000 enlaces a contenidos que he considerado valiosos, y, haciendo cuentas rápidas, he debido dedicar más de 3.000 horas (unos 375 días a jornada completa) a revisarlos y seleccionarlos. Si tenéis curiosidad por cómo lo hago, los criterios de selección de contenidos, cómo los ordeno, cuáles son mis fuentes, qué herramientas uso, etc., lo podéis leer en este post de hace unos años 👉 https://www.variablenotfound.com/2020/04/diez-anos-de-enlaces-interesantes-lo.html

Pero bueno, creo que el esfuerzo está justificado. En primer lugar, porque me gusta estar al día, y creo que en nuestra profesión es totalmente necesario. Y luego, porque ya que de todas formas estoy dedicando tiempo a ello, ¿por qué no compartirlo con vosotros? Y si a alguien le resulta útil, o le ahorra tiempo, o le descubre algo nuevo, pues ya me doy por satisfecho 🙂 

¡Muchas gracias a todos por estar ahí!

Y dicho esto, vamos con la recopilación semanal, de nuevo más de sesenta enlaces, en esta ocasión con mucha presencia de contenidos sobre inteligencia artificial, novedades en herramientas, .NET, MAUI, Azure y Web.

En esta cosecha, muy interesante, y de agradecer, el esfuerzo de José Manuel Alarcón por traducir a un idioma que podamos entender los mortales lo que es Majorana 1 y cómo promete revolucionar el mundo en los próximos años.

También me ha alegrado volver a leer a Marc Rubiño, comentando esta vez el papel de los CTO en las startups, los desafíos a los que se enfrentan y buenas prácticas para lograr el éxito en ese rol.

Juan Irigoyen da un buen repaso a los niveles de aislamiento de transacciones en SQL Server, un tema que siempre es interesante y que conviene tener claro, especialmente en aplicaciones con alta concurrencia.

Y por último, interesante también el post de Sahil Malik donde muestra cómo generar imágenes con IA usando modelos locales.

El resto de enlaces, a continuación

Por si te lo perdiste...

.NET

martes, 4 de marzo de 2025
Persona liberando pajarillos encerrados en una caja llamada ASP.NET Core

Normalmente los servicios usados por nuestra aplicación ASP.NET Core los registraremos en el contenedor de dependencias, para luego ir satisfaciendo los requisitos de los distintos componentes gracias a los mecanismos de inyección de dependencias que nos proporciona el framework. De estos servicios, aquellos que se registran como scoped se liberarán automáticamente al finalizar el proceso de la petición.

Sin embargo, si instanciamos manualmente un servicio durante el proceso de la petición, tendremos que encargarnos nosotros mismos de liberarlo cuando ya no sea necesario. Los que tengan un ámbito de vida corto, normalmente los crearemos y destruiremos utilizando using en algunos de sus sabores (como bloque o con ámbito local implícito), pero cuando queremos que pueda ser compartido entre varios componentes, no es sería tan sencillo... si no fuera porque el framework ya lo ha tenido en cuenta 🙂

Para estos casos, ASP.NET Core proporciona el extensor RegisterForDispose(), que nos permite registrar un servicio para que se libere automáticamente al finalizar la petición.

lunes, 3 de marzo de 2025

Aquí van los enlaces recopilados en la última semana de febrero, una buena colección que espero que os resulte de utilidad.

En esta ocasión, además de contenidos interesantes sobre C#, ASP.NET, Visual Studio, JavaScript, CSS, IA y otros temas, creo que la cosa ha ido de previews:

También me ha parecido muy completo el artículo de Joseph Thacker sobre cómo hackear aplicaciones y agentes basados en Modelos de Lenguaje.

Por último, en el capítulo de despedidas de clásicos, vamos a empezar a decirle adiós a Skype, una herramienta que, aunque en agónico declive desde hace ya tiempo, sin duda marcó una época.

El resto de contenidos, a continuación 🙂

Por si te lo perdiste...

.NET

martes, 25 de febrero de 2025
Una lupa examinando de cerca opciones de configuración

Si lleváis algunos años en esto, seguro recordaréis que en ASP.NET "clásico", los settings de las aplicaciones eran valores inmutables. Se guardaban habitualmente en el célebre archivo Web.config, y cualquier cambio a este archivo implicaba reiniciar la aplicación para que los cambios tuvieran efecto.

En ASP.NET Core, los settings son mucho más flexibles: se pueden cargar desde diferentes orígenes, pueden almacenarse en distintos formatos, y es posible modificarlos en caliente sin necesidad de reiniciar la aplicación. Pero además, ofrecen otra capacidad que es interesante conocer: podemos detectar y reaccionar a cambios en los settings en tiempo real, es decir, en el mismo momento en que se producen.

Para ello, básicamente tendremos que bindear una clase personalizada a la sección de settings que nos interese, y luego utilizar la interfaz IOptionsMonitor, para registrar un manejador personalizado que se ejecute cada vez que se produzca un cambio en los valores de configuración que estamos monitorizando.

En este post vamos a ver cómo hacerlo, paso a paso.

lunes, 24 de febrero de 2025
Arquitecto de SoundCloud trabajando en la modernización de su sistema

Un lunes más, ya tenemos aquí la colección de enlaces a contenidos interesantes recopilados durante la semana pasada. Como de costumbre, encontramos lecturas sobre .NET, ASP.NET Core, Blazor, IA, datos, frontend, JavaScript, TypeScript, MAUI y otros temas que espero os aporten algo 🙂

En esta ocasión, me gustaría destacar algunos de los artículos de la semana que más me han llamado la atención.

Primero, una nueva demostración de la velocidad brutal con la que se van produciendo avances tecnológicos de escala: la presentación por parte de Microsoft de Majorana 1, el nuevo chip que, según anuncian, adelantará el uso real de computación cuántica a unos años, en lugar de las décadas que estaban previstas.

También me ha resultado interesante el post sobre cómo SoundCloud evolucionó su su arquitectura utilizando BFF, microservicios y DDD. Estos contenidos basados en experiencias reales suelen ser bastante inspiradores.

Toda seguridad es poca, por lo que siempre es recomendable volver a echar un vistazo a las guías OWASP sobre cómo asegurar nuestras aplicaciones web full-stack.

Por último, es impresionante leer las mejoras que se van introduciendo en Visual Studio, especialmente las que hacen que el IDE sea cada vez más inteligente y, por tanto, nosotros seamos cada vez más productivos. En esta entrega, encontramos el soporte para tool calling en Copilot, y la información sobre el código usado como referencia para los autocompletados.

El resto, a continuación...

Por si te lo perdiste...

.NET