Coding creativo: evanescence.jpg

Alessia: Oggi parliamo con Gennaro Bosone, Fullstack developer in Develer, di coding creativo. Che cos’è?

Gennaro: Il coding creativo è l’atto di scrivere codice per il puro gusto di farlo, dove l’obiettivo non è funzionale, ma creativo ed espressivo; dove il codice diviene un mezzo come può esserlo una tela per un pittore.

Non ha uno scopo preciso, o meglio il solo scopo è quello di divertirsi, di creare, non esiste una commissione a monte. È un modo per passare il tempo, da soli o in compagnia, per comunicare qualcosa in un linguaggio un po’ più astratto.

Alessia: Quindi è anche un modo per fare amicizia?

Gennaro: Sì, come ci sono collaborazioni tra fotografi, videomaker, musicisti e danzatori, ci può essere collaborazione tra gli aspetti artistici e quelli della programmazione.

Alessia: È solo una collaborazione virtuale o anche dal vivo?

Gennaro: Può essere entrambi chiaramente. Ci può essere una collaborazione virtuale quando ci si conosce su dei forum e si fanno cose insieme, e ho fatto anche varie amicizie così. Oppure ci può essere una collaborazione “reale”. Uno degli aspetti del coding creativo che personalmente più mi stimola è quello del live coding, cioè di generare immagini in real time, come per esempio, avere collaborazioni con musicisti: mentre loro performano musicalmente, un live coder può performare visivamente.

Alessia: Quindi in un concerto vero e proprio?

Gennaro: Sì, in un concerto, un evento di musica elettronica, un evento di musica dal vivo, ma anche una danza, un video musicale, ovunque c’è bisogno di un aspetto visivo.

Alessia: E tu come hai cominciato?

Gennaro: Mi ha sempre affascinato il fatto di trasformare il codice in qualcosa di visibile. Ho iniziato utilizzando i terminali col C; poi alle superiori ho realizzato i miei primi siti web in HTML: lì è stata la prima volta in cui ho visto che quello che scrivevo veniva visualizzato su uno schermo. E la prima volta, invece, che ho iniziato a utilizzare formule matematiche per disegnare è stato con il corso di calcolo delle probabilità e statistica, sempre alle superiori. Qui vedevo che dalle funzioni matematiche venivano fuori dei grafici, e quindi attraverso quelle linee iniziai a fare i miei primi esperimenti visivi.

In seguito, ho voluto approfondire uno dei miei linguaggi preferiti, JavaScript, sul piano del disegno, perché fornisce delle API più o meno di basso livello per permettere di disegnare e poi c’è stata questa wave sui social della generative art, che mi ha dato la spinta per scrivere la mia prima libreria per disegnare con il codice.

Alessia: C’è qualche strumento che potresti consigliare a chi volesse farlo?

Gennaro: Dipende dal linguaggio preferito, ma quasi tutti forniscono delle API per disegnare. Queste vengono denominate Canvas, che significa tela, con cui si possono disegnare linee, circonferenze, punti; con la combinazione di questi, possiamo generare delle forme 

Alessia: Tu usi JavaScript?

Gennaro: Sì, e uno dei più importanti framework per JavaScript per fare coding creativo è Processing P5: ci sono tantissimi tutorial ed è usato da molte persone in ambito amatoriale, ma anche artistico professionale.

Sempre per quanto riguarda il disegno c’è Hydra e vi consiglio anche la mia libreria Urpflanze. Inoltre, esistono anche le API native di Canvas senza l’utilizzo di framework. 

Di framework ce ne sono veramente tantissimi, ma secondo me la creatività sta nel come utilizzi uno strumento, non nello strumento in sé.

Alessia: Ma per chi volesse visualizzare quello che stai dicendo, hai qualche sito o artista da consigliarci?

Gennaro: Qualche artista da consigliare? Dipende quello che è visivamente più conforme all’idea di bello; c’è magari a chi piacciono cose più astratte o geometriche. E ci sono anche tantissimi artisti a cui ispirarci.

Per esempio, vorrei citare Andreas Gysin, che è uno degli artisti che seguo e che maggiormente apprezzo: utilizza spesso Ascii Art e manipolazione di pixel e scrive i framework per realizzare i suoi effetti visivi. 

Segnalo anche Matt DesLauriers che secondo me è uno dei più bravi: ha creduto molto nell’arte generativa e ha fatto appassionare un po’ tutti.

Parlando di tecnica, lui utilizza P5, ma scrive cose ad hoc che condivide su GitHub.

Ha una produzione artistica molto ricca, che spazia dalle opere più astratte come la collezione Meridian ad altre che ricordano un po’ il cubismo, con forme geometriche semplici.

