Deploy di un’Applicazione Laravel 5.6 con ECS + Fargate

Ultimamente mi ritrovo spesso a giocare con AWS. In primis perché sto studiando per la certificazione come Associate Developer, certo, ma anche perché sto scoprendo una marea di roba nuova che mi facilita (enormemente) la vita.

Nel frattempo, ho iniziato a lavorare ad un side-project. Non per studiare qualcosa di nuovo ma proprio per “lanciare” qualcosa di mio. Ho deciso così di scegliere una tecnologia che conosco già molto bene e ho scelto Laravel. Per quanto riguarda lo sviluppo in locale non c’è problema: Vessel di ShippingDocker ha tutto quello di cui ho bisogno (per i più pigri, sappiate che con il mio caro e vecchio Laraprep tiro su tutto il dev env in due minuti).

Rimane quindi una sola domanda: cosa scelgo per l’ambiente di produzione?

Tendenzialmente per i side-project vado di deploy su Forge. Approccio quick and dirty e ho tutto quello che mi serve in tempo zero.

Che gusto c’è, però, se non imparo nulla di nuovo?

Ne ho parlato con un mio collega, Eraclitux, che per queste cose è sempre molto sul pezzo. Anche stavolta non mi ha deluso. Gli ho detto che mi sarebbe piaciuto giocare con i container anche in produzione e non solo in locale. La sua risposta è arrivata subito:

“Prova ECS + Fargate.” Continue reading

“What You Give Is What You Get” – Costruire una Community – Serie di Articoli

Abbiamo parlato di scopi, abbiamo parlato di semplicità. Tutto bello, bravi tutti, ma ora sporchiamoci un po’ le mani e parliamo di serie di articoli e di come (e quando) organizzarle.

Tra le varie cose a cui avevo pensato durante il lancio di Laravel-Italia ne ricordo una in particolare: “scriverò tante serie di articoli, da come si crea un blog con Laravel a cose molto più complesse e dedicate all’approfondimento”.

Un’ottima idea, certo, ma anche una pessima idea.

La prima serie che avevo scritto, “Making of Larabox“, non era andata affatto male. Anzi. Era piaciuta molto e a tanti utenti, che avevano iniziato a chiederne altre. Prendendo la richiesta alla lettera (anche con tanto ingenuo entusiasmo) mi ero messo di nuovo a scrivere e… puff: era nata anche Laravel… in Profondità”. A mio parere una delle più interessanti: una traduzione di una serie scritta da Christopher Pitt sul “viaggio” all’interno del codice di Laravel durante una richiesta all’applicazione. Un must per capire come funziona “under the hood” il framework.

Insomma, un successo? Macché. Una tragedia.

Il primo articolo, quello introduttivo, era stato letto circa 600 volte. Quello conclusivo? Appena venti.

Anche 600 non è una grande statistica, a ragionarci un attimo su: basta pensare che il capitolo introduttivo della serie Creare un Blog con Laravel 5″ conta più di 4000 visualizzazioni.

Cosa diamine è successo?

Semplicemente, ci sono serie e serie di articoli. Che ci piaccia o meno, si devono ricollegare agli scopi della community. Se stiamo portando avanti una community locale/nazionale, i contenuti dovranno essere entry-level o comunque molto pratici. Making of Larabox Creare un Blog con Laravel 5 avevano funzionato esattamente per questo motivo. Le serie più avanzate e di approfondimento sono state sicuramente un contributo lodevole, che però hanno fatto felici poche persone.

Se proprio vogliamo approfondire qualcosa, una mini-serie può essere un buon compromesso. Non risulta troppo pesante e al tempo stesso, se siamo dotati di un po’ di capacità di sintesi, possiamo comunque dare un bell’input al lettore. Un esempio che mi viene in mente, su Laravel-Italia, è quella dedicata alla scoperta dei JSON Web Token, oppure quella dedicata ai principi S.O.L.I.D.

In ogni caso, nelle mini-serie occhio alla scorrevolezza: pochi fronzoli e tanti esempi pratici sono un requisito indispensabile.

Volendo riassumere:

  • una serie di approfondimento rimane appunto d’approfondimento, per quanto interessante (e stimolante anche per il traduttore stesso)  e non tutti gli utenti possono avere il desiderio di sviscerare il tema;
  • una serie orientata all’entry level è sicuramente una scelta più azzeccata, in una community il cui scopo è facilitare l’accesso alla tecnologia in questione;

Lesson Learned: è bello fare cose stimolanti, ma c’è tempo e luogo per farle. Una serie di approfondimento e una community locale non vanno d’amore e d’accordo. Se proprio bisogna scriverla, una serie… che sia corta, scorrevole e ben fornita di esempi pratici.

That’s all, per oggi. La prossima volta, per rimanere in tema di contenuti, parleremo di articoli atomici ed interconnessi tra loro, con l’obiettivo di creare un’esperienza più interessante per il lettore.

“What You Give is What You Get” – Costruire una Community – La Semplicità

