10 años en el Pacto Mundial de las Naciones Unidas

El Pacto Mundial de las Naciones Unidas es una iniciativa que promueve 17 Objetivos de Desarrollo Sostenible (ODS), que consisten en una serie de metas globales establecidas para abordar los desafíos mundiales más apremiantes. Estos objetivos buscan promover la prosperidad, proteger el planeta y garantizar la paz y la justicia para todos.

Y también se apoya en 10 Principios de las Naciones Unidas, que buscan transformar el mercado global fomentando un sector privado sostenible y responsable en áreas como derechos humanos, trabajo justo, medio ambiente y lucha contra la corrupción.

Tras presentar este 2024 nuestra carta de Communication on Progress (CoP), cumplimos ya 10 años, una década, desde que decidimos unirnos a este compromiso mundial, allá por el mes de marzo de 2014.

Aqui puedes ver nuestro perfil público en la web del Pacto Mundial de las Naciones Unidas.

 

 

Volvimos a ser patrocinadores de la Global Azure 2024 y la NetCoreconf 2024

El Global Azure es un evento anual centrado en la plataforma de nube Microsoft Azure. Reúne a entusiastas de todo el mundo para compartir conocimientos y experiencias sobre temas como inteligencia artificial, datos, infraestructura, desarrollo de aplicaciones y más. Durante el evento, se ofrecen sesiones en directo donde los asistentes pueden disfrutar de charlas de ponentes y sesiones de networking.

Por otra parte, la Netcoreconf es un evento tambien anual dedicado al desarrollo de software y las tecnologías Microsoft relacionadas. Reúne a profesionales de todo el mundo para conocer las últimas novedades en NetCore, Azure, Xamarin, IA y Big Data, donde además gracias al networking se crean vínculos entre expertos, empresas e instituciones.

Siguendo nuestra tradición desde hace varios años, hemos vuelto a ser sponsors de estos dos eventos clave de la comunidad de desarrolladores .Net y Azure cloud, respectivamente.

La Global Azure 2024 tuvo lugar en Barcelona el viernes 19 de abril 2024 y en Zaragoza y Madrid, simultáneamente el sábado, 20 de abril 2024.

La Netcoreconf 2024 se celebró en Barcelona el sábado 23 de abril 2024, y se realizará en Madrid el viernes 15 de Noviembre 2024. ¡Allí estaremos!

Caso de Éxito: Transformación Digital de SUANNUTRA con OneNutra

Presentamos este caso de éxito de Modernización de apps con .Net & Azure de un proyecto para una multinacional farmacéutica española, del que nos sentimos muy orgullosos. 😊

SUANNUTRA es un grupo internacional de soluciones para el mercado de ingredientes nutracéuticos que ofrece un portafolio único de ingredientes funcionals y branded en los principales mercados del suplemento nutricional (US, EU y Asia). SUANNUTRA ofrece ingredientes de marca innovadores respaldados por la ciencia, así como ingredientes funcionales de alta calidad a más de 1.500 clientes en 50 países, ofreciendo un catálogo de más de 1.000 productos.

SUANNUTRA necesitaba modernizar su plataforma de comercialización de ingredientes nutracéuticos, utilizada por varios departamentos (Comercial, Compras, Gestión y Calidad) para la preparación de propuestas y gestión de pedidos nutracéuticos para sus clientes.

Hemos transformado una app legacy que requería actualización tecnológica, mejoras de usabilidad y seguridad, en una app moderna con un interfaz visual intuitivo y ágil, que permite a la fuerza de ventas atender eficientemente las necesidades de los clientes, mostrando productos y condiciones, y finalizando el proceso en su ERP para su procesamiento logístico.

Esta solución software desarrollada con .NET (Core), Angular (Material UI), y Azure SQL está integrada con el ERP de la compañía, y desplegada en Azure.

Si quieres conocer más de este caso de éxito descárgate el PDF aquí: Transformación Digital con OneNutra.

¡Estamos orgullosos de ser una empresa certificada como Great Place to Work!

Great Place To Work® es un reconocimiento en el ámbito de la gestión de personas y estrategia de negocio más prestigioso en el ámbito nacional e internacional, que se otorga anualmente a los mejores empleadores del mundo.

¡Estamos muy orgullosos de ser una empresa certificada como Great Place to Work!

Y sobre todo de los datos de la evaluación realizada por Great Place To Work®:

  • 100% de las personas opina que este es un excelente lugar para trabajar
  • 100% de las personas afirma que puede ser él/ella mismo/a en su lugar de trabajo
  • 100% de las personas afirma que se celebran los acontecimientos especiales
  • 100% de las personas afirma que cuando te incorporas a la empresa, te sientes bien acogido/a

