Archivi autore: Cippo

Mega pippa mentale sul mio senso della vita

Madonna in questi giorni sono gasato al 2000 % per Social.Art. non riesco a pensare ad altro.

ora sto muovendo il cervello nella direzione di cercare finanziamenti. qui a parigi il panorama imprenditoriale giovanile è molto avanti. e davvero viste le idee che girano si può fare colpo facilmente.
inizio seriamente a cercare contatti per quel mondo.
se immagino la vita che faccio qui nel tempo fuori dal lavoro, cioè tutta divertimento tra amici, godersi la bellezza della vita e della città, ma con un gruppo di persone con un obiettivo comune che “lavora” senza sentire nemmeno il peso del lavoro perché ama ciò che fa, beh mi viene da chiamarlo paradiso.
Bene questa è la volta buona che lo realizzo. Parigi mi ha motivato tantissimo da questo punto di vista.
Ora considero casa mia e lo spirito che cerco di mantenere come un’azienda. non nel senso economico ovviamente, ma di spirito di gruppo. così vorrei la mia azienda.
Uno spirito che si tramanda di persona in persona, lasciando un bel ricordo in tutta la gente che ci passa. Un gruppo di persone sempre unito, senza barriere, che diventano così uniti da avere tutto a livello emozionale in comune, ed un amico di un tuo amico lo senti immediatamente amico tuo ed entra a far parte della famiglia.
e non importa chi sia e come sia questa persona. Basta che alla base sia una buona persona, compatibile con questa visione che tutti si meritano il tuo bene, e che dare il tuo bene agli altri ti arricchisce 10 volte di più perchè in cambio avrai il loro, su cui potrai sempre contare.
non importa chi sia la nuova persona, perchè se compatibile verrà contagiata dallo spirito della casa perchè ora non sono solo io a voler tramandare questo bell’ambiente, ma ogni persona che ne è entrata ha questo stesso istinto. è naturale. quindi anche se le persone nuove non hanno esperienza nel fidarsi così del prossimo, verranno contagiate da quella casa e impareranno ad avere fiducia. e col tempo la certezza che quella è la visione giusta entrerà anche in loro.
può sembrare presuntuoso questo discorso, visto che sto parlando di tutt’altro che un’azienda, e in fondo di ancora poche persone, ma potrei davvero definire l’esperienza che sto facendo in quella casa come l’allenamento per quella che sarà “l’azienda” (non mi piace chiamarla così) che voglio creare.
il mio sogno più grande è prendere un gruppo di miei amici che ritengo compatibili con questa visione, è mostrargli che è il modo più bello di vivere la vita. avere fiducia nel prossimo, ed avere la certezza che dare del bene al prossimo è la cosa migliore che puoi fare perchè ti arricchisce enormemente.
prendere queste persone che magari non sanno cosa fare nella vita a breve termine perchè non hanno un lavoro o non sanno cosa farne della laurea che hanno preso, e mettere insieme i punti forti di ognuno per un progetto comune, che dia insieme stimolo a liberare la propria creatività come faresti nel tempo libero, e sicurezza economica per non dover preoccuparsi più dei soldi.
per me è la cosa più grande che si potrebbe realizzare, più importante.
se fai qualcosa che ti piace davvero nella vita, ed elimini tutte le preoccupazioni legate al denaro, sei una persona libera oltre che felice. libera di goderti la vita come meglio vuoi, di apprezzare il tempo che passa perché realizzi i tuoi obiettivi personali un po alla volta senza altro in testa, come crearsi una bella famiglia senza tornare a casa la sera e litigare con tua moglie perchè a lavoro hai un capo stronzo o perchè bisogna tirare ancora la cinghia per arrivare alla fine del mese.
sarebbe la base per rendere felice quel gruppo di amici. dargli la tranquillità e la fiducia in se stessi e negli altri per vivere al meglio la loro vita. e facendo propria questa visione, senza più aver bisogno di preoccuparsi per se stessi non avendo più insoddisfazione e stupidi problemi economici *, sarebbero poi loro stessi a tramandare a loro volta questa visione “iniziando” altre persone che secondo loro potrebbero fare questo salto.
Questo ora è il mio più grande sogno. Se realizzassi questa cosa cambiando le vite dei miei amici potrei morire come la persona più felice del mondo.
Credo sia la normale conseguenza dell’essere uscito dalla storia 1 a 1 con Giulia. A quei tempi la cosa più bella che sentivo di poter fare era dare tutto per lei; fare ogni cosa umanamente possibile per rendere felice una persona. Aiutarla nei momenti di bisogno e regalarle l’impossibile.
Ovviamente ho miseramente fallito perchè non avevo capito che la felicità bisogna costruirsela dentro di se, e non riceverla a scatola chiusa dall’esterno. Ero arrivato a colpevolizzarla inconsciamente perchè nonostante il “pacchetto pronto” che le offrivo non era felice. Si lamentava di non avere ciò che io le offrivo sotto il naso. E non capivo… che stupido che ero.
e credo che questa mia voglia di fare del bene agli amici sia la mia voglia di avere una seconda occasione. di riscattarmi per il male che ho involontariamente fatto ad una persona, e perchè lasciare il mondo più felice di come lo abbiamo trovato è la cosa migliore che possiamo fare.
e guarda caso, penso che tutto questo possa nascere proprio da Social.Art! Evolvere lo spirito della casa per direzionarlo verso un obiettivo comune. In questo senso è un bene che sia stato inventato il denaro, perchè crea un bisogno che puoi sfruttare per motivare le persone verso un obiettivo. (lo so che è la cosa più capitalistica e cattiva che potessi dire, ma voglio sfruttare queste regole non scritte da me per fare del bene). in più rende la motivazione duratura nel tempo.
È un bel progetto, che può ispirare e liberare la mente degli utilizzatori, e stimolare la creatività dei suoi creatori. E può realmente produrre denaro, è un’idea che funzionerà.  Ovviamente all’inizio, poi una volta fatto il grosso dei soldi bisognerà evolversi verso una nuova idea o separarsi e diffondere questo spirito altrove.
E ognuno può portare il proprio contributo con quello che sa, applicando le proprie conoscenze in settori diversi grazie alla motivazione che produce creatività. all’inizio sarà difficile sfruttare competenze che non c’entrano direttamente con lo sviluppo del progetto, ma quando saremo grandi la motivazione e la creatività varranno più di ogni laurea per un assunzione.
* come mi sento io ora, a questo livello superiore di consapevolezza della vita rispetto a chi mi circonda.

