Software libero per data scientists

Qualche anno fa la Harvard Business Revue ha pubblicato un articolo dal titolo “Data Scientist: the Sexiest Job of the 21st Century”.
Per farci capire cosa ci sia di così seducente in questa professione, definita la più sexy del XXI secolo, l’articolo la definisce “di alto livello, con la formazione e la curiosità di fare scoperte nel mondo dei big data”, dice che i data scientists “fanno scoperte mentre nuotano nei dati. È il loro metodo preferito per navigare nel mondo che li circonda. A loro agio nel regno digitale, sono in grado di strutturare grandi quantità di dati senza forma e renderne possibile l’analisi.” e conclude invitando il lettore a pensare al data scientist come a “un ibrido di data hacker, analista, comunicatore e consulente di fiducia in una combinazione estremamente potente e rara.”
In maniera meno colorita diciamo che la scienza dei dati è la disciplina finalizzata ad estrarre conoscenza dai dati e che il professionista che vi si dedica deve sapere di informatica e di statistica, avendo anche la capacità di tradurre in linguaggio naturale i risultati delle sue analisi e le indicazioni che ne derivano.
A supporto di quest’ultima capacità di capire e comunicare non esiste software ma per l’informatica (strutturazione dei dati e algoritmi per elaborarli) e la statistica (analisi della correlazione tra dati e dell’inferenza) esiste moltissimo software, sviluppato o reso funzionale alle moderne esigenze soprattutto negli anni più recenti.
Software per analizzare ed elaborare dati ce n’è da quando c’è il computer. Ma fino a qualche tempo fa oggetto delle elaborazioni erano soprattutto piccole quantità di dati numerici: la statistica ha sempre lavorato per lo più su campioni di dati numerici. Le moderne esigenze sono innanzi tutto quella di lavorare sulle enormi moli di dati che vengono accumulati di minuto in minuto dalla digitalizzazione che ha invaso ogni nostra attività e quella di non rinunciare a trarre conoscenza anche dall’analisi di dati non numerici.
Per fare queste cose, nel mondo del software libero abbiamo gioielli come KNIME, Orange e WEKA. Ma la quintessenza, per completezza di strumenti, è una raccolta di programmi open source in linguaggio Python che, tanto per stare tra rettili, si chiama Anaconda, il cui primo rilascio, con licenza libera New BSD, è del 17 luglio 2012.
Esistono raccolte similari: ActivePython, Enthought Canopy e, solo per Windows, WinPython se stiamo a quelle legate al linguaggio Python, Apache Spark, legato al linguaggio Scala/Java, più adatto al calcolo distribuito e utilizzato nei progetti Apache Hadoop e IBM Watson, solo per Linux.
In tutto questo mondo, Anaconda è ampiamente utilizzata e spesso preferita dagli addetti ai lavori per come si presenta e per come è organizzata, per la numerosità dei pacchetti che contiene (anche se, alla fine, quelli che contano sono pochissimi e sono presenti in tutte le altre distribuzioni), per tutta una serie di utilità collaterali che offre in tema di apprendimento e documentazione e, non da ultimo, per la sua scalabilità, cioè per la possibilità che abbiamo di costruirla anche in dimensioni più ridotte di quella completa.
Ovviamente con disponibilità per tutti i sistemi operativi più diffusi (Linux, Mac OS X e Windows).
Dal momento che la documentazione in lingua italiana sull’argomento scarseggia ho ritenuto utile produrre l’allegato manualetto in formato PDF, dedicato a Anaconda.
Come sempre si tratta di documento liberamente scaricabile, stampabile e distribuibile.

python_anaconda

Non solo Linux

