ITDevCon 2017: slide e sorgenti su Clean Code e Information Radiator con Delphi

Badge di ITDevConSi è conclusa da qualche giorno l’appuntamento annuale imperdibile per gli sviluppatori Delphi, ITDevCon 2017 – European Delphi Conference, la conferenza europea dedicata agli sviluppatori Delphi.

L’evento si è tenuto anche quest’anno nella sede di bitTime Software a Roma, tra le verdi colline che adornano la città di Frascati, con un tempo metereologico da fare invidia all’estate.

Dopo la parentesi primaverile della Spring Edition è tornata quindi la “sorella maggiore” della conferenza, con due giornate piene di interessanti speech, sia in italiano ma anche in inglese, per non far mancare nulla agli ospiti venuti da fuori Italia, che sono certo avranno gradito parecchio anche le prelibatezze servite nei coffee break e nel pranzo durante il giorno, raggiungendo il top con i piatti della tradizione locale serviti all’agriturismo per cena, inclusi i tipici Saltimbocca alla Romana (che Fabrizio Bitti, CEO di bitTime, ha prontamente tradotto per i non italiani in «Jump in Mouth at the Roman Way»). 😄

Anche questa edizione ha mantenuto lo spirito che la contraddistingue: contenuti tecnici di elevata qualità, a giudicare dai feedback positivi lasciati dai presenti al termine di ogni singolo speech, con una buona dose di humour che non guasta mai.

La caratteristica più apprezzabile di ITDevCon, a mio avviso (e dopo anni di partecipazione come speaker e come attendant posso dirlo) è che non ti lascia mai tornare a casa senza una buona dose di spunti e ispirazioni da cui trarre nuove idee e tecniche per il nostro lavoro. Questo è dovuto al fatto che tutti gli speaker cercano sempre di trasmettere le proprie esperienze, e non solo di raccontarle asetticamente, una tendenza che non sempre si trova negli eventi di questo tipo, a cui si aggiunge l’accoglienza esclusiva dei padroni di casa.

Slide e codice sorgente

Quest’anno ho partecipato come speaker (ormai è una tradizione) proponendo due talk.

Nel primo talk, intitolato ironicamente «Non Aprite Quella Unit!», ho presentato esempi di “codice orrorifico” tratti dalla mia esperienza di “code revision” presso clienti, sia per farsi quattro risate, sia per introdurre l’argomento principale della sessione, ossia la scrittura di “codice pulito” (Clean Code) e i benefici che porta nel team di sviluppo, in termini di chiarezza e manutenibilità del codice, partendo dalle regole più banali e intuibili fino ad arrivare agli accorgimenti più sconosciuti e difficili da attuare.

Nel secondo talk, intitolato «Crea un Information Radiator con Delphi», ho spiegato innanzitutto cosa si intende con questo strano termine: si tratta di un pannello che distribuisce informazioni alle persone nelle vicinanze, collocato e dimensionato affinché sia visibile con facilità. Ne avrete sicuramente visti in aeroporto, per mostrare le informazioni sul volo in partenza, oppure negli autogrill, per diffondere informazioni sul traffico e le ultime notizie. Si tratta di una nuova tendenza, che sta dilagando al punto tale che pure i team di sviluppo li stanno adottando per tenere sotto controllo l’andamento delle attività sui progetti aperti e gestiti con metodologie agili (es. Scrum). Per realizzare il nostro pannello, abbiamo scelto Raspberry Pi 3 come hardware e Delphi (con FireMonkey) per creare un’applicazione Android nativa e ultraveloce (rispetto alle soluzioni più comuni basate su pagine Web a rotazione e browser pesanti).

Potete scaricare i sorgenti dal mio repository su GitHub, assieme alle slide pubblicate nel mio profilo su SlideShare a questi indirizzi:

Conclusioni

In breve, se non avete mai partecipato o se mancate da qualche anno, non mi farei sfuggire la prossima edizione, magari la Spring se ci sarà. 😉

7 Comments

Got Something To Say:

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

*

