17 Ottobre 2018
Intré Camp – 26 Giugno 2018

Fine Giugno, le ferie sono alle porte, ma soprattutto è tempo di camp!

Come già successo per il camp di Ottobre nel 2017, abbiamo deciso di tornare nella tranquilla e accogliente location dell’agriturismo La Camilla a Vimercate.

“Sarà un camp diverso dai soliti”, “la mattinata sarà organizzata diversamente” ci dissero. Ed effettivamente così è stato. Ma ciò che non è cambiato è stato l’inizio di questa splendida giornata assieme 🙂

Caro lettore, ti dice nulla la parola ice breaker?
Se sì, bene, vuol dire che hai letto delle nostre avventure in passato (o semplicemente dato uno sguardo al link del camp di Ottobre 🙂 ), in caso contrario, lo scoprirai nell’immediato.

Dapprima disposti a formare un grande cerchio, Fabio ci ha introdotto la sfida: morra cinese.

Vi domanderete “Bene, ci sfidiamo a forbice-carta-sasso… e il gruppo, il team?”
Ci arriviamo.
Divisi in coppie, il vincitore man mano deve sfidare il vincitore della partita della coppia a fianco, incitati dagli avversari che una volta sconfitti diventano automaticamente parte della tifoseria del vincitore, un gruppo che assieme quindi si muove verso l’obiettivo. Lascio alla vostra immaginazione la situazione che si è creata per la sfida finale 🙂

Belli carichi e divertiti, ora diamoci sotto con il camp, così organizzato:

  • Mattina
    • Workshop
  • Pranzo
  • Pomeriggio
    • Presentazione dei lavori delle gilde
    • Definizione nuove gilde

Mattina

Francesco ha ufficialmente aperto la giornata presentandoci attraverso alcune slide l’andamento dell’ultimo periodo aziendale, mettendo in evidenza dati di ulteriore crescita e miglioramento anche negli spazi lavorativi. Sì, la sede di Monza è stata ristrutturata e ammodernata!

Torniamo a quanto avete letto prima, di un camp diverso dal solito: ci siamo. Workshop per tutti!

Alberto Acerbis e Massimo Iacolare hanno preso la scena per spiegarci le loro proposte.

Massimo ha proposto un workshop basato sulla realizzazione di una command-line interface (CLI) in JavaScript e Node.Js, seguendo l’approccio descritto all’architettura esagonale, il tutto condito con un po’ di agilità (story mapping e TDD).

Alberto dal canto suo ha proposto un workshop su DDD, CQRS, EventStore e microservizi: più precisamente, come “smontare” una applicazione con database condivisono in una totalmente disaccoppiata e basata su microservizi indipendenti.

E per i nostri colleghi designer? Non sono stati lasciati al loro destino 🙂

Durante la mattinata il design team di Thanks ha presentato al nuovo collega Andrea il metodo progettuale Design Eye e i diversi tool del Design Kit. Da questo momento di condivisione è nata l’ispirazione per il tema della nuova Gilda designer, che verterà su un’analisi dell’intero workflow progettuale e prenderà inoltre in considerazione nuovi software e tool emersi nell’ultimo anno.

Workshop TDD e architettura esagonale

Come precedentemente accennato, Massimo ha organizzato un workshop relativo allo sviluppo di una semplice CLI per facilitare l’utente nella gestione dei propri task (aggiunta, aggiornamento, rimozione) nel backlog.

Cosa deve fare quindi questa applicazione? Chi sono gli utenti?

Story mapping

In questa prima fase Massimo ci ha guidati sulla attività di story mapping, quindi definizione delle story necessarie alla realizzazione della nostra applicazione. Abbiamo quindi attaccato su di una parete post-it relativi a:

  • goal, utenti, tipo di applicazione
  • funzionalità dell’applicazione: add, insert, update, remove log
  • affinamento di ogni funzionalità

Architettura esagonale

Terminato lo story mapping, è arrivato il momento di scrivere del codice; non prima di aver spiegato però cosa voglia dire architettura esagonale, e di alcuni vantaggi che porta l’adottare questo tipo di architettura.

