Documentare le API con Swagger

In questi giorni ho avuto modo di confrontarmi con Nicolò Carandini sul tema Swagger, un metalinguaggio utile per documentare le API esposte da servizi REST.

Mi √® sembrata un’ottima soluzione, visto che oltre ad avere interessanti automatismi ci consente, con relativamente poco sforzo, di avere sempre una documentazione “up-to-date” e di ridurre al minimo il lavoro¬†necessario per¬†adempiere a queste necessit√†.

avatar99

Quindi, se avete una necessit√† del genere, vi consiglio di ascoltare il podcast che ne abbiamo¬†prodotto, e di approfondire poi l’argomento tramite i link presenti nella pagina.

Documentare le API con Swagger

Epic session

Stamattina sono di nuovo in treno, anche se e’ sabato, per andare a seguire la¬†seconda giornata di Codemotion.

Ieri pero’ una sessione mi ha particolarmente colpito, e ne voglio parlare.

Si tratta di una sessione “non tecnica”, ovvero sul parlare in pubblico, “Public speeking for geeks” tenuta da Lorenzo Barbieri¬†:

12182773_10209340219442250_8691567412017752093_o

Io¬†l’ho definita una “epic session” e non e’ una esagerazione. Chi conosce Lorenzo sa quanta esperienza abbia nella gestione delle persone e questa sua esperienza e’ passata sicuramente attraverso centinaia e centinaia di sessioni in giro per tutta l’Italia, a contatto con le community (e non solo). E il tutto condito da tanta tanta passione.

Tra qualche giorno, dopo l’evento, le registrazioni saranno disponibili, e allora aggiungero’ a questo post anche il link per vedere / rivedere la sessione, poi mi direte se e’ stata veramente epica o meno.

Intanto vi dico cosa mi e’ rimasto, sperando di aver capito bene. Durante la sessione Lorenzo non ha usato slide, e ha condiviso con la platea le sue esperienze sul parlare in pubblico, per dare qualche linea guida sia a chi deve¬†tenere una sessione ad un evento, sia a chi magari deve confrontarsi ad uno speech per la presentazione, magari in pochi minuti, di una idea per una startup.

Confesso di essere interessato in prima persona all’argomento, visto che qualche volta anche io ho avuto la fortuna e il piacere di confrontarmi in¬†una sessione ad un evento, e spero di continuare con questo tipo di esperienza, ma anche perche’ in passato ho piu’ volte fatto il docente per corsi di informatica, quindi ero molto interessato.

I punti fondamentali che mi sono rimasti impressi sono:

  1. I primi 30 secondi rappresentano l’imprinting¬†verso il pubblico: le persone sapranno (e devono sapere) nei primi 30 secondi di cosa si parlera’ per la successiva mezz’ora o ora che sia; non si tratta di un film e non c’e’ bisogno di suspence, meglio dare subito l’idea di cosa potranno aspettarsi, saranno tutti piu’ consapevoli
  2. Non perdersi nelle presentazioni: specialmente se avete poco tempo non sprecatelo lasciando riferimenti che le persone difficilmente ricorderanno; se interessati ve li chiederanno o se li appunteranno dalla slide finale
  3. Non spiegate troppo: inutile essere troppo verbosi o dettagliati, o piuttosto troppo concentrati sullo spiegare righe di codice, date in pasto i concetti principali, meglio capire poche cose e poi approfondirle in seguito in maniera autonoma che stordire la platea con tanta roba da elaborare e digerire in poco tempo
  4. Muovetevi e coinvolgete la gente che vi ascolta: il liguaggio del corpo e’ piu’ che fondamentale, restare seduti e fare il mezzobusto del telegiornale non interessa le persone, che si sentiranno di essere ad una¬†lezione e non in una conversazione
  5. Ogni 5-6 minuti cercate di dare un elemento per risvegliare l’attenzione: studi fatti dimostrano che mediamente le persone perdono interesse o attenzione dopo sei minuti di¬†ascolto, per cui servono elementi per riavviare questo meccanismo di attenzione
  6. Non parlare sempre con lo stesso tono di voce: potreste far addormentare la platea, meglio qualche pausa e cambi di tono per aiutare a dare importanza al momento o al concetto che si sta spiegando
  7. Inizio e fine della sessione sono i momenti che determinano il successo della stessa: concentrate su questi due punti un momento da ricordare, un concetto da imprimere, restera’ anche dopo la sessione
  8. Usate frasi celebri di personaggi famosi se aiutano a fissare un concetto: non e’¬†necessario farlo sempre, ma a volte una frase significativa di un personaggio celebre, puo’ aiutare a rafforzare un concetto che state cercando di spiegare