No podríamos estar más orgullosos de nuestro equipo: En ilitia damos la prioridad #1 a las personas.

Mira lo que dicen nuestros empleados que hace que trabajar aquí sea tan bueno en nuestro perfil de empresa como Great Place to Work Certified company.

Post técnico: Excel Processor

Autor: Francisco Refoyo, Ingeniero de desarrollo de software Senior. Ilitia Technologies.


En base a múltiples experiencias como desarrollador, surge la necesidad de disponer de una capa software que nos ayude a lectura y creación de archivos Excel .xlsx.

Para resolver este problema hay dos enfoques:

  • Adquirir un producto de terceros: En el mercado hay variedad de opciones pero todas pasan por una licencia de pago que no siempre se puede y/o desea afrontar
  • Utilizar el SDK de Open XML para Office: Sin conocer a fondo la API oficial de Microsoft esto es un camino complejo, muy sujeto a errores y de gran riesgo a la hora de realizar una estimación temporal para implementar las necesidades del proyecto

La solución propuesta se trata de un wrapper C# .NET sobre Open XML que ofrece de forma unificada y amigable las operaciones más comunes para la lectura y escritura de archivos xlsx, que nos permite abstraernos de Open XML y centrarnos en lo que realmente importa: La lógica de negocio.

En la edición/creación podemos:

  • Definir y utilizar estilos visuales
  • Insertar valores, fórmulas e imágenes
  • Fusionar filas y columnas
  • Establecer el alto de las filas

Con las operaciones de lectura además del conjunto de datos leídos se ofrece la posibilidad de obtener una lista unificada de errores con tres niveles de precisión: celda, fila y global.

En escenarios donde el archivo a leer sea muy grande se dispone de un modo de lectura por bloques en paralelo que reduce el tiempo de ejecución significativamente.

Para más detalles se remite al código accesible de manera abierta en GitHub.

Desarrollo de un código más eficiente. Posts para un Software Green V

Quinto y último post de nuestra serie dedicada al Green Software, en este caso orientado a cómo generar un código más eficiente.

Aprenda a optimizar y desconfíe de los robots

Como decíamos, cuanta menos memoria asigne nuestra aplicación y menos ciclos de computación conlleve la ejecución de nuestro código, menores emisiones de gases de efecto invernadero provocará nuestro software. Con esto en mente, decidimos idear una estrategia de optimización para uno de nuestros proyectos existentes.

La primera preguntar era obvia: ¿debíamos optimizar toda la aplicación? La respuesta es no. Cuando una aplicación lleva viva cierto tiempo, la cantidad de código que la compone puede ser considerable. Por eso, lo mejor es centrarse en los llamados hot spots: a menudo un conjunto muy pequeño de métodos son los que procesan la gran mayoría de las peticiones, y es en ellos donde deberíamos centrar nuestros esfuerzos.

La segunda pregunta era incómoda: ¿estás acostumbrado a optimizar código? Y la respuesta, en el caso de muchos programadores, también es no. Porque, no nos engañemos: hoy en día, la mayor parte de programadores somos en realidad consumidores de APIs, librerías y frameworks. Las estructuras de datos y los algoritmos no forman parte del día a día del programador medio, y hacer un código optimizado no es su prioridad: lo que debe hacer es sacar adelante historias de usuario utilizando el framework de moda.

Por tanto, si no estás acostumbrado a optimizar código, puedes empezar por echar un vistazo a recopilaciones de consejos de optimización como este, o puedes preguntar a ChatGPT. Sin embargo, ninguna de estas dos estrategias es infalible, por lo que, hagas lo que hagas, asegúrate de que de verdad estás mejorando el código haciendo mediciones con alguna herramienta de benchmarking.

En nuestras pruebas, usamos BenchmarkDotNet, una librería de código abierto para .NET que se encarga de todo el proceso de ejecución del benchmark, desde la ejecución del código hasta la presentación de los resultados, y proporciona diagnósticos detallados, como el tiempo de ejecución, el uso de memoria, las veces que se invoca el recolector de basura (GC), etc. Y no es un proyecto marginal: lo usa la propia Microsoft en sus desarrollos, .NET incluido.

Una de nuestras pruebas consistió en tomar código de una de nuestras aplicaciones, pedir a ChatGPT que nos ayudara a optimizarlo, y ejecutar la herramienta de benchmarking para comprobar si, efectivamente, la optimización era cierta. Sin entrar en detalles, estos fueron los primeros resultados:

Es decir, el método optimizado por ChatGPT era 6 veces más lento que el original, asignaba 464 B que no asignaba el original y, además, hacía una llamada al recolector de basura que no hacía el original.