In un’architettura esagonale, ogni strato comunica con il precedente\successivo, e questa comunicazione avviene tramite interfacce. Lo strato più importante è quello del dominio.

Si parte con lo sviluppo del dominio, che influenza il modo in cui le interfacce, o meglio adapter, saranno sviluppati.

Si identificano quindi 3 livelli:

  • adapter
  • porte
  • dominio

Le porte sono interfacce, gli adapter le loro implementazioni.

Dal momento che esistono diversi framework, linguaggi e tecnologie per implementare una stessa applicazione, adottando questo tipo di architettura si ha l’enorme vantaggio di poter gestire le dipendenze tecnologiche tramite gli adapter.
Si può quindi cambiare la tecnologia cambiando l’adapter ma non il dominio. Ad esempio se serve cambiare database, modifico l’adapter, poi l’entry point per l’uso dell’adapter ma non il dominio.

Questo approccio, conosciuto anche come “Ports and Adapter”, trova punti in comune anche con altri modi di modellare un progetto, coem ad esempio la Onion Architecture e Clean Architecture.

Hands on – scriviamo la nostra applicazione

Per motivi di non molto tempo a nostra disposizione, Massimo ha messo a disposizione un progetto Node.js di una CLI già pronto nel quale poter sviluppare codice per nuove funzionalità definite nella fase di story mapping.

In questa fase, Massimo ci ha seguiti passo passo spiegandoci e scrivendo assieme a noi codice in Node.js seguendo il processo del Test Driven Development (TDD).

Ad esempio, per la gestione dei parametri di input abbiamo inizialmente scritto codice di test utilizzando mocha. Eseguendo il test ed ovviamente ottenendo un fallimento, abbiamo quindi iniziato a scrivere il codice.

Con TDD quindi, abbiamo implementato alcune funzionalità quali la gestione dei parametri di input (utilizzando i moduli minimist e argv), affinando il codice tramite refactoring iterazione dopo iterazione.
Per la funzionalità relativa alla lista di task che un utente può ottenere, Massimo ha spiegato e implementato assieme a noi il codice di un adapter per il recupero dei dati.

Un consiglio che Massimo ci ha dato, e che personalmente ritengo davvero utile, è fare uso di una test list, cioè scriversi quali test si possono avere sul progetto al quale si sta lavorando.

Tra un test fallito e un refactoring, il tempo a disposizione è letteralmente volato, lasciandoci tutti soddisfatti e desiderosi di cimentarci nuovamente con questo approccio.

Davvero grazie Massimo, sei stato allo stesso tempo un coach simpatico e preparato, forse anche per questo è sembrato di partecipare ad un workshop di 30 minuti anziché 2 ore 🙂

Workshop Domain-Driven Design

Nel tempo a sua disposizione, Alberto ha dedicato una prima parte alla teoria legata a questo approccio facendone emergere i molti pregi e qualche difetto,  portando spunti di riflessione tecnici legati a come vengono solitamente definiti ed organizzati gli oggetti in ogni progetto software.

E’ stato introdotto il pattern CQRS, illustrato come si lega con DDD e mostrato, tramite l’implementazione di un’applicazione seguita passo a passo con tutti i partecipanti, la complessità e i vantaggi nell’adottare questo pattern architetturale:

  • Separazione tra parte di lettura dei dati e quella di modifica degli stessi
  • Semplicità di scalare a richiesta una delle due parti
  • Oggetti che hanno comportamento e Value Objects
  • Pensare ai comandi che il nostro sistema deve gestire e agli eventi che ne scaturiscono

Alberto ha proseguito descrivendo le caratteristiche che un buon Event Store dovrebbe avere per essere preso in considerazione durante l’implementazione del pattern CQRS
sia in termini di capacità sul numero di eventi, che di semplicità nell’effettuare backup.
Una delle regole da tenere in considerazione infatti è che nell’Event Store ci sono i dati. O meglio l’Event Store sono i dati, l’unica vera fonte della verità, attraverso i quali è sempre possibile ricreare tutto l’aggregato partendo da un momento qualsiasi della storia.