Questo e’ quanto mi e’ rimasto impresso nella mente dopo la sessione di Lorenzo. Direi che tutto sommato non e’ poco dopo una sessione di un’ora. Sicuramente¬†mi sono perso qualcosa, per questo spero prima possibile di poter rivedere la registrazione.

E dopo la sessione, ancora tante domande erano arrivate a Lorenzo, segno che l’argomento era piu’ interessante di quello che¬†i piu’ scettici avrebbero mai creduto.

Io personalmente voglio ringraziare Lorenzo per questa condivisione, spero prima possibile di mettere in pratica tutti questi concetti.

E se Lorenzo sara’ a tiro, lo invitero’ a seguire la mia sessione e darmi qualche altro consiglio utile per migliorare piu’ possibile.

Epic session

Giochiamo a sviluppare giochi

Ci sono occasioni in cui, tutti coloro che amano i giochi possono passare una giornata divertente e istruttiva, imparando come sviluppare giochi e confrontandosi con gli altri appassionati di gaming.

Una di queste occasioni è data da un evento organizzato da Microsoft, il TecHeroes loves GameDev Tour in programma il prossimo 7 Aprile nella sede di Roma, di cui trovate qui il programma completo e la pagina di registrazione.

TecHeroes loves GameDev materiale.png

Sar√† un’occasione per confrontarsi sullo sviluppo di videogiochi, sia che si tratti di principiante, sia che si tratti di persone esperte in materia..

E proprio perch√©¬†non sono uno sviluppatore di videogiochi, prover√≤ a partecipare a questo evento, per capire qualcosa in pi√Ļ di questa tematica¬†dello sviluppo software a me del tutto ignota.

Sar√† un’occasione molto utile per¬†imparare e divertirsi insieme!

Giochiamo a sviluppare giochi

Un WeekEnd da Maker

Nello scorso weekend, sono stato impegnato a partecipare ad un evento organizzato da Intel, di cui avevo già parlato in questo post, la cui parte logistica (a quanto ho capito) è stata organizzata in maniera esemplare da parte di BeMyApp.

E’ stata una esperienza superiore alle mie aspettative, per una serie di motivi che cercher√≤ di spiegare di seguito.

L’evento in s√© era un “hackaton” in cui, in un weekend appunto, ovvero da sabato mattino fino a domenica verso ora di pranzo (notte inclusa) era possibile avere a disposizione la scheda Intel Edison e un kit di sensori (pi√Ļ altri sensori a richiesta) per presentare una propria idea da zero di un prototipo o di un prodotto¬†da realizzare in ottica IoT (Internet of Things).

C’erano circa 130 partecipanti, in overbooking rispetto ai 100 previsti inizialmente (o di cui si parlava sempre nelle mail dell’organizzazione), a dimostrazione che era stato un evento¬†molto interessante per¬†tanti che ritornavano e una novit√† per chi, come me, era alla sua prima esperienza.

cdcutyuw4aaozqa

L’et√† media non era molto alta, c’erano molti ragazzi tra i 20 e i 25 che avevano gi√† una buona esperienza in merito e molti altri pi√Ļ “maturi” come me ed altri pi√Ļ grandi di me, appassionati di questa specifica “area tecnica”.

L’evento si √® svolto all’interno dei locali della Luiss Enlabs, situati in pratica sopra la Stazione di Roma Termini e accessibile dall’interno della stazione stessa quindi strategicamente raggiungibile da tutti.

