WebSocket Php #7

Trovato il porco dio di problema !!
Non ho idea del perché, ma quel fottuto flag diventa false a random quando abbiamo più di circa 3k di dati. Più sono i dati, più spesso finisce erroneamente a false.

Eppure non è un problema di lunghezza dati. Se forzo lato server il flag a true, il socket non si disconnette mai e invia client->server e server->client tutti i dati interi.

Quindi bloccando la lettura del flag il problema sembra risolto.
Ma…. ma quello è il flag che permette al server di riconoscere così bene le deconnessioni dei client! Quindi i refresh pagina bloccano i client.

Devo scoprire cosa fa cambiare ad minchiam il flag, o altrimenti come andare a leggerlo solo quando non ho un messaggio buono.

E devo fare un test con flag sempre a true e messaggi di un mb, e vedere come vengono gestiti i frame.

WebSocket Php #6

La situazione continua ad evolversi. Alcuni problemi si risolvono ed altri arrivano.
Sono riuscito a far funzionare il websocket php ben fatto trovato su github, e devo dire che è fatto fortuitamente bene.
Riesce anche a rilevare in tempo reale le deconnessioni su ogni browser, risolvendo parecchi dei problemi citati in precedenza.
E gestisce già la segmentazione del messaggio in frame, concatenandoli prima di passarli alla collback. Non so come cazzo funziona, ma so che funziona, quindi bella!

Purtroppo non è perfetto. Anche all’interno del codice si può trovare qualche //TODO che indica dei problemi da risolvere.
E ora il problema è che se un client prova ad inviare un messaggio molto lungo, dopo la trasmissione potrebbe disconnettersi. Dico potrebbe perché in effetti succede circa una volta su 10, e non mi è chiaro il motivo.

Lato server c’è un controllo all’interno dell’header del messaggio che verifica se il client ha inviato il flag per disconnettersi (non so che cazzo sia). E a volte questo controllo restituisce true, e il client viene forzatamente disconnesso dal server.

In ogni caso adesso riesco a inviare messaggi lunghi e riceverli lato server interi, e poi re-inviarli al client e fare un console.log del messaggio intero in un solo colpo.
Very GOOD!

Devo risolvere la deconnessione random e poi sono a posto, risolti tutti i problemi noti del WebSocket fatto in php. Potrebbe essere sufficiente intercettare lato client la deconnessione, ed eventualmente riconnettersi (con messaggio DRAG di init). Vedremo. Farò questo test, ed un test sulla lunghezza massima di un messaggio che posso inviare ricevendolo sia lato client che lato server tutto intero.

Spero che non ci sia da ricominciare tutto questo travaglio in Node.JS.

WebSocket Php #5

voila trovato il problema di trasmissione. il protocollo websocket spezzetta la trasmissione in frame quando i dati da inviare sono parecchi. ma non mi è chiara 1 il perché e 2 il come.
il primo frame è sempre da 128k, quindi credo che quando hai più dati da inviare di 128k inizia la divisione in frame, ma poi gli altri possono avere altre dimensioni.
tipo io col mio schermo pocciando al massimo tutto lo spazio disponibile, con tanto info casuali, colori e linee, sono arrivato a dover trasmettere circa 900k (porco dio!! per salvare un solo disegno cazzo! e col mio schermo del portatile, che non è di certo un 4k. il db dovrà essere bello capiente)
e lato server ho ricevuto un frame da 128k
uno da circa 500k
e un terzo coi restanti 300k.
quindi sta a me scoprire tramite gli header che ci sono nei frame che ricevo, se si tratta di un messaggio completo o di un pezzo. ed allora concatenare.
se non ho capito male, il grosso websocket php che ho trovato su github gestisce già questa cosa, ma non riesco a farlo funzionare ed ho guardato poco il codice. mi tocca studiarmi un po l’argomento.
e spero che in nodejs tutta questa roba sia facile.

ovviamente anche lato client ho lo stesso problema. il php invia una stringa json_encode del mia mega oggetto, e lato client mi ritrovo solo una parte della stringa se è troppo lunga. quindi il json.parse ovviamente fallisce visto che il json non è completo.
spero almeno che i frame arrivino in ordine, se no sono cazzi amari.

WebSocket Php #4

il server può inviare al client di sicuro ben più di 256 caratteri. ma non so che cazzo di leader bisogna dargli. ho visto che fino a 65000 caratteri funziona, perché il pocket che ho trovato gestiva già tutti i casi.
ma il caso con msg.length > 65000 in realtà non funziona.
ed è un argomento su cui si trova difficilmente googlando.

