alessandro melchiori
() => melkio.OnStage();

Alessandro Melchiori

  • Docker & Azure

    Venerdì 10 febbraio sarò a Roma dagli amici di DomusDotNet e GetLatestVersion per una ricca giornata di contenuti sul tema DevOps.

    Nel mio piccolo terrò una sessione su Docker e Azure. L’abstract è abbastanza esplicativo (almeno credo):

    Hai visto un paio di tutorial introduttivi su docker? Sai come avviare un container o come creare una nuova immagine partendo da una gia’ presente sul docker hub? Ma vuoi saperne di piu’…questa e’ la sessione che fa per te: analizzeremo casi reali di utilizzo congiunto di docker e Azure, quali per esempio l’integrazione nella pipeline di Continuous Integration, come creare un hub privato o come supportare scenari di scale-out.

    L’idea non è quella di un tutorial passo-passo e introduttivo sul mondo dei container e di Docker nello specifico. Vuole portare la mia esperienza in uno scenario mediamente complesso su cui stiamo lavorando in CodicePlastico e su come, Docker e Azure, possono semplificare la vita del team, sia nella fase di sviluppo, sia nella fase di operation e di gestione dei deploy.

    Non è la prima volta che tengo questo talk, ma non è mai successo che due sessioni consecutive avessero lo stesso contenuto: l’ecosistema di Docker e il supporto che Azure ne dà sono in continua evoluzione. Ad ogni “giro” una nuova versione di Docker o un nuovo servizio di Azure a mantenere vivo (spero) l’interesse di chi partecipa e la necessità da parte mia di aggiornare slide e demo :D

    Se non ti sei iscritto, forse sei ancora in tempo: https://www.eventbrite.it/e/biglietti-devopswork-2017-30931208076

    Vi aspetto!!

  • La ricerca non è solo una ricerca

    Ultimo post datato: 07/10/2015…direi che è ora di ricominciare a bloggare, anche per evitare che @mauroservienti possa continuare indisturbato la sua serie di post su Service (UI) composition senza qualcuno che faccia da bastian contrario :)
    Non raggiungerò mai il suo rate di post, ma qualcosina da dire o aggiungere sull’argomento lo possiamo di sicuro trovare.

    Partiamo da questo post di Mauro in merito alla “ricerca”. Nulla da eccepire su quanto ha scritto, ma mi piacerebbe vedere “una semplice search” anche sotto un altro punto di vista, soprattutto nel mondo del commercio elettronico, contesto dal quale Mauro ha preso spunto per i suoi post.
    Siamo davvero sicuri che la ricerca sia sempre e “solo” una ricerca? Cerco di dettagliare meglio la domanda: siamo proprio sicuri che la ricerca fatta da un utente percorra il lato “di lettura” dei nostri due mondi (command & query)?
    Secondo me no o almeno non sempre.

    La ricerca di un utente porta con se una serie di informazioni semantiche molto importanti ed è fondamentale non perderle nascondendole dietro una, più o meno complessa, “query”. Ma non solo: in determinati scenari l’esecuzione di una ricerca non solo potrebbe, ma deve cambiare lo stato del sistema, entrando di diritto nella categoria dei comandi.

    Ok, prendiamo un bel respiro e cerchiamo di capire cosa intendo, per evitare di fare confusione: il fatto che l’utente Mauro abbia ricercato un portabanana in una certa data sono informazioni importanti che cambiano per forza di cose lo stato del contesto funzionale della ricerca ed influenzano potenzialmente anche altri contesti. Mantenere queste informazioni potrebbe aiutare il contesto del marketing a “suggerire” agli utenti del sistema prodotti che potrebbero essere di loro interesse. Queste informazioni nel contesto di sales potrebbero essere molto utili per gestire le politiche di pricing…e chi più ne ha più ne metta!

    Ma facciamo un ulteriore passo.

    Non è solo la ricerca in sè ad essere importante, ma anche il risultato della ricerca stessa contiene implicitamente informazioni che non possiamo disperdere: per esempio una ricerca che non produce risultati o che produce un numero di risultati inferiori ad una certa soglia ha un altissimo valore di business. Perdere un’informazione del genere impedirebbe al business di sapere cosa gli utenti stanno cercando e non trovano perchè, per esempio, non disponibili a catalogo negando di fatto delle potenziali vendite.

    Lo scenario della ricerca è uno di quei contesti in cui è molto semplice per la nostra mente prendere velocemente la tangente tecnologica, pensando a quale strumento “cool” del momento possiamo utilizzare per fare ricerche full-text o aggregazioni (stile facet) molto performanti, perdendo di vista gli scenari di business hidden che si nascondono solo qualche passo più in là.

    I principi di Domain Driven Design, ma soprattutto l’approccio pratico e diretto di Event Storming aiutano molto a far emergere scenari di business che molto spesso lo stesso business non sa di avere :)

    Nel post di Mauro c’è una frase che ha dato origine a questi miei pensieri, che riporto testualmente:

    Ma cosa c’è di male a buttare tutto in un bel robo fatto con Elastic Search?
    E la risposta sarebbe: nulla, non c’è nulla di sbagliato.
    La cosa sbagliata è pensare che l’unica soluzione sia buttare tutto in un robo fatto con Elastic Search.

    Parafrasando Mauro:

    La cosa sbagliata è pensare che la ricerca sia solo una “semplice” lettura

    Molto spesso dietro una ricerca si nasconde un bounded context inesplorato, che ha una dignità propria e che detiene un ricco contenuto informativo utlie anche al resto del sistema.

    Come al solito le risposte valide in questo contesto sono due: “dipende” e “42” :)

  • MVP su Azure...#estiqaatsi

    A conferma del periodo incasinato della mia vita, non solo lavorativa, mi ritrovo solo oggi, quasi una settimana dopo, a scrivere di quanto mi è successo la scorsa settimana. Giovedi scorso, 1 ottobre, ho ricevuto una mail “particolare”: sono MVP su Windows Azure. Lungi da me il pensiero di fare un post auto celebrativo, ci mancherebbe…volevo solo ritagliarmi poche righe per i ringraziamenti, che di rito non sono mai.

    Essendo un premio che arriva dalle community, non posso far altro che ringraziare la community e in particolar modo la community di ugidotnet, che mi ha accolto ormai dieci anni fa, mi ha fatto crescere e mi ha dato l’opportunità di contribuire alla community stessa partecipando agli eventi in qualità di speaker o pubblicando articoli. Insomma, grazie ad ognuno di voi.

    Una piccola nota di “merito” va però a tre persone in particolare, che hanno avuto un ruolo importante nella mia crescita, non solo professionale. Li cito in ordine alfabetico per non fare differenze…non potete nemmeno immaginare come certi “guri” possano essere permalosi :)

    • @andysal74: è stato il mio primo contatto con la community, ad un evento UgiDotNet, ormai tanti anni fa. Durante la sua sessione (su domain model, lazy load, identity map…what else?) ricordo di aver ammirato questo “strano personaggio” che condivideva, “for free”, la sua conoscenza con gli altri. Strano! In nessun altro contesto questa cosa sarebbe realizzabile. Riuscite ad immaginare un avvocato che fa lo stesso con i suoi colleghi/concorrenti? Vabbe…il problema è che questa cosa, questo desiderio di condividere, si è acceso anche in me e non si è più spento…non so se per voi è un bene o meno. Se sono qui, è anche perchè 10 anni fa ho avuto Andrea come primo esempio di cosa significa “essere” community. Nel frattempo è diventato pure un caro amico. Se non fosse interista sarebbe quasi perfetto ;)
    • @emadb: sono più di sei anni che si lavora e si cerca di costruire qualcosa di importante insieme. Sono più di sei anni che ascolta i miei deliri tecnologici riportandomi di tanto in tanto con i piedi per terra e condividendo con me il desiderio di crescere sempre. E’ soprattutto grazie a lui che sono riuscito e riesco a ritagliarmi il giusto tempo da dedicare alla community. Insomma, detto in altre parole, ho trovato il modo di far lavorare qualcun altro al posto mio :)
    • @mauroservienti: che dire…quando lavori con Mauro capisci che hai un sacco di cose da imparare, ti rendi conto che la strada è ancora lunga e che c’è sempre qualcuno più avanti di te. Lavorando con lui ho imparato veramente tanto, non solo sotto il punto di vista tecnico, ma anche e soprattutto, il “gusto” e il piacere di migliorarsi per lavorare sempre meglio. E’ stato veramente piacevole condividere con lui il lavoro su diversi progetti, chissà che in futuro non si possa tornare a lavorare a stretto contatto :)

    Tante parole per dire semplicemente…GRAZIE!

  • Arrivederci CodicePlastico

    Questo e’ un post un po’ particolare, non tecnico come solitamente faccio su questo blog, ma piu’ personale.
    Quello che sta per iniziare e’ un mese “strano”, il mio ultimo mese in CodicePlastico…e’ da un po’ che valutavo questa possibilita’ stufo di dover combattere con la burocrazia italiana, con la difficolta’ (impossibilita’?) di fare impresa in Italia. Sapevo che prima o poi sarebbe successo, sapevo che sarei arrivato ad un punto di non ritorno….lo so, mi conosco. Quando alla mia porta si e’ presentata una grande possibilita’, ho pensato che fosse almeno arrivato il momento di provare a cambiare.

    Va be…non voglio dilungarmi troppo…l’obiettivo del post e’ un altro: volevo usare questo canale per ringraziare Emanuele, amico e collega di questi ultimi 6 anni. Ci abbiamo provato, ci siamo anche riusciti, ma alla fine, anche a causa di “visioni” differenti abbiamo deciso “di rimanere solo amici” :) Non posso che augurare a lui e a tutto il team di CodicePlastico di continuare sulla strada tracciata: la strada della qualita’, del desiderio di fare sempre meglio, del volersi sempre migliorare.

    Cosa mi aspetta ora? Non posso ancora dire l’azienda in cui andro’ per problemi di NDA, almeno fino alla firma effettiva del contratto. Mi trasferiro’ a Zurigo, prima io e, spero presto, anche il resto della mia famiglia. Nel mio prossimo futuro vedo tanto javascript, ma tanto, tanto, tanto…

    Ciao super-eroi! E’ stato un piacere fare parte della vostra squadra. In bocca al lupo

  • My road to F#

    Sono da sempre innamorato di C# e del suo essere un linguaggio “fresco e pulito”, ma non posso che affermare che questa feature vale il prezzo del biglietto:

    let (success, value) = Int32.TryParse("10")
    

    Mai piu’ ‘out’ in vita mia :)