Lo spirito era quello di un enorme lab, in cui i “makers” si organizzavano in team e si¬†cimentavano nella realizzazione della loro idea per poi, nel pomeriggio di domenica, presentare una demo e¬†partecipare¬†ad un contest con tanto di giudici, ed eventualmente vincere un premio in denaro (in realt√† in gift card su Amazon).

Le squadre che si sono presentate¬†erano in realt√† gi√† attrezzate in maniera “forte”, ovvero erano gi√† molto avanti con la loro idea, e la partecipazione era mirata all’utilizzo dello schede Intel Edison e potersi evidenziare verso¬†eventuali finanziatori, visto¬†che la Luiss Enlabs rappresenta un “incubatore di idee” e la stessa Intel¬†credo di aver capito che¬†finanzi i progetti che ritiene pi√Ļ interessanti e innovativi.

IoeRobIoTRoadShow

Io e il mio amico Aristide ci siamo cimentati in un progetto che poi abbiamo registrato su Instructables (cos√¨ come tutti gli altri) ma essendo ancora una idea molto embrionale, ci siamo pi√Ļ che altro preoccupati di capire come funzionassero la scheda e i sensori che ci serviranno e ragionare sul¬†come mettere insieme¬†i pezzi di questo “puzzle”.

Si √® respirata comunque un’aria fantastica, in un clima di collaborazione si potevano avvertire quasi le idee viaggiare nell’aria, tante persone insieme a lavorare e divertirsi. Sarebbe bello poterlo fare per lavoro, cos√¨ come era per tanti dei presenti, purtroppo non √® possibile ma √®¬†pressoch√® sicuro che parteciperemo ai prossimi hackaton che verranno organizzati da Intel (e da altri, chiss√†), e consiglio anche a voi di partecipare, e sicuramente la prossima volta porter√≤ anche mio figlio, che gi√† una volta si era divertito a darmi una mano con schede e sensori.

Altre foto dell’evento le potete recuperare dai twitter del 12 e 13 marzo con questo hashtag #IntelMaker¬†.

Grazie ad Intel e a BeMyApp, e ci vediamo al prossimo hackaton, e speriamo di tornarci con il prototipo del nostro progetto!

Un WeekEnd da Maker

Io odio le Stored Procedure…

Questo lo posso affermare senza problemi: odio le stored procedure !

Non le sopporto, ne riconosco l’utilit√† in tanti contesti¬†e addirittura la necessit√† in altri contesti, ma non posso fare a meno di¬†avvertirle come fastidiose

Nella nuova puntata della serie Variazioni sul tema, curata da Dino Esposito si parla proprio di stored procedurelentissimecomplicatissime

Have fun !

Io odio le Stored Procedure…

Esportare i dati da Application Insights

Se usiamo Application Insights sicuramente ci può interessare, ad un certo punto, di esportare i dati riguardanti la telemetria, e questo può essere facilmente fatto usando le funzioni di export presenti nei vari blade dove vediamo i nostri dati, un esempio di seguito lo vediamo nel Metrics Explorer:

IMG.png

Questa operazione produce un file Excel (.xsls) con i dati riguardanti la “vista” che abbiamo in quel blade:

IMG

Una delle cose che mi piace di pi√Ļ di Application Insights¬†√® per√≤ la capacit√† di poter esportare i dati in maniera¬†continuativa.

IMPOSTIAMO LA CONTINUOUS EXPORT

All’interno della dashboard della nostra risorsa possiamo trovare la funzionalit√† di “Continuous export”:

IMG

in cui possiamo impostare una modalità di esportazione molto interessante.

Aggiungendo un “profilo di esportazione” (non conosco il nome preciso ma lo chiameremo “profilo” per capirci) possiamo decidere innanzitutto¬†quali¬†tipologie di informazioni esportare:

IMG

E lo storage e il container dove collocare queste esportazioni:

IMG.png

N.B.: sto dando per scontato che¬†chi legge questo post sappia cosa sia uno storage su Azure e come siano organizzati i dati all’interno di questi, magari in un altro post futuro prover√≤ a spiegare meglio il concetto.

