Gitbar logo

Gitbar Italian developer podcast

Conversazioni sullo sviluppo software fatte davanti a una birra.

copertina episodio

Directus, Democratizzazione della data platform

Stagione 4 Episodio 155 Durata 01:48:31

Questa settimana parliamo di un tool che mi ha appassionato tanto. Si tratta di directus, non solo un headless cms ma una vera data platform! Ne parliamo con Luca Rainone e Carmine Di Monaco, anche loro baristi del gitbar!

Supportaci su

https://www.gitbar.it/support

Ringraziamo

Paese dei balocchi

Link amazon affiliato

https://amzn.to/3XDznm1

Per favore ascoltaci usando una di queste app:

https://podcastindex.org/apps

Contatti

@brainrepo su twitter o via mail a https://gitbar.it.

Crediti

Le sigle sono state prodotte da MondoComputazionale
Le musiche da Blan Kytt - RSPN
Sweet Lullaby by Agnese Valmaggia
Monkeys Spinning Monkeys by Kevin MacLeod

Trascrizione

Bene e benvenuti su Gitbar, nuova settimana e nuovo episodio qua nel nostro bar degli sviluppatori.

Stiamo registrando questa puntata in extremis perché sono successe un po' di cose e in realtà siamo arrivati giusto in tempo per registrarla.

Io tra poche ore ho un volo ma questa puntata andava per forza registrata.

Ehm...

Oggi prima di iniziare vi dico subito che sono in compagnia di Carmine e Luca.

Ciao ragazzi come state? Ciao, tutto bene tutto bene.

Vai Carmine dici tutto io ti ho rubato la parola.

No no no ciao ciao ragazzi tutto bene tutto bene.

Fortunatamente.

Prima di iniziare a parlare di una cosa che sono sicuro che vi gaserà parecchio perché a noi ha gasato vi anticipo e vi dico che in realtà seguiranno delle puntate molto molto interessanti.

Una l'avremo dovuta registrare oggi ma ahimè non si potrà registrare però stay tuned perché le prossime puntate saranno molto molto particolari.

Detto questo io vi ricordo rapidamente i nostri contatti.

Info c'ho la gitbar.it e etbrain.repo sono i modi classici per contattarci.

Per classici si intende quelli che non usa nessuno e poi c'è ovviamente il gruppo telegram andate su telegram cercate gitbar podcast e cliccate o tappate sul nostro logo sul logo giallo con su scritto gitbar non penso che potete sbagliare.

Siamo più di 1200 esatto.

Altre informazioni nuova nuova fresca fresca siamo qualcosa si è mosso su gitbar e siamo diventati community partner di we are developers.

Cosa è importante? Nei prossimi giorni ci sarà una raffle penso si dica così dove sorteggeremo un po' di cose interessanti proprio riguardanti we are developers.

Anche qua vi dico stay tuned.

Ah vedi che voleva dire qualcosa.

In realtà non volevo farlo.

La raffle mi hai quasi costretto.

Sto scherzando.

Detto questo io direi che possiamo iniziare.

Benvenuti su Gitbar il podcast dedicato al mondo dei full stack developer i mezzo artigiani, i mezzo artisti che ogni giorno infilano le mani nel fango per creare nel modo più efficiente possibile quei prodotti digitali che quotidianamente usiamo.

Siamo sempre mediamente pigri lo sviluppatore tipo cerca di fare meno lavoro possibile per farlo fare ai propri tool e qua in questa tavola rotonda io, Carmine e Luca non siamo immuni da questo approccio.

Cerchiamo sempre di semplificare la nostra vita.

Allora volevo chiedervi per iniziare così per squagliare il ghiaccio, come si rompe il ghiaccio eh...

qual è stata la volta che un tool al quale avete dedicato qualche ora vi ha ridotto drasticamente la mole di lavoro poi a seguire? Quando è stata l'ultima volta? Scusami mi sono perso.

Quando è stata l'ultima volta? La volta più potente dove vi siete resi conto che con un investimento di veramente poche ore siete riusciti a ritagliare, a ottenere, a risparmiare più tempo.

Allora io forse ce l'ho, anzi ne ho due.

Uno però è puro codice, nel senso quando qualche anno fa ho scoperto Onecible e poi l'ho scoperto, l'ho lasciato, poi lo sto riprendendo ora croce e delizia che effettivamente io configuravo non roba di però di produzione ma roba di insomma home lab con script bash e queste vecchissime formule salt, insomma roba veramente brutta.

Ho scoperto Onecible con un investimento di 3-4 ore, ha automatizzato tutto, sono stato contentissimo e un altro tool che che c'entra è stato Postman.

Non so che di voi ha utilizzato Postman con l'account Enterprise, io una volta sola perché c'era chi pagava ed è stato meraviglioso, una maria di cazzi risolti incredibili, condivisione delle richieste, OpenAPI, mock server, veramente il tutto già pronto e poi Strapi in realtà, con Strapi mi sono trovato veramente bene che magari si ricollega anche a quello di cui parleremo tra poco qualche mese.

Ecco io lasciando quello di cui parleremo tra poco, che non voglio spoilerare, non è stato spoilerato, non lo spoilerò.

Ho in mente effettivamente quando forse è un po' ridicolo da dire, però quando ho provato l'IDE per la prima volta, un IDE serio per la prima volta che ero passato sì non dico da blocco note eclipse, però quando sono passato da eclipse a WebStorm a PHPStorm, quello è stata una rivelazione.

Faceva, non è che generava, autogenerava chissà quanto codici o chissà che cosa, però faceva quello che doveva fare, nel modo in cui lo doveva fare e risparmiava un sacco, un sacco, un sacco di tempo.

E poi l'ultima volta, sì, ma non spoilerò.

Io ho un po' un'esperienza simile, voi sapete tutti i miei fallimenti dei miei side project, io ho un'idea per cappello, anche se li sto perdendo ancora, me ne rimangono un po', quindi un po' di idee, ma non ho il tempo per realizzarle.

E quindi trovare il modo per metterla in piedi, qualunque idea fosse, è comunque un un è comunque dare la possibilità a questa idea di nascere.

Molte delle mie idee sono finite abortite, poche altre in realtà sono sopravvissute e sono quelle idee che hanno fatto ampio uso di strumenti che non fossero il mero codice.

Ricordo un po' di anni fa feci questo sito, ho ancora il dominio, si chiamava...

io, voi sapete, io sono un giornalista, e ne ho fatto questo sito che era Gazettino Sardo si chiamava, e aggregava tutte le notizie locali del mio territorio.

Per farlo però io avevo bisogno di un back-end, perché sì, vabbè, fai scraping, fai quello che ti pare, butti nel database, però poi devi anche un po' fare la parte editoriale e utilizzare Strapi.

Ecco Strapi, bello, un innamoramento immediato, ma subito dopo inizia il bagno di sangue e le bestemmie.

Il primo problema che ebbi fu allora Strapi cosa fa intanto? Strapi è, possiamo chiamarlo un back-end as a service self-hosted, ti espone dell'API REST con un plugin ti espone anche del GraphQL, neè, io ci ho lavorato con quel plugin ed è meglio spararsi in bocca, e e poi hai una bella UI che ti permette di gestire tutta sta roba.

La cosa infatti che ha in più rispetto a un sub-base della situazione è questa bella UI per la gestione fortemente configurabile, ti puoi cambiare i campi di input, molto carina.

Primo scoglio che trovai fu l'autenticazione server-server, io avevo degli script Python che giravano su delle lambda che dovevano iniettare i dati su un endpoint protetto di Strapi, ma Strapi supportava solo l'autenticazione OAuth per questo tipo di cosa, non esisteva un token server-server e questo all'inizio fu un problema e allora mi sviluppai un endpoint che potesse gestire, un'estensione per Strapi che potesse gestire questa autenticazione.

Altro problema, il backend non è sempre utilizzato da noi, ma è utilizzato mediamente dall'utonto della situazione.

E con Strapi mi ritrovai con delle UI abbastanza complesse per come è strutturato Strapi, per i suoi limiti, no? E alla fine l'utente si perdeva, ma io non avevo possibilità di mettere mano in queste UI e quindi non potevo per esempio scrivere un campo per l'inserimento di dati attraverso, che ne so, mappa 3D.

Non è possibile.

A quel punto mi resi conto che avevo toccato i limiti del tool low-code, perché anche Strapi di per sé è un tool low-code, e a quel punto pensai i limiti del low-code ci sono e in tempo zero si manifestano.

Esisterà un modo per spingere spingere i limiti più lontano possibile? E prima di introdurre il prossimo argomento voglio chiedervi avete mai toccato i limiti del tool? E soprattutto fino a quando, fino a che punto siete stati disposti a spingere oltre quei tool, mettendoci, quei limiti, mettendoci mano, hackando, magari leggendo il codice sorgente e trovando un modo, un grimaldello per scassinarlo? Tutte le volte con tutti i tool e tutti i servizi anche a volte, in alcuni casi ma non fare l'elenco.