Come per il workshop di Massimo Iacolare, il tempo è stato tiranno per cui Alberto si è avvalso di un progetto con del codice già pronto, scaricabile e consultabile da questo repository GitHub per chiunque sia interessato ad approfondire.

Il workshop proposto da Alberto è stato molto interessante, tutti i partecipanti hanno seguito con attenzione e partecipato attivamente. Peccato per il poco tempo dedicato al coding ma ciò che resta sono i tanti spunti che sono emersi e che hanno generato un’interessante momento di “Domanda e risposta” durante il quale si sono approfonditi molti dei temi trattati.

Pranzo

I camp sono sì giornate di condivisione ed attività di gruppo, ma altresì giornate di divertimento e chiacchiere in buona compagnia. E quale momento migliore se non quello del pranzo 🙂

Tranquilli, non ce le siamo bevute tutte le bottiglie raccolte in questo splendido mobile 🙂

Pomeriggio

Tempo di gilde, o meglio, presentazione dei lavori delle gilde e definizione di nuove gilde, ma prima di ciò Emanuele e Andrea hanno voluto aggiornarci sulla situazione branding aziendale, come migliorare per rafforzare ancora di più la nostra identità ai clienti, al mondo.

Dove eravamo rimasti? Al precedente camp di Febbraio erano state definite delle azioni da compiere ad esempio a livello di touchpoint digitali, magari pensando a nuovi siti\sezioni tematiche del sito di Intré. Ebbene, sono in essere… lo scoprirete solo vivendo e seguendoci 🙂

It’s Gilde time now!

Data visualization

In questa gilda i colleghi designer hanno approfondito il tema della data visualization, inteso come l’insieme delle conoscenze e degli strumenti inerenti alla raccolta, comprensione e rappresentazione di dati.
Attraverso lo studio di alcun libri di Alberto Cairo e due corsi di Nicholas Felton, si è affrontato sia l’aspetto teorico, razionalizzando le attuali conoscenze in merito alle attività di percezione e rappresentazione, sia quello pratico, focalizzandosi sull’utilizzo di linguaggi come Processing o tool ad hoc.
L’output di questo corso, seguito da Roberto, è stato un’infografica realizzata appunto con Processing e Adobe Illustrator e un poster sulle scale di attività percettive elementari, basato su uno studio di Alberto Cairo.
Nella sua presentazione Roberto ha spiegato alcune caratteristiche del linguaggio Processing 2, che permette di trasformare le nozioni teoriche di data visualization in prodotti grafici coerenti con i dati raccolti senza il rischio di incorre in possibili errori dovuti alla manualità di inserimento dati. Questo grazie all’applicazione di formule matematiche.
Nonostante una prima fase non semplice di raccolta dati, Roberto ha spiegato come si sia trovato bene ad applicare il codice del linguaggio per lavorare sui dati e rappresentarli in un file, questo grazie alla sua semplicità ed intuitività.
Il risultato del lavoro è un file PDF che rappresenta tutte le meteore cadute sulla Terra, rappresentate ognuna da circonferenze con grandezza relativa al loro peso.
Le prime dieci meteore sono state arricchite da una label che specifica dove fosse accaduto lo schianto.

Blockchain

La rivoluzione blockchain è partita e noi di Intré vogliamo farne parte.
L’obiettivo di questa gilda, al quale ho partecipato, è quello di acquisire le nozioni fondamentali di questa tecnologia, per poi passare ad una realizzazione concreta di una blockchain Ethereum.
La blockchain Ethereum ci ha permesso di realizzare degli smart contracts e, tramite una pagina web, siamo riusciti a mettere in contatto fornitori di servizi software con clienti permettendo loro di definire un accordo, confermare il risultato del lavoro, ed effettuare il pagamento, tutto tramite blockchain.
Ethereum ci ha permesso quindi di avere uno strumento sicuro, affidabile e liberamente verificabile. Questo grazie ad alcune sue caratteristiche come sistema inviolabile, distribuito e accessibile.
Qui potete consultare le slide della presentazione, comprendenti anche l’architettura della nostra blockchain 🙂

Kotlin 2