Solo coordinate assolute

Conversione alle coordinate assolute completata.

Per affrontare il problema di visualizzazione alle buone coordinate avevo seguito la strada di convertire e mantenere aggiornate nella memoria locale tutte le coordinate assolute in px dello schermo. Ora che la visualizzazione funziona correttamente l’ho modificata per farla funzionare utilizzando solo coordinate assolute.

In questo modo devo fare molti meno calcoli su drag per mantenere aggiornata la cache locale. Ho comunque conservato il codice commentato perché potrebbe rivelarsi la soluzione migliore per individuare il disegno non trasparente indicato dal cursore.

Ciao a tutti!

FINALMENTEEEEEEEE!!!!!!

Finalmente funziona!

Sono stato sveglio fino alle 5, ma ne è valsa la pena! Un test illuminante (che avrei anche potuto pensare prima…) mi ha mostrato che il punto di origine rimane fisso. Se solo lo avessi saputo fin dall’inizio avrei evitato mille pippe mentali su quel fottuto punto. È stato più complicato da trovare del misterioso punto G di una figa nuova.

In effetti sono settimane che non faccio altro che interrogarmi sull’origine del punto G. Anche informaticamente  parlando, viva la figa.

Comunque, ora posso avanzare col progetto. Ci sono ancora dei piccoli problemi di arrotondamento, e avendo finalmente compreso come funziona la tecnologia che sto usando posso valutare di tornare ad avere solo coordinate assolute per semplificarmi i lavoro JS. Ma le coordinate sono comunque date per fatte.

Ora devo separare versione Dev e versione Beta pubblica, con due db diversi, due url e due versione del codice, e lasciare sempre attivo il servizio backend della Beta. E si comincia!

Ho dato una letta ed una pulita al progetto su Trello, ed ho ritrovato un sacco di idee fighe veloci da implementare. Credo che nel breve periodo mi dedicherò a queste aggiunte di nuove funzionalità per ritrovare un po il piacere di programmare e veder avanzare il progetto, sparando una raffica di commit.

Bug coordinate Dashboard #8

News veloce veloce.

Mi sfugge il perché, ma ora sembra proprio che il punto di origine di ogni immagine aggiunta in futuro sia il punto di origine della prima immagine, che essendo inserita quando il tag g è vuoto parte dal punto di origine dell,svg, che nella dashboard è l’origine dello schermo.

