GDG DevFest Emilia Romagna 2018

Alt image

Source: Link to the event

La Morte Nera, e se fosse prototipizzata con Firebase e React?

Firebase è interessante, ha una versione free (con limiti) e una a pagamento (si paga a richieste e dati trasferiti).

Firestore è un database statico persistente, Firebase ha un database real time in cui è possibile implementare ad esempio una chat online.

Integrazione con React è molto semplice, bastano poche istruzioni, ma mai portare backend già pronto in Firebase: conviene riscrivere/aggiungere incrementalmente particine, con molte funzioni corte e specializzate.

No merging di dati, parti diverse di app con dipendenze diverse di backend!

Google Cloud: 101: Architecture and Orchestration

Google Cloud Platform (GCP) ha molte cose (anche Machine Learning!) e billing complesso (ma dettagliato).

Per provarlo il consiglio è di usare Qwicklabs, facendo redeem dei token cartacei forniti.

ReasonML: enjoy front-end programming again

Slides

ReasonML estende OCaml come compilatore JS. Great deal: è “sufficientemente tipato” e ha “integrazione abbastanza facile” con JS nativo. Permette side effects.

La sua forza sono i tipi: non devono essere specificati ma il compilatore riesce ad inferirli e segnalare errori.

La sua debolezza: mancanza di community, spesso è difficile reperire info e soprattutto chiedere consiglio su errori.

A compile time ci si accorge di errori, a runtime (JS) i tipi non esistono più, e si ha garanzia di mancanza di errori a runtime.

What’s new in Tensorflow 2.0

Introdotto Keras ufficialmente (da tf.layers a tf.keras.layers).

Ma attenzione: non basta fare “find&replace”, i nuovi keras_layers non sono compatibili con i vecchi layers (e.g. tf.layers.Conv2D != tf.keras.layers.Conv2D -> il modello collassa).

Rimosso tf.contrib, cosa buona e giusta.

A default si partirà con grafo dinamico stile PyTorch, ma settando (ahimè) esplicitamente un flag si potrà tornare a grafo statico.

Keras continuerà ad andare uguale se usato alla “Keras way” (i suoi layer derivano da tf.NN).

Continuous Integration and Delivery on Google Cloud

Microservizi è meglio di monolita, ma attenzione: è difficile!

Consiglio: partire da monolita, poi quando funziona man mano aggiungere microservizi.

Jenkins è il top, Spinnaker, Kubernetes, Digital Ocean sono altre keywords da considerare in ambito DevOps perchè facilitano il ciclo di CI/CD, anche se sono specializzate per pipeline su cloud.

CI/CD non eliminano bugs, ma rendono facile trovare quale parte del sw è buggata.

Python Parallel Computing

Per applicazioni IO bound: threading.

Per applicazioni CPU bound: multiprocessing.

Pool()

è il costrutto per gestire pool di thread. Conviene usarlo senza parametro (tanti thread quanti numero di core), ma si può specificare il suo size anche dandogli un numero preciso.

Threading non ha vera concorrenza, perchè il GIL è attivo. Si specifica un timeout con cui il processore fa switch da thread ad altro (o switch automatico se un processo è bloccato in IO), ma tutto esegue nel main process.

Multiprocessing è concorrenza vera, ma ha overhead per la creazione di nuovi processi.

Anche numpy è velocissimo e stra-ottimizzato.

Con queste tecniche i nostri programmi python possono eseguire molto più rapidamente!

Hint: come fare per capire quali parti parallelizzare “strategicamente”? Usare un profiler! vprof è un ottimo profiler python!

Event loop tales on I/O bound Node.js applications

Slides

BigData? Make it real with Google Cloud Data & AI Platform

Google Cloud Platform ha un ottimo supporto per Data Engineering pipelines.

Colab è un equivalente di Jupyter Notebook, per eseguire codice e testing rapido.

Data Studio è un tool online di Business Intelligence gratuito e collegabile con molte sorgenti dati.

Cloud DataPrep è una GUI online in cui pulire, aggregare, interpolare i dati pre-analisi.

BigQuery è un data warehouse ottimo per fare analytics, con supporto ML.

Caso di successo: cliente vuole monitorare stato delle linee elettriche.

Per Big Data Hadoop, Spark, Kafka e approccio MapReduce in generale rappresentano ancora oggi lo stato dell’arte.