Beh i tool sono fatti proprio per essere hackati.

I tool fatti soprattutto da programmatori per programmatori quello è lo scopo.

Vuoi o non vuoi quando ne fai uno devi mettere in conto che chi lo utilizza lo porterà al limite e supererà i limiti.

Io tutte le volte.

Carmine? Anch'io.

Purtroppo.

Quando allora mi son trovato davanti a questo problema mi sono reso conto che dovevo scrivermi del codice da me però scrivere del codice da te se vuoi fare una cosa decente ti prenderà un sacco di tempo e se stai lavorando e hai una bambina piccola questo diventa impossibile no? e quindi boom ho sospeso praticamente tutte le attività.

Cos'è successo però? E' successo che qualche mese fa i miei soci in Sardegna, io opero anche nell'ambito di agenze di viaggi, centri escursioni e così questo tipo sono venuti da me e mi hanno detto Mauro il software che abbiamo realizzato tanti anni fa non va manco a calci era un vecchio software monolita php con symphony con talmente tanto legacy code e debito tecnico che era diventato ingestibile ma proprio non potevo aggiornare che ne so elastic search perché crollava tutto e se avessi dovuto aggiornare una libreria ne avrei dovuto aggiornare altri 70, altri 70 no? Tutti conosciamo questa situazione a quel punto facendo una valutazione dici ma meglio che lo butto e scrivo tutto da capo ma come ho detto nella mia puntata di Italo Calvino buttare e riscrivere tutto da capo a meno che tu non hai un budget grande probabilmente non è la scelta migliore esistono delle tecniche un pochino più proficue morale della favola mi serviva dare questo strumento ai miei soci e come faccio a dare uno strumento quando io sto lavorando 8 ore al giorno c'è il podcast, c'è la bambina, c'è anche i miei cazzi e però lo devo fare perché la società in parte è anche la mia e quindi devo dare il mio contributo e tu sei il tiki e non hai budget per andare da una società di consulenza e dirgli oh mi servono quattro ingegneri full time per fare questo cosa fai? sei in un loop per uscire dal loop ho detto facciamo all in su un tool low code e no code quale tool utilizzare? all'inizio ho pensato a retools il problema di retools si chiama? retool, si si quello a pago retool quelli io ho preso centinaia ormai che sono diventati crudi retool e però il primo scoglio che ho incontrato è stato il crude l'amico di Carmine no? il crudino della chiesa le nostre applicazioni di per sé sono fatte boh possiamo dirlo il 90% da crude e il 10% da logica di business? l'80% crude il 10% per il ground job e l'altro 10% per gli altri hai fatto uno spaccato più preciso del mio fondamentalmente retool però non semplifica la creazione del crude perché te lo devi fa ti devi fare il form trascinando i campetti ti devi fare il pulsante di salvataggio ti devi fare magari la notifica che è salvato e se vuoi fare un pulsante che ti apre un sub form o un sub form di form di form con relative relazioni fai prima che ti scrivi le robe sì sì sì sì sì sì ecco secondo me ecco retool e compagni sono tool per chi sviluppa già cioè sono comunque tool che lo sviluppatore fa per altri sviluppatori infatti anche loro li chiamano internal tools insomma anche perché ad un certo punto arrivi a quello scoglio per cui ok devo prendere queste righe dal database quindi ho bisogno del mio database delle credenze alci devo fare la query eccetera eccetera considerando anche che la UI con questo questo sistema che entrò tipo non so front page non lo so hai bisogno comunque di farlo a me ricorda un po' app inventor che non so se esiste ancora in realtà ma era quel coso per fare le applicazioni ad android tipo facendo drag and drop della cosa però effettivamente ecco lì arrivi secondo me subito a un punto in cui chi rompe i coglioni esatto ed è quello che è l'esperienza che ho vissuto altra cosa che mi serviva era un sistema d'autenticazione tool come questi ti danno out of the box se te la vai a fare anche se usi out0 che è un servizio che ti fa il sistema di autenticazione comunque te la devi andare a fare io non so chi di voi si è configurato out0 sono comunque 20 minuti di rotture di balle vai prendi le API key configura chiamo out0 fai questo e questo il sistema di autorizzazione tutte le mie idee sono mediamente dei sasno quindi un po' tutti hanno bisogno del sistema d'autorizzazione un sistema di workflow quindi la possibilità di schedulare delle cose l'ha detto carmine poco fa no? il sistema di che ti permette di archiviare dei file fare l'upload tutte le nostre applicazioni devono fare l'upload per quanto semplice che possa essere per quanto possa essere un avatar ok? nel profilo dell'utente che è la cosa più inutile e insulsa del mondo tra l'altro Luca nel tuo POC ho visto che hai uploadato anche l'avatar quindi sei stato attento in questo è certo è la prima cosa che fanno la cosa più inutile ma deve essere la cosa perché è quello che si vuole quello che è la prima cosa che uno fa appena entra nel profilo perché cosa? non si sa non si sa è fino a qua esatto è fino a qua va bene queste sono esigenze che un po' tanti tool low code ci danno strapi in primis ci sono delle esposizioni di API perché il tool che noi utilizziamo fa sempre una parte del lavoro dall'altra parte noi vogliamo fare qualcosa di prettamente custom e quindi ci servono le API può essere per esempio il pannello di amministrazione di un CMS e le API ci servono per buildare il sito oltre a questo però quando i giochi si fanno duri hai bisogno anche di customizzare le viste quindi tutta la UI e customizzare i comportamenti un tool che mi desse tutto questo non l'ho trovato infatti tutti mi prendevano per il culo mi dicevano eh Mauro stai cercando la luna mettiti il culo sulla sedia e scrivi il codice se vuoi una roba del genere in realtà però un po' di tempo fa sono inciampato cercando una soluzione per risolvere questo problema per i miei soci sono inciampato in questo tool che si chiama Directus che cos'è Directus? non ve lo so spiegare che cos'è Directus bellissimo modo di iniziare una puntata perché Directus è tante robe Directus è intanto un back-end as a service però non è solo questo si divide avete presente quando si fa un carottaggio no? che quello che ne viene fuori è fatto da diversi strati cioè lo strato più base che è semplicemente un sistema che ti permette di fare delle query nei database diversi ne supporta un botto e ti espone delle API GraphQL e REST e già abbiamo coperto il caso d'uso di Asura e Company ok? oltre a questo aggiunge una serie di plus per esempio ti permette di gestire in modo facile tutta la parte di file storage il nostro upload quando dico database parlo di che ne so Postgre, Oracle, MySQL, SQLite, SQL Server e chi più ne ha più ne metta quando parlo di storage dei file parlo oltre allo storage locale parlo dello storage di tutti i cloud da Asura, GCP, S3, AWS quindi noi abbiamo già una parte di quello che noi faremmo in tutte le applicazioni a questo noi ci mettiamo tutta una parte di trattamento dei dati webhook e trigger driven quindi la possibilità di attivare dei workflow per la manipolazione dei dati su questo ci mettiamo un sistema di autorizzazione ci aggiungiamo un SDK e ci aggiungiamo un back-end customizzabile quindi possiamo fare le funzioni back-end esporre le API che più ci piacciono perché ce le scriviamo noi volendo e un front-end customizzabile ecco Directus è tutto questo insomma un bordello di robe ma la domanda che vi voglio fare è di queste robe se doveste stimare a spanne la possibilità di fare una piattaforma che utilizza tutte queste robe a livello di costi barra tempo quanto secondo voi puoi impegnare solo la creazione delle foundation e non abbiamo ancora scritto una riga di codice business una roba del genere posso essere bordo ma faccio prima la risposta non serve quella seria 5 minuti con Rails ma la risposta seria l'attuale è che ci vuole tempo ci vuole tanto tempo per le foundation e comunque sono quelle foundation che non finiscono mai anche perché, almeno questa è una mia tendenza diventa tutto foundation poi finisco per partire con che database uno ha questo bottone di che colore lo faccio insomma quindi ci vuole effettivamente tempo e credo sia anche una grande porzione del tempo che poi viene dato quando lo vuoi fare ad un professionista esterno o ad una azienda forse in questi casi può essere un po' diverso se la tipologia di prodotto è complessibile però si, 80-90 ore a capire di che si tratta e fare lo scaffolo di grazia se non ci vuole con tutto che usi framework quali Luca io so che tu hai fatto proprio un'esperienza con Directus da questo punto di vista dal tuo punto di vista tu che sei l'uomo che vuole sempre farsi le cose da sé come è stata questa esperienza? allora, proprio per questo motivo tu sai o sapete o se non sapete chi se ne frega io in genere sono molto critico nell'utilizzo di software, tool, applicazioni quant'altro esterni che ti nascondono che ti fanno magie e cose varie in realtà la cosa che mi ha sorpreso mi ha colpito purtroppo nessuno mi sta pagando per dire questo l'abbiamo detto prima è che comunque quello che costruisci è esattamente sotto al cofano è esattamente come avresti fatto tu quindi una volta ok, scelto il database perché supporta diversi tipi di database cominci a creare la tua struttura la struttura che ti serve quello che fa da sotto è proprio costruire il database per come l'hai disegnato e per come l'avresti fatto in quel caso e quindi questa cosa per come sono fatto io è stato un game changer aspetta ti faccio una domanda giusto per chiarificare questo quindi parli proprio della particolarità di Directus che fa sì che le sue tabelle interne sono tutte prefixate rimangono in un angolo e le tue tabelle di business sono belle pulite e non te le impiastriccia praticamente sì quello che ti offre lui appunto la gestione degli utenti eccetera sono nelle sue tabelle perché è il suo lavoro è la sua logica però tutta quella che è la tua di logica la tua business logic è tutta nella tua database di business è tutto in tabelle pulite che diciamo poi potresti anche esportare mettere da un'altra parte e continui ad avere la tua applicazione eventualmente senza Directus senza questo tool tornando poi alla tua domanda di prima effettivamente anche solo cominciare a pensare a decidere a fare tutto quello che è la base quindi login quindi gli utenti permessi e quant'altro io ormai dico sei mesi a tutto se proprio così, se poi ci vuole sei mesi via ma questo afficcio sono sei mesi va bene comunque sì ehm Ala hai ragione e questa cosa è una delle cose che mi ha tranquillizzato io quando approccio a questi tool la prima cosa che guardo è il Text Hack quindi sono andato a guardarmi in che lingua è scritto in che linguaggio è scritto che tecnologie usa quando ho visto che per la parte di Core usa Express anche se ho storto un po' il naso perché io sono della...