Quindi _groupCoordX e Y partono da (0, 0) e devono subire lo stesso trattamento di drag e zoom delle coordinate delle singole immagini, e dovrebbe funzionare.

Stay Tuned, e porcoddio finchè non funziona.

Bug coordinate Dashboard #7

OOOOOttimi passi avanti!

Ovviamente non funziona ancora, ma questa volta davvero si vede la luce in fondo al tunnel.

Ora posso dire con assoluta certezza (ahahaha come no) che i calcoli sono corretti! Pxx Pxy risultano sempre coerenti.

Il solo problema è che ancora una volta il funzionamento del tag g non è quello che mi aspettavo, e trovare documentazione su come cambia il sistema di coordinate relativo all’interno del tag g non è facile. Ma non si tratta più di un problema di calcoli o di algoritmo! Ora devo solo capire da che punto applicare le coordinate dei disegni e poi tutto funziona.

Sembrerebbe che il tag g viene inizializzato meno volte possibile, significa che finché il primo disegno è presente, sarà lui a determinare il punto di origine di tutto il tag g. Finora se volevo aggiungere 3 disegni alle coordinate x assolute -1 -5  e -10, li visualizzavo passando -1 -4 e -5, perché pensavo che ogni nuovo disegno ridefinisse le coordinate dell’intero gruppo. Invece devo richiamarli con -1 -4 e -9, perché l’origine è stata settata solo la prima volta.

Questo almeno finchè il disegno di origine non viene rimosso. In quel caso il nuovo punto di origine diventa il px più in alto a sinistra di tutti i disegni del gruppo. Potrei cercare di stare dietro a tutti questi cambiamenti, ma troppo sbatti.

Quindi la nuova idea è di aggiungere un elemento fasullo al tag g, tipo un rect di 1 px X 1 px (meglio 0 X 0 se funziona comunque) nella funzione GoToXY, e non rimuoverlo mai. Così dovrei avere un punto di riferimento fisso per sempre, fino al prossimo salto ad un altro punto della lavagna. E se lo imposto alle coordinate correnti della lavagna mi semplifico di molto i calcoli perché potrei usare direttamente la x e la y assolute che ricevo dal server moltiplicandole per lo scale. Potrebbe funzionare! E semplificarmi di molto la vita.

Bug coordinate Dashboard #6

Santo Graal delle bestemmie trovato!

Come ho fatto a non pensarci prima. I px all’interno del tag G sono sempre da intendersi con scale = 1! Quindi è ovvio che ragionare in px dello schermo non va bene, perché all’esterno del tag G 1 px della variabile = 1 px dello schermo, ma all’interno del G 1 px della variabile = (1 / scale) px dello schermo.

Non sono sicuro che questo risolva tutti i problemi, ma di sicuro in quando non correggo questo problema non potrà funzionare.

Come fare… mmm.. dunque

Ho comunque bisogno di coordinate in cache in px schermo di ogni disegno per quando implementerò il click sulla dashboard (magari in futuro questa idea si rivelerà una cazzata ed eliminerò parecchio codice su drag e zoom, ma per ora lo tengo), quindi continuo con gli _updateCacheForDrag e _updateCacheForZoom. Ma al momento della visualizzazione oltre che sottrarre le attuali coordinate in px generali del gruppo, devo anche moltiplicare per lo scale.

E fine, speriamo che funzioni e che non ci sia altro.

Ho modificato anche il socket backend per non inviare 2 volte lo stesso disegno allo stesso client. Quando implementerò la cache client che elimina i disegni vecchi, dovrò comunicare al server che in caso di bisogno devono essere trasferiti di nuovo.

Bug coordinate Dashboard #5

Le idee esposte nell’articolo precedente sono state implementate. Non so se alla perfezione perché non ho avuto molto interesse nel testarle bene visti i continui problemi, ma sembra comunque risolto il problema del tag <g>.

Non capisco per quale fottuto motivo ma i disegni e le loro coordinate sono sfasati nel tempo. Sono asincroni, perché le coordinate alle quali vengono visualizzati dipende da quanto zoom /drag hai fatto da quando hai richiesto il disegno. Ciò è palese con lo zoom: compaiono in posti diversi in base a quanto velocemente hai zoomato.

