En el JSDay, celebrado el 12 y 13 de mayo, pudimos disfrutar de varias charlas cuyo concepto yaciente consiste en el deseo de sacar el lenguaje de programación de la web fuera de ésta. El ecosistema web está sufriendo una gran transformación. Una transformación que imagino que ni el creador del lenguaje JavaScript hubiera imaginado. Por el contrario hubiese empleado más de 15 días en sacar su primera release. No hay duda de que el mundo de JavaScript es frenético. El primer gran ejemplo fue Node, al utilizar el lenguaje en el lado del servidor y scripting en tareas de construcción y demás. En este JSDayES se reflejó esta tendencia con charlas como:

Para empezar la charla sobre el internet de las cosas. “¿Una plataforma de IoT solo con JS? Es posible… y además, ¡barato!”

En la que se contó que los principales microcontroladores han adaptado sus plataformas para no solo aceptar código objeto, sino también interpretarlo. Así es posible leer y escribir en sensores usando la API de JavaScript, de la misma manera en la que accedes a una propiedad de un objeto común. Es posible que desarrollando una web, se monte un entorno domótico utilizando además protocolos antiguos (y por ende baratos) como X10. Y hasta crear un asistente de voz en el lenguaje de programación que estamos acostumbrados.

Hubo dos charlas que se basaron completamente en la web audio API; tituladas “Changing live audio with the web-audio-api” y “Redux a través de la música”.

Esta API permite a JavaScript reproducir sonidos y hacer procesamiento digital sobre ellos. De la misma manera que se haría en un mesa de mezclas (digital). Y lo que es más importante, maneja los tiempos en los que el sistema reproduce audio de forma que no tienes retraso en tiempo de ejecución. No subyace en, imperativamente, reproducir notas o sonidos reales, sino en ir proyectando nodos de audio en el tiempo. Por lo cual el sistema tiene tiempo de reservar el momento de tiempo necesario para ejecutar esas instrucciones. Esto permite competir o incluso obtener mejor rendimiento que soluciones en código nativo basados en “sleeps” o “task-runners”.

En la primera charla se explicó qué operaciones matemáticas permite la API y cómo crear las cadenas de nodos para realizar efectos de guitarra. Entre las operaciones se encuentran costosas como la convolución de señales. La charla se terminó con los asistentes modificando a voluntad la mezcla y sonido de la guitarra en tiempo real. En la segunda nos explicaron cómo conectar la web-audio API con el sistema Midi. Así como el paralelismo que tiene este protocolo con la arquitectura Redux basada en el lanzamiento de acciones y cambios de estado al recibir éstas. Con el avance de la charla fuimos construyendo un instrumento cuya alma está recreada dentro del navegador y que es controlado por un dispositivo midi externo.

El interés del resto del mundo por la web también es recíproco. Ejemplo de ello fue la charla titulada “Unveiling WebAssembly: what, why, how”.

Esta tecnología permite al navegador ejecutar código objeto (código que ha sido compilado) además de JavaScript. Así una web puede volcar ciertas características, fundamentalmente aquellas que se basan en costosos cálculos matemáticos, por ejemplo, en C++. El conjunto de instrucciones que se pueden ejecutar en código no JavaScript está limitado para no comprometer la seguridad en el sandbox que es ya un navegador.

Por último, a modo de recopilación tuvimos el taller “Web APIs You [Probably] Didn’t Know Existed”

Que fue un resumen de todos los campos a los que, tradicionalmente, ha estado vetado un navegador. Logrando equiparar una aplicación web a cualquier otra del sistema operativo. Así podemos encontrar que se suman nuevas APIs a las ya existentes como: giroscopios, realidad virtual, gamepads; estado de la batería o sensor de luminosidad. Donde me consta que ya están trabajando compañeros de Kairós DS para acercar todas estas nuevas funcionalidades al mundo de los componentes web. Facilitando su uso y su promoción.

En resumen, la web está sufriendo una gran transformación que equipara las web apps a las aplicaciones nativas. La brecha entre ambas cada vez es menor mientras que se siguen manteniendo las ventajas iniciales. Entre ellas y las más ventajosas para el usuario, la carga progresiva y la actualización transparente.