tifoso tifoso di Fastify ehm ho visto che per il frontend usa Vue.js già là ho tirato un respiro di sollievo e ho detto va bene non mi piace Express non mi piace Vue.js ma comunque non sono troppo lontani dalla mia zona di comfort quindi se proprio mi trovo in merda io comunque in un modo o nell'altro lo piego a fare quello che mi serve trovo il modo per piegarlo perché so gestire quel...

almeno abbatto quel livello di complessità una volta che ho iniziato a fare questo ho pensato subito al crude quindi tabelle di business e caricamento dei dati la prima cosa che mi serviva adesso vi farò ridere ma voi sapete che Mapbox supporta le mappe in tre dimensioni perché attraverso le...

l'analisi delle curve di livello del terreno fa delle proiezioni e quindi ti...

ti fa una sorta di Google Earth nella mappa, bene? per il tool che mi serviva io avevo bisogno di praticamente impostare lo scostamento laterale su e giù della telecamera si chiama Jig...

Sow credo, boh non mi ricordo come si chiamano e di salvare questi dati nel tool vecchio io avevo una piccola applicazione dove il mio socio puntava la telecamera gli usciva un bel JSON e faceva copia e incolla con Directus la prima cosa che mi sono chiesto è posso embeddare questo tool come se fosse un campo? mi sa Luca che te l'avevo fatto vedere questa cosa e...

