Il 10 e l’11 maggio si è tenuta qui a Verona l’edizione 2017 del JSday, la più grande conferenza italiana dedicata al mondo del Javascript, organizzata come sempre dal GRuSP.
A documentare la qualità dell’evento in questione, l’elevata presenza di ospiti internazionali (sia speaker che partecipanti) in continua crescita, anno dopo anno.
L’evento, costituito da 28 talk, era suddiviso in 2 track principali (in inglese) e un terzo track di unconference (in italiano o inglese).
La prima giornata è stata aperta da Josè Aguinaga, il ragazzo che ha scritto il famoso articolo “How it feels to learn JavaScript in 2016”, che con il talk “I am good at JavaScript, I swear” ci ha dato alcuni spunti di riflessione molto importanti sulla continua evoluzione del mondo Javascript e, di conseguenza, sulla necessità di dover studiare sempre argomenti nuovi. È importante saper usare il giusto strumento per il compito che si deve eseguire, e saperlo utilizzare bene, ma anche essere aperti all’innovazione, qualora venga inventato “un nuovo super-martello”.
Alessandro Nadalin ha poi parlato di come aumentare drasticamente le performance di una web application. Tra i suoi consigli l’utilizzo di funzioni native di ES6 al posto di librerie come lodash, l’abbandono delle sprites per le immagini (che con http/2 perdono senso) e l’uso delle funzionalità di preconnect, preload e prerender per le dipendenze esterne (ad esempio i font da cdn).
Sandro Paganotti di Facebook ha poi raccontato come le nuove API dell’HTML5 rendano il browser sempre più aperto al mondo esterno e, possibilmente, all’IOT.
Le tecnologie che ci ha mostrato ci sono WebBluetooth, WebRTC (streaming video), webSpeech (riconoscimento vocale), e WebUSB e le dimostrazioni passavano dal far cambiare il colore di una lampadina smart via bluetooth attraverso il colore acquisito dalla webcam o tramite la voce, al far volare un drone. Queste tecnologie sono ancora in via di sviluppo, ma sapere che già esistono e che funzionano danno sicuramente uno spunto in più alle possibilità di un’applicazione web.
Matteo Ronchi, invece, ha presentato un interessantissimo talk, “Frontend Automation”, dove inizialmente ha raccontato come dal 2010 ad oggi il mondo frontend sia evoluto in maniera impressionante, e di come automatizzare alcuni processi della fase di sviluppo, sia un task fondamentale per evitare di reinventare sempre la ruota, ma soprattutto creare codice di qualità ed evitare codice ripetuto. Un consiglio importante, con il quale ci ha lasciato alla fine del talk, è di prendersi cura ogni settimana del progetto che stiamo seguendo. Spesso può succedere che presi dalle scadenze strette che un progetto può imporci, lasciamo da parte alcune best practices, e questo ricade non solo sulla qualità del progetto finale, ma anche sul lavoro di tutti.
Alessandro Mostarda ci ha mostrato cos’è e come funziona Typescript, il superset di JS di Microsoft che porta lo static typing in ES6, con tutti i benefici del caso: linting, correzione automatica degli errori e code intelligence in primis.
Yoshua Wuyts ha dimostrato come si possa scrivere in 40 minuti uno stack completo (per quanto basilare). Molto interessante come proof of concept, ma nella pratica un po’ troppo fine a se stesso.
Michele Bertoli di Facebook ha parlato di Jest e dello snapshot testing, che permette di confrontare due stati dell’applicazione per capire cos’è cambiato, e di come il test sia capace di aggiornarsi in autonomia qualora le modifiche non siano state causate da un errore.
Jennifer Wong ha esplorato il lessico della programmazione, la differenza (ad esempio) tra parametro e argomento di una funzione, e altri concetti analoghi.
La seconda giornata è iniziata con Dustin Whittle di Uber, che ci ha aperto le porte al loro stack tecnologico, raccontandoci di come l’azienda investa molto nella produttività degli sviluppatori e di come molti linguaggi di programmazione diversi siano usati sulla stessa (gigante) applicazione, grazie alla struttura a microservizi indipendenti.
Claudia Hernández di DailyMotion ha parlato di performance, analizzando come funzionano alcuni algoritmi di ordinamento, e di come essi siano stati utilizzati nel codice sorgente dei vari browser.
Ada Rose Edwards di Samsung Mobile ha parlato di come migliorare la resa dei siti e delle applicazioni web sul mobile, fino a renderle molto simili alle app native, tramite il manifest.json. Ha anche introdotto brevemente webShare, webPayment, webAssembly e WebGL2, future web API che permetteranno sempre più interazioni del browser con l’esterno.
La programmazione Object Oriented è sempre stata presa come standard de facto dalla nascita di linguaggi come C e Java, ma è sempre la strada migliore? Massimo Mantione ha parlato dei principali problemi di questo approccio e di come unire Object Oriented e functional possa aiutare a risolvere questi problemi.
Maurizio Mangione nel talk “What Custom Elements are good for” ha spiegato come è possibile definire dei custom element che abbiano lo stesso comportamento di quello che può essere un componente Angular o React. L’impressione personale è che una soluzione di questo tipo non possa essere un’alternativa valida all’utilizzo di un framework come Angular e React, ma resta comunque un approccio interessante nel momento si volesse definire un piccolo componente che possa essere integrato con qualsiasi framework frontend.
Il secondo talk di Josè Aguinaga ha parlato della WebCryptography api, che permette anche ai browser di criptare efficientemente delle informazioni.
Phil Nash di Twilio ha poi parlato di IndexedDB, un database presente in quasi tutti i browser, che permette di salvare in locale oggetti senza che debbano essere per forza trasformati in JSON. Lo ha paragonato a cookies, LocalStorage e ha spiegato i motivi per i quali è meglio utilizzarlo, magari tramite qualche libreria, ad esempio dexie.
Marco Botton di Balsamiq ha raccontato la storia della sua azienda, che con la morte di Flash si è vista obbligata a riscrivere interamente l’applicazione da zero. Ha spiegato perché hanno scelto Javascript e di come hanno potuto ri-utilizzare l’80% del codice e riscriverne solamente il 20% per le diverse piattaforme (web, iOs e Android).
Massimiliano Mantione ha tenuto un talk un po’ complicato da seguire ma molto interessante, dal titolo “How much performance can you get out of JavaScript?”, nel quale ha presentato come uno stesso script (cha calcolava i primi 2500 numeri primi) scritto in javascript, fosse addirittura 30 volte più lento che scritto in c#. Durante l’esposizione ha presentato alcuni piccoli accorgimenti con il quale è riuscito a portare i due script scritti in linguaggi diversi allo stesso tempo di esecuzione!
Per finire Matteo Collina ha parlato del suo rapporto con l’open source e di come la sua vita è cambiata da quando ha iniziato a collaborare al progetto node.js