Esta aproximación tiene el objetivo de implementar un servicio estricto de traducción dentro de aplicaciones Javascript y con muy pocos artefactos.

Durante todo este año, y para mi sorpresa, fui embarcado en un proyecto donde el 80% del código estaba escrito en Typescript. Esto aumento mi interés en el lenguaje, ya que ofrece una capa de reglas estrictas —y algunas veces exageradas— a Javascript. Sin embargo, desde siempre he sentido que la internacionalización de las aplicaciones en Javascript no es consistente. He tenido la experiencia de ver cuanto intento de traducción —algunos nefastos— en este lenguaje.

Es por eso que decidí implementar un servicio de traducción bastante rudimentario y simple que pudiera manejar correctamente las traducciones dentro de toda la aplicación. Aunque el stack en donde lo he implementado es híbrido, el servicio de traducción es completamente portable.

Continue reading «Implementación de un servicio de traducción simple y efectivo en Javascript»

Estamos ad portas de la nueva versión de Python, y desde ya tres características se han hecho notar: operadores de fusión y actualización de diccionarios, incorporación del tipado fuerte de colecciones genéricas, y el uso de un nuevo analizador sintáctico. Además hay cambios en múltiples módulos y como suele ocurrir con cada versión, mejoras en el rendimiento.

Continue reading «Python 3.9: nuevo analizador sintáctico, tipado genérico incorporado, y mejoras en diccionarios»

El día de ayer publiqué la nueva versión de mi sitio web, pero antes de publicarlo tuve problemas con el CDN –Content Delivery Network, o Red de distribución de contenidos en español– de Cloudflare: los subrecursos CSS y javascript de la página estaban disponibles, pero por alguna razón el navegador no los cargaba.

Continue reading «Configurar correctamente la integridad de los subrecursos (SRI) con el CDN de Cloudflare»

Aun recuerdo la primera vez que borré de manera accidental el trabajo que debía entregar ese mismo día. Sucedió aproximadamente 15 años atrás. Yo trabajaba en Flash, hacía contenido interactivo para el sector de la educación y para ese entonces me habían solicitado hacer un menú que iría como parte de un SCORM. El menú era sencillo: los datos del índice se cargaban desde un archivo XML local y enlazaban al contenido que iría dentro del paquete. Había terminado el prototipo y lo había exportado. Alcancé a mostrárselo a mis jefes y cuando todo estuvo bien procedí a limpiar el espacio de trabajo. Yo me acostumbré a borrar de manera permanente los archivos. Estaba borrando los archivos intermedios y temporales, además de los archivos con versiones alternativas del menú. Luego, en un segundo, me di cuenta que había seleccionado el que era el archivo final y sin embargo presioné Ctrl + Shift + Supr, luego Enter, y ahí acabó todo. Media jornada de trabajo había desaparecido y debía recuperarla ahora en tiempo récord. Nada funcionó, solo volverlo a hacer desde cero. Para mi fortuna era un trabajo que ya había aprendido a hacer, y pude entregarlo luego sin tanta demora.

Continue reading «Acerca de los repositorios cloud, la gestión del riesgo y la seguridad de la información»

Ya hemos visto modelos de desarrollo tradicionales como el desarrollo en cascada y el desarrollo en espiral. Ahora veremos en qué consiste el modelo de desarrollo ágil.

Antes de continuar debo aclarar que este paradigma comprende numerosas metodologías y técnicas. Para no desviarme del objetivo de esta serie –presentar DevOps como técnicas de fácil integración en los flujos de trabajo– solamente voy a hablar de un par de puntos muy específicos y vagos sobre este paradigma.

Continue reading «DevOps fácil, parte 3: El paradigma ágil»

En la introducción hablé sobre los aspectos generales del desarrollo en cascada y cómo podría integrarse DevOps en su ciclo de desarrollo de software. Sin embargo hay un punto importante a tener en consideración:

El desarrollo en cascada tiene tres etapas de diseño: levantamiento de requisitos, análisis y diseño. DevOps no puede integrarse a estas etapas y por lo tanto solo la mitad del modelo es aplicable. No es óptimo, los ciclos de desarrollo siguen siendo largos y los artefactos numerosos. Dado que la premisa principal de DevOps es acortar los ciclos de desarrollo por medio de la automatización y el monitoreo, resulta difícil llamar DevOps cuando se implementa este modelo. Por definición hay tres capas incompatibles, y solo las otras tres son monitoreables y automatizables.

Continue reading «DevOps fácil, parte 2: Desarrollo en espiral»

De qué se trata esta serie

DevOps es la práctica de unificar el desarrollo de software (análisis, diseño y codificación) con las etapas operacionales (integración, pruebas y despliegue) a través del monitoreo y automatización. El objetivo es reducir el tiempo entre cada ciclo de desarrollo de software, incrementar la frecuencia de despliegue y alinear de manera óptima el producto con las necesidades del negocio y público objetivo.

Continue reading «DevOps fácil, parte 1: Introducción»