e posso perché non ho fatto altro che scrivere un componente React rilasciarlo come un pacchetto su npm nella mia installazione di Directus fare npm install nome del pacchetto delle mappe calcare invio e automaticamente tra i campi senza fare altro eh tra i campi di Directus potevo selezionare quel valore quanto è figa questa feature? quanto è figa se stiamo parlando direttamente all'utente? se non è un tool che usiamo noi stessi ma è il nostro collega o la nostra collega la segretaria che non sa che cosa sia JSON e vede questa cosa e copiando e incollando si lascia fuori le parentesi graph perché pensava fossero un placeholder cosa è successa è ovvio e quindi questa cosa mi ha già fatto capire e vedi ci sono riuscito però come succede nello sviluppo di questi plugin ti dimentichi sempre un secret o una chiave all'interno del codice javascript e allora devi trovare il modo per esporre questa chiave non puoi rilasciarla nel pacchetto npm giusto? giusto? Diva Dio a quel punto ho detto ma come potrò mai fare a rilasciare questa chiave a fare in modo che in realtà sia l'applicazione stessa a fornire al componente questa chiave Directus già ti offre un API REST ma una cosa figa che ti permette di fare è che tu puoi creare un altro pacchettino npm che ti espone un handler di una rotta di express una cavolo di funzione che prende richiesta e risposta si prende il contesto e ti restituisce un risultato tu la crei e c'hai direttamente la rotta esposta ma quanto è figa questa cosa raga e ci scrivi il tuo codice javascript importandoti le librerie npm che ti servono e la ci scrivi la logica di business che può interagire anche col database a me in quel caso mi serviva solo prendermi da una variabile d'ambiente la chiave di Mapbox e esporla in un endpoint in modo che il mio componente AView potesse pingare l'endpoint e prendersi la chiave ho fatto la rotta tre righe di codice tra l'altro le estensioni per directus lo scaffolding si fa direttamente con un comando perché c'è una clipper generale e boom e avevo tutto funzionante due ore di lavoro cioè io una volta che ho fatto questo tipo di esperienza sono rimasto scioccato e ho detto ok io ho un tool ok ho un tool che mi fa delle cose però cacchio sto iniziando a piegarlo per fare quello che voglio una cosa che mi ha subito colto l'attenzione ok da un piccolo campo per il caricamento della mappa devo passare a uno strumento più complicato di booking ok il booking ha un elemento che è obbligatorio che è il planning il planning che cos'è se non una vista di una tabella sono andato a leggere la documentazione e ho visto che directus supporta viste customizzabili per ogni modello e ho detto vabbè che viste ci sono c'è una vista tipo tile di default c'è una vista di tipo table c'è una vista di tipo mappa e c'è una vista di tipo calendar che sono le base nella versione enterprise di directus quella hostata che ti vendono come servizio c'è anche la lista tipo gant chart e la vista tipo kanban board all'attrello per capirci ho detto ma io voglio il mio planning come posso fare ho seduto il culo sulla sedia mi sono creato il mio componente view tra l'altro il componente può utilizzare una libreria che si chiama la view sdk di directus che ti permette di accedere direttamente ai modelli senza chiamare gli end point ti espone una sorta di sdk e tu ti prendi le robe dalle tabelle rispettando i diritti dell'utente che lo vede quindi se carmine ha i diritti user io admin e carmine vede quella timeline vedrà solo i dati e le relazioni che hanno i diritti user e quindi così ho fatto anche questo componente a quel punto mi son detto vabbè avevo impostato le relazioni dell'utente in modo che vedesse solo i suoi dati non i dati impostati dagli altri perché directus ha un'altra cosa che io ho sempre desiderato da un tool low code che è l'impostazione dei diritti granulari cioè io posso dire carmine vede solo i dati che ha inserito lui di questa tabella o i dati che ha inserito qualcuno del suo team che ha più di 12 anni per esempio si può arrivare a fare con un piccolo tool di composizione di query una roba di questo tipo alla fine la query viene trasformata in una semplice query knex quindi un'ulteriore roba che possiamo controllare ma cosa succede se la mia vista custom o il mio plugin custom deve accedere a dei dati parzialmente trattati dei dati dei quali carmine non ha accesso per esempio il totale delle prenotazioni contando anche le prenotazioni degli altri utenti semplice ti crei un nuovo endpoint dall'endpoint tu gli dici fammi questa query bypassando il sistema di diritti glielo dice esplicito bypassando il sistema di diritti ti espone i nuovi dati e il tuo plugin component view leggerà i nuovi dati tutto questo è un software custom è un software ad hoc ma in un contesto che già ti da una serie di cose che sono le foundation comprese la parte UI delle foundation che giusto per citare carmine Rails non ti da o almeno non a questo livello è out of the box cioè stai usando le tecnologie che quasi useresti tutti i giorni in un contesto dove l'80% del lavoro è fatto dagli altri scusate vi ho rotto le balle col mio entusiasmo carmine Luca eh si vede che ti sei proprio divertito in questi ultimi questi ultimi mesi no adesso sono qualche mese sono circa 100 ore 100 ore notturne immagino anch'io mi sono divertito in per fare alcune cose devo dire tutto quello che volevo fare e comunque volevo far poco perché mi sono fermato a qualche POC al momento nei prossimi mesi probabilmente ci dovrò mettere mani più pesantemente però la cosa bella è che finora io per fare quello che volevo fare cerco sempre di fare qualcosa in più lo dicevo prima quando vedo dei tool ho sempre bisogno di una cavolo di feature che il tool non sopporta succede sistematicamente però in questo caso devo dire ancora non mi è capitato anche se ho dovuto inventarmi alcune alcuni trick come per esempio uno dei uno dei componenti che ti offre è quello dell'input con l'autocomplete quindi è abbastanza semplice tu dici che questo field ha questo input che questo input è provvisto di un autocomplete a me serviva una cosa veramente stupida che questo che l'autocomplete doveva semplicemente far riferimento a valori precedentemente avviriti e allora che ho fatto ovviamente il componente lo potevi lo puoi configurare mettendo l'url che vuoi con l'autocomplete l'url ti dovrà ritornare un json o quello che vuoi se non sbaglio puoi accettare anche csv tu gli dici ok a questo url troverai un json e in questo path in questo xpath hai il tuo hai i tuoi valori di cui devi fare l'autocomplete mi serviva e ho detto no scusa perché non usare la stessa api che directus ti offre tanto poi anche se autenticata il browser lo fa ci passa il br di autenticazione dell'utente logato quindi dovrebbe funzionare e infatti è funzionato con la stessa api ho dato l'url con l'autocomplete gli ho dato l'url della sua stessa api va a trovare lo stesso campo va a vedere i valori con un group by puoi fare abbastanza i magheggi che servono e ha funzionato tempo 10 minuti 5 minuti per avere l'idea 5 minuti per per eseguirla più tante altre cose di validazioni validazione dei campi sia validazione di input che validazione per l'utente questo campo lo può vedere soltanto l'utente che ha la mail uguale all'altro campo che ha la stessa mail insomma tutta una serie di magheggi che poi più scopri più ti viene voglia di farli perché dici ah vabbè questa feature non è che mi serve perché non muore nessuno però lo posso fare vediamo se riesco a farlo lo posso fare e scopri che la fai ma alla fine senza scrivere almeno nel mio caso per quello che mi serviva senza scrivere una riga di codice attualmente la fai semplicemente con quello che ti mette a a disposizione Carmine tu hai perplessità fino a qua fin quanto detto le mie perplessità sono sempre dettate dal io non ho mai utilizzato il tool di cui state parlando anzi sono stato il primo a dirvi ah ragazzi ma allora me lo consigliate non me lo consigliate la mia esperienza e chi crede che si possa fare un discorso un po' più ampio con il no code è sempre stata pessima con il low code dipende secondo voi questa cosa è considerabile low code o no code e come la stiamo definendo è il low code nel senso scrivi poco diciamo così quindi non lo so nel senso l'esempio più più vicino ma non troppo che vi posso fare con il coda che farò ultimamente è iTable abbiamo più o meno usato ovviamente fa un quarto delle cose di cui stiamo parlando ma effettivamente è specializzato e le fa bene io sono sempre un po' restio da quel tool che ti promette tutto anche tutta la storia dei plugin e così non lo so sono sempre un po' dubbioso era la stessa cosa che mi dicevano di Wordpress alla fine vai il blog e c'è un plugin per tutto c'è gente che con Wordpress ci fa i motori di fatturazione e la roba con l'hardware quindi anche lì ecco sono sempre un po' dubbioso della roba troppo generale allora qua ti rispondo io poi magari passo la palla a Luca perché è stata la prima domanda che mi son posto però occhio qua stiamo parlando di un backend as a service Wordpress e un CMS cioè il purpose finale del tool deve essere chiaro il compito del backend as a service è darti le foundation e il crude e permetterti di far runare i logic a custom e questo è quello che fa Directus fino ai limiti poi dei limiti ci sarà tutta la seconda parte dell'episodio perché ci sono dei limiti ti scontri con dei limiti però questi limiti dal mio punto di vista o parte di questi limiti sono completamente scalabili affrontabili proprio grazie al sistema di plugin il tool come Wordpress i plugin sono molto guidati dal tool in Directus i plugin sono degli handler di rote express o sono dei componenti particolari di view quindi hai già una libertà diversa ci sono plugin che ti danno più libertà e plugin che te ne danno meno dove puoi customizzare un campo di un form quindi sei sempre dentro lo schema crude di Directus ma fai un campo particolare che parla con l'API del sistema crude quindi sei del campo contenitore crude quindi sei un po' limitato ma soluzione veloce a problema comune c'è la visualizzazione lista dati altro problema simile la visualizzazione lista dati ha quella caratteristica di essere vincolato dal contesto dove si trova tra l'altro puoi customizzare anche il campo specifico della tabella se hai dentro la tabella vuoi renderizzare che ne so un campo video e ci vuoi mettere il campo play che ti apre il pop up tu puoi farlo e sei sempre dentro la griglia però dentro la strada battuta da Directus se sei come me che poi devi fare un'interfaccia di booking quindi un form complesso che si genera partendo da dei dati che sono stati imputati e che si compone in modo particolare guidato da una serie di logica di business ecco, non puoi farlo oppure con un normale tool low code ti scontri in questo limite la decisione figa e secondo me è il vero business value di Directus che i ragazzi di Directus hanno fatto è ok ci sono tutte una serie di use case che non possiamo coprire perché non siamo all'altezza perché non possiamo prevedere di cosa abbia bisogno il nostro utente il nostro utente sviluppatore o chi sta realizzando il prodotto digital, il prodottino digitale a questo punto io ti do completa libertà cosa vuol dire? Che c'è la possibilità ne abbiamo parlato prima di creare degli end point dell'API completamente custom, con logica custom ti puoi importare librerie che ti servono da node, puoi fare quello che cacchio ti pare l'importante è che la funzione l'entry point sia semplicemente una funzione che può, che rispetta l'API degli handler di express, delle rote di express e poi ti crei il tuo component view container component view e ci fai quello che vuoi dentro perché sei ritornato a programmare puoi interfacciare con l'API puoi interfacciarti con l'API per ottenere i dati oppure puoi usare volendo gli store che ti espone lo store manager di view che loro utilizzano se è quello il limitante chiami l'API quindi possiamo dire che hanno trovato un modo per scappare dal giardino cintato del tool low code e secondo me directus è quello ho risposto alla tua domanda? brillantemente ma infatti come stiamo dicendo prima sono prossimo a provarlo insomma quindi cioè, nel senso sicuramente ci darò un occhio diciamo che a me l'approccio di avere più tipi di tool in uno piace, nel senso il fatto di poter fare il code ma di poter anche gestire flussi di poter fare più cose in uno strumento secondo me è un plus diciamo che da questo punto di vista mi piace perché spesso quando ho fatto cose di questo tipo ho usato 6-7 tool diversi, nel senso da n8n per fare i flussi i strati per fare il crude e poi fai l'applicazione frontend perché si e mi metti gratos per l'autentic per l'autenticazione eccetera eccetera eccetera quindi diciamo il fatto di avere tutti i building blocks già pronti fa sicuramente l'omodo mi ricorda tanto così per un'estensione del pensiero totalmente a caso Home Assistant Home Assistant fa tutto ha un plugin per tutto e la cosa bella è che è tutto nello stesso posto, quindi posso vedere le telecamere, posso gestire gli appuntamenti, il calendario fare aprire il portoncino dalla stessa interfaccia mi dà quell'impressione lì e vedendo quello insomma che ci siamo detti insieme effettivamente può ricoprire il caso uso di Backoffice per il 90% dei clienti per cui ho lavorato nella mia carriera il crude, l'autenticazione la tabella per quelli più impagati c'era l'export e l'import dall'Excel automatico out of the box esatto quindi nel senso c'è già tutto alla fine e secondo me può essere effettivamente un buon tool anche volendo andare su questo su questo aspetto qui se facessi il freelance serio lo metterei sicuramente nel mio toolbox per fare non dico tutto ma la maggior parte delle cose insomma hai un tool semplice, una volta che impari comunque anche a domesticare i tuoi quirk è sostanzialmente quello e poi effettivamente utilizzarlo per fare le tue cose ecco, una domanda che vi faccio e ve la faccio male probabilmente non si capisce quello che vi sto per dire a livello di configurazione come funziona? quindi è tutto nel db giusto? tutti i dati stanno nel db ok quindi si fa che se io volessi replicare la configurazione in maniera diciamo non voglio dire dichiarativa perché vuole tutto quanto un altro discorso, diciamo in maniera unattended non voglio andare sulla web UI ogni volta a rifare tutto il setup da capo si può fare una sorta di scheda o uno scaffolding in qualche modo sto effettivamente pensando a me freelancer che devo fare non lo so il gestionale per i venditori d'olive, vengono tanti venditori d'olive che però hanno più o meno tutta quanta la stessa funzionalità e non voglio andare in episodi strani di schema segregation o di multi tenancy e quindi voglio effettivamente fare un'istanza di myoliva.eu così bellissimo myoliva.eu lo vado a registrare subito myoliva.eu per ogni mio cliente lo posso fare in maniera automatica o lo devo far male allora ti racconto la mia esperienza in questo perché in realtà io sono partito da ogni tool compreso il booking system che ho pensato, l'ho pensato per essere replicati in modo che tutto il lavoro che ho fatto per il mio socio, poi il mio socio se lo vende a un altro e quindi mi prendo la mia parte come è buono che sia, no in realtà il primo approccio che ho avuto è faccio una configurazione base, mi dumpo il database e da quel momento in poi io ho un anclone ma cosa succede se decido di aggiungere una nuova feature e quindi crea una nuova tabella questo può essere un problema come lo risolve directus? posto che tu puoi fare il dump selettivo delle tabelle e quindi te lo puoi risolvere in modalità vichinga esiste una funzione di esportazione dello schema cosa fa la funzione di esportazione dello schema? ti espone schema e relazioni cosa non ti espone però? non ti espone utenti e diritti utenti e diritti sono record per directus ok? per esempio directus ti permette la gestione di multiple roles multiple con abilità e diritti granulari sull'inserimento del campo, sulla modifica ecco questi te li devi inserire a mano la mia soluzione super basic qual è stata? fare l'esportazione dello schema in yaml che può essere versionato con un qualsiasi sistema di versioning e poi esportarmi in csv il seeding delle tabelle critiche per esempio quella di diritti il seeding per far partire il sistema che è un csv stupidissimo dove creo l'utente admin l'utente godadmin e l'utente limitato tra l'altro stiamo già parlando di un'applicazione con livelli multiple di diritti quindi già un'applicazione leggermente complessa quindi io mi esporto solo quel csv perchè non ho voglia di andare a configurare a mano dopo di nuovo tutti i diritti e però lo schema è meno metà fianco allo schema versionato e così ho risolto il problema ho risposto alla tua...