Una gilda nata per uno scopo e sfociata in ben altro 🙂
I componenti di questa gilda hanno infatti dedicato tutto il tempo alla preparazione della prima Kotlin Community Conf a Milano. È stata una gilda un po’ diversa dalle altre, organizzare l’evento non è stato semplice anzi… Ogni minimo dettaglio è stato curato, dalla call for sessions alla identity dell’evento, la gestione delle registrazioni, l’organizzazione del catering e così via.
Per tutti i partecipanti è stata un’esperienza molto gratificante, in cui ognuno ha messo del suo arrivando a coinvolgere anche persone di Intré al di fuori della Gilda, come il sottoscritto :).

IoT

Smartband, telecamere, termostati… Il mondo dell’IoT è sempre più parte integrante della vita di tutti i giorni e anche per molte grandi aziende lo è.
E’ infatti fondamentale poter raccogliere e aggregare i dati dalle macchine di produzione con particolare attenzione alla sicurezza. L’obiettivo di questa gilda è stato cercato di costruire un sistema per rispondere a questa esigenza.

I partecipanti si sono quindi suddivisi in 3 team:

  • realizzazione dell’hardware e del software basato su Nodemcu per ricevere comandi o raccogliere i dati dal singolo sensore e inviarlo via wifi ad un Raspberry
  • ricezione dati su Raspberry ed invio dati ad un sistema centraleche aveva il compito di ricevere i dati da un gruppo di sensori e inviarli al sistema centrale
  • gestione sistema centrale il quale, prima tramite QBoat e poi tramite Node-RED, ha il compito di configurare, aggregare ed eventualmente esporre i dati.

I3-WAY

Terminata l’esposizione delle gilde e passare alla definizione di nuove, Fabio ha presentato il risultato del suo lavoro svolto in Intré per la sua tesi di laurea, e cioè I3-WAY.

Che cos’è I3-WAY? E perchè questo nome?
I3-way è una applicazione web, sviluppata in AngularJs, con lo scopo di tenere traccia degli spostamenti delle persone in azienda.
“Where are my colleagues?” Questa la domanda a cui I3-WAY risponde: tramite questa applicazione è possibile, per ognuno dei collaboratori, accedere al calendario e inserire per un determinato giorno se si è in ferie o al lavoro, e nel qual caso dove (sede di Monza o di Seriate).

Il tempo purtroppo è stato tiranno anche nel pomeriggio, per cui Francesco, “faciligildatore” (nuovo termine coniato per descrivere il “facilitatore delle gilde”) in pectore ha ottimizzato i tempi per la proposta di nuove gilde e discussione tutti riuniti in cerchio.

Altro camp terminato quindi e un arrivederci a fine Ottobre, quando sarà tempo di una storia…di camp 🙂

Un grazie, come sempre, va ad Intré che permette la realizzazione di queste bellissime giornate assieme, e ai miei colleghi che contribuiscono alla stesura degli articoli.
A questo giro un bel grazie a Marco, per il sunto sul workshop DDD, ed Emanuele 🙂

Tag
Intré Camp – 30 Ottobre 2018

Racconto del camp aziendale svoltosi a Erba, castello di Casiglio.

Intré Camp – 26 Giugno 2018

Racconto del camp aziendale svoltosi all'agriturismo La Camilla

Agile Venture Prato 2018

Il racconto della giornata della prima edizione di un agile venture in quel di Prato.

A reactive programming example
Milan Kotlin Community Conf

The first Kotlin related Italian conference made from the community to the community!

Let's see how was it...

DroidCon IT, Turin, 19 & 20 April 2018: our report
Milan Kotlin Community Conference

How, why and what has lead us to the Milan Kotlin Community Conference.

Intré Camp – 13 Febbraio 2018

Racconto del camp aziendale svoltosi a Pontida, agriturimo Polisena

Vert.x – 4o articolo su Mokabyte!

4o articolo sul mondo Vert.x a cura di Marco

Vert.x – 3o articolo su Mokabyte!

3o articolo sul mondo Vert.x a cura di Marco

NoSlidesConf 2017

NoSlidesConf: una conferenza diversa dal solito

Vert.x – 2o articolo su Mokabyte!

2o articolo sul mondo Vert.x a cura di Marco