poi ho pensato che in effetti il server definitivo farebbe bene a spezzare le trasmissioni, tipo inviare massimo 3 disegni alla volta, perché in effetti se fai drag con molto zoom indietro e visualizzi i disegni solo quando li hai ricevuti tutti…. sticazzi.
ma questo dettaglio lo cagheremo solo col server vero fatto in node. non ha senso farlo sia ora in php che poi di nuovo in node.

ho trovato un altro codice di un websocket php, e questo è fatto con molte più funzioni e controlli, quindi mi studio il codice (500 righe porco dio) e cerco la soluzione che mi serve.
in pausa sfrutto la wifi del centro commerciale qui vicino e mi ci metto per mezzora

e vorrei mettere su il sito. appena il socket funziona compro il virtual server base di netsons, ci installo php mysql e lo faccio funzionare online. ma per questo devo anche pensare ad un nome dominio.
che nome ci starebbe bene? pensaci per favore e fammi sapere. social.art mi piace, ma non so come trasformarlo in un dominio. o prendo socialart.it .com .me .io , o cambio proprio il nome

intanto lo partorisco online in php (e sarà interessante avere un server remoto da configurare a mano, mai fatte ste cose), poi ci sarà la versione node in attesa. ma per ora preferisco andare avanti con la parte social del progetto.
sviluppare l’onclick sul svg in trasparenza e un login utente usando Facebook e google. così posso creare una pagina base per gli utenti.

WebSocket Php #3

ho scoperto altre cazzate sul ws php.
io le scrivo, tanto per prendere appunti, magari ti sono utili, magari non te ne frega un cazzo.

Safari:

– per ogni nuovo tab il server rileva un nuovo client => ok
– su refresh il server elimina il vecchio client e aggiunge il nuovo => ok
– se chiudo un tab il server elmina il client senza errori => ok

Chrome:

– per ogni tab, il server crea un client => ok
– su refresh, il server crea un nuovo client ma non elimina il vecchio => KO
– dopo qualche minuto dal refresh, il server riceve la notifica di chiudere il vecchio client => KO
– se si chiude un tab, il server perde il client troppo presto e logo 2 Warning => quasi ok, risolvo in php

Firefox:

– per ogni tab, il server crea un client => ok
– su refresh, il server crea un nuovo client ma non elimina il vecchio => KO
– dopo 20 secondi dal refresh, il server riceve la notifica di chiudere il vecchio client => KO
– se chiudo un tab, dopo 20 secondi il server riceve la notifica di chiudere il client => KO ma porco dio dai! (ma senza warning php)

IE:

– chissenefrega => OK!

RISULTATO:

Ma che cazzo! si dice che i browser supportano i WS ma in realtà tutti fanno ciò che vogliono.
beh poco male. tanto si parla di php, ed abbiamo già elencato una sacco di motivi per cui non lo useremo.
nella pratica questo impedisce di fare gli aggiornamenti in tempo reale vedendo comparire in diretta i disegni che gli altri stanno facendo proprio dove sei tu. ma chissenefrega, non è una funzione di primaria importanza ora. per ora userò il pocket solo per le due cose che potevo fare anche con ajax normale (salvataggio e recupero disegni), ma col vantaggio che trasferisco meno dati grazie al protocollo ws. praticamente risponde solo alle chiamate che riceverà dai client, di tipo “SAVE” o “DRAG”

e intanto mi ritrovo già queste due funzioni implementate lato client come ws e non ajax, e quando ci sarà un server serio con node basterà aggiornare il parametro dell’url e tutto funzionerà uguale.

WebSocket Php #2

social art l’ho sempre voluto fare in modo più modulabile possibile.
anche se il codice js è tutto dentro ad un unico file (…. -.-” …) ho organizzato tutto a moduli e configurazioni, in modo da usare delle api che ogni modulo mette a disposizione dell,altro.
cosi andare a fare una modifica mi costa sempre poco.

anche per le chiamate backend è lo stesso.
lato client ogni modulo sa come gestire il socket automaticamente, e a me nel js basta sapere l’url da chiamare.