Leggendo i contenuti di questo blog è possibile si alimenti la convinzione che l’unico sistema operativo di software libero alternativo ai due sistemi proprietari Windows e Mac OS X sia Linux: infatti ogniqualvolta indico i sistemi operativi su cui girano i vari programmi applicativi che presento mi limito a citare questi tre, due proprietari e uno libero.
Il motivo è che la bandiera del software libero la porta Linux, il cui kernel, per la prima volta rilasciato da Linus Torvalds nel 1991, divenne immediatamente il tassello mancante per il completamento del progetto di sistema operativo GNU di Richard Stallman: tanto è vero che, per alludere al sistema operativo dotato del kernel di Linus Torvalds, invece di dire semplicemente Linux, si dovrebbe dire GNU/Linux.
La primazia ha portato il successo immediato e su GNU/Linux sono nate e si sono sviluppate le varie distribuzioni che conosciamo: in proposito rimando al mio articolo “Quale Linux” dell’aprile 2017, archiviato nella categoria Software libero di questo blog.
Ma dal sistema Unix, dal quale, peraltro, proviene anche il kernel del sistema proprietario del Mac, provengono altri kernel, ugualmente liberi come Linux.
Uno, per un soffio, non prese il posto di Linux nel 1991 per il completamento del progetto GNU: si chiama Hurd. Il progetto Hurd nacque nel 1990 con l’obiettivo di sostituire il kernel di Unix ma ebbe uno sviluppo piuttosto lento e fu battuto sul tempo da Linux.
Dal momento, tuttavia, che Hurd deriva direttamente da Unix, laddove Linux deriva propriamente da Minix, a sua volta derivato da Unix, esso ha una superiorità architetturale che gli sviluppatori hanno sempre apprezzato, al punto da non abbandonare mai il suo sviluppo.
Sicché oggi esiste un sistema operativo GNU/Hurd e si è tentato di crearne delle distribuzioni: l’unica che ha avuto un seguito è la distribuzione Debian la cui ultima versione, Debian GNU/Hurd, è del giugno 2017.
Altro progetto importante che ci mette a disposizione un sistema operativo libero è BSD, che sta per Berkeley Software Distribution, nato nel 1993 sempre per creare un sistema operativo di derivazione Unix.
Grazie a questo progetto oggi disponiamo di FreeBSD, un kernel monolitico, chiamato kFreeBSD molto usato per sistemi operativi su server.
Per desktop possiamo disporre della distribuzione Debian GNU/kFreeBSD e di altre derivate (PC-BSD, DesktopBSD, GhostBSD).
In ogni caso si tratta di sistemi molto simili a Linux e quasi tutto il software scritto per Linux gira anche su di essi (in particolare FreeBSD ha un vero e proprio layer di compatibilità).
Per l’utenza dilettantesca, anche se evoluta, è comunque consigliabile affidarsi ad una distribuzione Linux, se non altro per essere tranquilli circa la compatibilità praticamente con tutto l’hardware in circolazione.

Software libero per la sicurezza informatica

Quello della sicurezza informatica è probabilmente il campo in cui la presenza di software libero è preponderante, forse anche perché è in questo campo che troviamo tutto il software anonimamente creato ed utilizzato dagli hacker cattivi per compiere le loro azioni, molto spesso criminose e, purtroppo, portatrici di danno.
Tra l’altro è molto spesso difficile stabilire, per esempio, se un software destinato a trovare i punti deboli di una rete sia nato per rimediare alle falle (finalità di sicurezza) oppure per penetrare nella rete e rubare dati dai computer che vi sono collegati (finalità criminosa).
Sicché ormai tutte queste attività destinate ad indagare i lati più misteriosi dell’informatica sono universalmente catalogate nel così detto hacking, salvo poi distinguere tra hacker bianchi e hacker neri, magari anche grigi: i bianchi sono quelli buoni, altrimenti detti hacker etici, che si accorgono di falle e le comunicano a chi di dovere affinché trovi rimedio, anche suggerendo il rimedio stesso, i neri sono quelli cattivi, che ricercano o creano i punti deboli per fare danno. In mezzo stanno i grigi, a caccia di punti deboli per ricattare chi ne soffre.
Penso che i singoli tool per fare queste cose siano parecchie centinaia ed abbiano creato una vera e propria foresta inestricabile.
Fortunatamente c’è chi si è dato la briga di creare delle raccolte, addirittura raggruppando vari strumenti attorno ad un kernel di sistema operativo a loro dedicato, in modo che gli strumenti stessi siano utilizzabili in ambiente separato da quello su cui facciamo le nostre cose di tutti i giorni.
Siamo in pieno software libero e il sistema operativo universalmente utilizzato per queste cose non può che essere Linux.
Nel manualetto allegato in formato PDF presento un paio di soluzioni che insieme penso raccolgano la stragrande maggioranza dei tool esistenti.
Come sempre il manualetto è liberamente scaricabile, stampabile e distribuibile, mi auguro a fin di bene.

