1. 1

    non conoscevo Grokking Algorithms, mi ha incuriosito e l’ho comprato. qualcuno lo conosce già?

    1. 2

      per un progettino vorrei approfondire un attimo serverless framework, in particolare vorrei capire se offre la possibilità di gestire dei “microservizi” e come. Giusto per non avere mille lambda minuscole, ma raggruppandole in qualche modo.

      1. 1

        Per ora è solo il frontend, prepariamoci ad una settimana di espertoni sulla review di source code tra giornali, tv etc…

        1. 1

          Ma ci si aspetta che rilascino il backend?

          1. 1

            Non ne ho idea, però della UI onestamente frega poco, personalmente.

            1. 1

              Concordo - o meglio, avere il codice dell’app dà una sicurezza in più sul fatto che non facciano cose strane. Personalmente lo vedo un po’ difficile che rilascino il backend, ma non sono informato sulle loro intenzioni.

              1. 2

                credo che non ci sia un vero e proprio backend, se c’è fa solo da middleware per andare sulle API Apple/Google di contact tracing. Ho fatto parte del famoso team NoiApp per un po’ di tempo ed il backend faceva poco o nulla.

                1. 1

                  Si in effetti usando l’architettura Apple/Google per il tracking non serve a molto. Sarebbe servito se il modello fosse in-house, stile UK per dire.

        1. 1

          Quando lessi questo articolo lo apprezzai molto. L’ho condiviso con diversi colleghi e ora non c’è un commit che faccio senza utilizzare questa convenzione. Nel giro di una settimana mi aveva salvato il culo un paio di volte! Sono tornato dopo 4 mesi per commentare e ringraziarti :)

          1. 1

            grazie mille! sono contento di essere utile a qualcuno :D

          1. 1

            oddio, questa branching strategy non la conoscevo. Dall’articolo però non si capisce esattamente quali siano i problemi che ha creato.

            1. 1

              mi sa che non sono riuscito a comunicare il disagio che sto provando allora! Devo imparare a splittare le sedute di scrittura, alla fine arrivo sempre cotto e mi perdo i pezzi.

              Quello che succede è che nessuno capisce bene dove andare a sviluppare le proprie feature, non si sa poi dove si devono deployare i branch per farli testare, per non parlare poi dei merge back sulle release precedenti (ieri ci ho messo un pomeriggio intero). Ci sono poi tutti i problemi legati alle librerie interne che usiamo, che seguono un sistema di branching ancora diverso.

              Come dicevo nell’articolo, abbiamo tutte le regole necessarie per aiutarci, in teoria, ma farle assorbire da un team di 15 persone è… impegnativo :)

              1. 1

                sì, in effetti se non hai più un match tra branch ed environment, e immagino non ci sia un’infrastruttura che sa tirar su un environment on-demand per ogni branch, dove testate?

                1. 1

                  purtroppo la realtà di Sky è molto complessa su tema testing. Questo perchè interagiamo con molti sistemi diversi (crm vari, middleware vari, cms vari) con anche loro ambienti separati, dati anche in outsourcing. Quindi orchestrare tutta la fase di testing è veramente complesso, non per niente esiste una bella fetta di governance che fa esclusivamente questo.

                  Detto ciò, la soluzione a cui siamo arrivati sta un po’ in piedi con il nastro adesivo: ci siamo detti che il testing viene fatto deployando una certa release in un ambiente già pronto in un certo lasso di tempo nel quale tutte le componenti devono avere una versione concordata. Ti lascio immaginare la quantità di bachi dovuti a versioni di sistemi sbagliate :)

            1. 1

              The Pragmatic Programmer - stupendo

              Clean Code - è li che mi guarda, prima o poi lo dovrò cominciare

              1. 4

                sto scrivendo un articolo per il mio blog per il quale ho dovuto approfondire un po’ le diverse branching strategy grazie a questo articolo di Martin Fowler. Pesante ma merita.

                1. 4

                  documentazione come se piovesse. fiumi di sequence diagram con PlantUML.

                  1. 2

                    al lavoro stiamo cominciando a passare ad un’architettura a microservizi. Stiamo intanto capendo come spezzare il monolite seguendo un approccio domain driven.

                    Per conto mio sto lavorando ad un progettino in Go per farmi un po’ le ossa, si tratta di una cli (o web app, in abse alla voglia che ho di fare dei css) per recuperare giochi e relativi prezzi del Nintendo eShop, suddivisi per region. Vorrei poi postarlo da qualche parte per farmi dare dei consigli su come strutturare meglio il codice, scrivendo principalmente in Java tendo a seguire alcune delle convenzioni che uso li.

                    1. 2

                      Avete un guru di DDD o procedete in modalità autodidatta? Vorrei proporre la stessa cosa nella mia azienda, ma non essendoci esperti di DDD non vorrei ritrovarmi in un inferno di applicazioni REST

                      1. 3

                        qualcuno di noi ha già scorporato monoliti, quindi un pochino di esperienza c’è: non definirei nessuno un guru ecco.. però ci proviamo! Meglio si pianifica prima, meglio è

                    1. 3

                      Sto vedendo velocemente come fare slides di presentazione in Markdown con pandoc e il pacchetto LaTeX Beamer e credo di aver trovato un buon riassunto.

                      1. 4

                        Io ci ho lavorato proprio con Pandoc e reveal.js. Ho realizzato un corso intero con questa tecnica, mi sono trovato benissimo. Agli allievi davo solo un link, niente più ingombranti PPTX da spedire in allegato.

                        Le slide le scrivo in markdown e poi passo tutto a Pandoc. Ho anche creato uno stile personalizzato con il logo e colori aziendali.

                        Tra l’altro ho anche usato un plugin chiamato Chalkboard che consente di avere una lavagnetta dietro le slide dove scrivere con un gessetto virtuale. In aula mi portavo una tavoletta grafica Wacom che usavo per disegnare gli schemi.

                        1. 3

                          se vuoi un’alternativa, io ho usato mdx-deck con codesurfer. Puoi trovare un esempio deployato su netlify qui

                          1. 2

                            Altra alternativa forse più facile e veloce può essere revealjs (sempre usando pandoc)

                          1. 1

                            già iscritto, molto curioso :)

                            1. 2

                              queste roadmap mi piacciono sempre molto, ma intimidiscono chi si affaccia in questo mondo.

                              A mio modo di vedere non si dovrebbe andare proprio così, una cosa dietro l’altra, ma farsi “contaminare” dal contesto e vedere di volta in volta ciò che ci si trova davanti.

                              Il sito è simpatico, proverei a legare anche le guide alle varie roadmap.

                              1. 2

                                Allo stesso tempo però danno un’idea dello sforzo necessario, rendono finito qualcosa che dall’esterno sembra infinito. Poi non è detto che seguire la roadmap per filo e per segno e lasciarsi contaminare è fondamentale. Però se uno ha i soldi contati per spendersi tra i 3 e i 6 mesi chiuso in casa ad imparare, una roadmap del genere ti dà un riferimento e sei sicuro di non star buttando il tuo tempo. Poi chiaramente i programmatori che escono da un percorso del genere non saranno i migliori del mondo, ma per definizione non tutti possono essere eccellenze.

                              1. 2

                                sto lavorando a due cose:

                                • sto integrando etcd per come sorgente di configurazioni all’interno di un progetto java-based
                                • sto provando a compilare nativamente tramite graalVM una lambda scritta in Java 11

                                Soprattutto l’ultima mi sta dando parecchio filo da torcere.

                                1. 3

                                  Bello. Uso molto plantUML per altri tipi di diagrammi, lo consiglio alla grande visto anche il supporto che ha.

                                  1. 1

                                    PlantUML lo uso anch’io da tanto tempo. Ho anche creato uno skin con i colori aziendali che includo in ogni diagramma. Ho tra l’altro scoperto solo da poco che c’è un plugin su VSCodium/VSCode per il rendering in tempo reale.

                                  1. 5

                                    Sto seguendo un bellissimo corso che copre molte delle basi che ognuno di noi dovrebbe avere. Il corso si chiama “the missing semester”, Googlate pure :)

                                    1. 1

                                      letto questo mese l’ultima versione di “The Pragmatic Programmer”. Qualche spunto interessante, qualche banalità, ma in definitiva lo consiglierei a tutti, essendo anche language-agnostic. Il prossimo sarà Clean Code (che ho già iniziato, ma vorrei riprenderlo). Poi sicuramente Effective Java, che non è in lista ma è un must per tutti i javisti.

                                      1. 5

                                        Sto cominciando a gettare le basi per un piccolo progetto in Go di cui non dico nulla perchè sarà oggetto di un articolo sul mio blog credo :) Go + Angular + una serie di Lambda Functions. In realtà credo di non utilizzare AWS ma sfruttare il free tier di qualche altro provider: consigli? GCP, Azure, Openshift? Dovrei usare qualche funzione serverless, un DB e volendo un qualcosa per esporre API (quello che aws chiama API Gateway).

                                        A livello lavorativo, sto affrontando la migrazione dei nostri swagger da OpenApi2 a OpenApi3.

                                        1. 3

                                          Lato Go puoi usare Gorilla mux per semplificarti i routing. Io l’ho introdotto qualche anno fa, va alla grande.

                                          Lato API gateway noi stiamo usando Kong, velocissimo, si configura tutto tramite API, tra l’altro è frutto di una start-up tutta italiana.

                                          Lato infrastruttura, io ho una piccola VM sul free tier di Google Cloud: piccolina, ha circa 600MB di memoria, 1 vCPU ma un bel po’ di disco. Vedi se ti basta.

                                        1. 3

                                          non conoscevo il forum iprogrammatori.it, appena aperto ho fatto un salto nel passato di almeno dieci anni :) leggo una “lievissima” critica alla moderazione su r/ItalyInformatica, che condivido alla grande.

                                          In generale, il panorama mi sembra comunque abbastanza desolante.

                                          1. 2

                                            eh, abbastanza. Nel senso, gambe.ro è nato proprio in questa prospettiva e da questa consapevolezza. Tuttavia ancora ad un anno di distanza non sono sicuro di capire cosa manchi ad una comunità per riuscire a risolvere questa frammentazione e non voglio banalizzare la cosa tirando in ballo la natura polemica e settaria degli italiani.

                                            1. 4

                                              Non credo che a Gambe.ro manchi necessariamente qualcosa. Personalmente sento molto la mancanza dei forum e della comodità, cosa che sino al 2010 si riusciva ancora pressappoco a ritrovare.

                                              Penso ci siano davvero tanti fattori in gioco: i social sono uno di questi, ma anche le chat come Telegram non aiutano affatto. Le chat in particolare consentono all’utenza di avere risposte immediate a problemi che non hanno voglia di cercare online, ed è un ciclo che si autoalimenta. Già 7-8 anni fa quando arrivavano nuovi utenti sui forum si faticava ad andare oltre all’help desk. Non so bene a cosa sia dovuto il disinteresse, ma sicuramente è cambiato qualcosa nelle ultimr generazioni. Dico “ultime generazioni” in quanto rimane sempre lo zoccolo duro di utenza, che nella maggior parte dei casi era utente già anni prima e magari supera anche i 30 anni.

                                              Non penso si possa porre resistenza al cambiamento in atto (avverrebbe comunque).

                                              Curiosità/domanda: ho visto che nella lista non hai citato le comunità di Tom’s e HW Upgrade. Come mai? Erano panorami ancora più desolati e quindi anche inutili da riportare?

                                              1. 1

                                                sono comunità grosse dove però ci sono principalmente utenti. Poi attirano anche informatici in maniera specifica, ma non le definirei comunità per informatici. Sono comunità per appassionati e consumatori.

                                              2. 1

                                                Più che di “natura polemica e settaria”, secondo me è un problema di bolle (che sì, possono passare per una natura polemica e settaria): tutti i colleghi che conosco frequentano giri piccoli (fondamentalmente quelli dell’università e dell’azienda corrente) e quindi conoscono community tramite quei giri. Io stesso, se non ti avessi conosciuto per altri giri, non credo sarei venuto a sapere di gambe.ro (e, delle tre persone che ho invitato, due vengono dalla mia università - uno è anche ex-collega - e solo uno da un altro giro).

                                            1. 1

                                              Boh, sarò strano, ma il semantic versioning l’ho sempre più o meno adottato e saranno almeno 20 anni che metto sempre messaggi di commit esplicativi. Inoltre sui vari repo mantengo un changelog.md dove di volta in volta, ad ogni push aggiungo una riga con una descrizione “di business” (ma tecnica) di quello che è cambiato in quella versione, se si introduce un’incompatibilità con la versione precedente, se si introduce una nuova funzionalità, se si corregge un bug, ecc. E se si è modificato qualcosa da far aumentare uno dei numeri del semver, lo faccio subito secondo le convenzioni del semver.

                                              L’idea di estrarre il changelog in automatico è ovviamente buona, ma ci vuole molta disciplina a scrivere non solo messaggi di log esplicativi e secondo le linee guida, ma anche “di business”, cioè in bella copia per un changelog consegnabile all’utente, poco interessato ai messaggi di log tecnici degli sviluppatori.

                                              Come lo faccio io il changelog, cioè a mano di volta in volta, ottengo un changelog più sintetico ed aggregato. Magari una singola riga che illustra una nuova feature, si traduce in 10 messaggi su altrettante commit: è meglio fare un changelog con tutti i messaggi di ogni singola commit, oppure uno che riassume in maniera chiara la modifica?

                                              Io propendo per quest’ultima ipotesi, per la prima c’è il comando git log.

                                              Comunque l’idea di fondo è sacrosanta: i messaggi di commit devono essere scritti in maniera da essere utili e bisogna stabilire degli standard da seguire, qualunque essi siano/

                                              Il problema è farli seguire a tutti, ma proprio tutti gli sviluppatori. Basta un solo sviluppatore che metta messaggi di commit a cavolo (es. “Modificata Classe.java”) per far saltare tutto il castello.

                                              1. 3

                                                Il problema è farli seguire a tutti, ma proprio tutti gli sviluppatori. Basta un solo sviluppatore che metta messaggi di commit a cavolo (es. “Modificata Classe.java”) per far saltare tutto il castello.

                                                Esatto, è quello che cercavo di sottolineare. Ben vengano convenzioni utili, il mio dubbio è puramente sulla natura umana della cosa.

                                                1. 3

                                                  come dicevo sopra, è una cosa che si potrebbe controllare. Apri PR? controlli che i messaggi siano corretti ad esempio. Insomma, con un pochino di lavoro credo si possano raggiungere degli ottimi risultati, poi ovvio, ci sarà sempre l’eccezione

                                                  1. 2

                                                    ma penso che una roba del genere si possa forzare con degli hook, no? O spaccando le pipeline se proprio non si può con gli hook

                                                    1. 2

                                                      Dite che è impensabile nominare un “tech lead” owner della repo in modo da forzare gli altri sviluppatori ad aprire PR?

                                                      1. 3

                                                        Basta proteggere master e/o develop in modo da non poter fare commit diretti su di essi se non da PR :)

                                                        1. 3

                                                          Si si. Ma quello che intendevo dire è, nel mondo reale, è fattibile una cosa del genere? Se penso ad una cosa del genere nel mio team, potremmo rimanere paralizzati per mesi

                                                          1. 2

                                                            Noi siamo un team di 15 persone e lavoriamo benissimo. In azienda tutti i team oltre al nostro usano queste stesse convenzioni con successo da anche più tempo, quindi direi di sì!

                                                            1. 2

                                                              Fantastico. Hai avuto modo di assistere al processo di adozione? Mi piacerebbe introdurlo nell’azienda in cui lavoro cavolo :)

                                                1. 1

                                                  La convenzione però non cambia il risultato finale secondo me 😂. Verrà seguita per x commits e poi si torna ai soliti messaggi poco “parlanti”.

                                                  1. 2

                                                    Infatti le convenzioni non vanno seguite ma forzate

                                                    1. 1

                                                      Ok…

                                                    2. 1

                                                      Guarda, l’abbiamo messa in campo da qualche mese e siamo tutti contenti 😎 più che altro perché aiuta tutti anche ad essere up to date con gli sviluppi

                                                      1. 1

                                                        Non metto in dubbio, nel gruppo in cui sono adesso secondo me dopo 1 mese mi mandano a quel paese 😂, i vantaggi a livello di team non li discuto ovviamente nell’avere dei commit organizzati come Dio comanda :D