Qualche giorno fa abbiamo parlato, nell’ottica di creazione di una community, del concetto di scopo di una community. Oggi, amici miei, parliamo di semplicità. Concetto bellissimo e raramente raggiungibile in modo soddisfacente.

Come iniziare un articolo sulla semplicità? Proviamo con un’ammissione.

Noi sviluppatori abbiamo tanti problemi.

Ne abbiamo tuttavia uno più grande di tutti gli altri: l’impeccabile capacità di complicare cose assolutamente semplici. Se non ci fossero (e per fortuna ci sono) esigenze terrene a fermarci, di tanto in tanto, saremmo capaci di scriverci un blog in C++. Da zero. Non scherzo.

Ho imparato “sulla mia pelle” questa lezione proprio quando ho iniziato a pensare al come lanciare Laravel-Italia. La faccenda è cominciata con un dialogo tra me e me stesso ed è andata più o meno così.


Coscienza di Francesco: ok, rifletti bene. Devi lanciare un blog per Laravel-Italia. Ci scriverai articoli e serie di articoli, quindi avrai bisogno di un backoffice dove accedere, salvare le bozze, pubblicarle… cosa fai?

Francesco: beh, logico, me lo scrivo da zero usando Laravel, no?

Subsconscio di Francesco:


Nel mio caso ci tengo a dirlo: è stato un colpo di fortuna. Non si è trattato di qualcosa che già sapevo. Semplicemente la mia pigrizia ha vinto su tutto e ho deciso di iniziare Laravel-Italia con la piattaforma più adatta e logica per lo scopo: WordPress. Per i curiosi, ecco come appariva all’epoca:


Tornando a noi: ammetto di aver metabolizzato dopo la lezione, fortunatamente imparando qualcosa senza commettere un errore.

Cosa??? WordPress? Ma sei serio? E le buone pratiche, e il uebdesain, e i cugini?

Silenzio e rifletti: è un processo mentale semplice, alla fine.

Cosa dovevo fare? Scrivere articoli.

Perché non avrei dovuto usare WordPress per farlo? Non c’era un vero motivo che andasse oltre il “un blog su Laravel deve essere fatto con Laravel“.

Ecco, diciamo che quando stiamo pensando al magico “me lo scrivo da zero”, nove volte su dieci dovremmo fermarci e rifletterc per almeno un’oretta. Facendoci qualche domanda:

  • esiste qualcosa di pronto che può aiutarmi a raggiungere lo scopo?
  • se esiste, posso usarlo (magari personalizzandolo un minimo) per fare quello che mi serve?
  • dovrei scrivermelo da zero? Cosa manca a ciò che già c’è in giro?

Fatto? Risposto onestamente? Bene. Breaking news:

  • si può scoprire che novantanove volte su cento la risposta alle prime due domande sarà positiva, la terza negativa;
  • se ci troviamo in quel singolo caso su cento c’è una discreta possibilità che stia per nascere un’azienda, ma questo trascende gli scopi del post;

Lesson Learned: non complichiamo le cose, soprattutto quando non ne abbiamo bisogno. La mia necessità era scrivere articoli su un argomento, non usare per forza Laravel. 

Bisogna saper riconoscere quando è il caso di avere qualcosa di strutturato da subito e quando è il caso di partire agili, magari assemblando pezzi già pronti. Magari mandando a quel paese le “buone pratiche” per un po’. Non muore nessuno.

Per oggi è tutto. La prossima volta ci sporcheremo un po’ di più le nostre belle mani e parleremo di serie di articoli.

“What You Give is What You Get” – Costruire una Community – Lo Scopo

Un paio di mesi fa, in quella che è stata (per me) l’edizione di Codemotion più bella di sempre, ho avuto il piacere di tenere un talk dedicato alla costruzione di una community. Qui è possibile vedere il video completo:

Il mio discorso ha coperto principalmente tre argomenti:

  • cosa mi ha portato a creare la community;
  • a cosa mi ha portato il creare la community;
  • cosa ho imparato nel mentre;

Sui primi due punti si potrebbe dire tutto e nulla: trattare questi argomenti mi ha portato anche a metabolizzare alcune cose che probabilmente sapevo già da prima ma non avevo mai “formalizzato” in questo percorso durato ben cinque anni.

Spoiler: ho lasciato ufficialmente Laravel-Italia qualche mese fa.

That said, qualche giorno fa mi sono ritrovato a pensare che forse sarebbe stato il caso di approfondire un po’ alcuni di quei concetti che, per ovvie questioni di tempo, mi sono ritrovato a “limare” per poter rimanere nei quaranta minuti.

Quindi…

Cosa ho imparato nel mentre?

Quello che voglio raccogliere (e raccontare) nei prossimi post è un insieme di nozioni, trucchi e accorgimenti che ho imparato (o scoperto) con la pratica di tutti i giorni per cinque anni di fila, tenendo le redini di Laravel-Italia.