Ovviamente so il punto della logica del codice dove questo problema, perché sono pochi i punti del codice in cui vengono richiamate funzioni sincronicamente rispetto al resto dell’esecuzione. Ma cazzo il calcolo di dove visualizzarli avviene appunto dopo queste chiamate, quindi in modo sincrono rispetto alla reale aggiunta alla dashboard.

Quindi che cazzo gliene frega al codice se quando ho richiesto il disegno dal server avevo un livello di zoom  e coordinate assolute diverse?

1) mouseWheel

2) “quando hai tempo” fai lo zoom

3) zoom della dashboard attuale e richiesta dei disegni nuovi

4) “quando ricevo un disegno” calcolo dove visualizzarlo in base alle coordinate / zoom attuali.

Che cazzo me ne frega se ci sono passaggi asincroni? Tanto dal server ricevo sempre le coordinate assolute, e la conversione a relative è fatta solo al momento della reale visualizzazione, in base allo stato della dashboard in quel momento.

Che cazzo ne so

Comunque una news interessante oggi c’è. A lavoro mi stanno insegnando parecchio su come testare le reali performance di ogni parte del codice, l’utilizzo di memoria, e tempi di esecuzione di ogni funzione grazie ai tool di chrome. Quando sarà il momento di ottimizzare il codice verrà fuori un prodotto eccezionale.

Bug coordinate Dashboard #4

Eccomi di ritorno.

Mi son preso una pausa tra vacanzina in italia e depressione per i mille bug riscontrati.

I bug sono tanti, ma le madonne sono ancora di più. Vinceremo noi

In pratica cosa ho deciso di fare:

  • In cache ogni oggetto avrà x , y , w , h , come valori assoluti in base alle coordinate della dashboard, e pxx pxy pxw pxh che saranno tarati in funzione dei px dello schermo, ed un flag isVisible;
  • su drag e zoom aggiornerò i 4 parametri px di tutta la cache, ed il flag isVisibile, ed anche l’array _imagesVisibleIds;
  • creo due array con tutte le coordinate pxx e pxy di tutti i disegni visibili sulla dashboard:
    • su aggiunta e rimozione di un disegno sarà sufficiente aggiungere / rimuovere la sua coordinata dagli array
    • su drag e zoom dopo aver aggiornato tutta la cache, ricreo questi array con tutte le coordinate dei disegni isVisible === true
  • quando devo aggiungere un nuovo disegno uso le coordinate minime di questi array come coordinate del tag <g>
  • e su _appendDraw devo sistemare che vengano impilati correttamente in ordine di ID

Dovrebbe funzionate, ma ormai meglio non illudersi più

Bug coordinate Dashboard #3

Problemi di coordinate sempre nuovi :(

Dunque, questa volta credo sia proprio colpa mia, che non ho capito il funzionamento delle tecnologie che ho deciso di utilizzare.

Quel fottuto transofrm matrix del tag <g> del svg non fa ciò che io pensavo. Sono stato tratto in inganno dal fatto che il browser inspector me lo evidenza come un elemento, con larghezza e altezza e una posizione, ma a livello di API è solo una scorciatoia per applicare modifiche ad un gruppo di elementi in un colpo solo. Niente di più.

Ma in quest’ottica non capisco che senso abbia dover specificare coordinate relative al tag <g> per poterci aggiungere una nuova immagine, visto che poi le sue proprie coordinate, all’interno del svg, continuano a cambiare ad ogni aggiunta / rimozione di un figlio.

In sostanza, il passaggio da coordinate dello schermo a coordinate del gruppo fallisce stupidamente, perché io mi affidavo alle x e y del matrix, che a differenza di quel che pensavo io non sono le coordinate ma solo l’equivalente di quanto è stato traslato il tag dal momento della sua creazione.

Quindi, che fare? L’illuminazione migliore avuta fino ad ora mi è arrivata stamattina al risveglio. Ad ogni aggiunta o rimozione sulla dashboard, tengo aggiornati due array che contengono tutte le coordinate x e y delle immagini presenti nel svg. In fondo il tag <g> come coordinate ha praticamente la minima x e la minima y tra tutte le immagini che contiene.

In questo modo lavoro su 2 array di numeri e non su un array di oggetti grossi come le immagini. Penso possa andare.

Ma questa volta prima di partire col codice voglio studiare bene l’argomento. Cercherò su internet altre possibili soluzioni per questo problema, e leggerò la documentazione.