Alessia: E per quanto riguarda la musica?

Gennaro: Ci sono ovviamente tool per fare live coding con la musica. Uno può essere Strudel per JavaScript, oppure Tidal Cycles, basato su Super Collider. Non so se se avete mai utilizzato una DAW per fare un beat oppure per fare registrazioni di musica elettronica. Strumenti come Strudel o Tidal Cycles ti permettono di generare i tuoi suoni e la tua partitura da suonare attraverso il codice, connettere una cassa dritta in 4/4, poi aggiungere un hi-hat, aggiungere un synth, poi farlo in live tramite codice.

Tra gli artisti, segnalo Char Stiles e dj_Dave, interessanti perché hanno organizzato delle serate elettroniche per sviluppatori, dove il codice è la componente estetica di quello che viene ascoltato.

Alessia: Ma se una persona qualunque volesse approcciarsi al coding creativo, hai qualche consiglio per iniziare?

Gennaro: Per approcciarsi al coding creativo non bisogna fare per forza cose visive. Come dicevo, coding creativo significa divertirsi, fare una cosa che va al di fuori del lavoro. Se un programmatore si mette a scrivere codice per se stesso, perché si diverte e non perché gli serve, allora sta facendo coding creativo. Non deve avere il fine di raggiungere qualcosa, ma deve essere un modo per passare il tempo, come può essere per un musicista suonare la chitarra anche al di fuori di un concerto.

Il consiglio che posso dare è fare quello che fa stare bene. Insomma, se uno si diverte a fare i disegnini a terminale, anche quello è un coding creativo. Se invece qualcuno vuole sperimentare con l’aspetto visivo, perché magari trova bello e divertente mostrare ad output qualcosa che viene scritto, allora può approcciarsi a P5, che è quello più ricco tutorial. C’è per esempio il canale YouTube The Coding Train di Daniel Shiffman, uno dei creatori di P5, ed è bello perché lui riesce a trasmettere la passione per quello che fa e ti invoglia a sperimentare. Questo canale è famosissimo, anche perchè ti insegna l’approccio per pensare in pixel.

Alessia: Pensare in pixel? In che senso?

Gennaro: Nel senso che l’approccio al disegno non è come quello che conosciamo, in cui prendi una matita e fai una linea. Per fare una linea nel linguaggio informatico hai un punto, che è formato da due coordinate x e y, e un altro punto, con altre coordinate, e tra di loro poi tracci una linea. E pensare in pixel significa anche pensare a come viene renderizzata quella linea su quella tela.

Se ci pensi bene, questa cosa avviene anche nel disegno “normale”, cioè se noi prendiamo una linea e la ingrandiamo, vediamo che non è perfettamente diritta, ma ci sono dei riempimenti che da lontano vengono visti come dritti. Pensare in pixel significa mettere sulla nostra tela delle coordinate e sta a noi come riempirle. Pensare in Pixel significa anche non pensare solo a disegnare una linea attraverso le funzioni x, y, ma anche tramite algoritmi generativi. Per una linea è un po’ difficile, ma per cose un po’ più astratte si può pensare al disegno come qualcosa che si trasforma con il codice.

Le opere della collezione Meridian, per esempio, che abbiamo citato prima, sono sicuramente la conseguenza di un algoritmo generativo: sono delle particelle che vanno a cadere come se fossero granelli di sabbia e si accumulano. Ecco, pensare in Pixel significa anche lasciarsi sorprendere da algoritmi che sono più o meno prevedibili.

Alessia: Come funziona un algoritmo generativo?

Gennaro: Algoritmo generativo significa che è l’algoritmo che va ad influenzare il disegno. Facciamo un esempio: disegni una linea, ma non la vuoi sempre perfettamente dritta, randomicamente deve avere delle onde. Queste onde puoi farle in infiniti modi. Uno di questi modi è quello di usare la randomicità. Se tu dici all’algoritmo di fare un punto più in alto di un valore randomico tra 100 e 200, tu non sai che cosa accadrà, perché sarà l’algoritmo a scegliere un numero casuale. Questo si intende con algoritmi generativi: quando il comportamento è più o meno previsto e può cambiare ad ogni iterazione del disegno.

Alessia: Tipo riproduzione casuale su Spotify: non sai mai cosa ti capita, ma in un range che dai tu.

Gennaro: Esatto. Questo è l’esempio più semplice. Perché puoi estendere questa casualità in una maniera ancora molto, molto più casuale. Puoi dire anche: disegnami randomicamente un blocco di pixel, e poi a questo blocco di pixel applica di nuovo un altro algoritmo che va a fare dei cambiamenti di colore in modo randomico. Poi, una volta fatto questo, applica un displacement di questi pixel, sempre in modo randomico. È un modo infinito di poter iterare randomicamente un disegno.