CHE TIPO DI OGGETTO¬†OTTENIAMO CON L’ESPORTAZIONE

Quello che otterremo nel nostro container sarà una serie di file .blob:

IMG.png

aprendone uno scopriremo che si tratta “semplicemente” di un file json con le informazioni che riguardano la nostra risorsa Application Insights:

IMG

E’ importante specificare che data e ora indicate¬†all’interno dei json riguardano¬†il fuso orario¬†UTC, e quindi potremmo vedere un’altra data e ora rispetto al nostro fuso orario atteso per quell’evento.

 

CON QUALE FREQUENZA VENGONO ESPORTATI I DATI

L’esportazione avviene, come dice il nome, in maniera continuativa, ovvero ad ogni registrazione riguardante¬†uno dei tipi di dato che vogliamo esportare, tra quelli¬†indicati¬†nel profilo di esportazione.

Quindi ogni volta che avviene una registrazione sulla telemetria, e questa registrazione afferisca ad uno dei tipi riportati sopra, questo viene “esportato” cos√¨ come abbiamo indicato nel nostro profilo di esportazione, o meglio, viene “preparato all’esportazione”.

Infatti √® meglio precisare che non si tratta di¬†un sistema di esportazione in real-time, in quanto¬†il dato nello storage potrebbe essere presente fino ad un’ora dopo l’accadere dell’evento.

Queste tempistiche vengono gestite direttamente dalla piattaforma, che si occupa di eseguire questo processo quando lo ritiene opportuno (probabilmente in funzione delle risorse a disposizione, ma è una mia supposizione, non ho fonti specifiche).

Per gli scopi dell’export, comunque, si tratta di un processo che va benissimo per lo scopo di chi vuole “manipolare” i dati e ottenerne qualcosa in termini di analisi, non √® quindi (lo ripeto) uno strumento per la gestione in real-time dei dati.

QUANTO MI COSTA ESPORTARE

Questa funzionalità purtroppo non è disponibile nel profilo gratuito di Application Insights, per cui bisogna avere un profilo tra quelli a pagamento visibili a questa pagina ma si tratta, a mio avviso, di un costo tutto sommato sostenibile nel caso abbiamo la necessità di usufruire di questa funzionalità.

COME PROCESSARE QUESTI DATI

Una volta ottenuti i dati, cosa me ne faccio?

Con tanti dati a disposizione, bisogna ricorrere a¬†strumenti (e competenze) di analisi dei dati, la cosiddetta Business Intelligence, altrimenti avere molti dati ma averli in forma¬†“grezza” non potranno esserci di grande aiuto.

Sicuramente possiamo ricorrere ad altri strumenti di Microsoft, alcuni dei quali anche disponibili su Azure ma di questo ne parleremo in un altro post…

 

Esportare i dati da Application Insights

Conoscete Git? E GitHub?

Usare Git può essere molto utile, specialmente se lo si cala in un contesto di collaboratività.

Per questo abbiamo chiesto ad un esperto di tematiche ALM come Giulio Vian, di condividere¬†la sua esperienza di sviluppo in un progetto open source ospitato su GitHub, la piattaforma di “social coding” dedicata a Git.

Giulio ci spiegherà, nel podcast che abbiamo realizzato insieme, come è andata con lo sviluppo in team del progetto TFS Aggregator di cui è uno dei fondatori.

Tralasciando il simpatico paradosso del fatto di sviluppare un plugin per TFS ospitandolo su GitHub (e Giulio ci spiegherà anche il perchè di questa scelta), ricordo che anche su TFS e Visual Studio Team Services (prima noto come Visual Studio Online) è possibile avere Git come source versioning invece di TFVC (Team Foundation Version Control).

Avevamo gi√† registrato un’altra puntata proprio su questo scelta, e¬†posso dire che Git (per certi aspetti) √® una vera sorpresa, e anche se ancora il 100% dei miei progetti sono ospitati su TFVC,¬†a breve comincer√≤ ad usarlo per¬†vedere sul campo se le impressioni positive che ho avuto sono confutate dal riscontro oggettivo.

Conoscete Git? E GitHub?