El 27 de Octubre asistimos con Cambá a la Nodeconf 2017.
Después de hacer fila, la acreditación fue súper rápida y nos dispusimos a desayunar rápidamente para buscar lugares cómodos para las primeras charlas.
Kassandra Perch abrió la jornada con su charla titulada «Javascript en lugares extraños».
Utilizando un RPG, nos mostró algunos controladores físicos que utilizaba para interactuar con el juego, estos microcontroladores por supuesto que corrían Javascript y utilizaban Node para comunicarse con el video juego en pantalla.
Comento como hoy en día es posible ejecutar JS en lugares donde era imposible hasta hace unos años con la aparición reciente de microcontroladores que trabajan con JS.
Herramientas para investigar:
- https://www.espruino.com/
- http://duktape.org/
- http://
jerryscript.net/ - https://tessel.io/
- http://dangerousprototypes.com/docs/Bus_Pirate
- https://github.com/nodebotanist/node-bus-pirate
La segunda charla fue la de Bert Spaan, quien trabaja actualmente en la Biblioteca Municipal de Nueva York (NYPL), donde desarrolló un sistema digital de viaje en el tiempo, lleno de información sobre la historia de la ciudad de Nueva York.
Digitalizando mapas, fotos y documentos del archivo de la Biblioteca Municipal de Nueva York. Se extrajo la información de este material utilizando OCR y Crowdsourcing.
Con toda la información extraída de los documentos, se creó una aplicación que permite navegar un mapa actual de Nueva York, viajando en el tiempo.
Pudiendo ver como cambia la ciudad, quienes vivían allí antes, que trabajos realizan, que automóviles tenían y hasta se puede conocer la evolución de precios de diferentes productos.
Súper interesante, les recomiendo que vean la web de la NYPL y lo vean.
Links de interés:
- http://highlandjs.org/
- https://lunrjs.com/
- http://tesseract.
projectnaptha.com/ - https://github.com/mourner/
rbush
Luego llego Mathias Bynens, para hablarnos sobre «Internas de V8» o «cómo funcionan internamente algunas partes del motor V8 de javascript».
Basados en que comprender conceptos básicos del funcionamiento del motor de javascript nos permite entender mejor cómo se ejecuta el código y cómo optimizarlo.
Hablo sobre como javascript lleva un control de qué tipo de elementos contiene cada array, para de esta forma procesarlos más efectivamente cuando realiza operaciones,
como por ejemplo reduce, map o forEach y por qué debemos evitar guardar Nan o infinity dentro de un objeto y evitar “agujeros” (espacios vacíos) en nuestros arreglos.
Explicación detallada:
https://v8project.blogspot.
Después llegó Karissa McKelvey para hablarnos sobre «Data que vive en todos lados y en ningún lugar.»
Nos habló sobre el protocolo DAT, utilizado para compartir información utilizando una red abierta y distribuida.
Pudiendo ser utilizado para compartir archivos estáticos, compartir información entre páginas webs o compartir la pantalla.
Enlaces para pinchar:
- https://github.com/datproject
- https://github.com/Rotonde/rotonde-client
- https://github.com/datproject/dat-node
- https://beakerbrowser.com/
- https://github.com/beakerbrowser/beaker
- https://github.com/mafintosh/hyperdrive
Otro topic que me pareció interesante fue el que trajo Yamil Asusta, quien tituló su charla «Después de años en producción, seguimos bloqueando el loop de eventos.»
Yamil nos ayuda a entender que es, como y cuando estamos bloqueando el loop de eventos de javascript.
Es importante comprender cómo cada operación afecta el event loop para lograr la mejor estabilidad y performance de nuestros sistemas.
La mayoría de las causas de bloqueo del loop de eventos suelen ser las consultas a las base de datos, fugas de memoria y módulos de terceros.
Debemos prestar especial atención a funciones como require y json.stringify que bloquean la ejecución del código y si por ejemplo, llamamos a estas funciones en la inicialización de nuestra aplicación, no hay problema, pero si por otro lado se las utiliza en bucles que se ejecutan en cada llamada a la API, esto puede repercutir de forma notoria en la performance.
Hay muchas herramientas útiles para recolectar y analizar información sobre nuestro sistema y también es muy útil contar con gráficos para poder observar la información recolectada y poder encontrar picos de bloqueo en el loop de eventos.
Links útiles:
Más tarde fue el turno de Leonardo Crespo, quien nos habló sobre herramientas como Babel o EsLint, pero la charla no se centró en estas herramientas en particular, sino en cómo funcionan internamente.
Centrándonos en la tecnología fundamental que es el Abstract Syntax Tree (AST). Y cómo podemos utilizar esta herramienta para desarrollar plugins que ayuden a mantener nuestro código optimizado y ordenado. Muy básicamente las herramientas como Babel o Eslint lo que hacen es analizar nuestro código, para luego hacer cosas, como lanzar warnings en caso de EsLint o cambiar ciertas funciones de nuestro código, por sus equivalentes compatibles con versiones anteriores de javascript.
La magia sucede cuando se analiza nuestro código y se lo convierte en un Árbol de Sintaxis Abstracta, el cual nos permite ver la estructura de nuestro código, realizar operaciones basados en eso para finalmente reestructurar nuestro código.
Links útiles:
Después de estirar un poco el cuerpo, capturar algunas cosas ricas para comer y algo de cafe, nos encontramos con Mariano Vazques.
El nos hablo sobre «Como construir APIs de estado para nuestros microservicios». Nuestros sistemas suelen estar compuestos por microservicios que tienen dependencias cruzadas. Si uno de nuestros servicios falla, que sucede con nuestro sistema?
No solamente es importante que nuestros servicios no fallen, si no que es muy importante saber que sucederá cuando estos fallen.
Para ayudarnos lo que se plantea es implementar una serie de endpoints que nos ayuden a conocer el estado de salud de nuestro servicio. Así se sugiere implementar varios endpoints como ping, ready y health, que nos responda con un código que nos permita saber si el servicio está corriendo correctamente o si se encuentra degradado o caído. Lo cual es aún más útil cuando centralizamos esta información en una pequeña aplicación que nos muestre el estado de todos nuestros servicios y nos alerte en caso de que algo no ande bien.
Links relacionados:
Para cerrar la primera jornada, Julian Duque nos habló sobre «Node & Blockchain», luego de una introducción a que es Blockchain y cómo funcionan sistemas como Bitcoin, Ethereum e Hyperledger, nos habló sobre herramientas como BitcoinJS, que nos permite desarrollar aplicaciones JS que trabajen con la red bitcoin, como por ejemplo, billeteras, o su contraparte EthereumJS.
Claro que blockchain no es sólo monedas, también se esta desarrollando fuertemente lo que son los Contratos Inteligentes, que basados en la red blockchain, permiten por ejemplo, realizar operaciones sólo cuando todos los participantes del contrato den el OK. Para esto existen frameworks como Solidity para trabajar con SmartContracts.
Utilizando las redes basadas en blockchain también se pueden crear todo tipo de aplicaciones descentralizadas, como redes sociales y mas.
Links útiles:
- https://bitcoinjs.org/
- https://github.com/ethereumjs
- https://solidity.readthedocs.
io/en/develop/ - http://truffleframework.com/
Pronto DIA 2 de la NodeconfAr2017!