Alessia: Quindi ogni volta si genera qualcosa di diverso?

Gennaro: In realtà, puoi generare sempre lo stesso output attraverso quelli che nella programmazione si chiamano “seed”, cioè setti un valore iniziale e la funzione di random ti genererà in modo sequenziale sempre gli stessi valori randomici. Però puoi anche non impostare questa funzione ed ogni volta generare qualcosa di nuovo, totalmente unico in quel caso.

Alessia: Sarà unica, ripetibile.

Gennaro: Unica e irripetibile sì. L’hai persa per sempre se non conosci quei valori. Ed è irrecuperabile.

Alessia: Però è anche la cosa bella, no?

Gennaro: Sì, certo. Infatti, una delle cose che mi piace di più del live coding è che a volte, nei momenti di ispirazione, nascono delle cose stupende. Poi ripeterle è quasi impossibile! 🙂

Alessia: Stiamo parlando di un programmatore che passa 8 ore a programmare per lavoro e poi si mette a fare coding creativo. Nell’immaginario collettivo, lo sviluppatore è quello che sta chiuso al buio sullo schermo. Ecco, questa attività non rischia di alimentare ancora di più lo stereotipo?

Gennaro: Dipende. Se la programmazione ti permette di uscire da casa, anche se passi la maggior parte del tempo davanti al computer, potresti comunque avere l’opportunità di incontrare altre persone. Durante questi incontri, è probabile che tu non sia costantemente incollato allo schermo; potresti invece fare una pausa e scambiare quattro chiacchiere.

Per esempio ieri sera, dopo aver lavorato, sono andato a fare le prove per un live che farò con due miei amici: sono stato ancora un po’ davanti al computer, ma il resto della serata l’ho passato con loro. 

Magari può essere stancante a livello fisico e mentale, questo sì, ma sono belle le emozioni che vivi: partecipare a degli eventi in cui fai live coding, dove ti metti anche tu alla prova, dove ci sono delle persone con cui poi fai rete, che ti portano poi ad altri eventi e situazioni. Lì è bello. Io, per esempio, col progetto neurocinema sono stato a Verona, in provincia di Benevento, varie zone della Campania e in tanti altri posti che non avevo mai visitato.

Alessia: Che cosa è ora il neurocinema?

Gennaro: È un progetto di cinema sperimentale che porto avanti con il mio amico Dino Esposito: è un cortometraggio interattivo, in controtendenza a quello che è il cinema adesso, sempre di più per le masse. Il nostro obiettivo è quello di creare un cinema individuale, cioè soggettivo, dove la scelta non è conscia, ma inconscia: è quello che il tuo corpo vuole vedere.

Al momento, la versione che abbiamo sviluppato utilizza un elettroencefalogramma, attraverso il quale decifriamo le onde alfa, beta, theta, gamma e delta.

E attraverso queste onde cerebrali manipoliamo la trama del corto, oppure applichiamo effetti di post-processing, tipo colorazione o distorsione sul video.

Alessia: Come fai a cambiare il corto in base alle mie onde?

Gennaro: C’è un gioco di montaggio, ci sono n. clip e la struttura funziona ad albero. Tu inizi vedendo la scena iniziale, che è uguale per tutti. Durante questa, il sensore invia al software le tue onde, il software le elabora e decide quale clip inviarti nella scena successiva.

Alessia: Tipo un libro game: al posto di lanciare i dadi scelgo io quello che vorrei che succedesse.

Gennaro: Esattamente. C’è stato anche un esperimento di Netflix, Bandersnatch della serie Black Mirror, dove tu potevi scegliere con il telecomando che cosa far fare al protagonista. In neurocinema la scelta è inconscia, non c’è nemmeno lo stacco: sembra di vedere un unico unico video.

Alessia: Quindi se vedo i due protagonisti del video che si stanno lasciando e, inconsciamente, non voglio che accada, questa cosa non accadrà sullo schermo?

Gennaro: Quello che decifriamo noi sono le onde alfa, beta, gamma, theta e delta, che sono le onde di concentrazione, di meditazione e di rilassamento. Quindi non possiamo fare un detect emotivo, ma è un detect sul tuo stato fisico, di tensione, di rilassamento o di attenzione. Le onde beta sono per esempio quelle che ti dicono se stai attento o meno.