hacking_tools

Sempre software libero per perfezionare la blockchain

Lo scorso marzo, sotto il titolo “Software libero per la blockchain”, ho raccontato come il software che fa funzionare la prima applicazione della blockchain, la piattaforma Bitcoin, sia open source, talmente open che nemmeno si conosce esattamente chi abbia cominciato a scriverlo.
Ho anche indicato come chiunque possa procurarsi questo software e lo possa caricare sul suo computer diventando così un nodo della rete blockchain.
Open il software, open la rete in questa prima applicazione della blockchain, che qualcuno ha ormai battezzato Blockchain 1.0.
Da alcuni mesi, usciti dalla fase delle sperimentazioni, possiamo affermare che funzioni la Blockchain 2.0.
L’evoluzione tra le due concezioni sta nel fatto che, mentre la Blockchain 1.0 è aperta a chiunque, in gergo unpermissioned ledger, la Blockchain 2.0 si presta al governo delle partecipazioni, in gergo permissioned ledger. E’ questa evoluzione che segna e segnerà l’estensione inimmaginabile delle applicazioni della tecnologia blockchain non solo ad applicazioni pubbliche, dove tutti sono in grado di vedere tutto e potenzialmente tutti possono autorizzare le transazioni (mining), ma anche ad applicazioni private, dove sia possibile stabilire chi possa autorizzare e chi possa e cosa possa vedere.
Ovviamente è la seconda concezione quella più adatta ad applicazioni nel mondo degli affari, quello che sicuramente è il più predisposto a cogliere l’innovazione e che maggiormente contribuirà allo sviluppo delle applicazioni blockchain, almeno nell’immediato.
Il passaggio dalla Blockchain 1.0 alla Blockchain 2.0 ha richiesto un immane sforzo per l’adeguamento del software: la gestione delle permission, infatti, non è uno scherzo.
Ed è qui che si è avuta la più grandiosa manifestazione della potenza dell’open source: la piattaforma che ha reso possibili le prime applicazioni Blockchain 2.0 è infatti la Hyperledger Fabric, il cui sviluppo è stato promosso da IBM all’interno della Linux Foundation.
Tra l’altro è stato un bel modo di festeggiare il compleanno ventennale dell’open source: questo è infatti nato nel 1998 con l’uscita del codice sorgente del browser Netscape Navigator.
La Linux Foundation nasce una dozzina di anni fa per favorire e sostenere una crescita ordinata di Linux sul mercato. I primi progetti furono il Linux Standard Base, l’Open Printing, Data Center Linux, Carrier Grade Linux e altri, tutti destinati ad una standardizzazione nel mondo Linux, il cui kernel veniva utilizzato in svariate distribuzioni, ed all’accelerazione dell’ingresso di Linux nel mondo enterprise.
La serietà di intenti e la filosofia open source che ispirava l’iniziativa attrassero immediatamente l’attenzione di grandi operatori come IBM e Oracle, che furono gli apripista di quella che è diventata l’attuale nutrita schiera di sostenitori della Linux Foundation (ormai ne fa parte la stessa Microsoft) e che furono i primi a capire che, almeno per realizzazioni di natura “infrastrutturale”, la via da seguire è quella della collaborazione: ciò che, in tema di software, si chiama open source.
Hyperledger Fabric, da alcuni definito consorzio di innovazione, è la prima grande realizzazione ispirata a questi concetti.
Ovviamente non siamo in presenza di un pacchetto direttamente installabile sul nostro computer, come avviene per il software Bitcoin. Siamo in presenza di una piattaforma su cui potrà lavorare lo specialista che chiameremo a costruire la nostra applicazione blockchain privata. Ma, ancora, lo specialista lavorerà con software libero: infatti la programmazione degli smart contract che magari la nostra applicazione dovrà gestire avverrà con il linguaggio Go, quello che Google ha regalato al mondo del software libero. Ma già si sta lavorando affinché sia possibile utilizzare anche il linguaggio Java, ormai altrettanto libero.
Potenza del software libero!

