Finalmente mi decido a pubblicare questo articolo.
Finalmente, dico, perchè dopo aver finito il lavoro su Riplive.it, al limite di un esaurimento psico fisico, ho cercato di staccare il più possibile e far riposare il mio io informatico, ormai allo stremo dopo mesi di lavoro su un progetto che ho seguito in tutti gli aspetti.
La premessa, ormai l’avrete già capito, è il rifacimento del sito web di Radio Illusioni Parallele, la cui vecchia versione, sviluppata e disegnata sempre da me stesso nel lontano 2009, iniziava ormai a dare segni di cedimento.
Di acqua sotto i ponti, da quei caldi pomeriggi in Ripstation 2 a cercare di disegnare il più bel sito possibile, ne è passata parecchia, e nel frattempo ero riuscito a farmi un po’ le ossa, lavorando un po’ come web designer, un po’ come sviluppatore web, facendo esperienza sia nello sviluppo server side che in quello client side.
Il rifacimento del sito era già nell’aria da tempo, e ogni tanto io e Matti ne parlavamo, disquisendo su come impostare i contenuti, su qualitecnologie utilizzare, su come disegnare l’interfaccia insomma, su come ci sarebbe piaciuto che fosse.
Ma poi, come ogni nostro pseudo progetto, il tutto finiva sotto il tappeto delle idee non realizzate, in attesa di essere tirato fuori a tempo debito, quando ne avremmo avuto voglia.
Finchè non arriva l’inizio di settembre, di quest’anno ovviamente, quando l’idea di ridisegnare Riplive, ormai una pagina bianca abbandonata a se stessa, diventa concreta:
in una serie di incontri fra me e Mattia si decide una scaletta ben definita di contenuti e sezioni del sito, con un possibile lancio della piattaforma dopo Natale.
Tecnologia da utilizzare: WordPress, di cui già avevo buona padronanza, ma che avevo imparato a gestire al meglio durante il rifacimento del sito di Virgin Radio Italy con il buon Bruno, fautore della creazione di una struttura modulare a plugin del sito, che permette la gestione dei vari componenti in un modo molto elegante.
Si parte quindi, e nulla ci potrà fermare!
Siamo agli inizi di ottobre, quando inizio a scrivere le prime righe di codice, partendo dalla parte amministrativa di WordPress, in modo che i ragazzi della radio possano iniziare a inserire i nuovi contenuti e a ordinare quelli vecchi. Insomma, inizio dal compito più palloso, perchè mi voglio divertire alla fine, lasciando lo sviluppo e il design dell’interfaccia per ultimo.
Ma un’idea malsana già mi frullava in testa.
Sapevo già di dover far girare la piattaforma su un server virtuale su Digital Ocean, e di dover configurare PHP e Apache per far disegnare le pagine a WordPress proprio non ne avevo voglia.
PHP e quel pseudo CMS elefantiaco di WordPress mi erano già venuti a noia da parecchio tempo.
Volevo qualcosa di nuovo.
Volevo qualcosa di fresco.
Ed ecco perchè inizio a pensare in modo insistente ad Angular JS.
Javascript è il mio linguaggio preferito, si sa, e amo lo sviluppo front end e il design web in tutte le sue forme, e ridurre il tutto ad un semplice sito disegnato dal server faceva il tutto un po’ troppo “inizio anni 2000”.
Insomma, una palla alluncinante.
Ecco perchè dopo un breve briefing con Mattia lo convinco a passare ad una struttura modulare:
Wordpress viene degradato da piattaforma applicativa ad un semplice e banale pannello amministrativo, atto a fornire i dati in JSON alla vera rockstar del momento, NodeJS, che a mo’ di proxy server recupera i dati da WordPress e li serve all’applicativo client, una soluzione responsive e tutta client side scritta completamente con Angular JS.
Insomma, una follia pura!
Certo, sappiamo che ci sono dei drawback nello scegliere uno stack di questo tipo:
perdiamo l’indicizzazione offerta da un contenuto statico generato sul server, e sopratutto perdiamo la possibilità di condivisione degli articoli su Facebook e affini, perchèle piattaforme di Social Network non eseguno il parsing di un contenuto generato dinamicamente con Javascript in caso di “embed” dello stesso.
Ma non ce ne facciamo un cruccio: la parola d’ordine è carta bianca, ho la massima possibilità di manovra e, come scoprirò dopo, anche di budget!
Avanti tutta dunque anche se, alla fine di Dicembre, iniziano i primi attriti:
di tutto il lavoro previsto solo il pannello di amministrazione è pronto, forse per alcune scelte sbagliate sui contenuti da includere nella prima release, e solo allora ci rendiamo di quanto sia titanico il lavoro che ci aspetta.
Alcuni pezzi molto importanti della piattaforma sono però completi: gli amministratori di Rip hanno ora un modulo per gestire i podcast di ogni programma in modo autonomo, con la generazione automatica del feed xml e il caricamento dei file mp3 su Amazon S3.
Senza menzionare la possibilità di gestire le biografie degli artisti che sono ospiti in Radio, o la gestione delle classifiche musicali tramite un’interfaccia completamente Drag&Drop che sembra uscita dal futuro.
Un lavoro complesso insomma, tosto, che però alla fine darà i suoi frutti.
Facciamo slittare di alcuni mesi la release del sito, e attacco come un pazzo a scivere l’applicazione server side con Node;
ci rendiamo ben presto conto che il misero WordPress non è veloce neanche a fornire dei semplici dati dinamici in JSON, e affianchiamo dunque un’altra macchina, su cui gira un’instanza di Memcached, per cachare i dati dinamici.
L’idea è di leggere il più possibile da Memcached e di scaricare tutto sul client dell’utente, e andare a pollare il server solo quando ce n’e’ bisogno:
i primi test sono molto positivi e l’applicazione si dimostra reattiva e veloce.
Siamo alla fine di gennaio, e un”altra idea malsana incide sull’andamento dello sviluppo: vogliamo leggere in tempo reale i dati della canzone che viene trasmessa dal server di streaming radiofonico.
Chi meglio di NodeJS per un compito del genere?
Configuriamo un’altro server virtuale, dove facciamo girare la sola applicazione di parsing del brano in onda, scritta con Engine.io e Broadway per gestire la Dependency Injection dei vari moduli; i risultati sono altalenanti, ogni tanto l’applicativo si blocca e va riavviato, ma in via generale funziona, e decidiamo dunque di accontentarci e proseguire per il momento con lo sviluppo dell’app vera e propria…il tempo stringe, le giornate iniziano a farsi più lunghe e la voglia di finire il lavoro è tanta.
Dopo alcuni brevi incontri dove schizziamo su carta quella che diventerà l’attuale interfaccia di Riplive il piano è ben definito:
uscire con una prima release monca, che offra solamente due tipi di contenuti, news e podcast.
Il resto sarà implementato più avanti.
Inizio a mostrare i primi segni di cedimento, affaticato dalle molte ore di sviluppo notturno e dai week end tappato in casa a scrivere codice come un pazzo, mentre i criminali che chiamo amici sono in giro a ubriacarsi, a sniffare coca e a parlare di figa.
Mattia se ne accorge, e nonostante la pressione mostrata dai ragazzi del team di Rip, che non vedono l’ora di mettere le loro mani pacioccose sul sito più bello del mondo, l’uscita dell’applicazione slitta ancora. §
“Il mese prossimo” è la data fantomatica che gira di bocca in bocca, sussurrata in vicoli bui da figuri poco raccomandabili.
Continuo a scrivere quindi e Angular JS si dimostra pauroso come dicono;
riesco a strutturare in modo coerente ed ordinato l’applicativo, e dopo le prime difficoltà dovute allo sviluppo di una gestione ad eventi del menù di navigazione, del pop up con la canzone in onda e del player radiofonico, il tutto gestito con un pattern di tipo Pub / Sub, l’applicazione procede spedita.
Deciso di non fermarmi, anche se ormai sono allo stremo: voglio finire tutte le sezioni del sito e scappare in qualche atollo sperduto dove il sola possa ridare colore alla mia pallida carnagione.
La notte sogno codice, e la mattina, prima di andare a lavoro, attacco a scrivere Rip.
Sono uno straccio, e ogni volta che incontro Mattia in chat impreco come un turco, maledicendo la volta che mi sono offerto di:
“Tranquillo Matti, ve lo faccio io il sito di RIP!”
Ma ci siamo: alla fine di marzo il sito va online.
Sono completamente distrutto, conscio che ci sono diverse cose da migliorare, ma molto molto contento.
Certo, abbiamo solo un centinaio di articoli striminziti.
E’ vero, molte immaginiti dell’home page sono deformate.
E si, qui e li ci sono alcuni bug, e la canzone in onda ogni tanto si blocca.
Macchisenefrega (si, gente, una parola sola…), siamo online cazzo!
Matti è felice come una pasqua, va in giro a dire che abbiamo il sito più bello di Radio Deejay con un sorriso a sessantaquattro denti, nessuno riesce a fermarlo e quando presenta il sito ai suoi l’ovazione è scontata.
Io invece, distrutto, mi guardo allo specchio: barba lunga e cappelli incolti.
E ora, che cazzo faccio?
Decido di buttare giù uno schema dell’infrastruttura web che usiamo per tenere insieme tutta la baracca, e faccio un riepilogo mentale di tutto il lavoro e il codice che ho dovuto scrivere per arrivare fin qui:
– Piattaforma amministrativa WordPress, ben 9 plugin custom compresi pannelli amministrativi scritti con Angular JS per la gestione dei contenuti.
– Upload dei podcast su Amazon S3, con generazione di feed XML per ogni programma.
– Applicazione REST scritta con NodeJS, con persistenza dei dati recuperati da WordPress su Memcached.
– Applicazione soft real time scritta con NodeJS, per il parsing del brano in onda sputato fuori da Icecast
– Applicazione responsive scritta con Angular JS.
– Configurazione di Nginx + PHP + MySQL + Backup automatico di MySQL su Amazon S3
– Configurazione di Nginix davanti a NodeJS per servire i contenuti statici e compressi con GZIP
– Configurazione dei fottuti server su Digital Ocean: password, utenze, permessi, firewall.
– Configurazione repository git e deploy automatico.
– Design dell’interfaccia.
E questo è tutto amici miei.
Lo schema dell’infrastruttura lo trovate sopra (ovviamente gli indirizzi IP sono fittizzi).
Ne è valsa la pena?
Beh, è sicuramente è stato il lavoro migliore che ho fatto sin’ora, sia come sviluppatore/designer/sistemista che come One Man Band.
Faticoso, distruttivo, ma sicuramente il migliore.
Potrà piacervi, potrà non piacervi, ci saranno un sacco di difetti strutturali e bug, ma questo è ragazzi.
Questo è.
E alla fine di questo lunghissimo post, chissà se qualcuno di voi ci è arrivato, volevo ringraziare alcune persone.
Non Mattia, no, perdonami amico mio, non questa volta.
E neanche ai ragazzi della Radio.
Per loro ho già fatto il sito, e anche se probabilmente mi vedono come uno spocchioso figlio di puttana … e non lo sanno… gli ho già dato tanto.
Tutto quello che avevo cazzo.
Ebbene, per una volta invece volevo ringraziare i miei amici programmatori:
il grande Gianfranco, che mi ha introdotto al mondo della programmazione e che tanto mi ha insegnato, il ribelle Nello, che ho sempre visto come un maestro di vita, il buon Davidino, che mi vede come un folle e mi chiama Gab il Monco, Bruno, il mago dei Design Pattern e dei Database, Luigi detto figa zioooo, con cui disquisisco sempre di programmazione e cazzate.
Questo articolo è dedicato a voi, quei pazzi che fanno un mestiere che mai avrei creduto potesse essere il mio, e che forse non lo sarà mai, ma di cui qualcosa ho appreso e che per ora la pagnotta me la sta facendo portare a casa.
Per il resto, come al solito, cari lettori occasionali, andatevene pure a fanculo.
Augh