Vert.x – 1o articolo su Mokabyte!
IAD Urbino 2017 – Conferenza 18 Novembre

Racconto della conferenza presso l'università degli studi Carlo Bo di Urbino

IAD Urbino 2017 – Unconference 17 Novembre

#IAD17: Racconto della giornata di unconference presso l'Università degli Studi Carlo Bo di Urbino

Intré Camp – 5 Ottobre 2017

Racconto del camp aziendale svoltosi all'agriturismo La Camilla

Intré Camp – 18 Maggio 2017

Resoconto del camp aziendale svoltosi all'Oasi di Galbusera Bianca

CloudConf Torino 2017

CloudConf 2017 a Torino. Come è andata?

Mini IAD Vimercate 2017

Il racconto della giornata al Mini Italian Agile Day tenutasi a Vimercate.

Codemotion Milano 2016

Nel week-end del 25-26 novembre 2016 si è svolto il Codemotion Milano 2016.
Francesco Sacchi e Ferdinando Santacroce ci raccontano com'è andata.

Angular Conf 2016

Il racconto della nostra giornata alla Angular Conf 2016 a Torino, sia come spettatori e soprattutto come sponsor.

Intré Camp – 3 Novembre 2016

Un racconto di come è andata la nostra giornata di team building, tra sorrisi e battaglie ;)

Node.Js Italian conference – V edition

Cronistoria sulla nostra partecipazione alla 5^ edizione della Node.Js Italian Conference, con tante belle foto, stickers e...leggete :)

Business24 TV: Fabio Ghislandi presenta Intré

In questo breve intervista viene presentata Intré e il suo innovativo approccio allo sviluppo di software.

Come cambia il mondo dei linguaggi
WebRTC – #1 Video-Chat in javascript

Con la tecnologia WebRTC (Real Time Communication www.webrtc.org) è possibile integrare, all’interno di applicazioni che comprendono javascript, funzionalità di audio e video-chat, registrazione chat, condivisione schermo e signaling.

Future e Promise in Scala

Primo post sulla programmazione in Scala dedicato a future e promise, due costrutti fondamentali per la programmazione concorrente.

Come inviare dati live da un’applicazione C# Desktop al web usando le WebSocket

Questa è una guida passo passo su come esporre dati live da un'applicazione C# console ad un web browser usando le WebSocket. L'esempio è stato testato su Windows 7.

IOS Push notifications iOS 6 con Sencha Touch 2.2

Se state cercando di inviare una Push Notification al vostro iOS6 iPhone/iPad usando Sencha Touch 2.2 probabilmente avrete incontrato diversi problemi. In questo articolo vedremo passo passo come configurare i certificati, impostare il file Sencha package.json ed inviare una push notification con uno script PHP o C#.

Creare una issue in Jira con i sub-task predefiniti

E' possibile programmare script in Atlassian Jira usando Groovy. Questi script possono essere eseguiti allo scattare di un evento come alla creazione di una issue o al suo aggiornamento. Sfruttando questo principio vediamo come creare uno script che crea i sub-task in automatico alla creazione di una Issue.

Lego controllato con Cloudfoundy via WebSockets

Questo è un breve test di come è possibile controllare Lego Mindstorm con Cloudfoundry usando HTML5 e WebSockets.

Beaglebone how-to. Come cambiare lo stato di una pagina web premendo un pulsante con node.js

Questo articolo descrive come intercettare l'interrupt GPIO di una beagle bone e aggiornare, via web sockets, una pagina web usando node.js.

youSCADA presentato al Graphical Web 2012

Come controllare e monitorare i device usando una piattaforma Cloud? La soluzione è stata presentata al Graphical Web 2012 a Zurigo.

Chiamare una REST API con node.js

Node.js sta rivoluzionando il modo di programmare le piattaforme software. Basato sul Google V8 JavaScript Engine permette di scrivere codice lato server in JavaScript.

Top
Ogni nostro Sprint ha l'obiettivo di massimizzare il Valore per l'utente finale
Il tuo browser non è aggiornato!
Aggiornalo per vedere questo sito correttamente.Aggiorna ora

×