Poker di editor video

L’ultima volta che ho parlato di editor video in questo blog risale al settembre 2016. A quell’epoca, in un articolo intitolato “Kdenlive sempre meglio, ma solo per Linux”, commentavo il rilascio della innovativa versione 16.08.01 dello storico software libero Kdenlive, lamentando il fatto che ancora non fosse comparsa una versione per coloro che insistono ad usare il sistema operativo Windows, annunciando tuttavia che ci si stava lavorando.
Già allora esistevano altri editor video prodotti nel mondo del software libero ma, a torto o a ragione, ero convinto che Kdenlive fosse di gran lunga il migliore.
Oggi, verso la fine del 2018, mi accorgo che quest’anno sono state rilasciate le nuove versioni di ben quattro software liberi di editing video, che si tratta di versioni lavorando con le quali non si capisce che cosa si possa ancora migliorare e che tutti i quattro software sono disponibili per i tre più diffusi sistemi operativi Windows, Mac OS X e Linux.
Ai più anziani Avidemux e Kdenlive si sono aggiunti i relativamente più recenti Shotcut e OpenShot, tutti ormai a livello di perfezione, a formare un vero e proprio poker d’assi per dilettanti ma non disprezzabile per esigenze di esperti professionisti.
Per questi ultimi esiste comunque sempre il meno dilettantesco Cinelerra, il cui ultimo rilascio risale al 2017, ancora riservato ai soli sistemi Linux e Mac OS X: non lo considero nel poker in quanto il suo utilizzo è più da professionisti e il mio blog si rivolge ad un pubblico di dilettanti.
Mi accorgo che in rete esistono non pochi manuali, manualetti, tutorial e video-tutorial su tutti questi software, anche il lingua italiana, per cui il mio compito divulgativo potrebbe esaurirsi qui.
Dal momento, però, che la situazione è divenuta tale da mettere in dubbio la primazia tradizionalmente attribuibile a Kdenlive e si crea l’imbarazzo della scelta, per fornire elementi utili ad un giudizio consapevole ho ritenuto di riepilogare nel manualetto allegato alcuni aspetti che non riguardano tanto il funzionamento dei vari software quanto invece come i vari software si attagliano a quelle che possono essere le nostre finalità e le nostre attrezzature.
Come sempre il manualetto, in formato PDF, è liberamente scaricabile, stampabile e distribuibile.

video_editing

Software libero per sintesi e riconoscimento vocale

Macchine che parlano o che comprendono la voce umana hanno sempre esercitato un enorme fascino, fin da quando, sul finire degli anni cinquanta del secolo scorso, i primi robot sono comparsi con le loro voci metalliche nelle fiere e nelle esposizioni.
Tuttavia si può dire che fino all’inizio del nostro secolo si è sempre trattato di cose che poco avevano a che vedere con ciò che facciamo tutti i giorni. Nonostante ciò, la ricerca e la sperimentazione nel campo della sintesi e del riconoscimento vocale sono sempre state attive ed oggi, sia grazie alla quasi perfezione dei risultati tecnici raggiunti sia grazie all’utile applicabilità di questi risultati alle moderne apparecchiature, soprattutto quelle di ultima generazione nel mobile, praticamente tutti i giorni utilizziamo queste tecnologie.
Gli apparecchi telefonici installati sulle automobili e gli smartphone sono già dotati di tutto quanto serve perché ci venga letto un messaggio SMS o perché lo possiamo dettare.
Per non parlare del navigatore che abbiamo sull’automobile, che ci indica la strada a voce.
Tutto ciò non avviene per i personal computer o, quanto meno, sui personal computer, queste tecnologie non sono così automaticamente presenti e così facilmente accessibili.
Per chi voglia superare questo incomodo ho ritenuto utile catalogare quanto di meglio ci offre il software libero in questo campo nel manualetto allegato, liberamente scaricabile e distribuibile.

tts_stt

Software libero per la blockchain