Sono io che ringrazio te per la velocissima risposta.
Qualche difficoltà in effetti ce l’ho. Il Raspberry (tranne il PW 0) non ha una usb slave e se fosse collegata ad un PC andrebbero in conflitto le due usb master (a meno che non mi sfugge qualcosa!). Tu come lo collegasti per realizzare il Radiotor con Delphi? In ogni caso, è possibile fare debugging da remoto come con un cellulare?
Grazie ancora.

    In effetti, ora che me lo ricordi, non usavo la USB nemmeno io (mi sono confuso con un altro dispositivo).

    Però nella mia risposta precedente c’è un link alla documentazione di Delphi per collegarsi al dispositivo tramite ADB.

    Seguendo quei passaggi si riesce a far apparire il Raspberry nella lista dei device su cui fare deploy in Delphi e quindi a lanciare sia il debug che l’installazione dell’applicativo direttamente sul device.

    Magari parti con un prototipo di applicazione semplice, senza fronzoli, giusto per testare il meccanismo, e poi aggiungi via via funzionalità prendendo il mio sorgente come esempio (senz’altro migliorabile). 😉

    Ciao!

      Non so come ringraziarti. Ho già sviluppato la mia prima app sotto Android con Delphi! Anche se fa solo “Hello” per me è un mondo che si apre.
      Solo un dubbio mi rimane: oni volta che accendo il Raspberry occorre andare a ricercare il file ADB.exe e lanciarlo con i relativi parametri per poter riconoscere il dispositivo in rete sotto Delphi. E’ proprio così che si deve fare o ci sono delle scorciatoie dall’ambiente di Delphi?

      p.s.- Ho compilato e lanciato il tuo IR e viene effettivamente compilato e caricato ma poi in fase di esecuzione mi da un errore dopo l’altro di codici non validi ecc. ma non ti disturbare oltre, era solo una curiosità e non lo devo certo mettere in funzione per forza!

      Ciao.
      Enrico

        Ciao Enrico,
        sono contento che tu sia riuscito a muovere altri passi nel fantastico mondo dello sviluppo Android con Delphi.

        Condivido con te l’entusiasmo di riuscire, con relativamente pochissimo sforzo, a produrre qualcosa e a farne il deploy vedendola funzionare su una piattaforma completamente diversa da quella a cui sono stati da sempre abituati gli sviluppatori Delphi, ossia Windows.

        Per rispondere alle tue domande, direi che la strada di lanciare ogni volta ADB è quella corretta, perché il programma mi risulta debba essere in esecuzione per potersi collegare al dispositivo in rete, e ADB è l’agente attraverso il quale ci si interfaccia ad esso.

        Per velocizzare le operazioni, se non lo hai ancora fatto, puoi mettere il percorso del file ADB.exe nel PATH di Windows, così puoi lanciarlo senza doversi spostare all’interno della directory.

        Per altri dispositivi come smartphone e tablet, il vantaggio di poter agire via USB è ovviamente un enorme vantaggio, soprattutto per la velocità del collegamento.

        Devo comunque dire che in genere cerco di alleggerire questo passaggio strutturando l’applicazione in modo da separare la “business logic” dalla UI e utilizzando controlli e componenti dei quali sono abbastanza certo dell’aspetto che avranno, costruendo dei “mock” dove necessario: in questo modo, testando su Windows sono (abbastanza) confidente che il risultato sia affine e coerente anche sulle altre piattaforme, come Android e iOS. Le possibilità dipendono anche sensibilmente dal tipo di applicazione che si deve realizzare.

        Buona programmazione!
        Marco.

          Ciao Marco, ti disturbo di nuovo. Ho fatto qualche piccolo esercizio su Delphi e l’ho ricompilato per Raspberry sotto Android. Funziona! Ma ora viene il problema vero…
          Come posso controllare i pin di I/O del Raspberry in maniera efficiente e rapida, specialmente se voglio scrivere in Delphi e far girare sotto Android? Ovviamente sotto Windows non si dispongono degli I/O di Raspberry!
          Questo di pilotare gli input/output è sempre un argomento misterioso quando si lavora con certe piattaforme ad alto livello. Ho notato che su qualunque documentazione Delphi ma anche di altri ambienti, parole come USB, HID e GPIO sono quasi messi al bando.
          Per me che ho sempre sviluppato in C nascente per vari microcontrollori, il poter accedere direttamente ed in real-time agli I/O è fondamentale. Posso fare affidamento su Delphi, ed in che modo?
          Grazie e rimango in curiosa attesa.

          Enrico.

Ho scoperto solo ora questo interessante progetto e ho tentato qualche esperimento ma non riesco a trovare un Android funzionante sul mio Raspberry P3 B+, quale potrei utilizzare? Cosa occorre per mettere in comunicazione Delphi Berlin da windows 7 per programmare il Raspberry con Android? Sulla guida in linea si accenna ai cellulari ma con un mini pc come Raspberry come si fa?
Grazie e complimenti per il blog.

Enrico Miani

    Ciao Enrico, grazie mille per il tuo feedback. 🙂

    Esistono diverse distribuzioni del progetto AOSP (Android Open Source Project) che si possono reperire e installare sul Raspberry. Si possono trovare assieme a tutorial correlati facendo una ricerca mirata su Google. Se preferisci qualcosa di più strutturato e curato, che riceve periodicamente aggiornamenti, puoi usare emteria.OS: è disponibile una versione gratuita che effettua un riavvio periodico ma è completamente funzionante, distribuito con un software che prepara automaticamente tutto quello che serve per l’installazione.

    Per fare il deploy di un’app sul dispositivo, la procedura da seguire è la stessa degli smartphone: si può collegare il Raspberry al PC via USB con i relativi driver, oppure fare il deploy via ADB nella rete locale, oppure ancora pubblicare il pacchetto compilato – il file .APK per intenderci – su qualche storage (es. Google Drive, Dropbox, ecc.) e scaricarlo dal Raspberry per procedere poi con l’installazione, così come avviene per qualsiasi altro software Android.

    Prova a sperimentare un pochino facendo qualche ricerca e fammi sapere se ce l’hai fatta!

    Un saluto!
    ~/|/|arco

Copyright © 2018. Powered by WordPress & Romangie Theme.