ah! quando poi, che ne so io lavoro su myoliva.it ho venduto un'istanza a carmine.myoliva.com ok? però myoliva.it c'è una feature in più con una tabella in più e io ho esportato e ho versionato lo schema di myoliva.com quando lo devo applicare a carmine io prendo lo schema che è un file yaml lo lancio nell'istanza di carmine directo se è intelligente fa il diff degli schemi e applica solo le modifiche e questa cosa dello schema diffing è una cosa super figa da questo punto di vista praticamente ti risolve parte dei problemi a questo livello non c'era arrivato ancora però io ho dovuto semplicemente fare un clone di quello che avevo fatto me la son cavata copiando selettivamente le tabelle interne sue che che mi servivano la cosa anche bella è che sono abbastanza pulite sono una quindicina forse di tabelle interne per gestire tutto quello che deve gestire le leggi le leggi vedi non sono cose strane, sono esattamente directos flows per i flussi directorusers per i users e dentro sono sono tabelle come le faresti tu e quindi sai benissimo un attimo a cosa fa riferimento una colonna, quindi non c'è nemmeno bisogno tanto di stare ad ammattire sono abbastanza semplici da fare e poi per l'import proprio dei dati veri e propri dei tuoi veri dati lo puoi fare dal pannello di amministrazione insomma dal back office stesso ma puoi farlo anche direttamente nel database perchè nel momento in cui riempi il database lui da lì legge e quindi tutto è già riempito dovendo fare l'upload nel database puoi usare i tool che vuoi quindi puoi farti il query a mano da un csv oppure puoi usare un un software che ti gestisce i dati, insomma lo puoi usare quello integrato di webstorm di webstorm di intelligedia che non mi ricordo come si chiama e farlo da lì io ho fatto praticamente così erano pochi i dati e quindi c'è da guardare, però devo dire la verità, mi ha sorpreso che abbia funzionato al primo colpo io mi aspettavo qualche cosa del tipo no la referenza id di qua non coincide con l'installazione no, proprio è andato è andato a sciallo io posso aggiungere non posso parlarvi molto di questo progetto Carmine e Luca l'hanno visto però quel tipo di lavoro l'ho fatto perchè mi hanno dato dei pdf io li ho dati in pasto a una libreria che utilizza pandas ho esportato i dati li ho buttati sul database e me li vedo tranquilli, quindi è bello questo, in realtà qual è l'edge case? ci sono una serie di tabelle, che ne so per il campo pipo tu decidi di assegnare un field nel form particolare con una certa configurazione quello è un record in una tabella specifica quindi in realtà ti devi ricordare di dampare non solo i ruoli ma anche le tabelle di configurazione ma sono 10 tabelle e quelle non vengono esportate nello schema cos'è importante perchè ovviamente tu nelle tabelle tue hai ovviamente il nome delle delle colonne che sono nomi di sistemi però nei field a back office puoi mettere la label che vuoi può anche essere multilingua puoi anche mettere le traduzioni per ogni label e quelle però appunto sono tutte cose interne sue che si salva in qualche tabella nella tabella translations è pulitissimo perchè puoi tradurre tutta l'applicazione volendo cioè tutte le cose custom che fai possono avere le label tradotte qualunque dal flow ma è il cosa comunque è gestibile Carmine tu prima però in fuori onda ci hai fatto una domanda mi hai fatto una domanda un po' particolare che era quella riguardante il multi tenancy si in realtà ecco nel senso che come stavamo parlando prima insomma alla fine quando quando penso a queste cose penso comunque diciamo in ottica come hai detto tu per effettivamente rivenderla scusa Carmine devo dirlo ci hai appena mandato lo screen dell'acquisto di nel dominio maioliva assolutamente che non sia mai nel senso ormai beh però anche io però hai già premuto acquista si si perchè nel senso ora nel senso se mi si scherza però maioliva può diventare effettivamente mio business si ecco è sempre una mia preoccupazione insomma così se lo vogliamo dire però ecco si è risolto dicendo prima vabbè tu fai un'istanza per ogni cliente che è quello che poi alla fine fare anche io non mi andrei a complicare troppo la vita ecco è vero che per chi ci sta ascoltando da casa parliamo di multitenancy cura non parliamo di roba multi user anche perchè quella insomma abbiamo visto e abbiamo già parlato di fare però ecco si secondo me se si risolve così insomma venga e comunque da come me l'avete descritto è meglio di come ho visto funzionare alcuni attrezzi fatti con fortpress o con cake di hp insomma quindi da quel punto di vista sono contento.

Secondo me ecco la domanda vera che vi faccio perchè sicuramente è un tema che può uscire anche dopo nella chat quando ascolteranno questa puntata ed è qualcosa che specialmente in questo periodo è già uscita ma allora questo è un tool con cui le persone non sviluppatori ci subiranno il lavoro o c'è comunque una barriera di ingresso per cui me la stai raccontando non è qualcosa che può utilizzare una persona totalmente a digiuno di questa roba qui.

Ora non so se c'è anche la versione cloud dove effettivamente fai avanti avanti avanti e fai tutto tu Allora dipende da dove vuoi mettere l'asticella le feature di cui abbiamo parlato oggi se vi siete resi conto arriviamo ad un certo punto poi ho detto si ti scrivi il tuo endpoint, si ti scrivi il tuo componente.

Devo dire che con la versione base puoi fare tanto dalla gestione graduale dei diritti a un crude super avanzato c'ha dei tool per la creazione di flow tipo if this then that all'interno dove puoi dire alla creazione di questo record mandami un email e queste robe sono solo trascinando blocchi e configurandoli trascinare blocchi e configurarli non vuol dire essere un tonto completo devi avere un po' di consapevolezza quindi anche senza scrivere una linea di codice se il tuo business case è abbastanza semplice lo puoi fare puoi fare puoi spingerti molto avanti.

Arrivi però a un momento dove vuoi scrivere il codice che è graduale sono tre gradini io posso fare senza scrivere una riga di codice e raggiungo il livello 0 the only level of low code tool il gradino 0 è faccio tutto utilizzando il low code tool 2 lavoro sulle estensioni dei componenti base del low code tool quindi lavoro sui custom form field lavoro sulle viste dei dati per customizzarle e va bene il level 2 il level 3 è the only level of low code tool dove ti è arrotoli le maniche e ti scrivi tutto utilizzando le foundation è la glue code che ti mette a disposizione oppure no cioè tu puoi scriverti un end point che cazzo ne so ti chiama l'API di di un altro tuo sistema SAP ok e ti espone questi dati e ti li metti in relazione con altri dati che c'è nella tabella, puoi farlo tra l'altro ho parlato di SAP perché ci sto lavorando, ci stavo lavorando poco fa, hai detto la parola come la è ed è credo le peggiori le peggiori API con cui ho dovuto interagire nel mondo saluto il mio amico Paolo che ha sofferto APIando con me in questa via crucis comunque cioè alla fine secondo me è super potente la cosa è...