Forse non tutti sanno che la piattaforma su cui funziona la prima grande applicazione della tecnologia blockchain, cioè il sistema Bitcoin, è software libero.
Già dietro il nome del fantomatico creatore di questa tecnologia, Satoshi Nakamoto, molto probabilmente si cela una pluralità di persone. Fin dalla metà del 2010, comunque, cioè da quando è stata resa pubblica la prima versione del software e Nakamoto è sparito, il sorgente è open e al progetto lavorano più persone, attualmente almeno un centinaio nella comunità Github, dove dal 5 giugno del 2015 si è collocato lo sviluppo della piattaforma Bitcoin.
Per chiunque volesse mettere il naso per vedere come è fatta questa tecnologia dal punto di vista informatico, questo è l’indirizzo: https://github.com/bitcoin/bitcoin. Vi si trova il sorgente.
Per chi, invece, fosse interessato a caricare il software sul proprio computer, software che si chiama Bitcoin Core, l’indirizzo è: https://bitcoin.org/it/scarica oppure, in sede più aggiornata, https://bitcoincore.org/en/download/. Il software è disponibile per Linux, Windows e OS X. La versione corrente è la 0.15.1, rilasciata l’11 novembre del 2017.
Il computer con installato questo software diventa un nodo (full node) della rete blockchain, cioè diventa uno dei tanti computer dove è presente il database della blockchain e diventa uno dei computer che partecipa alla validazione delle transazioni ed alla loro trasmissione ad altri nodi.
Basta un normale computer con almeno 2 GB di RAM in quanto, a partire dalla versione 0.13, Bitcoin Core non ha più abilitata la funzione per il mining (costruzione di nuovi blocchi), per la quale necessiterebbero potenze di calcolo non alla portata di computer casalinghi. Ciò che importa è avere un collegamento Internet superveloce e spazio sufficiente per ospitare il database, attualmente quasi 200 GB, destinato, dati i ritmi di espansione, ad assorbire ulteriormente tra i 5 e i 10 GB al mese. Il tutto può essere ospitato su disco esterno collegato via USB.
Ovviamente è necessario rendere disponibile il computer per la rete almeno sei ore al giorno, sapendo che la piena collaborazione richiederebbe 24 ore su 24 (la disponibilità del computer per la blockchain consente di utilizzare altrimenti il computer stesso per i propri lavori).
All’indirizzo http://btc-news.it/utility/nodo bitcoin.html troviamo una descrizione di cosa significhi essere un full node della blockchain con un fervorino tendente al reclutamento (la blockchain senza nodi non esisterebbe).
Nella sostanza lo svantaggio sta nel rendere disponibile il computer, con relativo costo di energia elettrica, senza alcun compenso. I compensi li percepisce solo il miner e si sono ormai ridotti al lumicino in forza della progressione geometrica con cui diminuiscono. Cosa assolutamente non proporzionata ai costi che comporta allestire e mantenere la capacità elaborativa richiesta dall’attività di mining (per fortuna ci sono i cinesi).
C’è però il grande vantaggio di poter gestire in proprio il bitcoin wallet senza delegarne la gestione ad altri, affidando loro le nostre credenziali, come avviene quando apriamo il bitcoin wallet su uno degli ormai numerosi intermediari di criptomonete: sul piano della sicurezza si tratta di una cosa impagabile.
A livello di hackeraggio brutto ci sarebbe anche un modo per avere il vantaggio senza lo svantaggio, ma tutto ciò è diseducativo. Chi voglia essere diseducato guardi https://www.youtube.com/watch?v=7X0KgtpvSGA.
Prescindendo comunque dall’applicazione Bitcoin, che, nonostante tutto, possiamo ancora considerare qualche cosa di sperimentale, ciò che conta è che la tecnologia blockchain, con la valanga di novità che potrà portare nei più svariati campi applicativi, sia appannaggio del software libero.
Mancherebbe altro! Una tecnologia destinata alla democratizzazione della conoscenza e della custodia dei dati non sarebbe certamente coerente fosse fatta funzionare da software proprietario.

digiKam, il massimo