ora la priorità è arrivare più in fretta possibile al parto, cioè tutto che funziona online appoggiandosi ad un backend php mysql. e se continuo di questo passo, arrivo ad avere una versione funzionante (che trascura completamente la sicurezza dei dati) nel weekend, salvo per un dubbio. per lanciare quel file devo lanciare una linea di comando php a terminale, e non so se si possa arrivare allo stesso risultato agli host del cazzo che ho io su netsons, che puoi gestire solo tramite cpanel.
quindi mi sa che per il parto dovrò in ogni caso comprare un vps. il base è 10 euro al mese.
e intanto ci metto su il backend php.
poi prima cosa da fare dopo il parto e farlo evolvere. e si passa a node.
cazzo che figata deve essere la gestione degli eventi che mi dici. vorrei conoscerla bene.

e post node, si passa a creare la parte utenti, ma quella dovrebbe essere relativamente facile.
una sola cosa sara difficile, cioè recuperare l’immagine su cui si ha effettivamente fatto click, considerando che si potrebbe aver fatto click su un px trasparente, e in quel caso devo prendere l’immagine sotto.

è la più grande difficoltà tecnica che rimane, tant’è che non so nemmeno se sarà fattibile, o se sarà necessario convertire tutta la dashboard in un altro canvas, e convertire il problema nella gestione dei layer di ogni disegno.

– socket node
– click trasparenza svg
– geotag della dashboard

Pat però promettiamoci una cosa.
se ci trovassimo nel caso in cui questo progetto inizia a prendere piede ed essere usato dalla gente, ci concediamo una possibilità. vieni a parigi e passiamo un anno a lavorare solo su questo :D
io giuro qui e ora che lavoro come dipendente solo finche social art non sarà in piedi, e se inizia a diffondersi mollo tutto e mi lancio. se la cosa funziona non ci sarà più bisogno di lavorare per avere soldi.

WebSocket Php #1

Non mi concentravo cosi tanto su social art da parecchio tempo, ed ora rispetto a 2 anni fa ho imparato che veramente fatto è meglio che perfetto. e sto procedendo velocemente.
2 anni fa non avrei mai accettato di partire con un pocket php solo perché non sapevo farlo in node. sarei rimasto a sbattere la testa per imparare una cosa nuova e farlo bene al primo colpo.
ora mi rendo conto che in ogni caso è meglio arrivare a mostrare qualcosa, piuttosto che non finire mai.
non vedo l’ora di mettere online una versione multiutente :D

è un po incasinato il socket php, ma direi che ne posso uscire facilmente.
ora ho il problema che non funziona più il riconoscere la deconnessione di un client, quindi ho un array di client a cui scrivere più altro del normale, e mi aspetto risposte che non arrivano.

comunque salvo nel db mysql via socket il base64 dell’immagine png e restituisco al client che me lo ha inviato l’id generato nel db.
per completare il salvataggio devo anche inviare quel nuovo disegno a tutti i client che sono nelle sue stesse coordinate.

ora devo fare il drag… significa che su ogni drag devo pushare le coordinate attuali, e lato server farmi un dizionario di client e relative coordinate. aggiornarle su ogni push dei client, ed eliminarli quando si disconnettono. e ad ogni push inviare il son di immagini.

purtroppo qui viene fuori il limite di php, che non è asincrono per natura come node.
il socket funziona grazie un while true…. ed ho detto tutto. quindi se faccio un drag, e devo inviare 10 disegni in json, potrebbe arrivarmi un’altro push per il drag successivo prima di aver finito la trasmissione dei dati del drag precedente. e non credo ci sia un modo per identificare il drag successivo e interrompere il precedente, visto che è tutto sincrono. in più il tempo di attesa tra la risposta di un drag e del successivo si somma per ogni client in parallelo….

la logica è :

while true
– prendi array di client connessi
– per ogni client guarda se c’è un messaggio
– se il messaggio è un disegno da salvare, lo salvo, e per ogni client connesso verifico le coordinate ed eventualmente lo invio
– se il messaggio è di tipo drag, aggiorno le coordinate, query sul db e invio il json di disegni (che può essere molto pesante….)

se ho 100 client connessi che esplorano la lavagna, rispondo ad uno alla volta. e un client che fa due drag di fila si beccherà due risposte, anche se la prima non serve piû a un cazzo, e per attendere la seconda (quella buona) dovrà aspettare che abbia risposto una volta a tutti gli altri 99 socket.

senza contare poi che php gira su un solo thread, quindi avere while true ti porta un core al 100% e ignora completamente tutti gli altri, usando solo una piccola parte della potenza di calcolo di un server.
quindi per far girare questo backend in php piuttosto che node, a parità di prestazioni bisogna spendere più soldi il server su netsons… per prendere più potenza di calcolo.

