giovedì 28 maggio 2020

#A5: punto zero

il centro ( fonte: wikipedia )
L'aggiornamento di questo mese è particolare, perché non ho nulla da mostrare, nulla di significativo creato, mi sono mosso nello spazio delle idee, ma sono tornato al punto zero, all'origine.

A che punto siamo

Progetti passati


I progetti che ho chiuso i mesi precedenti ( opensource analyzer, registra spese, browser diary, github action sql check) sono chiusi. Non ho in programma di lavorarci, ed è meglio così. Mancano di una visione chiara, a tendere, e non rispondono ad una mia esigenza quotidiana, continua, pressante.

Il confronto col lavoro di Mirko é utile, perché su tutti i suoi progetti Resting, che seguo con interesse ( e contribuisco con commenti ed issue ) é un esempio. Lui é riuscito a trovare un progetto che risponde ad una sua esigenza, rispetta i suoi valori ed il suo modo di intendere questa professione.

Ed io ?

Vi avevo lasciati lo scorso mese con l'obiettivo seguente:

In generale l'obbiettivo del prossimo mese è quello di trovare un nuovo progetto sul quale focalizzare le forze. 

Ci sono riuscito?

In parte..

Google analytics reports


Ho speso questo mese a scartare idee che avevo segnato ed a provare a realizzare uno spunto che avevo scritto su queste pagine mesi fa:

Nello scrivere questo blog mi sono accorto come per i miei progetti conti tenere d'occhio alcune variabili chiave: quanto è usato un mio progetto.
Per fare questo uso google analytics ( e funziona perfettamente!), ma così complesso che ci si trova spiazzati per la quantità di opzioni e personalizzazioni possibili.
Mi sono chiesto: posso fare di meglio ?
Posso creare uno strumento online che mi permetta di fare login col mio account google analytics, dare i permessi corretti, selezionare i siti web censiti ed impostare un report periodico (settimanale/mensile) inviato direttamente via email ? Coi soli dati essenziali ?
Guardandomi in giro ci sono già soluzioni del genere, ma sono o altrettanto complesse o troppo semplici.
Da valutare il prossimo mese seriamente, dopo la chiusura di Registra Spese 


Ho quindi investigato nelle api di google analytics ed ho creato un piccolo programma che va a leggere in modo programmatico dalle stesse le visite, usando come riferimento i miei stessi progetti di cui sopra.

E poi mi sono fermato.

Non perché ci siano difficoltà tecniche ( forse qualcuna ), ma un simile progetto mi sono accorto che non va a rispondere ad una mia esigenza, perché quindi spendere altro tempo, su una strada che non é quella che voglio seguire ?

Systemd per spring boot


Seguendo degli spunti lavorativi ho creato un semplice repository questo mese, relativo al creare un servizio su linux che avvi un applicativo java che usi spring boot, lo trovate qui.


Non é un progetto ( o side project ), ma è una soluzione ad un problema che ho affrontato e risolto.
Ho trovato numerose soluzioni su internet, ma nessuna che facesse al caso mio, e me la sono creata.

Contributi ad altri progetti


Ho inoltre aperto alcune issue su progetti che seguo:

Penso che comunicare, aiutare, segnalare sia importante. Le proprie idee, se confrontate con gli altri civilmente, fanno crescere entrambe le parti.

Prossimi passi

Voglio continuare su questa strada, cercando il progetto che fa per me, che risolve un mio problema e che possa portare avanti in autonomia.

Male che vada, a forza di muovermi attorno al punto zero, avrò esplorato numerosi luoghi, che non tutti vedono o cercano di vedere.


sabato 2 maggio 2020

#A4 - Github action in azione

Questo aggiornamento non porta con se nuove idee o prodotti, ma un esperimento nel mondo dell'automazione legeto allo sviluppo di software su github.

In generale dopo aver chiuso le idee in sospeso sto cercando di focalizzarmi nuovamente su una linea precisa, ma complice il periodo di quarantena, non riesco a "mettere a terra" le idee

Github action sql check


Cos'è ?

Le github action sono "azioni"  che si possono attivare su github nel proprio repository di codice per analizzarlo, compilarlo, validarlo. Eventualmente queste azioni sono pubblicabili in un registro pubblico (ed anche monetizzabili).
Nel mondo dello sviluppo software il tema dell'automazione delle operazioni ripetitive è molto sentito e personalmente al lavoro usiamo un altro strumento ( Jenkins ). L'importanza crescente di github (anche alla luce delle ultime scelte commerciali, che lo rendono gratis per i team senza limiti di dimensione) è tale che un esperimento per capire come funzionano le github action penso sia doveroso per farsi un'opinione informata.
Relativamente al mio esperimento, l'obbiettivo di questa action è al push su github di un file sql, invocare una validazione della sintassi dei comandi sql nel file e ritornare il risultato della validazione.

