Welcome to Nebula

| |

Era il 2022, muovevo i primi passi con i moduli di PowerShell personalizzati perché, stanco di avere la classica raccolta di script da interrogare a colpi di dir in console PowerShell o Command Prompt, avevo deciso di dar loro un tetto comune, da tenere sempre aggiornato, un po’ per andare a svuotare quella raccolta ben organizzata e un po’ perché tornava indubbiamente comodo avere un coltellino svizzero a portata di tastiera.
2026, sono passati circa quattro anni e, insieme alla barba sempre più bianca e i quaranta che si fanno sentire, sono finalmente riuscito a tirare fuori quello che per me è stato (ed è tutt’ora) curiosità, studio, errori (tanti) e approfondimento continuo: ti presento Nebula.

Welcome to Nebula 1

Nebula

Nebula non è solo uno dei personaggi più controversi e particolari dell’universo Marvel, una figura complessa, frammentata, ricostruita pezzo dopo pezzo, è prima ancora una nube cosmica, un luogo sospeso, caotico solo in apparenza, dove materia ed energia si incontrano, si mescolano e, col tempo, danno origine a qualcosa di nuovo. Nebula è il nome che ho ritenuto più adatto e calzante per un progetto che ho a lungo coccolato, voluto (prima di tutto per me), una raccolta di conoscenza sparsa, diffusa, un’evoluzione continua, un’esplorazione senza una mappa chiara, senza una precisa destinazione finale.

Nebula non è ordine perfetto, è ordine che sta nascendo, all’interno del quale frammenti dispersi trovano una forma e dove idee apparentemente isolate iniziano a gravitare attorno a un senso e uno scopo comune.

Too much?
Forse. Ma sono comunque contento di poterti presentare ciò su cui ho lavorato negli ultimi tempi, e sono pronto pure a leggere quei commenti che sotto al cofano portano un semplicistico “per così poco, e sticazzi?

Core, Automations, Log, Tools

Sono i nomi che ho scelto per i moduli Nebula. Inizialmente era un tutt’uno, poi ho deciso (magari sbagliando, c’è tempo per rimediare) di scindere le funzionalità, di dare a ciascun modulo un suo scopo e un suo ambiente ideale in cui darsi da fare. Core è certamente quello che porta via più tempo e concentra tanto del progetto completo, è il coltellino svizzero che ti aiuta ad amministrare più agilmente Microsoft 365, in particolare il mondo di Exchange ed Entra. Nel suo futuro c’è sicuramente Intune (in parte già si interfaccia con i dati via Graph, è solo questione di allargare un pelo gli orizzonti), e poi chissà cos’altro.

Automations e Log sono pensati e un po’ più orientati per un utilizzo lato server, utili da chiamare in causa all’interno di script programmati per non avere interazione umana (o ridurla quanto più possibile al minimo), Log è sicuramente quello che uso in maniera ormai puntuale all’interno di tutti i miei script ‘unattended‘, Automations è limitato, ma ho delle idee che vorrei provare a sviluppare per dargli maggiore peso in futuro. Tools è un po’ quella scatola degli attrezzi che abbandoni in uno scaffale del tuo ripostiglio o nel garage in base alla necessità, è di tutti e di nessuno, ci butti dentro un occhio quando ne hai bisogno e magari ti serviva proprio quella chiave inglese che non sapevi dove avevi lasciato l’ultima volta, perché in fondo in fondo sei sempre un po’ distratto. Piccolo, “occupa poco spazio“, non da fastidio e non mangia più del dovuto, non vuole farsi notare (ed è voluto).

E poi c’è Scripts, che non è un modulo, è un po’ quel concetto di cartella di cui ti parlavo a inizio articolo, perché nonostante tutta la buona volontà e il desiderio di integrare e accorpare, c’è sempre qualcosa che rimane fuori, quel self-service al quale è difficile rinunciare. Scripts è un repository, tale rimarrà, tu puoi sbirciare all’interno come faresti con la cassetta degli attrezzi, e puoi scegliere ciò che ti serve, tirarlo fuori, usarlo e poi riporlo.