e non ho ancora idea di cosa accada se tra un ciclo e l’altro del while, lo stesso client ha mandato più di un messaggio… test ancora da fare

Sogno Strano #1

Il sogno inizia bene. Ero in una strana vacanza con tanti amici. Non ricordo il viaggio, ma il primo giorno ci troviamo tutti insieme in un grande parco a giocare liberamente come facevamo da bambini.

Il gruppo dei bulli si organizza per conto suo, indeciso se giocare nel campo di calcetto o di basket. Le ragazze se ne stavano tranquille in disparte a parlare tra di loro, ed i rimanenti si divertivano con le giostre disponibili nel parco.

Tra queste ricordo bene uno strano “tosaerba russo” che voleva essere una montagna russa in versione tosaerba, col risultato che i vagoni (affiancati uno all’altro e ben all’avanguardia a livello di sicurezza del passeggero) non facevano altro che andare avanti e indietro per circa 50 metri a passo d’uomo ed all’altezza del suolo. Aveva anche un simulatore di rumore da tosaerba che non c’entrava un bel niente con quelle macchinette gialle simil autoscontro nel quale dovevamo sederci. Chiunque ci salisse ne rimaneva deluso, ma tutti prima di provarla erano impazienti perché appariva come la giostra più bella e tecnologica di tutto il parco.

Ed il parco… era semplicemente stupendo. Un prato immenso con alberi in fiore e giochi ovunque. Era un altopiano in cima ad una montagna da cui si poteva ammirare una vista stupenda sulla pianura sottostante, e nonostante l’altitudine godeva ci un clima perfetto. Appena al di sopra della soglia del caldo, ideale per vestirsi leggeri ma senza mai sudare.

Io mi isolo senza volermi integrare con nessuna attività di gruppo, preferendo esplorare il parco proprio come facevo anni prima da bambino. Mi arrampico in cima ad un’altalena e scopro che da li si può ammirare un panorama incredibile. Eravamo talmente in alto che sembrava di osservare il mondo dal cielo. Tutto al di sotto della montagna era in stile film di Miyazaki; si potevano vedere aerei e macchine improbabili volare ovunque disordinatamente nel cielo sotto di noi.

Chiamo il mio amico Pat a raggiungermi li sopra l’altalena per fargli vedere un enorme aereo blu tutto di ferro e di forma molto strana, con 6 ali e 10 motori, che stava atterrando all’aeroporto. Visto da li mi sembrava grande come un’intera città.

La sera si dormiva tutti in una specie di condominio all’antica, con moquette sulle pareti dei corridoi, mobili d’epoca e pavimenti non troppo puliti, dove ogni gruppo di amici aveva il suo mini appartamento. Io, Pat, ed altri due miei grandi amici d’infanzia vivevamo insieme con la naturalezza di chi ha convissuto per anni.
La prima sera vogliamo organizzare una festa tra tutti i partecipanti della vacanza, quindi noi del nostro gruppo andiamo a parlare coi nostri vicini di casa per cercare di capire quanti saremo e pensare a come organizzarci.

La festa inizia, e mentre siamo tutti insieme in salotto a parlare del più e del meno per fare amicizia, bere birra e mangiare schifezze, mi ricordo all’improvviso di avere sempre avuto un dente più debole degli altri, che traballa nella sua gengiva. Arcata superiore tra incisivo e canino sinistro, e penso di toccarlo per verificare se sta bene nonostante tutte le porcherie zuccherose che sto mangiando.

Appena lo tocco mi rimane tra le dita venendo via dalla gengiva. Accade in un attimo e senza sforzo, come se fino ad allora fosse stato semplicemente appoggiato li nel suo alloggio, pronto a cadere.
Rimango per qualche secondo incredulo; inizio a pensare alle conseguenze che può avere per la salute perdere un dente a 25 anni.

Decido di andare in bagno per non rimanere li in silenzio col mio dente in mano in mezzo alla gente che chiacchiera e si diverte, e penso di chiamare i miei genitori per chiedere consiglio.
In bagno sorrido davanti allo specchio, convinto di vedere un buco nella arcata dentale, ma stranamente al primo sguardo non vedo niente di diverso dal solito. Noto poi che in realtà il buco nella gengiva c’è, ma subito dietro mi è cresciuto un sopraddente che mi impediva di vedere la gola scura.