Sono sincero: avrei voluto scrivere tutto in un unico articolo.

Poi il word count è schizzato alle stelle in un attimo e, per fortuna, l’angelo custode delle mie questioni grammaticali (e dintorni) ha ben pensato di suggerirmi un po’ di tagli e suddivisioni. Ragion per cui al posto di un singolo articolo con dieci (lunghissimi) concetti ho deciso di scrivere un articolo per punto.

Ad ogni modo, se chi ben comincia è a metà dell’opera, tocca iniziare dal…

Definire lo scopo della community

Una delle prime cose che ho scoperto è che spesso la definizione dello scopo della community viene sottovalutata.

Ogni cosa deve nascere con uno scopo specifico e, soprattutto nei primi momenti di vita, più tale scopo è “verticale” su qualcosa e maggiori sono le possibilità che questa “cosa” funzioni.

Per spiegare meglio il concetto mi viene subito in mente la nascita di Amazon: prima di vendere qualsiasi cosa, dalle mutande ai lampadari, il suo scopo era esclusivamente vendere libri. Punto. Niente di più, niente di meno. Una volta raggiunta l’eccellenza in quel settore è riuscita a primeggiare in tanti (ma tanti) altri.

Per quanto riguarda le comunità di sviluppatori mi vengono in mente due categorie ben distinte:

  • le community che vogliono diffondere una tecnologia in una specifica area geografica;
  • le community che vogliono mettere insieme delle persone per creare qualcosa di specifico;

Nel mio caso, Laravel-Italia è un buon esempio della prima categoria. Il suo scopo, fin dall’inizio, è stato quello di produrre dei contenuti in lingua italiana, non troppo avanzati ma perfetti per l’utente che si sta avvicinando per la prima volta ad una certa tecnologia e vuole abbassare il più possibile la difficoltà di accesso ad essa. Certo, alla lunga le cose possono diventare leggermente noiose (non dover dare mai per scontati alcuni concetti, anche i più basilari, perché chiunque potrebbe essersi “appena connesso”). In questo genere di comunità la priorità è unire il maggior numero di persone per diffondere il più possibile la tecnologia in questione.

Un discorso diverso invece va fatto per la seconda categoria. Nel talk, per rendere meglio l’idea, ho chiamato queste community “gruppi di studio”. Sono l’esatto opposto del caso visto in precedenza: l’obiettivo non è più creare una massa notevole di utenti e favorirne l’accesso alla tecnologia ma formare un piccolo gruppo di utenti più avanzati (già preparati) per “spingere” la tecnologia stessa con un obiettivo molto preciso. Mi viene in mente un gruppo in cui si affronta un argomento specifico in modo più avanzato, o magari un gruppo di persone esperte in una certa tecnologia che decidono di usarla per creare qualcosa di nuovo, “spingendone” appunto i limiti.

Ecco, dare da subito una direzione specifica alla community che si sta creando è una delle prime cose da fare, secondo me. Perché così si può:

  • capire da subito che tipo di materiale bisogna preparare;
  • iniziare a pensare al modo migliore di trovare altre persone;
  • decidere da subito un livello al di sotto (o al di sopra) del quale non vale la pena spingersi;

Riprendendo l’esempio di Amazon, tra l’altro, bisogna dire che nulla ci vieta di “espanderci” in un’altra categoria. Raggiunto un buon livello, infatti, si può sempre decidere di creare un sottoinsieme di utenti motivati e partire con un nuovo progetto.

Lesson Learned: scegli lo scopo, rimani il più possibile verticale su quello scopo (all’inizio soprattutto) e prenderai una direzione. Giusta? Nessuno può dirlo. Almeno ne hai presa una e non è cosa da poco.

E con questo per oggi è tutto.

La prossima volta parlerò di un altro concetto fondamentale che spesso tendiamo a perdere di vista.

La semplicità.

Quattrocento

Da quando vivo a Roma (da qualche giorno prima, a voler essere precisi) tengo un diario personale in cui riporto un po’ di tutto.

Il format è sempre lo stesso. Per cominciare, numero della pagina in alto a sinistra. Subito sotto la data. A destra, invece, una parola significativa per quel momento. Dopo aver concluso, in fondo, il titolo della canzone che sto ascoltando oppure il rumore che sento in sottofondo in quel momento.

Una domenica al Colosseo, con mio fratello (che fa la foto).

A volte è un resoconto della giornata, altre volte è qualcosa che mi ha segnato talmente tanto da volerla imprimere sulla carta per paura di scordarlo. Altre volte ancora una citazione, una foto, una poesia o un’idea. L’elenco potrebbe continuare all’infinito, tale è la varietà delle cose che ci butto dentro.

Il punto però è un altro: sto per raggiungere la pagina quattrocento. La prima è del 30 Agosto 2013. L’ultima, al momento, è del 9 Febbraio 2018.

“Ammazza bravo, sai scrivere. Vuoi un applauso?”

No, aspetta, fammi arrivare al nocciolo della questione.

Continue reading