Bluetab en la ElixirConfEU 2023
Lisboa 20 y 21 de Abril
¿Qué es Elixir?
Elixir es un lenguaje de programación funcional de alto nivel, diseñado para crear aplicaciones escalables y distribuidas en sistemas concurrentes. Fue creado por el programador brasileño José Valim en 2012 y se basa en la plataforma de Erlang/OTP (BEAM), aprovechando su eficiencia y escalabilidad.
Elixir se enfoca en la programación funcional, lo que significa que se centra en la evaluación de expresiones y la creación de funciones en lugar de seguir un flujo de control de programa. Esto hace que Elixir sea altamente expresivo, fácil de leer y de escribir, lo que lo hace adecuado para proyectos complejos y distribuidos.
En este artículo os traemos un resumen de las charlas que hemos seleccionado y que además enlazamos para que podáis tener acceso a ellas. ¡Ya os adelantamos que para los fanáticos de este lenguaje son una auténtica maravilla!
Elixir 1.15, tipado teórico y ML con Livebooks
En la apertura del evento, el mismísimo creador de Elixir Jose Valim, abordó principalmente tres áreas de interés:
* Tipado teórico
* Mejora de la experiencia de desarrollo y aprendizaje del lenguaje
* Machine Learning con Elixir
A continuación dio paso a los principales cambios de la nueva versión 1.15 de Elixir, destacando la mejora en los tiempos de compilación y la integración con Erlang/OTP 26, para luego proseguir a un asunto muy candente en la comunidad: el tipado teórico en Elixir. La investigación de un sistema de tipado que fuera coherente con la filosofía del lenguaje ha sido la tesis del Doctorando Guillaume Duboc, mentorada por Giuseppe Castagna y por José Valim. Los próximos pasos para 2023 son empezar a implementar el sistema.
El principal tema de la Keynote ha sido las mejoras en las herramientas de desarrollador, cómo por ejemplo:
- `dbg/2` – imprimir en detalle los pipes y crear breakpoint de debug en `iex`.
- `Mix.install\2` – instalar dependencias en tiempo de ejecución.
- `mix format` – mejoras en los plugins de las IDEs que permiten por ejemplo formatear código `HEEx` embebido.
- `Compilation tracers` – nuevas formas de analizar la compilación que permiten aprender en profundidad que se está haciendo «under the hood».
- `Code.Fragment` – permite analizar código incompleto (no compilable) para una mejor experiencia en las IDEs.
Cómo gran novedad cabe destacar el gran avance de `Livebook` una herramienta que se asemeja a los notebooks de Jupyter. Livebook es una aplicación donde se puede documentar y ejecutar código de forma interactiva, pero tiene una gran integración con las peculiaridades de Elixir y es una gran herramienta para enseñar las abstracciones del lenguaje y los procesos. Como dato, se han integrado en esta herramienta formas de visualización de los procesos concurrentes de Elixir, algo muy útil para comprender cómo funcionan las tareas asíncronas.
Y por último, cómo no podía faltar, destacar los últimos avances en las herramientas para Machine Learning que se están desarrollando y que se explican en las siguientes charlas que compartimos:
Por valor de interés, podríamos mencionar todas las charlas. Sin embargo, para no extendernos en este artículo, queremos referenciar un par de charlas que sobresalieron y finalmente la esperada keynote de cierre de Chris McCord, el creador del framework Phoenix.
Ejecuta modelos de Hugging Face con Livebook
Jonatan Klosko es un joven muy activo en la comunidad de Elixir y ha sido uno de los creadores de Livebook y Bumblebee. Una herramienta que está cogiendo mucha tracción. En primera instancia parece una copia de los «Jupyter Notebooks» inicialmente creados para python pero que actualmente permite utilizar Kernels de varios lenguajes de programación. Sin embargo, cómo comentó José Valim contestando a una pregunta después de su keynote, tiene diferencias elementales que la hacen a medida para Elixir, cómo por ejemplo la completa inmutabilidad del estado.
Jonatan ha entrado al detalle sobre los últimos avances utilizando las SmartCells de IA y luego ha enseñado *under the hood*, cómo se utilizan los modelos de Hugging Face para acceder a una infinidad de modelos gratuitos pre-entrenados y sacar provecho de esa tecnología de punta con el mínimo esfuerzo.
Ha sido curiosa la experiencia que ha compartido de que una de las partes más difíciles del proyecto ha sido hacer ingeniería inversa para interpretar los archivos `pickle` de `python`, que es el formato binario utilizado para almacenar la información sobre cada modelo, cómo la forma de los parámetros de entrada y salida.
Con todo ese trabajo hecho, en pocos minutos es posible abrir un Livebook y ejecutar, por ejemplo, un modelo de lenguaje natural que complete máscaras en una frase o hasta ejecutar el modelo de `stable diffusion` para generar imágenes a partir de frases.
Recreando un meme con tecnología de punta
Seguramente si has visto la serie «Sillicon Valley» te suene el nombre de esta charla ya que «Not Hotdog» es una app cuyo éxito subió exponencialmente tras aparecer en la sitcom.
Evadne Wu es una ingeniera de software con experiencia en el desarrollo de aplicaciones móviles y web.
Wu expuso el desarrollo de la aplicación utilizando un modelo de aprendizaje automático pre-entrenado para identificar si una imagen contiene un hotdog o no. Demostró cómo se puede utilizar Elixir y algunas bibliotecas de procesamiento de imágenes para implementar un sistema de clasificación basado en aprendizaje automático.
También enseñó todo el pipeline de captura de vídeo y extracción de frames con WebRTC y Membrane. En la presentación original que había preparado, utilizaba `YOLOv5` para la clasificación de imágenes, pero con los recientes avances de ‘Bumblebee Vision’ se percató que lo podía hacer completamente en Elixir con menos líneas de código, dando cómo resultado una mejor respuesta en el análisis en tiempo real junto con LiveView.
Un repaso de la trayectoria y futuro de LiveView
Chris McCord es el creador de, probablemente el más utilizado framework de Elixir, Phoenix.
En su charla, Chris empezó contando la historia y las motivaciones detrás de LiveView, una tecnología para construir aplicaciones web interactivas en tiempo real utilizando Elixir y Phoenix. La idea surgió cómo una solución para mejorar la experiencia del usuario y reducir la complejidad de las aplicaciones web, que requerían mucho código JavaScript y APIs para lograr una interfaz de usuario rica. LiveView toma el template del usuario y envía HTML por WebSocket a través de Phoenix Channels, lo que permite manejar el estado y las actualizaciones del usuario en tiempo real, utilizando una optimización única llamada ‘live_eex’.
Además, Live View utiliza «lifecycle hooks» para componer diferentes eventos, y HEEx es el nuevo motor de plantillas que se utiliza para resolver los problemas que surgieron con el anterior motor de plantillas llamado «LEEx». HEEx resuelve estos problemas al proporcionar bloques de construcción más pequeños y una sintaxis más limpia y clara.
También se menciona la implementación de streams, una manera de optimizar las colecciones en el servidor para actualizar la información en el cliente sin necesidad de guardarla en memoria, lo que permite actualizaciones y eliminaciones de elementos en la interfaz de manera más dinámica y flexible. Además, explican cómo los streams ayudan a limitar el número de elementos a renderizar en la interfaz, lo que mejora el rendimiento del navegador.
En resumen, LiveView es una tecnología que permite construir aplicaciones web interactivas en tiempo real utilizando Elixir y Phoenix, que utiliza WebSocket para enviar HTML y manejar el estado y las actualizaciones del usuario. Además, HEEx y slots son una forma de crear interfaces de usuario modularizadas y streams optimiza las colecciones para actualizar la información en el cliente sin necesidad de guardarla en memoria, mejorando significativamente el rendimiento de las aplicaciones en vivo y permitiendo el desarrollo de características más avanzadas en LiveView.
En conclusión
La ElixirConf del 2023 ha sido un evento impresionante y gratificante para todos los asistentes. Hemos tenido la oportunidad de aprender de algunos de los mejores profesionales en la industria y compartir conocimientos y experiencias con otros miembros de la comunidad de Elixir.
Nos fuimos de la ElixirConf llenos de inspiración y entusiasmo por el futuro de Elixir y estamos ansiosos por aplicar todo lo que hemos aprendido en nuestros proyectos.
Desde aquí, queremos agradecer a Bluetab por facilitarnos asistir a este evento.
Para más información puedes visitar la web [ElixirConfEU 2023 Lisbon]