Lo osservo bene perché non mi risultava di aver mai avuto un dente in più del normale, e provo a aprire e chiudere la bocca più volte con le labbra aperte per vedere come si incastrano i denti tra loro in questa nuova configurazione.
Dopo qualche prova mi accorgo che sono più di uno. Erano già diventati tre, tutti nello stesso lato della bocca ma distanti tra loro. Mi rendo anche conto che sono molto appuntiti simili a denti animali.
Continuo a interrogarmi su cosa sia successo e sulle conseguenze future, ed immagino me stesso dal dentista a raccontare il mio problema. Mi vedevo come in un sogno, steso sul lettino a raccontare cosa mi era successo ad una dentista donna, in modo tranquillo ma incredulo. Anche lei era molto tranquilla e mi diceva che perdere uno dei denti più piccoli non fosse poi molto grave.

Alla fine di questa fantasia mi accorgo di un particolare che ho avuto sotto gli occhi durante tutto il suo svolgimento: in quella fantasia io ero una ragazza.
Riprendo coscienza di me e ritorno nel grande bagno comune del nostro piano del condominio, davanti allo specchio, però ora ho le sembianze della ragazza che ero nel sogno, con la mia stessa personalità e i miei ricordi.

Ma non ho tempo di pensare a questo perché mi accorgo di non riuscire quasi più ad aprire la bocca; tutte le ossa dei denti si erano ingrandite fin quasi al punto di incastrarsi tra loro. Sporgevano verso l’esterno impedendomi di chiudere le labbra. 

In quel momento realizzo che qualsiasi cosa stia accadendo, sta avvenendo talmente in fretta da non lasciarmi tempo di cercare aiuto o una soluzione pragmatica.

Provo disperatamente ad aprire la bocca forzando le ossa incastrate tra loro, finché non le sento scricchiolare e rompersi. 

La cosa non mi provoca dolore, ma sento chiaramente i denti muoversi nelle gengive e le ossa che spostandosi lasciano dello spazio vuoto. La tipica sensazione di quando da bambino perdevi un dente e ti ritrovavi con un buco insanguinato senza provare dolore, ma moltiplicata mille volte.
Mi butto a terra a quattro zampe con ormai l’affanno, e cerco di muovere la bocca per migliorare la situazione. Le ossa continuano a crescere, a sporgere e a rompersi finché non sputo per terra un’intera arcata dentale superiore sporca di sangue. Tutti i denti sono appuntiti, fusi uno all’altro ed ormai larghi e spessi più di un centimetro ciascuno.

Non sembravano più denti animali, direi piuttosto demoniaci. Tutti diversi tra loro, deformi e disordinati.

Incredulo ma sollevato per aver risolto il problema e di poter di nuovo chiudere la bocca, mi alzo per guardarmi allo specchio convinto di non avere più i denti superiori. Invece trovo al loro posto non una ma ben due file di denti semi trasformati una davanti all’altra. Ho il doppio dei denti del normale, e tutti sono appuntiti ed affilati.
Guardo il dente da cui tutto ebbe inizio, ancora chiuso nella mia mano destra, e vedo che ora anche lui si è trasformato. Anche lui adesso è affilato ed appuntito, lungo il doppio di prima, con una punta centrale e altre due più piccole laterali.
Mi osservo allo specchio per qualche minuto riprendendo fiato, poi tutto ricomincia. Le file di denti continuano ad avanzare, io raccolgo i denti che ho già perso e mi metto davanti al lavandino, pronto a sputarne altri.

Riconosco benissimo la sensazione di ossa che si spostano nelle gengive e di bocca bagnata di sangue. Inizio uno dopo l’altro a sputare altri denti sempre più grandi, a volte uno da solo, a volte più di uno fusi insieme. La crescita è più veloce della prima volta ma ormai so già come funziona, e nei minuti che passo li davanti al lavandino a muovere la bocca per staccare e sputare denti ho il tempo di chiedermi cosa stia accadendo. Penso che sia uno di quegli eventi che una persona religiosa collegherebbe subito ad una possessione demoniaca o ad una qualche punizione divina, ma deve per forza esserci una spiegazione razionale. Anche se da quel fottuto primo dente in poi è stata una crescita continua, prima o poi questa cosa dovrà per forza finire. Spero magari senza paralizzarmi la bocca o l’intera faccia.

Continuo a sputare e collezionare denti nel lavandino, ed inizio a pensare anche io che l’opzione della punizione divina abbia in fondo il suo senso, visto che di senso logico o medico è impossibile trovarne in quello che mi sta accadendo.
Alla fine arriva il momento in cui non ho più niente da sputare.

