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 come stai? No no no ciao ciao ragazzi 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 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@gitbar.it e @brainrepo sono i modi classici per contattarci.Per classici si intende quelli che non usa nessuno e poi c'è? 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, bellissimo.Esatto, altra informazione, nuova nuova fresca fresca siamo...qualcosa si è mosso su Gitbar e siamo diventati community partner di WeAreDevelopers e cosa è importante nei prossimi giorni ci sarà una raffle, penso si dica così, dove sorteggeremo un po di cose interessanti proprio riguardanti WeAreDevelopers anche qua vi dico stay tuned.Vedi che voleva dire qualcosa? In realtà non volevo farlo, la raffle mi hai quasi costretto.Sto scherzando, 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.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 Wanzibull e poi lo scoperto l'ho lasciato, poi lo storico per l'ennura croce e delizia, che effettivamente io configuravo, non roba di produzione, ma roba di home lab, con script bash e queste vecchissime formule salt, insomma, roba veramente brutta.Ho scoperto Ansible con un investimento di 3-4 ore, ha automatizzato tutto, sono stato e un altro tool che provo a vedere e che c'entra è stato Postman.Non so che di voi avete utilizzato Postman con l'account Enterprise, io una volta solo perché c'era chi vagava, 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 maggio che si ricolleghi anche a quello di cui parleremo tra poco, credo.Qualche momento.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'idea per la prima volta, un'idea serio per la prima volta, che ero passato, sì non dico da blocco note a eclipse, però quando sono passato da eclipse a WebStorm, a PHPStorm, quello è stata una rivelazione.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...è comunque dare la possibilità 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, o ancora il dominio si chiamava...io, voi sapete io sono un giornalista, ne ho fatto questo sito che era "Gazzettino 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 spero poi devi anche un po' fare la parte editoriale e utilizzare Strapi.Ecco Strapi bello un innamoramento immediato ma subito dopo inizio il bagno di sangue e le bestemmie.Il primo problema che ebbi fu allora Strapi cosa fa intanto? Strapi è possiamo chiamarlo un "backend as a service self host" 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 back-end 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 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 i limiti il 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 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 accati 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 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 una bambina piccola questo diventa impossibile no? e quindi boom ho sospeso praticamente tutte le attività.Cos'è successo però? è successo che qualche mese fa i miei soci in Sardegna, io opero anche nell'ambito di agenzie di viaggi centri escursioni 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 se avessi dovuto aggiornare una libreria ne avrei dovuto aggiornare altri 70, 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, ho il podcast, ho la bambina, ho 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 Retool si chiama, sì, vero Carmine? Retool, sì sì.Retool.Quello appago Retool.Quelli io ho ben acceso centinaia ormai che sono diventati crudi di Retool.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ì ecco secondo me ecco ReTool e compagni sono tool per chi sviluppa già, 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 credenziali, devo fare la query, eccetera, considerando anche che la UI con questo sistema drag and drop tipo front page, non lo so, o qualcosa del genere, 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 Android tipo facendo drag 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 di autenticazione che è 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 ipi key configura chiamo out0 fai questo e questo...il sistema di autorizzazione.Tutte le mie idee sono mediamente dei sas, 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 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'io visto che hai applaudato 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.E 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 d'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 e mi dicevano "eh Mauro stai cercando la luna, mettiti il culo sulla sedia e scrivi codice se vuoi una roba del genere".In realtà però un po' di tempo fa sono inciampato, proprio cercando una soluzione per risolvere questo problema per i miei soci, sono inciampati 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.divide avete presente quando si fa un carottaggio no? Che quello che ne viene fuori è fatto da diversi strati.C'è lo strato più base che è semplicemente un sistema che ti permette di fare delle query nei database diversi nel supporto 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 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, azura ggp a s3 di ws 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 webbook 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 ok la possibilità di fare una piattaforma che utilizza tutte queste robe a livello di costi/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.Allora posso essere boldo ma faccio prima la risposta non serve quella seria.5 modi con Rails.Ma la risposta la risposta seria è che ci vuole tempo.Ci vuole tanto tempo per le le foundation e comunque sono quelle foundation che non finiscono mai, anche perché questa è una mia tendenza, diventa tutto foundation, poi finisco per partire con che database uno ha a questo bottone di che color lo faccio, insomma, quindi ci vuole effettivamente tempo e credo sia anche una grande porzione del tempo che poi viene fatto dato quando lo vuoi fare ad un professionista esterno o a una azienda.Forse in questi casi può essere un po' diverso se la tipologia di prodotti è complessibile, però sì, 80-90 ore a capire di che si tratta di fare lo scaffol di grazia.Se non ci vuole.Con tutto che così framework qua.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 o 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 diciamo.Aspetta ti faccio una domanda giusto per chiarificare questo ma 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ì, 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 logic, la tua business logic è tutta nella tua database di business, è tutto in tabelle pulite che diciamo poi potresti anche esportare e mettere da un'altra parte e continui ad avere la tua applicazione eventualmente senza direttos, 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, i permessi e quant'altro.Io ormai dico sei mesi a tutto, cioè proprio così.Questo tempo ci vuole sei mesi, via.Ma questa afficcio sono sei mesi va bene comunque sì.Allà 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 ho visto che per il front end usa viewjs già la ho tirato un respiro di sollievo ho detto va bene non mi piace express non mi piace viewjs 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 crudello quindi tabelle di business e caricamento dei dati.La prima Una cosa che mi serviva, adesso vi farò ridere, ma voi sapete che Mapbox supporta le mappe in tre dimensioni? Perché attraverso l'analisi delle curve di livello del terreno fa delle proiezioni e quindi ti fa una sorta di Google Earth nella mappa.Per il tool che mi serviva io avevo bisogno di impostare lo scostamento laterale su e giù dalla telecamera si chiama gig so credo buono 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 direct us la prima cosa che mi son chiesto è posso embeddare questo tool come se fosse un campo mi sa luca che te l'avevo fatto fatto vedere questa cosa 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 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 che 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 son riuscito però come succede nello sviluppo di questi plugin ti dimentichi sempre un secret o una chiave all'interno del codice javascript e 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'è 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 là 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 view potesse pingare l'endpoint e prendersi la chiave.Ho fatto la rotta, tre righe di codice, tra l'altro le estensioni per directus e lo scaffolding si fa direttamente con un comando, perché c'è una clip per generarle, e boom! E' tutto funzionante, due ore di lavoro.Cioè io, una volta che ho fatto questo tipo di esperienza sono rimasto scioccato perché 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 volevo che voglio Una cosa che mi ha subito colto l'attenzione...ok, da un piccolo campo per il caricamento della mappa devo passare 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 andata 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 Gantt 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 son 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 e 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 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 una 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 e 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 vielo proprio glielo dice esplicito bypassando il sistema di diritti ti espone i nuovi dati e il tuo plugin componente view leggerai nuovi dati.Tutto questo è un software custom, è un software ad hoc, ma in un contesto che già ti dà una serie di cose che sono le foundation, comprese la parte UI delle foundation, che giusto per citare cari mie rails non ti dà, 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 e Luca.Eh, si vede che ti sei proprio divertito in questi ultimi mesi, no? Adesso sono qualche mese che ci stai.Sono circa 100 ore.100 ore.Notturne, immagino.Sì.Anch'io mi sono divertito 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, in genere 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.In questo caso devo dire ancora non mi è capitato anche se ho dovuto inventarmi alcuni trick, come per esempio uno dei componenti che ti offre quello dell'input con l'autocomplitta, quindi abbastanza semplice tu dici che questo field ha questo input che questo input è provvisto input.txt provvisto di un autocomplete.Mi serviva una cosa veramente stupida che questo che l'autocomplete doveva semplicemente far riferimento a valori precedentemente inseriti e allora ho fatto ovviamente il componente lo potevi configurare mettendo l'url che vuoi con l'autocomplete, l'url che ti dovrà ritornare un json o quello che vuoi se non sbaglio può accettare anche csv, tu gli dici ok a questo url troverai un json e in questo xpath hai i tuoi valori di cui devi fare l'autocomplete.Mi serviva, ho detto "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 io ho dato l'URL della...con l'autocomplete io ho dato l'URL della sua stessa API che va a trovare lo stesso campo, va a vedere i valori con un group by perché poi via ghetto puoi fare abbastanza i magheggi che servono e ha funzionato, tempo 10 minuti, 5 minuti per avere l'idea, 5 minuti per per per eseguirla.Più tante altre cose di validazioni, validazione dei campi per 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 magheggio che poi più scopri più ti viene voglia di farli, perché dici "ah vabbè questa feature non è che mi serve perché non muore nessuno, 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 appunto che mi serviva, senza scrivere una riga di codice attualmente la fai semplicemente con quello che ti mette a disposizione.Carmine, tue perplessità fin qua? Fin quanto detto? Allora, le mie perplessità sono sempre dettate dal fatto...Io non ho mai utilizzato il tool di cui stavate parlando, anzi sono stato il primo prima a dirvi "ah ragazzi, ma allora me lo consigliate?" Non me lo consigliate.La mia esperienza, e vi chiedo che si possa fare un discorso anche un po' più ampio, con il no code è sempre stata persino.Con il low code dipende, secondo voi questa cosa è considerabile low code o no code? E come la stiamo definendo è low code, nel senso che scrivi poco, diciamo così.Quindi, non lo so, nel senso l'esempio più vicino ma non troppo che vi posso fare, che fare ottimamente è iTable.Abbiamo più o meno usato il titolo, ovviamente fa un quarto delle cose di cui stiamo parlando, ma effettivamente è specializzato e le fa bene.Io sono sempre un po' restito da quel tool che ti promette tutto, anche tutta la storia dei plugin e non lo so, sono sempre un po' dubbioso, finché non lo provo.Era la stessa cosa che mi dicevano di Wordpress, alla fine il blog 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ì, 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 sono 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 run relogica 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 rotte express o sono dei componenti particolari di view.Quindi hai già una libertà diversa.Andiamo nel dettaglio.Ci sono plugin che ti danno più libertà e plugin che te ne danno meno.C'è il plugin dove puoi costumizzare 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 crud quindi se un po limitato la però soluzione veloce a problema comune c'è la visualizzazione lista dati no altro altro problema simile la visualizzazione lista dati a questa quella caratteristica di essere vincolato dal contesto dove si trova tra 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 stai 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 tutti 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 endpoint 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 rispetta all'API degli handler di express, delle rotte di express, e poi ti crei il tuo "container component view" e ci fai quello che vuoi dentro perché sei ritornato a programmare puoi interfacciare con l'API per ottenere i dati oppure puoi usare volendo gli store che ti espone lo store manager di Vue 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, infatti come stiamo dicendo prima sono prossimo a provarlo insomma quindi Cioè, 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 crude, ma di poter anche gestire flussi, di poter fare più cose con 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, poi fai l'applicazione front-end perché sì, e mi metti gratis per l'autenticazione, eccetera.Quindi 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, aprire il portoncino dalla stessa interfaccia.Mi dà quell'impressione lì.E vedendo anche Scrish, o quello che ci siamo detto insieme, effettivamente può ricoprire il caso uso di un back office per il 90% dei clienti per cui ho lavorato nella mia carriera.che era il crude, l'autenticazione, la tabella per quelli più in paghe di certi, c'era l'export e l'import dall'excel però alla fine...Automatic out of the box.Esatto, quindi nel senso c'è già tutto alla fine e secondo me può essere effettivamente un buon tool, ecco anche volendo andare 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.delle cose, insomma, hai un tool semplice che una volta che impari comunque anche a domesticare con i suoi quirk è sostanzialmente quello e poi effettivamente utilizzato 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, uno scaffolding, in qualche modo.Sto effettivamente pensando a me freelancer che devo fare 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, ma voglio effettivamente fare un'istanza di myoliva.eu, lo vado a registrare subito, per ogni mio cliente.Lo posso fare in maniera automatica o lo devo far male? Ti racconto la mia esperienza in questo perché in realtà io son partito da sai ogni ogni tool compresi 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 un altro e quindi mi prendo la mia parte come come è buono che sia no in realtà il primo approccio che ha avuto è faccio una configurazione base mi dampo il database 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, con abilità e diritti granulari sull'inserimento dal 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 ok e poi esportarmi in csv il seeding delle tabelle critiche per esempio quella di diritti no 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 multipli di diritti quindi già un applicazione leggermente complessa.Quindi io mi esporto solo quel csv perché non ho voglia di andarmi a configurare a mano dopo di nuovo tutti i diritti e però me lo metto a fianco allo schema versionato e così ho risolto il problema ho risposto la tua quando poi che ne so io lavoro su maio liva punto it ho venduto un'istanza a carmine punto maio liva punto com ok però maio liva punto it c'è una feature in più con una tabella in più e io ho esportato e ho versionato lo schema di maio liva punto com quando lo devo applicare a carmine io prendo lo schema che un file yaml lo lancio nell'istanza di Carmine, Directus è 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 no? Praticamente ti risolve parte dei problemi.A questo livello non c'era arrivato ancora però io ho dovuto semplicemente sicuramente si fare un clone di quello che avevo fatto, me la son cavata appunto copiando selettivamente le tabelle interne sue 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 apri le leggi.Le leggi non sono cose strane, sono esattamente directos flows per i flussi, directorusers per i user e dentro 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 perché 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 fare il query a mano da un csv oppure puoi usare un software che ti gestisce dati, insomma puoi usare quello integrato di WebStorm, di WebStorm, una delle intelligedia che non mi ricordo come si chiama e farlo da lì.Io ho fatto praticamente così, erano a pochi dati e quindi c'era 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 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 quelle e quelle non vengono esportate nello schema, cosa è 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 e può anche essere multilingua, puoi anche mettere le traduzioni per ogni per ogni label e quelle però appunto sono tutte cose interne sue che si salva in qualche in qualche tabella.Nella tabella translations, è pulitissima.Guarda un po'.Sì perché puoi tradurre tutta l'applicazione volendo, cioè tutte le cose custom che fai possono avere le label tradotte qualunque dal flow al cose.Comunque è gestibile.Carmine tu prima però in fuori onda ci hai fatto una domanda, mi hai fatto una domanda un po' particolare no? Che era quella riguardante il multi tenancy.In realtà ecco, nel senso che come stavamo parlando prima insomma, alla fine quando penso queste cose, penso comunque in ottica, come hai detto tu, per effettivamente rivenderla.Scusa Carmine, devo dirlo, ci hai appena mandato lo screen dell'acquisto di Nel Dominio Mai di oliva.Assolutamente, non sia mai nel senso… "Se mi desideri si scherza, ma io lì va può diventare effettivamente il mio business".No, sì, ecco, è sempre una mia preoccupazione, insomma, così se la vogliamo dire.Però, ecco, si è risolto dicendo prima, vabbè, tu fai un'istanza per ogni cliente, insomma, è quello che poi alla fine farò anche io.Non mi andrei a complicare troppo la vita.E' vero che per chi ci sta ascoltando da casa parliamo di multitenanziura, non parliamo di roba multi-user, anche perché quella insomma abbiamo visto e abbiamo già parlato di come si può fare.Però ecco, sì, 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 un fourth press o con un cake di HP, insomma.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, lo sviluppatori ci subiranno il lavoro o c'è comunque una barriera di ingresso? Per cui me la stai raccontando, cioè non è qualcosa che può utilizzare una persona totalmente a digiuno di questa roba.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 la sticella.Le feature di cui abbiamo parlato oggi, se vi siete resi conto, arriviamo ad un certo punto poi ho detto 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 una 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 i codici 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 local tool dove ti hai 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 un altro tuo sistema SAP 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 corretta.Ed è credo le peggiori API con cui ho dovuto interagire nel mondo.Saluto il mio amico Paolo che ha sofferto e pianto con me in questa via crucis.Comunque cioè alla fine secondo me è super potente la cosa.Bom! 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 prettamente pensato in un'ottica di CMS edless no? A 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 Directus 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 punti valori ci sono tra il l'ottanta per cento e il settanta per cento quindi volevo vedermi una distribuzione statistica non c'era il tool mi sono fatto il mio componentino "view.js" che mi mostrava la distribuzione statistica prendevo una prop e mostrava la distribuzione statistica il gioco è fatto quello è il livello 2 il livello 3 e poi quando te lo crei tu il tool di data viz da mettere dentro directus come ho fatto io per esempio la pagina di booking che è completamente custom però è passato un'ora e dieci minuti e l'abbiamo solo incensato adesso è il momento giusto di spalare merda contro directus LM: vorrei soltanto dire, aspetta un attimo, che anche il livello 0 forse lo stiamo sottovalutando a seconda della prospettiva in cui guardiamo, perché comunque è 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 mastichiamo sappiamo benissimo che cosa vuol dire, però magari un'altra persona meno abbezza alla programmazione, all'informatica 1 di base, o informatica 1 di altra università, magari non riesce a capire o non le sa gestire queste cose.Quindi diciamo che, secondo me, è un tool per noi, noi dell'Olimpo.Secondo me è interessante questa cosa che hai detto, perché allora vi faccio anche un'altra domanda.Considerando che 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 sì, bella, perché l'abilità è buona, è giusta, però cazzo, in senso che stai facendo la consenza di un comodo esempio.Considerando che comunque questo tool è uno skype non super 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 i Rectus, cioè proprio offrire come servizio quello di fare consulenza da Rectus, perché secondo me anche questo è interessante.Ora, non so quanto sia diffuso e quanto sia utilizzato, non siete effettivamente i primi che me ne parlate assolutamente.Allora, Directus, come diceva Luca, la sua potenza è anche data dal fatto che te lo stai selfostando e lo estendi come vuoi.Quindi ha ragione, forse.Forse sono andato io un troppo delicato ma un po di di 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 view quindi vuol dire che il drag and drop su aruba non funziona la cosa più semplice che puoi che puoi fare è "heroku" o simili che vuol dire che devi conoscere git che vuol dire che deve avere un repository magari già non è poi così banale il gioco no? Quindi...Si c'è una versione cloud ma almeno l'ultima volta che l'ho visto non lo puoi estendere quindi cade anche un po di...Anche che se ha una serie di componenti in più rispetto alla versione community.Tipo, ne abbiamo parlato prima della Kanban, del Gantt Chart.No, almeno devi essere un po' più del WordPress installer.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 o della vostra azienda insomma, piuttosto che andare su soluzioni a pago più famose come possono essere Salesforce come può essere esatto, ma li siamo proprio su una scala totalmente diversa o comunque delle robe a casco, 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 sales force, che è una nave per poi andare col monopattino perché comunque sono tool molto complessi dove ci puoi fare tanto dove devi pagare consulenza per farlo installare, per fartelo configurare, per fartelo spiegare da chi lo deve utilizzare può essere e noi l'abbiamo valutata come come come valida alternativa, da un tool da usare, cominciare a riempire il database dei primi dati, cominciare a fare le pulizie 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 visto, cioè già dico la fesseria, già mettere i nostri clienti su un mappa e vedere come si distribuiscono e vedere quelli che stanno alla longitudine 00, non ce ne eravamo accorti, già quello è un valore aggiunto che ti ha ripagato quei due giorni di configurazione 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 e basilare per tutte le pagine, se non devi fare cose appunto, se non devi fare booking come Mauro, se ti limiti diciamo al minimo indispensabile.E soprattutto va bene per cercare di capire tu quello che vuoi, perché o magari te ti fai l'abbonamento o comunque paghi la licenza a tool molto più potenti, 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 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 una scelta che secondo me e secondo noi ha avuto senso, ha senso fare e lo faremo appunto nel primo, nel prossimo trimestre.In questa cosa qui, nel senso io spesso ho sempre paura dell'effetto Gatsby, Gatsby framework, insomma, non un Gatsby personaggio.Per chi non ha mai utilizzato Gatsby, ora ci sarà sicuramente chi può ricorrerci e dire "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 come approccio, ho usato Gatsby un po' per fare tante cose, perché era "hatter included" perché c'erano plug-in, perché c'era community, eccetera, ne ho dovuti rifare tre fuori da casa.Perché non partiva più per le dipendenze, perché non compilava e mi fa sempre ridere il fatto che si deve compilare il sito.Quindi ho fatto fatto questa domanda perché sono un grandissimo autore di non reinventare la ruota assolutamente e se mi avete accortato in più di occasioni questo è assolutamente valese.Ho sempre però paura dell'affidabilità di questo tutto incluso.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 è stata 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 knex che è una libreria un query builder per javascript che conosciamo tutti chi fa back-end in javascript in un modo o nell'altro c'è inciampato su knex ok quindi posso dire che il 90 per cento del codice custom che ho scritto è completamente agnostico di Ederectus.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 endpoint dai quali ho disaccopiato la logica di business, l'algoritmo di calcolo della disponibilità.È 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 no? 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 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 portata presso 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 sono 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 di caio io 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 sono non fanno il crude prima cosa e tu dici sì 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? Ci sono dei casi specifici no? Dove incapi in questo in questo limite.Un altro problema vero ce l'hai quando vuoi creare delle 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 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 andata a vedermi come erano costruite le maschere del core per cercare di tenere gli stessi componenti appresso no e quella roba non è documentata manca uno storybook fatto bene per costruirti delle estensioni che si integrino bene nella casa 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 una installazione per ogni cliente volendo o per set di clienti, loti 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, Redis, 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, si va 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 10.000 utenti, se è fatta bene.Quindi alla fine, stai parlando di un tool che in due giorni ti fai un sass, 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 e stavo pensando mettiamo un load balancer che poi va in diverse istanze ok va bene.In realtà c'è tutto un caching layer vi suggerisco e 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.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 tool no code a un tool, come si dice, al tool mettiti sulla sedia e programma, e quindi io mi sono fermato alla parte no code contro ogni previsione, perché sapete che non sono un fan del tool no code.Comunque, una cosa su cui ho perso un po' di ore e poi non ho risolto, era avevo fatto una UI abbastanza complessa con relazioni e richiami ad altre tabelle, e ci avevo messo anche 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, 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.Ti svelo come l'ho risolto io.Dando tutti i permessi di lettura.No, questo stasera per andare veloce.No, ma io l'ho risolto così, quando faccio queste feature io tengo un browser con 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 l'inspector, 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 Si, qualcosa ho fatto adesso non ricordo di preciso, però mi ricordo che ispezionando cioè alla fine andava 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 tente perché tanto non ce le hai i permessi per vederlo" invece continuava a farlo.Può essere che abbia sbagliato io qualcosa, però sa 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, ci si può trovare in questa situazione.e non ho scritto una riga di codice, quindi manco puoi dire "scemo hai scritto male" mi puoi dire "scemo hai cliccato il bottone scelto" però hai composto le query dei permessi perché poi la cosa figa è che puoi creare delle query complesse di permessi, anni dati che si riferiscono a un campo, se questo campo è stato compilato e hai punto a 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.Però ogni campo che ha 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 vederlo in tante altre applicazioni così fatto.Devo dire la verità.Ultima domanda a Carmine e Luca.Ultima domanda a considerazione.Carmine ha già fatto npm install per myoliva.net esattamente, ho finito i video su openAI, volevo farmi girare un'immagine Questa cosa è già costata 30 euro, vabbè.Secondo me è un tool assolutamente interessante che userò, eccola qua, ci stavo dicendo Credo… me l'avete venduto troppo bene, quindi devo necessariamente provarlo, perché non so, mi ha dato questa grande voglia di provarlo, però sarò sempre dubbioso finché non lo posso scalare, anche se non mi serve.ma può essere 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 backend 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 tutta tutte le feature del podcasting 2.0 che Spricker 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 a una cosa così bella a parlare di soldi perché i soldi sono veramente la cosa più bella del mondo quindi donate perché dobbiamo fare la 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 su delle cripto uscite da mezz'ora.[musica] 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 tre 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.E' 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!" "Ah, il paese dei balocchi!" Ci condividono un balò con tu, un video, una libreria, un qualcosa che abbia catturato la loro attenzione 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, il libricino.Non sto leggendo tantissimo in questo periodo perché sono stanco.Sono veramente stanco ma ho un libricino piccolino sul comodino, 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 prova a spiegarli e sono cose dove avvengono 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 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.Tanto l'Italia è bloccato però 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 tipo, cominciare a vedere le potenzialità, capire che cos'è Sudolang, fare prove su prove e cominciare 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, però ci siamo capiti dove c'è più testa che ripetitività in questo caso, o manualità.Praticamente ritorneremo all'agricoltura ed ecco perché Carmine si è portata avanti col lavoro comprando un MyOliva.net Ma non è un caso che diceva OpenAI, OpenAPI, OpenAPI o quello che è poi MyOliva.net Sì, sì, esatto, ma in realtà è un complotto, dico, nel senso OpenAI l'ha fatto comprare Haioliva.net, che probabilmente si visiterete quando ascoltate la puntata, troverete qualcosa, insomma, nel 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.Ecco, questo qui è il mio balocco.Ultimamente sto soffrendo tantissimo di schiena, la standing desk o la sedia figa, quella lì che deve per forza costare tanto e che gli youtuber recensiscono dicendo "oh mio Dio, è la cosa più conga su cui mi sia mai seduto".È della Ewart, suppongo si dica così.Ma avevo sempre mal di schiena e ce l'ho anche in questo momento.Probabilmente è dovuto al fatto che sono contorto sulla sedia, però è qualcosa che mi ha veramente svoltato e funziona anche per le persone non particolarmente sportive, tra cui io, ad esempio.Quindi, nel senso, fatevi del bene e fate del bene alla vostra schiena, altrimenti arrivate a 27 anni come me.Devo necessariamente fare allora io ho un balocco sappiamo che su twitter stanno succedendo cose tipo i profili twitter pagamento paga 2 euro per leggere i tweet di super customizzati di pinco pallo che scrive per te e solo per te se paghi 2 euro e 50 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.Nostr 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, 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 bitcoin però su mastodon non li ho visti magari mi sono perso qualcosa io possibile ma la cosa bella è leggervi la parte tecnica e le implementazioni di questa specifica che sono tanta roba molto figa bello bello bello bello bello no sì sono d'accordo con Carmine dormiamo sereni siamo tranquilli e poi mi immagino giro pagina c'è l'apocalisse dei lavori e lavoratori beh però una cosa l'abbiamo imparata nel nostro modo di lavorare che comunque il lavoro che facciamo è possiamo dire 70 per cento perlomeno parlo per me 70 per cento problem solving 20 per cento formazione e 10 per cento scrivere codice i problemi ci saranno anche con l'intelligenza artificiale, quindi preparatevi a risolverli.In quel 10% di scrivere codice penso che il 90% del 10% sia il dare i nomi alle cose.Ci stavo ragionando stasera, oggi dove non accodere più alla fine era 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ù funzionale per spiegare una certa cosa utilizzando il linguaggio naturale.[Musica] Eh sì.Quindi non ci liberiamo di questa cosa.Almeno non così facilmente.[Musica] Detto questo un'ora e 48 minuti di episodio è arrivato il momento di abbassare la Claire, visto che ormai le birre sono finite e di dirigerci verso l'uscita del nostro Gitbar.Gitbar è qua, Gitbar non si sposta e Gitbar torna da voi il prossimo giovedì.Io ringrazio nuovamente 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, ci fa piacere saperli.giusto perché il Gitbar è anche e soprattutto un posto dove si condividono esperienze noi le stiamo condividendo dietro ai 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" o "Ask Haz anything" "Awa" un'Awa? Un'Awa? Awa, Awa! Vediamo la canzone di chi era? Degli Awa qua? No, no, no, no Piccola digressione che varrà tagliata in fase di montaggio Perché è cringissima detto questo abbassiamo la Claire e alla prossima un saluto ciao ciao gitbar il circolo dei full stack developer una volta a settimana ci troviamo davanti a due birre e con re repo parliamo di linguaggi e tecniche di sviluppo web di metodologie e di strumenti immancabili nella cassetta degli attrezzi dei full stack dev [Musica] [Musica]