Il 18 gennaio scorso è stata rilasciata la versione 5.8.0 di digiKam.
Si tratta di un software open source di gestione di raccolte fotografiche e di elaborazione digitale delle immagini, il cui primo rilascio risale al 2002.
Anche grazie ai più recenti ravvicinati rilasci (uno ogni tre/quattro mesi) sta praticamente raggiungendo la perfezione.
Purtroppo, quando ho parlato di strumenti di questa specie, nel maggio 2015 (vedere, in questo blog, l’articolo “Software libero per utilizzare file digitali” e il relativo allegato “utilizzo_file_digitali.pdf”), ho presentato due programmi per la gestione di file fotografici: il semplicissimo KPhotoAlbum, non dotato di funzioni di foto-ritocco e Fotoxx, dotato di funzioni di foto-ritocco. Quest’ultimo, a quel tempo, da me ritenuto migliore della versione 4 di digiKam allora disponibile.
Ma è proprio nel 2015 che è partito il riscatto di digiKam e, dopo il rilascio di ben sette versioni beta, il 3 luglio 2016 è stata data alla luce la versione 5.0.0, dove la perfezione ha cominciato a prendere corpo.
Tra l’altro, a differenza dei due software citati prima, che sono disponibili solo per Linux, digiKam è ora disponibile anche per Windows e Mac OS X.
Dal novembre 2016, con la versione 5.3.0, per Linux viene rilasciato anche come AppImage (cioè come pacchetto eseguibile senza essere installato).
L’ultimo manuale di digiKam, disponibile anche in italiano, è fermo alla versione 5.2: anche se con alcune parti non ancora realizzate, è molto particolareggiato e può risultare dispersivo per chi cerchi semplicemente un primo approccio con questo interessante software.
Ho pensato allora di fare cosa utile proponendo il manualetto allegato, in formato PDF, liberamente consultabile, scaricabile e distribuibile.

digikam

Software libero per il PDF

Nei miei due recenti articoli su come possiamo scrivere e pubblicare noi stessi ebook (“Scrivi e pubblica i tuoi ebook” del settembre 2017) o veri e propri libri stampati su carta (“Scrivi e pubblica veri libri” del novembre 2017) ho illustrato come il formato PDF si presti egregiamente a questi fini, pur essendo ormai affiancato e, in certi casi, giustamente soppiantato da più flessibili altri formati, come il diffusissimo ePub, meglio fruibili sui ridotti schermi di smartphone e piccoli tablet.
Nei due articoli ho anche presentato due formidabili strumenti del mondo del software libero con i quali possiamo produrre file PDF: LibreOffice e LyX.
Per un più completo panorama su cosa si possa fare con il PDF e con il software libero ho ora ritenuto utile proporre la panoramica che si trova nell’allegato manualetto, in formato PDF, che può essere liberamente scaricato, stampato e diffuso.

pdf

Scrivi e pubblica veri libri

Nell’articolo “Scrivi e pubblica i tuoi ebook” dello scorso settembre e nel relativo allegato “epub” ho illustrato come si possano produrre facilmente ebook in un perfetto formato ePub con LibreOffice per pubblicarli e venderli attraverso alcune organizzazioni: tutto senza investire un euro.
Ho anche ricordato che, oltre al formato ePub, esiste il formato PDF, poco adatto agli apparecchi lettori di ebook e a schermi di piccole dimensioni ma adattissimo per gli schermi dai 10 pollici in su di tablet, notebook e personal computer: ideale, soprattutto, per stampare la nostra produzione su carta.
La produzione dei nostri lavori nel formato PDF è possibile utilizzando lo stesso strumento LibreOffice esattamente nello stesso modo con cui lo utilizziamo per produrre nel formato ePub.
Se però vogliamo che il nostro prodotto abbia la forma classica di un libro secondo i dettami stilistici dell’editoria cartacea dobbiamo ricorrere ad un altro potente strumento che ci mette a disposizione il mondo del software libero: il motore di tipocomposizione Tex.
Nel tutorial allegato in formato PDF, liberamente scaricabile, stampabile e distribuibile, illustro questo strumento e un modo per utilizzarlo con relativa facilità.

pdf_lyx