Rimango fermo con l’affanno, e muovendo la bocca mi accorgo che adesso è completamente vuota. Solo gengive e labbra insanguinate componevano la mia bocca ora; nessun dente al suo interno.

Vengo preso dalla felicità e penso di aver vinto io, di aver superato quella maledizione che chissà per quale motivo mi era stata mandata. Perdere tutti i denti non era la peggiore delle ipotesi che avevo preso in considerazione visto che non avevo idea di cosa stesse succedendo.

Alzo lo sguardo per guardarmi allo specchio e vedo me stesso nel nuovo corpo e viso di donna. Capelli chiari, distesi perché bagnati dal sudore della fronte e dal sangue. Faccia tutta sudata e bocca insanguinata. 

Mi guardo e mi sembro una strega. Sono cattiva. Qualcosa anche dentro di me era cambiata. Inizio a ridere, perché quell’immagine che vedo di me mi piace.

Pensieri #8

La vita, in se per se, fa schifo.
L’unica certezza che contiene è quella della morte; che tutto ciò che farai e le emozioni che proverai svaniranno senza lasciarti niente.
Ma proprio questo è il suo più grande dono, perché grazie ad esso hai la libertà di poterla prendere con leggerezza. Di non dare troppa importanza ai problemi e alle sfortune perché tanto ogni cosa fa meno paura difronte alla morte.
Ed è questo che rende questa vita in questo mondo, giorno per giorno, una cosa meravigliosa.

Pensieri #7: Meglio veri che perfetti

Meglio veri che perfetti.
Questo è ciò che ho pensato ieri sera durante lo spettacolo musicale tenutosi al Petit Théâtre du Bonheur. Quella banda di matti mi emoziona sempre, mi ricordano quella parte di Italia che apprezzavo, la sola parte d’Italia che riesce a mancarmi.
Meglio veri che perfetti. 4 parole, una frase. Talmente semplice da pronunciare che risuona quasi banale, eppure ieri sera mi è balenata per la testa come un’intuizione, come quelle idee che compaiono all’improvviso e in un attimo ti danno la certezza di aver toccato il punto focale della questione.

Meglio veri che perfetti. È questo ciò che hanno capito tutte quelle persone che ci fanno da maestri, coloro che ispirano la società, che rompendo gli schemi la costringono ad avanzare. Sono coloro che conoscono l’importanza di seguire l’istinto e fare le cose esattamente come se le sentono, probabilmente sbagliando, ma così facendo insegnando qualcosa a loro stessi e agli altri.
Quante volte ci capita di invidiare chi riesce a ballare a centro sala senza essere un ballerino provetto, chi ha il coraggio di dire la sua davanti una piazza piena di persone senza possedere una verità oggettiva assoluta, chi ha il coraggio di mostrarsi per quello che è dando più importanza al sorriso che ai vestiti o alla pettinatura?

Chi finge, chi nasconde i propri difetti, potrà anche riuscire a sembrare perfetto a chi ha intorno, ma resterà sempre vulnerabile, rinchiuso in una gabbia da lui stesso creata. Non potrà farsi conoscere veramente per paura che quei difetti vengano a galla. Gli sarà vietato lasciare il suo tocco personale alle cose per paura di sbagliare.

I “veri” propongono il proprio modo di vedere le cose, di vivere un determinato momento, modificando il contesto che trovano. Di sicuro sbagliano, ma sbagliando imparano, portando avanti loro stessi e chi hanno intorno lungo questo viaggio che è la vita.
I “perfetti” cercano di incastrarsi comodamente nel loro ruolo, al sicuro dalla paura di mostrarsi imperfetti quindi vulnerabili. Si precludono la possibilità di lasciare parte di se stessi in ciò che fanno, e così facendo scompaiono. Lasciano nella memoria di chi li conosce solo la maschera che han deciso di indossare.

Essere veri significa già essere perfetti, perché in fondo la perfezione non esiste e il massimo che possiamo fare è abbracciare l’errore come spinta per il cambiamento, che ci porterà ad essere ogni volta un po migliori.
Non aver paura di sbagliare e viversi al massimo ogni esperienza, imparando ogni volta qualcosa. Ecco la sola perfezione.

Meglio sforzarsi di essere veri anche quando ci fa paura, che fingere di essere perfetti.
“Perché la vita è quella cosa che accade mentre sei fermo a chiederti cosa fare”