boom per fare tutta una serie di cose è figo, un'altra feature di cui non abbiamo parlato in realtà ce ne sono talmente tante che ci possiamo anche rompere i coglioni a parlarne dalla ridimensionamento delle immagini secondo tutta una serie di parametri che fai è completamente pensato in un'ottica di CMS edless no? Un tool, chi di voi conosce superset? Ne ho parlato la precedente puntata, l'ho portato come balocco ok? è una dashboard possiamo chiamarlo un data viz tool ok? C'è un rudimentale data viz tool anche dentro l'Ectus e la cosa figa è che i diritti dei dati visualizzati sono quelli granularmente settati a quell'utente che è una cosa fighissima cosa è successo a me l'altro giorno? dovevo sviluppare un componente che mi mostrasse una distribuzione statistica no? Di un certo valore, quindi volevo vedere che ne so quanti valori ci sono tra l'80% e il 70% quindi volevo vedermi una distribuzione statistica non c'era il tool mi sono fatto il mio componentino Vue.js che mi mostrava la distribuzione statistica prendevo una prop e mostrava la distribuzione statistica e il gioco è fatto il livello è il livello 2 il livello 3 è poi quando te lo crei tu il tool di dataviz da mettere dentro Directus, come ho fatto io per esempio la pagina di booking che è completamente custom, però è passato un'ora e 10 minuti e l'abbiamo solo incensato adesso è il momento giusto di spalare merda contro Directus aspetta un attimo che anche il livello 0 forse lo stiamo sottovalutando a seconda della prospettiva in cui guardiamo perché comunque ho una base di come funzionano le cose o forse sono io, non lo so perché quando tu devi aggiungere un campo e ti trovi l'opzione molti a uno uno a molti, noi che lo stichiamo sappiamo benissimo che cosa vuol dire però magari un'altra persona meno abbezza alla programmazione all'informatica 1 di base o l'informatica 1 di altra università magari non riesce a capire o non le sa gestire queste cose diciamo che io secondo me è un tool per noi dell'Olimpo secondo me è interessante questa cosa che hai detto perché allora vi faccio anche un'altra domanda, secondo me con ogni tool che poi alla fine diventa più o meno utilizzato c'è sempre spazio per il guru, per la consulenza per l'esperto, io l'ho visto con Notion, ho scoperto che ci sono aziende che fanno consulenza solo per Notion che secondo me è una roba ziva bella perché l'abilità è buona l'abilità è giusta però cazzo, nel senso che stai facendo la consulenza con il guru del Zen.

Ok, considerando che comunque questo tool è è uno uno scaino sopra perché come vi ho detto ci sono diversi modi in cui si può utilizzarlo a tutti i freelance all'ascolto che si sono stancati di fare consulenza con Notion, c'è spazio per fare anche una cosa del genere con Directus, cioè ovvio offrire come servizio quello di fare consulenza su Directus, perché secondo me anche questo è interessante.

Ora non so quanto sia diffuso e quanto sia utilizzato, però non siete effettivamente i primi che me ne parlate, assolutamente.

Boh, allora, Directus come diceva Luca la sua potenza è anche data dal fatto che te lo stai self-hostando e lo estendi come vuoi.

Quindi ha ragione forse, forse sono andato io un po' troppo delicato, ma un po' di di di essere smart per installartelo e gestirtelo devi esserlo.

E tra l'altro è un tool in Javascript è un server in Express e un frontend in Vue quindi vuol dire che il drag and drop su Aruba non funziona.

La cosa più semplice che puoi fare è Heroku o Simili, che vuol dire che devi conoscere Git che vuol dire che devi avere un repository magari, cioè non è poi così banale il gioco, no? Quindi Si c'è una versione cloud ma almeno l'ultima volta che l'ho vista non lo puoi estendere.

Quindi cade anche un po' di anche se ha una serie di componenti in più rispetto alla versione cloud, eh, la versione community, eh? Tipo, noi abbiamo parlato prima della Kanban, del del Gantt chart del Gantt chart No, devi essere almeno devi essere un po' più del WordPress installer.

Ok, e e allora a questo punto anzi lo chiedo specialmente a Luca perché è in questa situazione lo usereste come tool primo di gestione dei processi della vostra startup della vostra azienda insomma, piuttosto che andare su soluzioni a pago più famose come possono essere Salesforce, come può essere SAP, ma li siamo proposti su una scala totalmente diversa, o comunque delle robe a caso, cioè proprio come grado di affidabilità, quanto vi sentite confidenti? Allora sì, sicuramente nel medio e lungo termine no, non me la sento, non me la sentirei di sposarlo, diciamo, però nel breve termine, se non vogliamo un Salesforce, che è un'astronave per poi andare col monopattino perché comunque sono tool molto complessi dove ci puoi fare tanto, dove devi pagare consulenza per fartelo installare, per fartelo configurare per fartelo spiegare da chi lo deve utilizzare può essere e noi l'abbiamo valutata come valida alternativa da un tool da usare cominciare a riempire il database dei primi dati, cominciare a fare la pulizia dei dati che già abbiamo che magari nei primi mesi sono stati fatti su carta, su Excel di qua, di là, di su, di giù, su un altro database, eccetera, eccetera cominciare a fare ordine, cominciare a metterli insieme e già si sono viste cioè già, dico la fesseria già mettere i nostri clienti su un mappa e vedere come si distribuiscono e vedere quelli che stanno all'altitudine e all'longitudine 0,0 non ce ne eravamo accorti cioè già quello già quello è un valore aggiunto che ti ha ripagato quei due giorni di configurazione e installazione, dopodiché siccome anche abbastanza l'interfaccia è abbastanza semplice, perché deve essere semplice se vuoi standardizzare e fare in modo che vada bene per tutto l'interfaccia è molto molto semplice, basilare per tutte le pagine, se non devi fare cose, appunto, se non devi fare booking engine come Mauro, se ti limiti diciamo al minimo indispensabile e soprattutto va bene per cercare di capire tu quello che vuoi perché magari te ti fai l'abbonamento a o comunque paghi la licenza a tool molto più potenti e molto più performanti ma che magari non ti servono e non ti serviranno anche per il lungo tempo e poi però semmai, qualora dovessi essere pronto ad andare su soluzioni più enterprise hai i tuoi dati, ce li hai lì li esporti come vuoi fai il grande JSON, il grande XML, il grande CSV come ti pare, lo dai al tuo consulente e gli dici mettimelo nella tua astronave e viaggiamo.

Per cui sì diciamo è una scelta che secondo me secondo noi ha avuto senso, ha senso ha senso fare e lo faremo appunto nel primo nel prossimo trimestre No, questa cosa qui nel senso io spesso ho sempre paura dell'effetto Gatsby Gatsby framework insomma, non Gatsby personaggio per chi non ha mai utilizzato Gatsby, ora ci sarà sicuramente tipo il micro reddito che dice ma tu non hai capito la grande come funziona Gatsby ma non funziona così io ho scelto stiamo parlando di un altra cosa, ma ho scelto diciamo come approccio ho usato Gatsby per fare tante cose perché era pattern included, perché c'erano plug-in perché c'era community eccetera eccetera ne ho dovuti rifare tre fuori da Gatsby perché non partiva più per le dipendenze perché non compilava e mi fa sempre ridere il fatto che si deve compilare il sito, quindi ecco nel senso ho fatto questa domanda perché io sono un grandissimo autore di non reinventare la ruota assolutamente e se mi avete accortato in più di un'occasione, questo è assolutamente valese.

Ho sempre però paura dell'affidabilità di questo di questo tool insomma l'ho chiesto.

Guarda ti rispondo io, ti rispondo io perché ci sto sviluppando il booking B2B dell'azienda dentro dentro Directus io ci ho speso tre giorni di lavoro di queste fantomatiche 100 ore il resto sono i componenti custom Mauro è stato uno delle vittime di Gatsby, l'ho detto un milione di volte alla nostra community il sito di Gitbar è stato una delle mie pene ma ce ne sono state tante altre ok? Da quel momento in poi uno dei motivi per cui mi piace Directus è il fatto che tutti i miei end point sono rotte express è il fatto che tutte le query che faccio sono query utilizzando Cnex che è una libreria, un query builder per javascript che conosciamo tutti chi fa back-end in javascript in un modo o nell'altro ci è inciampato su Cnex, ok? Quindi posso dire che il 90% del codice custom che ho scritto è completamente agnostico di Directus quindi sì, mi posso trovare con un set di componenti view, ma a me piace sviluppare in React, e quelli li butto ma li butto perché a me piace sviluppare in React mi trovo con quegli end point dai quali ho disaccopiato la logica di business l'algoritmo di calcolo della disponibilità e una funzione javascript un paio di file javascript di Ebo sono mille righe di codice in tutto perché ci sono tutti algoritmi strani di computazioni particolari ma sono plain javascript che stanno su moduletti a parte completamente incapsulati, quindi da quel punto di vista mi pare il culo altra cosa, il fatto che utilizzi queste librerie in un modo o nell'altro mi salva da quel punto di vista il fatto che sia un'applicazione express mi tranquillizza non è Gatsby che cambiava completamente il modo di gestione del sito e pensava a una fase di compilazione dove c'era un core centrale di dati cioè oggi che ci penso se mi fermo oggi, ok? e penso a che cos'era Gatsby mi sembra una puttanata elefantica utilizzarlo per il motivo per cui l'ho utilizzato io perché io mi son portato appresso un elefante per fare una cosa da una formica con tutti i costi di un elefante Directus è il contrario è una formica che ti fa le cose che ti fa un elefante Ci sono dei limiti parliamone perché mi son scontrato.