Empleada de Ilitia al descubrir que ChatGPT también se equivoca

Aunque, tras varios prompts adicionales, conseguimos llegar a un método más optimizado, el fiasco anterior nos hizo más sabios, pues aprendimos que:

  • ChatGPT puede ayudarnos a optimizar código, pero…
  • ChatGPT no es la Panacea. A veces se equivoca, o no entiende el prompt que le hemos dado, y es necesario afinarlo.
  • No podemos confiar a pies juntillas en sugerencias de ChatGPT ni en recopilaciones hechas por “expertos”. Lo mejor es hacer pruebas con una herramienta de benchmarking como BenchmarkDotNet. Una prueba vale más que mil suposiciones.

 

Aplicaciones web y viejas-nuevas buenas prácticas

Si te dedicas al desarrollo web y, como yo, recuerdas el ruido que hacía un módem de 56k al conectarse a internet, se pueden asumir dos cosas sobre ti: deberías tomar yogures de los que bajan el colesterol y sabes lo que es optimizar una página web para que cargue rápido. Y, pese a la llegada de las conexiones rápidas y los anchos de banda de hoy en día, es algo que no hemos dejado de lado del todo: con la irrupción de los dispositivos móviles y sus limitadas conexiones de datos tuvimos que desempolvar aquellos conocimientos y adaptarlos al nuevo entorno tecnológico.


Ilitio viejoven tomando fresas voladoras mientras optimiza una web escrita en Klingon

El caso es que, si bien en la actualidad las conexiones rápidas abundan, no debemos dejar de lado la optimización, pues, cuanto más pesa una web, más consumo eléctrico requiere transmitirla desde el servidor hasta nuestros dispositivos (con las consiguientes emisiones de gases de efecto invernadero).

Por eso, y con el fin de reducir nuestras emisiones el máximo posible, en Ilitia nos hemos propuesto recuperar aquellas buenas prácticas (¿recuperar? nunca las perdimos, ejem) para que en nuestros desarrollos sólo viajen los datos estrictamente necesarios entre clientes y servidores. Así, siguiendo las recomendaciones de la Green Software Foundation más nuestra propia experiencia, estamos repasando nuestras aplicaciones para asegurarnos, entre otras cosas, de:

Usar versiones recientes de software y librerías. Los desarrolladores de frameworks y librerías front-end importantes como Angular o Vue.js trabajan constantemente en la optimización de sus productos. Con cada nueva versión, se implementan mejoras no solo en el rendimiento, la velocidad y la eficiencia del código, sino también en la reducción, en la medida de lo posible, del tamaño de dichos frameworks y librerías.

Utilizar imágenes del tamaño adecuado. A menudo se usan imágenes más grandes (en píxeles) de lo que después se muestra en pantalla. Por norma, una imagen mayor en píxeles tendrá mayor peso en bytes, por lo que se recomienda que las imágenes no excedan por mucho el tamaño (en píxeles) que se vaya a mostrar en la pantalla. Cuanto menor sea el tamaño de la información transmitida por la red, menos energía será necesaria para transmitirla (y, por tanto, menos emisiones se producirán). Sirva como ejemplo la mejora que obtuvimos al reducir el tamaño del logo de una de nuestras aplicaciones:

Usar formatos de imágenes modernos y algoritmos de compresión de imágenes eficientes. Si bien, en general se recomienda utilizar formatos modernos, como WebP y AVIF, que permiten mayor compresión sin pérdida de calidad, nosotros hemos obtenido resultados muy notorios sometiendo las imágenes a algoritmos de compresión más eficientes, pero sin cambiar el formato. Existen numerosos servicios gratuitos que ofrecen compresión de imágenes. En nuestras pruebas hemos utilizado TinyPNG, que es un proyecto consolidado y respaldado por importantes compañías del sector:

https://tinypng.com/

Los resultados (muy significativos) de la compresión de las imágenes de uno de nuestros proyectos son los que siguen:

Activar la compresión GZip en nuestros servidores web, ya sean clásicos (IIS on premise) o modernos (nginx sobre Kubernetes).

Cachear tanto contenido como sea posible, ya sea información que viaje entre el servidor y los dispositivos en que se consumen nuestras aplicaciones, o entre el servidor y sus fuentes de datos.

De este modo, lo que antes se hacía meramente para mejorar la experiencia del usuario (evitando que la carga de una página conllevara prolongados tiempos de espera) ahora lo hacemos para evitar emisiones de gases de efecto invernadero.

José Ángel Fernández
Full-Stack Senior Software Engineer at ilitia Technologies

Edición: Jon Burguera