border-top-style: reactive;

Programación Reactiva

“Se espera que un sistema reactivo interaccione con su entorno, intercalando las entradas y las salidas de forma temporal, lo que quiere decir que dentro de una cantidad de tiempo adecuado (lo que se considere adecuado depende del dominio de aplicación) el sistema devuelva una respuesta en función de las entradas recibidas y continúe con el ciclo de ejecución.” Fernando Sancho Caparrini

La semana pasada se despertó en mí la curiosidad sobre la programación reactiva, a raíz de este vídeo:

A modo de resumen, la programación reactiva es un paradigma de programación, una programación que se enfoca a la gestión asíncrona de los datos (llamadas AJAX, eventos, workers, sockets…) Nos interesa, por lo tanto, utilizar programación reactiva cuando hemos de realizar un alto número de operaciones asíncronas. Uno de los ejemplos que usa el vídeo es el de cancelar una llamada AJAX si el usuario cancela la acción que la desencadena. Explica RxJS, un proyecto desarrollado por Microsoft, compuesto por una serie de librerías que extiende la funcionalidad reactiva. Introduce los objetos Observer, que introduce los distintos flujos de datos en el flujo de eventos, y el objeto Observable, que notifica al observer cuando un evento ocurre.

Reactive Extensions for JavaScript unify both the world of Promises, callbacks as well as evented data such as DOM Input, Web Workers, and Web Sockets. Unifying these concepts enables rich composition.

En relación a este tema, llegué a este post, que explica los principios de la programación reactiva. Para entenderlo un poco mejor, nos expone los cuatro principios que ha de tener una aplicación desarrollada con este paradigma:

  • Responsive: Un sistema responsive reacciona rápidamente a todos los usuarios (tanto en escenarios favorables como desfavorables) para asegurar una experiencia de usuario positiva y consistente
  • Scalable: Un sistema escalable es fácil de actualizar bajo demanda para asegurar que seguirá siendo responsive bajo distintas condiciones de carga
  • Resilient: Un sistema flexible aplica principios de diseño y arquitectura para asegurar que es responsive en escenarios favorables y desfavorables.
  • Message-driven: Un arquitectura conducida por mensajes es la base de las aplicaciones reactivas. Tiene que ser dirigida por eventos, basada en actores o una combinación de ambos.

JavaScript en 2016

Un post recopilatorio que recomiendo esta semana es State of the Art JavaScript in 2016 . Habla de los frameworks/tecnologías que más se utilizan/van a utilizarse este año (React, Redux, ES6, Babel, Webpack…). Al final, ofrece una serie de links para leer más sobre estos temas. Creo que es un buen post para mantenerse up-to-date y que es interesante leer.👌

Houdini

Un problema al que nos enfrentamos a diario los que escribimos CSS es el de la compatibilidad entre navegadores. Houdini no es un nuevo framework mágico que hay que aprender, si es lo que al leer temíais (como yo). Es más bien un objetivo de la W3C para que desaparezca este problema.

Se trata de introducir un nuevo set de APIs que extentiendan el propio CSS. El artículo explica las siguientes cuestiones:

  • ¿Qué problema exactamente quiere resolver?
  • ¿Es una buena idea?
  • ¿Cómo ayudará a los desarrolladores a construir sitios web?

Imagen: http://vrdeveloper.org/ # WebVR

Es indudable que la realidad aumentada y la realidad virtual (AR, VR) están ya entre nosotros, incluyendo la web. Un claro ejemplo es el proyecto MozVR

Pero, ¿qué necesitamos para llevar esta tecnología a la web? En este post encontramos el stack tecnológico que va a empezar pegando fuerte en este área. Entre ellos se encuentra, como no podía ser menos, three.js. Existe un boilerplate open source que podemos encontrar en GitHub. La primera versión del API estará disponible, dicen, este verano en Firefox Nightly. Si tenéis interés, podéis empezar a 👓 estudiar la documentación👓 de WebVR. Para saber cuándo estará listo, existe la web is WebVR ready?. Para mantenerse al día en este tema, también conviene seguir el blog de Brandon Jones, desarrollador de WebGL y WebVR para Chrome en Google. También hablan del tema en el siguiente tumblr.

La posibilidad de utilizar los smartphones como gafas de realidad aumentada junto con otras tecnologías como por ejemplo el LeapMotion pueden dar un juego brutal. Y no sólo eso, sino que la experiencia de usuario (UX) también tiene un papel esencial en todo esto:

Como véis, este campo me llama mucho la atención y me interesa bastante.

NPM Drama

Estoy escribiendo un post más extenso sobre este tema, así que aquí lo comentaré por encima, porque no podía no mencionarlo en éste. Ha sido, sin duda, uno de los temas más comentados esta semana.

Muy brevemente: La empresa Kik obliga a Azer Koçulu, desarrollador de una librería de NPM con el mismo nombre, a borrar esta librería open source ya que el nombre lo tienen pillado ellos. Él se niega. Kik habla con NPM, y ellos la borran. Azer decide borrar, por lo tanto, todas sus librerías que tenía subidas en NPM ya que opina que el hecho de eliminar la librería de otra persona sin su consentimiento no encaja con la filosofía que tiene sobre las librerías open source. Desafortunadamente, Azer había escrito una librería de once líneas que utilizaban React, Babel y otros paquetes archiconocidos. Resultado: estos paquetes se rompen, todos los proyectos que los utilizaban se rompen. He aquí el drama, pero no voy a decir nada más hasta el post 😁 ## Otros * Generación de documentación en JS * Truquillos frontend * Animating with React, Redux, and d3

Espero que os haya gustado este nuevo Web Weekly, ¡nos vemos la semana que viene en el siguiente!

Imagen de portada: gigaom