Alessia: Tornando all’esempio di prima: quindi se i protagonisti si stanno lasciando e io mi irrigidisco, vuol dire che non voglio questa cosa. Se mi rilasso, vuol dire che mi va bene.

Gennaro: Esatto

Alessia: E questa è una applicazione del coding creativo?

Gennaro: Sì, perché questo non lo può fare solo un videomaker. Questa è una delle cose che più mi appassiona della programmazione: l’interattività, rendere dinamico qualcosa che non lo è. Tu prendi un oggetto e lo puoi rendere smart, facendogli fare cose che normalmente non potrebbe fare. Prendiamo un quadro: invece di essere su tela, viene visualizzato su un display e quando gli passi avanti con una mano, puoi modificarlo. Questo è il bello dell’arte generativa e digitale, cioè far sentire lo spettatore parte dell’opera.

Alessia: I fruitori come reagiscono?

Gennaro: Reagiscono bene! Tutti ci chiedono se sono pazzi oppure se abbiamo rubato le loro password dei social. 🙂 Scherzo, però abbiamo sempre avuto un buon riscontro. E anche alcune reazioni molto, molto forti.

Alessia: In che senso?

Gennaro: Durante una proiezione a Verona, una donna ha iniziato a piangere quando è apparsa una scena con un cavallo, seguita da un’altra scena con delle dune e una frase significativa. Questo perché il neurocinema combina immagini piuttosto astratte con contenuti testuali. Tutto il contesto che ha portato a quella frase ha fatto rivivere alla donna dei ricordi della sua infanzia, suscitandole forti emozioni. È stato un momento molto suggestivo e coinvolgente.

Alessia: Era più emozionata o più inquieta?

Gennaro: Si è sicuramente emozionata, ma era anche un po’ inquieta. La prima cosa che ci ha detto, appena tolta il sensore, è stata: “Vi prego, ditemi che queste cose non sono state generate apposta per me”. Abbiamo spiegato che non era così. Sicuramente il fatto che si indossi un sensore un po’ suggestiona, però quello che deve essere l’obiettivo del neurocinema non è quanto “ci abbia preso”, ma se ti è piaciuto quello che hai visto.

Alessia: Però il fatto che si sia emozionata è stato un successo. Tu quello volevi: che quella sequenza di immagini, di suoni e di scritte provocasse l’emozione.

Gennaro: Per questo dicevo che mi ha colpito: perché si è veramente immersa in quello che le volevamo mostrare.

Alessia: E questo è un grande successo: riuscire a portare tramite il codice dell’emozione. Che il codice è visto come la cosa più fredda del mondo e tu, invece, riesci a portare emozioni alle persone.

Gennaro: Poi, in questo caso, sicuramente c’è stata anche l’opera narrativa, il merito non è solo della programmazione. Come dicevamo, anche qui c’è stata una collaborazione di pari livello tra cinema e programmazione: è stato bravo il regista, è stato bravo lo scrittore dei testi ed è stato bravo il mio algoritmo ad aver scelto quella trama. E quindi sì, il codice può emozionare.

Anche le opere digitali possono emozionare, come può farlo un quadro di Dalì.

Alessia: Però mentre è normale pensare che un quadro di Dalì ti emozioni, non penseresti mai che un codice ti possa generare quelle sensazioni. Quindi secondo me ci portiamo a casa questo oggi: il codice può emozionare.

Gennaro: Qualcuno pensa che, solo perché si tratta di arte digitale, allora sia “facile”, perché quell’opera l’ha realizzata il software, non una persona.

Alessia: Più che facile, secondo me a volte sembra fredda, cioè il fatto che venga da algoritmi e numeri buttati su un computer, che non si capisca l’interazione umana la fa sembrare veramente fredda.

Gennaro: Prendi le opere Meridian, l’artista le ha stampate. Se tu vedi quelle stampe, non sapendo che lui è un artista generativo, pensi che siano dei quadri. Quindi sta lì il fatto: che è freddo perché noi riteniamo il digitale freddo, però nelle cose in cui uno ci mette l’anima e passione, quelle sicuramente non risultano fredde.

Alessia: Infatti è l’emozione che ci metti tu, che poi è quella che uno recepisce.

Gennaro: Esattamente, ti cito quelle opere perché secondo me si percepisce lo studio che c’è dietro, ma anche la minuziosità di voler riprodurre qualcosa che, come diceva Walter Benjamin, è “l’apparizione unica di una lontananza, per quanto vicina possa essere”. 

Lo percepisci quando un’opera è arte, che sia digitale o meno.

Alessia: Gennaro, chiudiamo con questa frase bellissima che hai detto e ti ringrazio per questo excursus che dal coding creativo ci ha portato al neurocinema.