Il primo limite è quando utilizzi un tool low-code come questo la prima cosa che pensi è di fare tutto col crude e allora pieghi il crude a quello che vuoi fare esempio semplice non volevo fare una visualizzazione io inserisco dei record per ogni record inserisco dei record in relazione non volevo inserire una creare una vista particolare per mostrare questi sottodati cosa ho fatto? all'inserimento ho creato un flow una sorta di if this then that che all'inserimento e alla modifica lancia quelle tre righe javascript che mi calcolano la media per esempio e se la fa salvare in un campo dello stesso record questa è una porcheria perché non ho voluto fare una maschera ad hoc.

Ecco quello è il primo errore che si fa quando si utilizzano questi codici questi tool.

Quindi tutto ciò che non è crude deve essere fatto da moduli che non fanno il crude prima cosa e tu dici si ma quello che faccio io è parzialmente un crude e allora ti ti scrivi un parzialmente crude che non è un crude che è diverso da crude no? e ci sono dei casi specifici no? dove incappi in questo limite un altro problema vero ce l'hai quando vuoi creare delle UI custom ad oggi la documentazione di directus ha qualche buco tutta la parte delle estensioni non è propriamente documentata anzi è documentata col culo aggiungerei cioè è fatta proprio male la documentazione quindi la cosa che devi fare è tenere aperti i node modules e provare a capire come funziona questo vuol dire che devi essere uno sveglio questo vuol dire che devi essere uno che si sa orientare in codebase scritta da altri se vuoi fare delle robe avanzate come quelle che sto facendo io dentro directus altra cosa le UI tu stai integrando io ho lavorato con tailwind e amo tailwind per la praticità e per la semplicità con cui fai le cose delle UI generalmente belline specie quando non hai un designer che ti accompagna ecco in directus scordatelo devi ritornare a scrivere i CSS qual è il problema che scrivendo CSS da te tu perdi tutte le costruzioni e le regole che invece tailwind ti imposta, vero è che directus espone tutta una serie di variabili CSS di tema che puoi utilizzare però in realtà per esempio c'è uno storybook ma non è curato bene i componenti sono messi alla cazzo di cane e tu ti perdi nell'usare i componenti li devi cercare io sono andato a vedermi come erano costruite le maschere del core per cercare di tenere gli stessi componenti appresso no? e quella roba non è documentata è uno storybook fatto bene per costruirti delle estensioni che si integrino bene nella cosa ma credo che sia una cosa che con un contenuto effort possa essere sviluppata presto per il resto l'unica preoccupazione è come scala questa cosa a parte che si può fare un'installazione per ogni cliente volendo o per set di clienti lotti di clienti in realtà non ho ancora in mente come far scalare questa cosa nel senso ce l'ho in mente però anche qua non è una cosa che può fare il pingo pallo della situazione perché directus usa un cache layer brevis ok volendo usa un database noi possiamo gestire le sessioni su redis mettere in replica database e scalare sette stanze di directus mettere i file dentro s3 e abbiamo fatto scalare l'applicazione mi sbaglio? non lo so che stiamo facendo una fase convergente e stai semplificando tutto ma stiamo parlando di un'applicazione fatta con un tool low code Carmine non stiamo parlando di rocket science stiamo parlando di scalare a 1080 a 1080 sono cose che ti fa tranquillamente probabilmente anche una sola stanza ti serve 1080 se è fatta bene quindi alla fine stiamo parlando di un tool che in due giorni ti fa un sas raga da che cazzo stiamo parlando Carmine e Luca domande, considerazioni so che ho parlato un sacco oggi vi ho rotto le balle adesso mi hai messo il pallino su come scalare su come scalare stavo pensando mettiamo load balance che poi va in diverse stanze ok va bene in realtà c'è tutto un caching layer vi suggerisco suggerisco ai nostri ascoltatori di andare nella documentazione e leggere il documento che è uno dei primi che mi sono letto della architettura dove c'è proprio un grafico bellissimo di come è fatta l'architettura di directus e insomma è interessante io così non ne ho ancora trovato detto questo io direi che aspetta aspetta devo buttare anch'io un po' di fango vai vai spa la merda sembra davvero che era è una cosa promozionale no io appunto come detto non l'ho portato ancora al limite e quindi mi sono fermato sul no code quindi alla fine abbiamo detto che questo va dal no code cioè passa da un da un tool no code a un tool come si dice al tool mettiti sulla sedia e programma e quindi mi sono fermato alla parte no code contro ogni previsione perché sapete che non sono un fan del tool no code comunque no una cosa che su cui ho perso un po' di ore e poi non non ho risolto avevo fatto parecchie una UI abbastanza complessa con relazioni e richiami ad altre tabelle molte molte eccetera eccetera e ci avevo messo anche dei dei permessi particolari su determinati utenti in certe circostanze non è stato abbastanza intelligente da non fare richieste che avrebbero fallito a causa dei permessi mancanti non era grave nel senso che la cosa continuava a funzionare, avevi un fastidioso errore non mi ricordo se come pop up o come una cosa, però lo chiudevi e continuavi con la tua vita però insomma questo mi ha fatto anche un attimo da un lato spaventare io per quello che devo fare non avrò bisogno di grossa di avere tanti utenti tanti ruoli con diversi permessi però ho detto ok, se succede una cosa del genere che faccio? a parte aprire la issue però vai a vedere perché non funziona in quale circostanza non funziona qual è il permesso che faccio per il modulo dando tutti i permessi di lettura no, questo stasera per andare veloce io l'ho risolto così quando faccio queste feature io tengo un browser con un utente per ogni livello in questo modo posso testarli mi sono reso conto che alcune maschere hanno bisogno dei dati in visualizzazione ed è facile sbagliare per esempio quando gli passi l'utente corrente nella query basta che ci sia un apice e capita che lo mette e ti fallisce la query è facilissimo però individuarla perché ti fai ti guardi l'inspector ti guardi la chiamata che sta fallendo la chiamata che sta fallendo punta a un modello punta all'endpoint dell'API di quel modello e là per quell'utente c'è un problema di permessi e te lo vai a fissare questo è il mio debugging approach qualcosa ho fatto adesso non ricordo di preciso però mi ricordo che ispezionando alla fine doveva andare a cercare un qualcosa che non avrebbe dovuto cercare perché non aveva i permessi quindi io avevo messo sto field, sto componente, sto cosa non mi ricordo che cosa nascondilo a questo utente perché tanto non ce li hai i permessi per vederlo invece continuava a farlo può essere che abbia sbagliato io qualcosa però sta di fatto che a un certo punto ti puoi trovare in queste situazioni dove è difficile anche uscirne fuori se non fai le cose in un certo modo come hai suggerito magari testare ad ogni modifica, vedere che cos'è quella modifica che rompe e ci si può trovare in questi in questa situazione e non ho scritto una riga di codice quindi manco puoi dire hai scritto male mi puoi dire, hai cliccato il bottone però hai composto le query dei permessi perché poi la cosa figa è che puoi creare delle query complesse dei permessi, hanno i dati che si riferiscono a un campo se questo campo è stato compilato e hai punto un record che ha un ID nel gruppo B cioè puoi fare delle cose aliene e quindi là è facilissimo incasinarsi nascondere il campo non vuol dire che non faccia il fetching quindi probabilmente il problema è quello forse è quello effettivamente poi ogni volta che fai queste cose un po' più avanzate è anche facile uscire dal loro seminato e quindi incappare perché una relazione può filtrare le sue relazioni quindi lavorando sul filtro dei diritti del campo puoi giocarci comunque sono davvero dei corner case assurdi che questo tool ti permette di fare proprio per il suo sistema di diritti che mi sarebbe piaciuto vederli in tante altre applicazioni così fatto, devo dire la verità ultima domanda Carmine e Luca ultima domanda, considerazione Carmine ha già fatto NPM install per myoliva.net esattamente ho finito i video su OpenAI volevo farmi girare un'immagine e ahahah questa questa cosa è già costata 30 euro, vabbè ehm ahahah ahahah no secondo me è un tool assolutamente interessante che userò eccola qua la somma che stavo dicendo prima credo me l'avete venduto troppo bene quindi nel senso devo necessariamente provarlo perché perché si insomma boh non so, mi ha dato questa questa grande voglia di provarlo però ecco sarò sempre dubbioso finché non lo scalare, mi dico io, anche se non mi serve insomma quindi quindi può essere una roba, sai cosa può essere? può essere una roba che facciamo in live lo sai, con Luca abbiamo già fatto qualche live su Directus perché l'idea era quella di portare il back-end di Gitbar su Directus in modo da aggiungere un sacco di feature il collegamento alla lightning network le transcription fatte bene la possibilità di fare tutte le feature del podcasting 2.0 che Spreaker non ci dà e quindi possiamo fare un esperimento in live come sempre ragazzi io non so perché vengo sempre messo in mezzo in questa cosa probabilmente perché sono l'unico che non si vergogna a parlare di soldi ma non vedo perché vergognarsi è una cosa così bella parlare di soldi perché i soldi sono veramente la cosa più bella del mondo quindi donate perché dobbiamo fare una cena da massimo bottura con i vostri soldi quindi è una cosa molto importante e siamo molto poveri quindi donate copiosamente veramente in tantissimi mi raccomando dateci i vostri soldi e noi ne faremo l'uso più responsabile che se ne possa fare ovvero metterli nel contenuto dell'ecritto uscire da mezz'ora detto questo è arrivato il momento di ringraziare chi ci supporta chi ci prende in carica e ci sostiene in questi nostri deliri di chiacchierate di tool di robe di cose e questa settimana abbiamo un amico che ci ha supportato è il nostro buon vecchio Alex Racuglia che ci ha invitato a bere birre quindi grazie Alex grazie per la tua donazione grazie per averci supportato e per fare in modo che ogni settimana o quasi Gitbar possa arrivare alle vostre orecchie è arrivato il momento tipico e topico di Gitbar il momento in cui i nostri host e oggi solo host parlano con noi di tante cose e ci condividono tante cose e con tu con il paese dei balocchi aaaah il paese dei balocchi ci condividono un balò con tool, un video, una libreria un qualcosa che abbia catturato la loro attenzione e in qualche modo reputino interessante condividere con la nostra community quindi la mia domanda è iniziamo da Luca hai qualcosa da condividere con noi allora ho due cose il primo è il classico libro libricino, non sto leggendo tantissimo in questo periodo perché sono stanco sono veramente stanco ma ho un libricino piccolino sul comodino che 5 pagine a notte sto leggendo che è Buchi Bianchi di Carlo Rovelli, semplicemente noi tutti conosciamo i Buchi Neri i Buchi Bianchi li conoscono in pochi lui li prova a spiegarli e sono cose che dove vengono cose parecchio strane del tipo che il tempo scorre al contrario e altre cose che non saprei ancora spiegare perché comunque lo leggo la sera e sono stanco però tutto sommato è molto molto molto molto molto interessante il secondo invece è un invito è un invito di farvi l'API di OpenAPI se non l'avete fatto, vi aprite un account e ci date la carta di credito e giocate quanto volete con l'API di OpenAI io ci sto giocando come un matto e sono a quota 30 centesimi quindi va bene, intanto l'Italia è bloccato però le API funzionano alla grande e lo possiamo fare è un invito, un consiglio di cominciare a studiarci cominciare a vedere sarà un po' come se non sarà OpenAPI sarà un'altra roba però prima o poi verrà fuori e sarà come oggi saper cercare le cose su Google domani anzi fra un paio di ore forse sarà necessario saper chiedere le cose a un API di questo di questo tipo, cominciare a vedere, vedere le potenzialità capire che cosa è su Dolang fare prove su prove su prove e cominciare a a studiarci figo figo quindi praticamente cercare un modo di preservare il nostro posto di lavoro esatto allora c'è chi dice io sono d'accordo cambierà il modo di lavorare per molti di noi e soprattutto a differenza dalla rivoluzione industriale saranno i lavori più colpiti, più rivoluzionati saranno proprio questi i lavori come il nostro i lavori dove sono più come si dice intellettuali, no? però ci siamo capiti dove c'è più testa che ripetitività in questo caso o manualità praticamente praticamente ritorneremo all'agricoltura ed ecco perché Carmine si è portato avanti col lavoro comprando maioliva.net ma infatti prima non è un caso che diceva open AI open AI e poi open API o quello che è poi maioliva.net esatto ma in realtà è un complotto in senso open AI l'ha fatto comprare a maioliva.net che probabilmente si visiterete quando ascoltate la citata troverete qualcosa tempo che decido cosa in ogni caso il mio balocco se così lo possiamo definire praticamente non so come spiegarlo perché è strano andate a fare ginnastica correttiva questo qui è il mio balocco ultimamente sto soffrendo tantissimo di schiena o la standing desk o la sedia figa, quella lì che deve per forza costare tanto e che gli youtuber recensiscono dicendo è la cosa più conda su cui mi sia mai seduto è della Ewart su poco si dica così ma avevo sempre mal di schiena e ce l'ho anche in questo momento probabilmente è il fatto che stavo col torto sulla sedia però è qualcosa che mi ha veramente che mi ha veramente svoltato e funziona anche per le persone non particolarmente sportive come io ad esempio quindi nel senso fatevi del bene e fate del bene alla vostra schiena altrimenti arrivate a 27 anni come me quindi non devo necessariamente fare ginnastica correttiva allora io ho un balocco sappiamo che su twitter stanno succedendo cose tipo i profili twitter, pagamento paga 2 euro per leggere i tweet super customizzati di pinco pallo che scrive per te e solo per te se paghi 2,50 euro 2 euro quello che è ecco molti di noi si sono già spostati su mastodon ma siccome è periodo di traslochi io ho buttato un occhio verso nostr nostro non è un social network ma è una cosa un po' più ambiziosa è un protocollo sul cui si può basare anche un social network ma è un protocollo interessante utilizza dei tool che noi conosciamo i websocket utilizza dei messaggi JSON molto semplici quindi non è rocket science per cui il mio suggerimento di oggi è buttate un occhio a nostr e leggetevi le nostr improvement proposal non perché dobbiate usare nostr come social network di riferimento perché non serve ma per capire e vedere come un modo di fare programmazione open source che è quello fondamentalmente di bitcoin possa essere utilizzato anche per altre tecnologie che ne so i documenti di improvement proposal è una cosa che io ho sempre visto su su bitcoin però su mastodon non li ho visti magari mi sono perso qualcosa io possibile la cosa bella è leggervi la parte tecnica e le implementazioni di questa specifica che sono tanta roba molto figa, bello bello bello no, si sono d'accordo con Carmine dormiamo sereni siamo tranquilli e poi mi immagino giro pagina c'è l'apocalisse dei lavori, dei lavoratori mi immagino beh, però una cosa l'abbiamo imparata nel nostro modo di lavorare che comunque il lavoro che facciamo è possiamo dire 70% perlomeno parlo per me 70% problem solving 20% formazione e 10% scrivere codice i problemi ci saranno anche con l'intelligenza artificiale quindi preparatevi a risolverli e in quel 10% di scrivere codice penso che il 90% sia il 90% del 10% sia il dare i nuovi alle cose ci stavo ragionando stasera oggi dove non accodere più alla fine solo nomi sbagliati abbiamo investito tempo a cercare i nomi giusti a queste cavolo di cose però se ci pensi è anche quello che faranno poi i prompt engineer cosa fa il prompt engineer se non cercare il modo più più funzionale per spiegare una certa cosa utilizzando il linguaggio naturale eh si quindi non ci liberiamo di questa cosa almeno non così facilmente detto questo 1 ora e 48 minuti di episodio è arrivato il momento di abbassare la clare visto che ormai le birre sono finite e di dirigerci verso l'uscita del nostro git bar git bar non si sposta e git bar torna il prossimo giovedì io ringrazio Carmine e Luca per avermi fatto compagnia ricordiamo che non abbiamo preso nessuna sponsorship da Directus ma è solo entusiasmo quello che parla e diciamo anche che se trovate degli HKS o se avete pestato dei merdoni con Directus è un piacere saperli giusto perché il git bar è anche e soprattutto un posto dove si condividono esperienze, noi le stiamo condividendo dietro i microfoni il gruppo telegram è un altro modo per farlo ci tengo ad annunciare che ci sono un po' di novità pianificate in arrivo una di queste è un ask me anything ask has anything agua un'agua vediamo la canzone di chi era degli avqua piccola digressione che verrà tagliata in fase di montaggio perché è cringissima detto questo abbassiamo la Claire e alla prossima ciao ciao ciao.