In fondo si tratta sempre di repository. Il mondo dell’Open Source è abituato a dare molto e – spesso – non ottenere indietro a sufficienza. Sarà che la mia generazione è stata fortemente caratterizzata da questo spirito di condivisione della conoscenza, sarà pure perché il mio passato con Mozilla (e in particolare Mozilla Italia) ha tanto da raccontare in merito, ma quando penso a codice sorgente che non è fortemente legato a un flusso aziendale, a dati evidentemente riservati per definizione, penso sempre che sia un bene renderlo quanto più aperto possibile: utilizzo, commenti, idee, modifiche condivise.

Nebula.Core, Nebula.Automations, Nebula.Log e Nebula.Tools sono tutti disponibili su GitHub:

Ovviamente c’è anche Nebula.Scripts, trovi pure lui su GitHub, all’indirizzo github.com/gioxx/Nebula.Scripts. Alcuni degli script disponibili sono già in fase di integrazione nella versione instabile di Core, quella non ancora scaricabile da PowerShell Gallery (almeno fino a oggi che sto scrivendo queste righe) ma generalmente sempre allineata su GitHub, tempo al tempo.

Un’unica Knowledge Base

Che poi, come spesso accade, è ciò che mi ha portato via più tempo in assoluto.
La documentazione è il tallone d’Achille di qualsiasi sviluppatore, a prescindere che sia amatoriale o esperto. Impieghi decisamente meno tempo a costruire un flusso, un’automazione, del codice che esegue un determinato compito, piuttosto che stare lì a stendere la documentazione, controllarla, arricchirla e cercare di fornire quante più spiegazioni ed esempi possibili a chiunque deciderà di dedicare alla tua opera del tempo, testarla e magari integrarla all’interno della sua quotidianità.

Ho navigato e cercato, chiesto in giro a chi ne sa decisamente più di me e poi scelto di concentrarmi su Docusaurus, “un generatore di siti statici open-source basato su React e sviluppato da Meta, ottimizzato per creare principalmente documentazione tecnica, ma pure blog e siti web in generale“. Oggi, a distanza di un po’ di tempo che la documentazione è up&running (dopo un lungo periodo di vita vissuto in un container Docker con Node, tenuto in casa), posso dirti che c’è ancora molto da imparare, lo strumento è decisamente malleabile e ben si adatta a diversi scopi, calza a pennello per questo progetto.

Ho abusato, e non mi vergogno a dirlo, dell’aiuto di Codex al quale ho dato in pasto tutti i file PS1 che fanno parte dei moduli, chiedendogli di darmi una mano a preparare per sommi capi la documentazione sui vari file MD, per poi modellarla in base al mio gusto personale e a quello che reputo il modo migliore per comunicare il prodotto e come utilizzarlo, per poi tornare a chiedergli una mano per applicare lo stesso stile a tutto quello che era necessario documentare. Nasce così la KB di Nebula (battezzata anche come Nebula.KB, tanto per rimanere in linea con la naming convention), quella che trovi all’indirizzo kb.gioxx.org.

Welcome to Nebula 2

Qui troverai tutto quello che c’è da sapere sui quattro moduli principali e, presto, spero, anche una sezione dedicata a Nebula.Scripts e agli ulteriori progetti che per un motivo o l’altro sto tenendo aggiornati e disponibili pure loro su GitHub. Non ha importanza che si tratti di plugin per WordPress o YOURLS, l’idea è quella di avere un tetto comune, uno solo, possibilmente il più organizzato, pulito e allineato possibile, serve soprattutto per dare un ordine mentale al sottoscritto e per ritrovare facilmente informazioni quando, un domani, dimenticherò quel particolare comando che non sono abituato a utilizzare così spesso.

Non ci sono cookie, non ci sono analisi statistiche, la cosa più “avanzata” che troverai è il campo di ricerca che sono riuscito a mettere in piedi grazie ad Algolia e al suo servizio offerto gratuitamente a siti web di documentazione per progetti Open.

Dimenticavo una cosa importante: è tutto in inglese. Mi piacerebbe non essere confinato alla comunità italiana, l’ho spiegato un po’ meglio qui, e per l’occasione te lo traduco ben volentieri:

Per cercare di uscire un po’ dagli schemi abituali.
Ho sempre scritto in italiano (e lo faccio ancora sul mio blog personale), ma a volte ho scritto in inglese, il che mi ha permesso di raggiungere un pubblico diverso, ampliando i miei orizzonti e cercando di abbracciare lo scambio di idee e il miglioramento di quelle esistenti grazie al contributo di persone al di fuori dello Stivale (come è conosciuta l’Italia).
Per questo motivo ho scelto di utilizzare l’inglese come lingua principale dell’intera KB. È facilmente traducibile utilizzando strumenti online e forse in futuro valuterò la possibilità di localizzarla in italiano, ma al momento non è qualcosa che mi interessa fare.

Sono sicuro che continuerò a commettere stupidi errori e che dimenticherò per strada qualcosa, ma spero davvero che tu possa e voglia contribuire, anche solo segnalandomi delle sviste, dandomi nuovi spunti e idee su cui lavorare, “spammando” un po’ in maniera sana e mai invasiva questo progetto e, nel caso tu fossi un amministratore Microsoft 365, utilizzando i moduli e individuando anomalie e problemi che conto di correggere rapidamente, ti prego di utilizzare le Issue su GitHub (disponibili in ciascun repository e modulo annesso) per arrivare a me rapidamente.

I tools non sono mai abbastanza

È il concetto alla base di alcune pagine particolari che trovano spazio all’interno della KB:

  • Message Header Analyzer: tu incolla l’intestazione di un’e-mail, la pagina penserà a estrarre il percorso di consegna, i tempi e i verdetti antispam. Copiato integralmente 😁 Liberamente ispirato al progetto originale di Microsoft (MHA), leggermente rivisto in termini di usabilità della pagina di post-analisi. Tutto avviene sul tuo browser, nessun dato verrà trasmesso e/o salvato sul server.
  • PSADT Log Viewer: consente di ispezionare i file di log in stile PSAppDeployToolkit / CMTrace direttamente nel browser. È possibile caricare direttamente un file di log o incollarne il contenuto, quindi filtrare per livello, componente e testo del messaggio. Anche in questo caso, nessun dato verrà salvato sul server (no, neanche quello che decidi di mandare in “upload“, perché in realtà viene caricato da disco e analizzato live via Javascript).
  • Quarantine Email Analyzer: per questo servirà una specifica documentazione e uno specifico script affinché tu possa davvero comprenderlo e utilizzarlo al meglio, spero davvero di poterci lavorare entro breve (io lo sto già usando in produzione da mesi). Lo scopo, giusto per anticiparti qualcosa, permetterti di caricare o incollare un file CSV di quarantena per filtrare rapidamente mittenti e destinatari, e decidere (se e) cosa rilasciare. La sicurezza dei tuoi dati è sempre la stessa: vedi i due “soci” poco sopra, i dati non lasciano il tuo browser.

In conclusione

Intanto ti chiedo scusa, ho scritto un mucchio, non scrivevo da un po’, ne avevo bisogno, e poi c’era tanto da dire, grazie per essere arrivato fino a qui.

È stato faticoso, lungo, ma bellissimo, se tornassi indietro rifarei tutto. Tutto questo mi ha permesso di imparare molto e di studiare cose che prima non conoscevo. L’uso dell’IA non va visto come una cosa negativa quando si usa la giusta attenzione per evitare strafalcioni o produrre sprechi di bit, è un acceleratore formidabile che mancava e che oggi non può non trovarsi all’interno della borsa attrezzi di una figura che lavora (o si muove per pura passione) in questo campo. E con questo, è arrivato il momento di archiviare il vecchio ToyBox.

Sono curioso di sapere cosa ne pensi, l’area commenti qui di seguito è a tua totale disposizione.

#KeepItSimple

Correzioni, suggerimenti? Lascia un commento nell'apposita area qui di seguito o contattami privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! ☕ :-)

Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

2 Commenti
Oldest
Newest Most Voted
Inline Feedbacks
View all comments