A che punto siamo ?

L'action è disponibile su github ed è opensource, il repository lo trovate qui.

Attualmente su github trovate una prima rudimentale versione, per cui sono aperto a suggerimenti se avete già visto/implementato una soluzione simile.

L'insieme delle tecnologie coinvolte è variegato:
  • java11
  • gradle
  • validazione dell'sql tramite JsqlParser
  • docker
  • github action

Il controllo è volutamente basilare e migliorabile, quello che mi premeva é provare sul campo quanto sono flessibili le github action e quanto tempo ci vuole per metterle in campo.
Diciamo che in cinque giorni (lavorando un paio di ore la sera), con un pò di sforzo, sono riuscito partendo da zero ad avere qualcosa di funzionante, ma con qualche difficoltà ( con un totale circa di 6-8 h di lavoro).
La prima è proprio la documentazione, sembra ben strutturata, ma è molto frammentaria su molteplici fronti, per cui dubito di usare le github action per progetti più complessi.
Uniamoci poi alcune scelte di modo di lavoro piuttosto forti ( mancanza di un'ide dedicata qui si fa sentire), tra cui l'assurdo problema di come passare variabili di ambiente da uno step all'altro del workflow. Sono io ad aver capito male oppure no ? Qualcuno ha trovato una soluzione su come passare valori da un job all'altro per concatenarli ?

Sono curioso di convidere esperienze su questo, venendo da Jenkins mi trovo decisamente meglio in un ambiente "neutrale" rispetto al repository git, con un supporto minimo da parte di un'ambiente visuale, però il supporto sempre maggiore che hanno le github action ( e github in particolare ) è fonte di confronto naturale, a mio avviso.

Piani futuri

Relativamente a questo esperimento lo considero chiuso, lo espanderò in futuro se avessi bisogno di usare questa action su miei repository su github.

In generale l'obbiettivo del prossimo mese è quello di trovare un nuovo progetto sul quale focalizzare le forze.

#M4 - Tirare le somme



Questo mese ho:
  • tirato le somme sul sondaggio aperto per Resting,
  • fatto una retrospettiva sull'esperinza fatta alla mia prima hackathon.


Cos'e' Resting

Resting è un'estensione per il browser Firefox che permette di analizzare e testare velocemente API sia HTTP che REST.


A che punto siamo

Maratona di refactoring

Fra gli obiettivi del mese mi ero proposto di individuare e definire alcune attività di refactoring per il codice di Resting con lo scopo di eliminare un po' di debito tecnico che ho accumulato per arrivare alla v1.0.0.
Essendo un esperimento ho deciso di limitarmi a tre attività ben isolate ed affrontabili indipendentemente dalla conoscenza generale del restante codice.
Il risultato è questo.
Ho lanciato questa piccola "maratona" asincrona nel gruppo SoCraTeN di cui faccio parte, ma è un'attività aperta a tutti, quindi se qualcuno fosse interessato a partecipare basta che si faccia sentire nell'issue che gli interessa.

Sondaggio

E' tempo di chiudere il sondaggio lanciato negli ultimi giorni del mese di febbraio per pianificare le attività di sviluppo del prossimo rilascio maggiore di Resting.
Nell'aggiornamento di marzo ho fatto una prima analisi basata sui dati parziali del mese scorso.
Il sondaggio si conclude con 26  risposte pari a circa l' 1,8% degli utenti attivi.
Mi ero prefissato un obiettivo del 5% in tutta incoscienza, ma credo di potermi ritenere soddisfatto.
I risultati arrivano totalmente dal target d'interesse: 20 risposte su 26 sono state date da utenti di Resting.



L'utente tipo di Resting lo utilizza almeno una volta alla settimana per fare del test funzionale sulle API





Alcune osservazioni in merito per quanto riguarda i suggerimenti su dove concentrare i miglioramenti:
  • la possibilità di costruire richieste HTTP più complete è il tema che ha preso più voti medio-alti,
  • la richiesta di funzionalità di organizzazione e salvataggio dei propri dati interessa mediamente,
  • la richiesta di strumenti per l'analisi della risposta delle API è il tema più contrastante: riceve sia il più alto numero di voti di grande interesse, sia di scarso interesse.





A chiusura del sondaggio ho lasciato una sezione opzionale dove lasciare liberamente suggerimenti, sono molto soddisfatto che 5 utenti abbiano scelto di lasciare i loro consigli.


Numeri del mese

 

Utenti attivi (-1,9%)


Marzo:1.431
Aprile:1.405

Download (-20,3%)


Marzo: 482
Aprile:  384

Piani futuri

Il prossimo obiettivo è identificare una lista di attività da implementare sulla base del risultato del sondaggio.

Cos'è exercism/java

Exercism è una piattaforma educativa per imparare/migliorare a programmare.
Propone problemi da risolvere in molti linguaggi di programmazione con la possibilità di esercitarsi da soli oppure confrontarsi con un tutor.
Fra i linguaggi supportati c'è Java (che da ora chiamerò exercism/java)

A che punto siamo

Qualche mese fa sono entrato a far parte dei manutentori del progetto exercism/java con l'obiettivo di aiutare a portare a termine le molte attività in programma per il rilascio della versione 3 della piattaforma.

Java-representer

java-representer è un'applicazione che legge la soluzione di un esercizio scritto in Java e ne crea una rappresentazione normalizzata.
Lo scopo é riassumere soluzioni simili in una stessa rapprensentazione così da semplificare e in parte automatizzare il lavoro dei tutor.
Ho implementato la prima versione completa dei requisiti, ora mi sto dedicando a provare lo strumento su varie soluzioni di problemi e a correggere i relativi errori che ne escono.

Partecipazione

Sul fronte partecipazione sto tenendo aggiornati gli altri manutentori delle attività che faccio settimanalmente nel canale slack del progetto.
Un paio di mesi fa ho proposto di introdurre un thread di discussione settimanale dal nome weekly standup dove ogni manutentore dichiara se riuscirà a dedicare del tempo al progetto e su cosa si propone di lavorare.
Lo scopo era "smuovere le acque" di un canale che sembrava deserto.
Mi sentivo demotivato non avendo alcuna notizia dalle altre persone coinvolte nel progetto e ho pensato che la stessa cosa potesse accadere anche ad altri.
La proposta è stata accettata e mi sono preso il compito di lanciare il thread ogni inizio settimana. Al momento non sta avendo grande successo, ma la mia intenzione è di continuare comunque almeno fino alla fine di giugno, data in cui secondo i  piani dovrebbe essere pubblicata la nuova versione v3.

Piani futuri

Concludere i test su java-representer e fare deploy dell'applicazione sull'infrastruttura di progetto.

Cos'è ts-converter

ts-converter è una piccola estensione per browser che permette di trasformare un timestamp in una data leggibile.
E' un progetto free software con licenza GPLv3.


 

A che punto siamo 

  • Ho elaborato i feedback ricevuti e li ho implementati nella versione 0.2 del progetto 
  • Ho rilasciato l'estensione anche per Google Chrome pubblicandola sul Chrome Web Store

Piani futuri

Per il prossimo mese non ho obiettivi per questo progetto

Hackathon covid

Nel weekend del 28 e 29 marzo ho partecipato insieme ad altri membri del gruppo SoCraTeN ad una hackathon totalmente in remoto a tema Covid-19.
E' stata la mia prima esperienza in un hackathon e per di più l'abbiamo gestita totalmente in remoto utilizzando il canale slack del gruppo e zoom per i momenti corali in videoconferenza.
Il risultato del nostro sforzo è stata la creazione di un bot telegram con un duplice scopo:
  • semplificare il lavoro di monitoraggio e raccolta delle informazioni sui posti letto di terapia intensiva e semi-intensiva del territorio da parte della Centrale Unica di emergenza.
  • accentrare le richieste di ricovero di un paziente in altre strutture sul territorio

Il codice del progetto è stato rilasciato su Github con licenza MIT e si può trovare qui
Ho pubblicato un post in Linkedin con maggiori dettagli sui risultati prodotti.

Quest'esperienza mi ha portato alcune conferme:
  • con gli strumenti attualmente a disposizione si riesce a gestire tutto il processo e il lavoro in remoto, 
  • l'importanza di semplificare e scavare nelle proposte per arrivare al nocciolo di uno scenario che dimostri l'idea,
  • accettare tranquillamente di fare cose che non si conoscono,
  • la proattività è una chiave importante per il lavoro di squadra,
  • dare maggiore priorità alle attività che sbloccano il lavoro degli altri.

 Puntate precedenti

Risorse