Andrea Rustichelli

Articoli più commentati

  1. Asus F556U – installare disco SSD — 11 commenti
  2. CompeGPS Land – Appunti sull’utilizzo — 6 commenti
  3. MLDownloader fine tuning — 5 commenti
  4. AS400 vs. SAP — 4 commenti
  5. Atom per la programmazione in Python — 4 commenti

Articoli dell'autore

I.A. vs. ITS (the Incompatible Timesharing System)

L’acronimo I.A. (o anche semplicemente IA) sta per Intelligenza Artificiale (in inglese invece è più nota come AI Artificial Intelligence).

Ma cos’è realmente questa IA che ormai riempie la bocca di molti (soprattutto degli esperti di informatica dell’ultimo minuto, che si sono appena comprati un nuovo PC in un grande magazzino nel reparto tra le asciugatrici e i forni a microonde)?

La definizione che ho trovato sul sito inglese di Wikipedia (e che mi piace molto) è la seguente:

In computer science, artificial intelligence (AI), sometimes called machine intelligence, is intelligence demonstrated by machines, in contrast to the natural intelligence displayed by humans and animals. Leading AI textbooks define the field as the study of “intelligent agents”: any device that perceives its environment and takes actions that maximize its chance of successfully achieving its goals. Colloquially, the term “artificial intelligence” is often used to describe machines (or computers) that mimic “cognitive” functions that humans associate with the human mind, such as “learning” and “problem solving”.

https://en.wikipedia.org/wiki/Artificial_intelligence

Molte implementazioni in realtà si “fregiano” del’acronimo “IA” ma in realtà non sono altro che programmi contenenti una infinità di cicli “IF… THEN… ELSE” o di costrutti “CASE”.

Ma questo, il mangiatore di Quiche, non lo sa e si impressiona e pensa che ci siano software miracolosi che, se utilizzati, ci proietteranno nel futuro e porteranno l’umanità verso una società utopistica e fantascientifica, dove saranno le macchine a dirci come comportarci per raggiungere il successo e gli obiettivi che l’uomo si prefigge (a qualsiasi dimensione e in qualsiasi campo). E questo è una dato di fatto, perché altrimenti non si spiegherebbe tutto questo pseudo-interesse verso l’IA e il proliferare di applicazioni (funzionanti???) che adottano questo prodigio della tecnica.

L’intelligenza artificiale, come definizione, era nata per indicare un tipo di intelligenza diversa e disgiunta da quella tipica dell’uomo. Con il passare del tempo e delle evoluzioni tecnologiche l’IA si è ampliata e ha, al momento, delle interessanti sotto categorie di analisi e applicazione come, ad esempio, l’apprendimento automatico (o machine learning) e l’elaborazione del linguaggio naturale (o NLP Natural Language Processing). Esistono delle librerie (o API) per molti linguaggi di programmazione rivolte proprio a questi particolari aspetti dell’IA. Aspetti che, proprio per la loro complessità, non sono facili da realizzare, nè tanto meno la loro applicazione trova sbocchi concreti e attendibili. Ad esempio, un sistema basato sul machine learning, tanto più è sofisticato, tanto più dovrà essere testato su una mole sempre crescente di dati (i famosi Big Data). Se un sistema complesso apprende su un set limitato di informazioni, il rischio è che il sistema impari “a memoria” e non sia poi in grado di fornire output di qualità quando sarà messo alla prova in una situazione reale e complessa.

All’inizio ho detto che, al momento, uno dei rami principali dell’IA è rappresentato dalle tecniche di Machine Learning; proprio su questo argomento vorrei aprire due parentesi ad hoc.

Parentesi 1) L’altro giorno ho sentito dire che sui siti internet è possibile mettere dei banner che, grazie agli algoritmi di machine learning, è possibile visualizzare delle pubblicità “ritagliate” sul profilo del visitatore (che si è preventivamente loggato).
Ottimo.
Allora forse è meglio spiegare come stanno le cose:
Quando un utente si logga su un sito internet viene creato un oggetto “sessione” che può contenere i dati più disparati e che generalmente vengono recuperati dal database sui cui si trovano le informazioni dell’utente (nome, lingua, valuta, preferenze in generale) e “attaccate” all’oggetto “sessione” per tutta la durata della sessione (o comunque entro un tempo massimo stabilito per motivi di sicurezza).
Ipotizziamo che nell’oggetto “sessione” vengano anche memorizzate (ad esempio sotto forma di variabili booleane) le informazioni sui servizi attivi sul cliente.
A questo punto, nel banner delle pubblicità ci sarà un blocco di codice simile (ovviamente declinato in un determinato linguaggio di programmazione server side):

SE il cliente NON HA il SERVIZO_1 attivo, ALLORA mostra la pubblicità del SERVIZIO_1 altrimenti mostra pubblicità “standard”

IF
cliente.SERVIZO_1 = false
THEN
mostra pubblicità SERVIZIO_1
ELSE
mostra pubblicità “standard”
END IF

A questo punto possiamo avere le seguenti opzioni:
1) dietro il banner non c’è nessun algoritmo di Machine Learning e quindi hanno usato dei termini impropri per essere “cool” e alla moda
2) l’intelligenza umana è definita tale perché il cervello umano ha la capacità di gestire i “SE”. Grandissimo tassello nell’evoluzione umana. Beh vorrebbe dire sottovalutare enormemente i ragionamenti e l’intelligenza dell’uomo e non voglio certo credere che sia questo aspetto a denotare e classificare la nostra intelligenza.

E se parliamo dei banner pubblicitari personalizzati per noi, il merito è da attribuire unicamente ai cookies che vengono scaricati sul nostro durante la navigazione e che poi vengono utilizzati dai banner per “pescare” le pubblicità che meglio si adattano al nostro profilo. Ma gli algoritmi in sé non contengo blocchi di IA, anche se sicuramente sono programmati molto bene e con grande precisione. La prova è molto semplice… basta collegarsi ad un sito pieno di pubblicità con un browser normale e uno in modalità anonima (meglio un buon browser tipo Mozilla Firefox settato con parametri da paranoico) per notare che le pubblicità non sono più “profilate” sul nostro profilo commerciale.

Parentesi 2) il Machine Learning è in realtà l’applicazione degli algoritmi di Regressione Lineare (LR – Linear Regression), non a caso quando si scrive un programma di ML la prima cosa da fare è importare una o più librerie matematiche che contengono le funzioni utilizzate nella RL.

Il concetto di ML chiama, in modo molto naturale, un altro termine molto abusato, che è quello di Big Data. Cosa sono i Big Data? Tantissimi dati (strutturati e non strutturati) che esistono più o meno da quando sono nati i database relazionali.

Ma perchè i Big Data sono così importanti? Vediamolo.

Se scrivo un programma di ML, per avere un output “ragionato” dovrò fornirgli dei dati per poter arrivare alla risposta. Più il programma “ragione bene”, più è necessario fornire una quantità enorme di dati, altrimenti è probabile che il programma fornisca una risposta”a memoria”, come fanno alcuni studenti quando imparano a memoria un tema e poi lo ripetono senza capire le sfumature e le peculiarità, e quindi rischiando anche di dare un risultato errato.

Quindi scrivo il programma, formulo una domanda, il programma analizza una mole incredibile di dati e poi formula una risposta.

Voglio porre al programma una nuova domanda, il programma analizza ancora una mole incredibile di dati e poi formula una risposta.

Approccio non molto “intelligente”, considerando che il concetto di memoria, di esperienza, di “attitudine” al rischio intrinseche in ogni decisione sono ancora ben lontane dall’essere raggiunte… ma un approccio basato sulla regressione lineare può essere un ottimo surrogato (il più è riconoscerlo e non abusare del concetto di Machine Learning e di Intelligenza Artificiale).

Ultima cosa: da dove deriva la seconda parte del titolo di questo post, ovvero ITS (the Incompatible Timesharing System)?

Nel testo “The GNU Project” pubblicato all’interno del libro “Open Sources”, Stallman inizia a descrivere il suo inizio di carriera nel 1971 all’interno del MIT nel laboratorio di Intelligenza Artificiale. La veloce descrizione è la seguente:

The AI Lab used a timesharing operating system called ITS (the Incompatible
Timesharing System) that the lab’s staff hackers (*) had designed and written in assembler language for the Digital PDP-10, one of the large computers of the era. As a member of this community, an AI lab staff system hacker, my job was to improve this system.

Richard Stallman, The GNU Project

Dalle prime righe del testo si può quindi dedurre che già nel 1971 si parlava di IA e che all’epoca l’IA era programmata in assembler e lo scopo ultimo di Stallman (in quanto “AI lab staff system hacker”) era quello di migliorare il sistema.

Come ultima chicca, dalla nota evidenziata con l'(*), è possibile trarre una bellissima definizione del termine hacker:

(*) The use of “hacker” to mean “security breaker” is a confusion on the part of
the mass media. We hackers refuse to recognize that meaning, and continue using the word to mean, “Someone who loves to program and enjoys being clever about it.”

Richard Stallman, The GNU Project

Leggi il testo in inglese sul sito del Progetto GNU

Leggi il testo in italiano sul sito del Progetto GNU

Cercando di identificare un intervallo temporale all’interno del quale racchiudere l’evoluzione del concetto di Intelligenza Artificiale, possiamo dire che:

Il punto -1 è riconducibile all’anno 1950 quando, sulla rivista Mind, viene pubblicato un articolo di Alan Turing denominato Computing machinery and intelligence. Nell’articolo, partendo dal gioco denominato “gioco dell’imitazione”, Turing teorizza quello che poi diventerà noto come Testi di Turing (TT) che rappresenta un criterio per determinare se una macchina sia in grado di mostrare un comportamento intelligente ad un osservatore umano.

Il punto 0 si colloca temporalmente nell’anno 1956 quando, in un seminario presso il Dartmouth College di Hanover nel New Hampshire, si sono riuniti i principali esponenti informatici per raccogliere i risultati e le opinioni degli studi condotti negli anni precedenti e per delineare le linee guida degli sviluppi futuri.

Il punto di arrivo è il matrix creato dall’IA per utilizzare gli uomini come batterie per alimentare il sistema (cit. Matrix).

Diciamo che tra il punto 0 il punto di arrivo, siamo ancora nettamente nella prima parte del percorso. Oltretutto non sono convinto, IMHO, che l’attuale tecnologia basata sul silicio sia condizione sufficiente per lo sviluppo di una vera e propria IA.

Permalink link a questo articolo: http://www.andrea.rustichelli.name/i-a-vs-its-the-incompatible-timesharing-system/

Stefano Benni – Bar Sport

Libro storico, che descrive perfettamente il tipico bar italiano e tutta la fauna che lo frequenta e che orbita intorno a questo luogo di aggregazione.

Ovviamente ai giorni nostri (emergenza Covid a parte) il bar non è più come negli anni descritti nel libro, ma nel suo contesto temporale è tutto assolutamente e, per certi versi, drammaticamente verissimo.

Benni ha fotografato tutte le figure e le situazioni che si verificavano nei bar di tutta Italia.

Però sul lato umoristico (anche se ovviamente è un umorismo un po’ noir e cinico) risulta un po’ come la famosa rubrica della Settimana Enigmistica, ovvero “risate a denti stretti”.

Permalink link a questo articolo: http://www.andrea.rustichelli.name/stefano-benni-bar-sport/

Tastiera wireless Rii X8 Mini

Acquisto fatto sia per comodità (con la Fire TV Stick) sia perchè sono un feticista delle tastiere. L’ho comprata per collegarla alla Fire TV Stick, ma in realtà può essere utilizzata anche con computer, smart TV, Raspberry, ecc. in quanto ha un ricevitore USB per potere dialogare con il dispositivo a cui è collegato.

Il modello della tastiera è: RT-MWK08X RF.

Nella scatola sono presenti, oltre alla tastiera, un cavo di alimentazione USB (in quanto la tastiera ha una batteria interna simile a quella dei vecchi cellulari), un cavo USB da collegare alla Fire TV Stick per poter collegare il ricevitore USB e poter garantire anche l’alimentazione tramite lo stesso cavo e un piccolo manuale.

Nel retro della tastiera è presente uno sportellino che nasconde la batteria al litio (rimovibile) e il ricevitore USB da collegare al dispositivo che si vuole utilizzare con la tastiera.

La tastiera ha i tasti retroilluminati per un migliore utilizzo anche in condizioni di scarsa luminosità (classica situazione di quando si sta guardando un film seduti sul divano) ed è possibile scegliere vari colori oppure l’effetto arcobaleno.

Alcune note tecniche:

– Il tasto Fn (funzione) + la barra spaziatrice permette di regolare la sensibilità del touchpad;

– il tasto Fn e il tasto Win permette di variare il colore della retroilluminazione;

– il primo led è blu fisso quando la tastiera è collegata mentre lampeggia quando è in fase di comunicazione;

– il secondo led si accende quando è attivo il CAPS LOCK;

– il terzo led rosso si accende quando la tastiera è in carica;

– per abbinare nuovamente la tastiera è necessario seguire i seguenti passi:

  • accendere la tastiera tenendo premuto il tasto ESC;
  • rilasciare il tasto ESC; il led blu lampeggerà velocemente per indicare che la tastiera è alla ricerca di un nuovo ricevitore;
  • inserire il ricevitore USB nel dispositivo (ad esempio alla Smart TV);
  • il led blu diventa fisso ad indicare che l’abbinamento è andato a buon fine.

Permalink link a questo articolo: http://www.andrea.rustichelli.name/tastiera-wireless-rii-x8-mini/

Fire TV Stick di Amazon

Non avendo ancora acquistato una smart TV, per poter utilizzare le varie piattaforme di fruizione di contenuti digitali (come Netflix, Spotify, ecc) qualche anno fa ho acquistato una Fire TV Stick di Amazon. Direi che è una delle prime versioni… il telecomando non supporta i comandi vocali e non gestisce il 4K ma per il momento mi basta.

Sto utilizzando lo Stick da qualche tempo in modo intensivo (grazie al lockdown) ma devo dire che lo trovo un ottimo prodotto. Se fosse possibile aggiungerei la possibilità di accedere anche a contenuti locali o presenti in una rete locale.

So che è possibile configurare anche il servizio di Plex, ma sinceramente non è di mio gradimento, e quindi preferirei una soluzione alternativa.

Ecco qualche foto scattata durante l’unboxing…

Un acquisto da fare (soprattutto per la mia versione che non permette di impartire comandi vocali) è quello di una tastiera bluetooth o wireless per una migliore e più veloce scrittura (inserimento credenziali e inserimento di stringhe nel campi di ricerca).

Ecco un paio di manuali da tenere sempre a portata di mano:

Permalink link a questo articolo: http://www.andrea.rustichelli.name/fire-tv-stick-di-amazon/

Anche Big G può fallire (a volte)

L’immagine che segue, nella sua estrema semplicità, è assolutamente geniale. E’ perfetta. Non c’è nulla da togliere o da aggiungere.

Un colosso come Google 1.000 ne pensa e 1.000 ne fa… quindi un fallimento ogni tanto è più che normale e fisiologico.

Però in questo momento storico, dove tutto passa per il colosso di bigG, avverto un piccolo sussulto di piacere. Google è immensa e fa parte della mia crescita considerando che l’ho vista nascere come alternativa indipendente e fuori dagli schemi rispetto ai primi grandi motori di ricerca come Yahoo e Altavista… però inizio a pensare che sia anche l’artefice della brutta piega commerciale che sta strisciando nei meandri (neanche tanto nascosti) della rete.

Riporto di seguito un po’ di articoli interessanti (e in parte anticipatori del futuro):

Permalink link a questo articolo: http://www.andrea.rustichelli.name/anche-bigg-puo-fallire-a-volte/

The Java Brothers

Era il finire degli anni ’90 e primi anni 2000. Java iniziava a prendere piede come il nuovo linguaggio di programmazione (se non ricordo male è stato il primo linguaggio a superare, come numero di sviluppatori, il linguaggio C).

Questa immagine mi ha fatto ridere, e mi ha fatto tornare in mente alcuni momenti del mio periodo universitario a Modena… quando prendevo il treno a Carpi e ogni tanto mi fermavo presso l’edicola vicina a prendere le riviste di informatica che avevano in allegato i DVD pieni di tool e IDE di programmazione.

Gli IDE più evoluti venivano sviluppati dalla Borland (con la loro serie “Builder”, ad esempio C++ Builder e JBuilder) e dalla Microsoft (con la loro serie “Visual”, ad esempio Visual C++ e Visual J++).

Poi la Microsoft ha rilasciato il suo nuovo linguaggio C# (pronuncia “C sharp” o “see sharp” se pronunciato in inglese) all’interno della nuova architettura di sviluppo denominata .NET (dot NET).
Il creatore del linguaggio Java, James Goslin e uno dei fondatori della Sun Microsystem (che rilasciò il linguaggio Java) Bill Joy, dissero subito che si trattava di un evidente clone del loro linguaggio di programmazione ma depotenziato e con notevoli carenze in fatto di riutilizzabilità, produttività e sicurezza.

L’immagine mi ha ricordato che nella documentazione in linea delle prime versione del SDK di C#, si faceva ancora riferimento a Java… molto probabilmente nel corso dei primi rilasci le pagine della guida on-line non erano ancora state “convertite” correttamente. Grande Microsoft Java.

Permalink link a questo articolo: http://www.andrea.rustichelli.name/the-java-brothers/

Linux, la mia passione (inteso come participio passato di pati ‘soffrire’)

Durante il normale utilizzo del mio sistema “linux based” sono incappato in quello che molti esperti ritengono uno dei grandi misteri (e uno dei più grossi problemi) che possano accadere ad un utente di questo sistema operativo. durante la fase di boot compariva il seguente messaggio “PKCS#7 signature not signed with a trusted key”

Il problema molto probabilmente è legato all’installazione di Steam della Valve e di alcuni giochi demo che ho provato a scaricare. Grazie a Timeshift (detto anche Timebomb) ho ripristinato una precedente immagine del SO e ho salvato tutti i dati personali. Poi, visto che è stata recentemente rilasciata la versione 20 di Linux Mint (nome in codice “Ulyana”) ho deciso di provare un paio di SO prima di installare questa nuova versione (che guarda caso ha una nuova “feature” per la gestione delle scheda grafiche Nvidia come quella montata sul mio portatile).

Questa volta ho provato ad installare:

Ubuntu 20.10: confermo la mia totale avversione a questo prodotto (sia in termini di nome, sia in termini di interfaccia grafica);

Fedora 33 Workstation (la distro usata da Linus Torvalds): il passaggio dalla galassia Debian alla galassia Red Hat non mi tenta… e considerando il desktop engine utilizzato direi che non mi sbaglio…

Debian 10.6: ho scaricato i 3 DVD della release e poi ho installato Debian con il DE Cinnamon (per avere un confronto diretto con l’attuale sistema Linux Mint 19 usato normalmente). Debian è la madre di molte distro linux di successo come, appunto Ubuntu e Mint, però non posso concepire di non poter avere il WiFi configurato solamente perchè il software non è totalmente free e ci sono pezzi di codice protetto da copyright. Poi non mi piace neanche l’emulatore del terminale… ok essere puristi, ok votarsi alla stabilità, ok votarsi al codice libero… però che tedio…

Poi ho deciso di continuare con Mint e installare la nuova versione… la 20. Ci ho messo un po’… ho faticato ad installarla… poi mi sono ricordato che avevo avuto lo stesso problema anche con la precedente installazione della versione 19, allora ho rispolverato l’articolo scritto all’epoca e ho risolto brillantemente il problema.

Linux si conferma una passione, nel senso etimologico del termine… una sofferenza… anche se poi ti lusinga e crea un legame di odio/amore con l’utilizzatore.

Permalink link a questo articolo: http://www.andrea.rustichelli.name/linux-la-mia-passione-inteso-come-participio-passato-di-pati-soffrire/

“The cloud” is just someone else’s computer

Capita a volte di sentire che hanno violato degli account “cloud” di personaggi famosi e che sono stati diffusi file dal contenuto privato…

Certamente il cloud è una grandissima comodità, ma non scordiamoci che ci esponiamo a molti rischi, soprattutto se lo utilizziamo per custodire file compromettenti che sarebbe meglio tenere solamente sul proprio pc, magari dentro file cifrati o comunque protetti da password.

E dove non arrivano gli hacker possono comunque arrivare i gestori del servizi cloud… come riportato anche nell’articolo Microsoft Service Agreement. Poi non succede nulla… però un po’ di scrupoli me li farei.

Permalink link a questo articolo: http://www.andrea.rustichelli.name/the-cloud-is-just-someone-elses-computer/

Dissertazione confusionaria sui tablet

Sottotitolo: noi informatici smanettoni e appassionati, alle prese con un nuovo device che catalizza le attenzioni. Provo un po’ di odio e un po’ di attrazione che non so spiegarmi.

Una piattaforma chiusa, con un unico punto (o quasi) dove recuperare il software, che è diventato il vero punto fermo di questi dispositivi.
Gli smanettoni abituati a vedere il disco, il file system i file e tutto quello che a vario titolo ha a che fare con il proprio pc, difficilmente si riescono ad abituare ad un simile dispositivo. Le informazioni in campo informatico sono sempre state rappresentate dai file che ora hanno assunto un aspetto secondario, se non nullo nei tablet. Navigando in rete posso aver bisogno di scaricare un file … ma dove lo metto? Sul desktop? Nella cartella documenti? Dove? Nel “cloud”?

Il tablet è il dispositivo perfetto nell’evoluzione del pc. Dopotutto adesso siamo abituati a vederli in vendita nei grandi centri commerciali tra i frigoriferi e i televisori, come se quello fosse il loro posto naturale.

Nell’evoluzione dei personal computer i netbook avevano almeno una loro intima utilità: prodotti a basso prezzo (almeno all’inizio) per fornire un dispositivo funzionale e con tutto il necessario per scrivere, navigare e accedere alla rete. Adesso i tablet hanno soppiantato completamente i netbook, rappresentando un prodotto tecnologicamente più evoluto e sicuramente più accattivante; la Mela da questo punto di vista non ha rivali. Ma almeno sui netbook si poteva installare qualsiasi sistema operativo; erano nati una pletora di sistemi operativi dedicati ai nuovi dispositivi e comunque rappresentavano, in piccolo, un normale pc portatile. I tablet sono i figli di una tecnologia e di un paradigma chiuso, tanto è vero che i tablet della Mela non hanno neanche la porta USB e non sono espandibili. Una bella comodità; così sei sicuro che, anche se ti venisse voglia di smanettarci seriamente, non avresti comunque la possibilità di interfacciare il dispositivo con il mondo esterno. L’unico mondo che il dispositivo vede e al quale ha accesso è quello reso disponibile dalle innumerevoli App (usare il termine software o programma è eccessivo e fuorviante in questo nuovo contesto di non-informatica). D’altronde gli utenti della Mela e adesso gli utilizzatori di tablet sono alla ricerca della semplicità. Quella semplicità e quella immediatezza che i normali PC non possono offrire perchè se cerchi potenza, espandibilità e completezza non puoi certo prescindere da un PC… non c’è rosa senza spine.

Nel mondo dei tablet è bellissimo notare come la concezione mainstream porti la gente a pensare che siano stati inventati dalla Apple e dal guru Jobs, qando in realtà i tablet (o un loro precursore chiamato Tablet PC) furono introdotti nel mercato dei big player dalla Microsoft. Come sempre la Mela ha dimostrato ancora una volta che non è sufficiente una buna idea, ma bisogna anche impacchettarla con una scatola accattivante e dire alle persone che hanno un bisogno impellente da soddisfare.

E poi, come disse il Cuginetto, le App stanno rovinamndo intere generazioni di programmatori e hanno peggiorato il modo di programmare. Ma come è possibile che ogni settimana ci siano da aggiornare tutte le App installate e che il loro peso, in termini di occupazione disco, sia in costante aumento. Ci sono App che superano abbondantemente i 100 MB e a 100 MB arrivava una delle prime versione di Acrobat Writer negli anni 2000. Si qualche problema lo devono avere queste App…

Però per onestà intellettuale devo dire che anche io utilizzo i tablet, sia l’iPad (che mi è statore regalato) sia di vari produttori asiatici con installato l’immancabile Android. Anche questi ultimi hanno qualche vantaggio rispetto a quelli della Mela (vedi espandibilità), ma rimangono chiusi e, a mio modo di vedere, molto limitati per gli smanettoni.

Il tablet: Comodo è comodo… però se devo fare delle cose serie lo devo appoggiare e tirare fuori il mio portatile… vecchio rappresentante di una informatica che non morirà mai.

Permalink link a questo articolo: http://www.andrea.rustichelli.name/dissertazione-confusionaria-sui-tablet/

Dall’Extreme Programming all’Agile, passando per l’APP IO

Partiamo dall’inizio di tutto… partiamo dall’Extreme Programming (XP).
L’ Extreme Programming è una metodologia per lo sviluppo software nata intorno all’anno 1996 e i suoi cardini sono rappresentati da:

  • Simplicity
  • Communication
  • Feedback
  • Respect
  • Courage

mentre le regole da rispettare sono declinate nelle 5 fasi dello sviluppo software (Planning, Managing, Designing, Coding e Testing.)

In pratica molti progetti di successo sono basati su questa metodologia (soprattutto dal 1996 ai primi anni del 2000).
Ma qual’è un progetto software di successo basato su questa metodologia? Il mio esempio preferito è VLC Media Player (Video LAN Client) il noto player multimediale presente per ogni piattaforma e famoso per l’icona a forma di cono per i lavori stradali.
VLC fin dal suo rilascio iniziale ha rispettato tutte le caratteristiche della metodologia XP.
La versione 1.0.0 è arrivata solamente a Giugno 2010 nonostante il software fosse disponibile già dal primi anni 2000. Questo significa che il software ha iniziato a circolare liberamente anche quando non era ancora considerato sufficientemente stabile e maturo. Però il suo compito principale, quello del player multimediale, lo ha svolto bene fin da subito e questo gli ha permesso di guadagnare costantemente consensi da parte degli utilizzatori arrivando addirittura a sbaragliare tutta la concorrenza perchè, anche se non perfetto, era migliore della maggioranza dei suoi competitor.
Su Windows era obbligatorio installarlo per sostituire l’imbarazzante Windows Media Player installato di default e, anche sui sistemi linux, si dimostra un ottimo player rispetto alla numerosa concorrenza free.
L’XP funziona anche nei confronti degli utilizzatori perchè:
1) venendo rilasciato anche se non perfettamente maturo, permette di “occupare” una fetta di mercato e rubare utilizzatori agli altri software
2) venendo aggiornato in continuazione permette di aggiungere sempre nuove funzionalità (o risolvere bug)e di fidelizzare l’utilizzatore
Gli sviluppatori di VLC sono riusciti a farsi una ampia base di utilizzatori fedeli e contenti del prodotto.
Una dovuta precisazione: i dati riportati sotto partono dalla versione 0.8.6 del 2006 ma in realtà lo sviluppo di VLC iniziò nel 1996 (all’interno di un campus francese con architettura client/server… da qui il nome originario di Video LAN Client).
Riporto di seguito le date di rilascio delle varie versioni di VLC dalla versione 0.8.6 all’attuale versione 3.1.10 (stabile) o 3.1.11 (beta) che occupano un arco temporale di circa 14 anni.

VLC v3.0.11 Beta – 16 Jun 2020
VLC v3.0.10 – 29 Apr 2020
VLC v3.0.8 – 20 Aug 2019
VLC v3.0.7.1 – 12 Jun 2019
VLC v3.0.7 – 07 Jun 2019
VLC v3.0.6 – 12 Jan 2019
VLC v3.0.5 – 27 Dec 2018
VLC v3.0.4 – 01 Sep 2018
VLC v3.0.3 – 31 May 2018
VLC v3.0.2 – 25 Apr 2018
VLC v3.0.1 – 28 Feb 2018
VLC v3.0 – 09 Feb 2018
VLC v2.2.8 Beta – 23 Nov 2017
VLC v2.2.6 – 25 May 2017
VLC v2.2.5.1 – 13 May 2017
VLC v2.2.5.1 Beta – 15 Mar 2017
VLC v2.2.4 – 05 Jun 2016
VLC v2.2.3 – 04 May 2016
VLC v2.2.2 – 06 Feb 2016
VLC v2.2.2 Beta – 22 Jan 2016
VLC v2.2.1 – 14 Apr 2015
VLC v2.2.0 – 27 Feb 2015
VLC v2.2.0 RC2 – 23 Nov 2014
VLC v2.2.0 RC 1 – 12 Nov 2014
VLC v2.1.5 – 27 Jul 2014
VLC v2.1.3 – 05 Feb 2014
VLC v2.1.2 – 10 Dec 2013
VLC v2.1.1 – 14 Nov 2013
VLC v2.1.0 – 26 Sep 2013
VLC v2.1.0 RC 2 – 10 Sep 2013
VLC v2.1.0 RC 1 – 28 Aug 2013
VLC v2.0.8 – 29 Jul 2013
VLC v2.0.7 – 10 Jun 2013
VLC v2.0.6 – 13 Apr 2013
VLC v2.0.5 – 15 Dec 2012
VLC v2.0.4 – 23 Oct 2012
VLC v2.0.3 – 20 Jul 2012
VLC v2.0.2 – 01 Jul 2012
VLC v2.0.1 – 20 Mar 2012
VLC v2.0.0 – 19 Feb 2012
VLC v2.0. RC1 – 16 Feb 2012
VLC v1.1.11 – 16 Jul 2011
VLC v1.1.10 – 06 Jun 2011
VLC v1.1.9 – 13 Apr 2011
VLC v1.1.8 – 24 Mar 2011
VLC v1.1.7 – 01 Feb 2011
VLC v1.1.6 – 25 Jan 2011
VLC v1.1.5 – 14 Nov 2010
VLC v1.1.4 – 30 Aug 2010
VLC v1.1.3 – 19 Aug 2010
VLC v1.1.2 – 05 Aug 2010
VLC v1.1.0 – 23 Jun 2010
VLC v1.1.0 RC 4 – 16 Jun 2010
VLC v1.1.0 RC 3 – 11 Jun 2010
VLC v1.1.0 RC – 26 May 2010
VLC v1.1.0 pre4 – 12 May 2010
VLC v1.1.0 pre3 – 02 May 2010
VLC v1.1.0 pre1 – 13 Apr 2010
VLC v1.0.5 – 01 Feb 2010
VLC v1.0.3 – 02 Nov 2009
VLC v1.0.3 RC – 22 Oct 2009
VLC v1.0.2 – 23 Sep 2009
VLC v1.0.1 – 29 Jul 2009
VLC v1.0.0 – 07 Jul 2009
VLC v1.0.0 RC 4 – 18 Jun 2009
VLC v1.0.0 RC 3 – 12 Jun 2009
VLC v0.9.9 – 03 Apr 2009
VLC v0.9.8a – 08 Dec 2008
VLC v0.9.6 – 10 Nov 2008
VLC v0.9.4 – 08 Oct 2008
VLC v0.9.3 – 06 Oct 2008
VLC v0.9.2 – 15 Sep 2008
VLC v0.9.0 Test 2 – 01 Aug 2008
VLC v0.8.6i – 12 Jul 2008
VLC v0.8.6h – 08 Jun 2008
VLC v0.8.6f – 03 Apr 2008
VLC v0.8.6e – 28 Feb 2008
VLC v0.8.6d – 01 Dec 2007
VLC v0.8.6c – 17 Jun 2007
VLC v0.8.6b – 18 Apr 2007
VLC v0.8.6b Test 1 – 13 Apr 2007
VLC v0.8.6a – 05 Jan 2007
VLC v0.8.6 – 10 Dec 2006
VLC v0.8.6 RC1 – 01 Dec 2006
VLC v0.8.6 Test 2a – 21 Nov 2006
VLC v0.8.6 Test 2 – 16 Nov 2006
VLC v0.8.6 Test 1 – 27 Oct 2006

Poi nel 2001 alcuni ideatori della metodologia XP (Kent Beck, Jeff Sutherland, Ken Schwaber e Ward Cunningham) firmarono insieme ad altri sviluppatori il manifesto Agile. Il manifesto altro non è che, IMHO, una riscrittura “politically correct” della metodologia XP. Non a caso adesso la parola imperante sui sociale è “Agile” e non “Extreme Programming”.
Ecco il manifesto Agile in italiano, ma sul sito ufficiale è disponibile in molte lingue tra cui, ovviamente, anche l’originale testo in inglese.

Stiamo scoprendo modi migliori di creare software, sviluppandolo e aiutando gli altri a fare lo stesso.
Grazie a questa attività siamo arrivati a considerare importanti:

Gli individui e le interazioni più che i processi e gli strumenti
Il software funzionante più che la documentazione esaustiva
La collaborazione col cliente più che la negoziazione dei contratti
Rispondere al cambiamento più che seguire un piano

Ovvero, fermo restando il valore delle voci a destra, consideriamo più importanti le voci a sinistra.

Sicuramente questo manifesto è stato plasmato dalla metodologia XP per essere più aderente alle nuove realtà aziendali, alle nuove forme di managing e ai prodotti software emergenti (principalmente applicazioni web-oriented e app per smartphone/tablet). L’XP si è liberata delle rigidità ed è diventata fluida, malleabile e dinamica.
Tramite i 12 principi della programmazione Agile sono state gettate le basi per una nuova metodologia di sviluppo software che trae le sue origini proprio dalla metodologia XP ma rendendola più attuale e fruibile.

Tra le due metodologie preferisco ancora l’Extreme Programming perchè la reputo più vera, più essenziale e più pragmatica… lontana dalle logiche e dagli slogan maintream che imperano sui social network.

Poi tra il 7 e l’8 Dicembre 2020 è stata pubblicata su tutti gli store l’App IO. L’app IO è la parte software derivante dal progetto IO per la promozione della “cittadinanza digitale” del Governo italiano. Ideato dal team per la Trasformazione Digitale promossa dall’AGID (Agenzia per l’Italia Digitale) ha l’obiettivo di facilitare l’accesso dei cittadini a tutti i servizi digitali della Pubblica Amministrazione. L’app IO è stata rilasciata in occasione del progetto “Cashback” per incentivare l’utilizzo dei pagamenti digitali effettuati dall’ 8 al 31 Dicembre 2020. Inutile dire che il 9 Dicembre l’app IO era parzialmente inutilizzabile e i continui aggiornamenti dell’app dimostrano che il software non può essere definito “stabile” (come evidenziato anche dai vari screenshot).

Anche questo è un esempio di Extreme Programmig. Nonostante gli evidenti limiti e malfunzionamenti milioni di utenti hanno scaricato l’app nei primi giorni e attendono con ansia la versione stabile.
L’app IO rispetta i 5 cardini della Extreme Programming:

  • Simplicity: SI (ma con pre-requisiti COMPLESSI)
  • Communication: ECCESSIVA e MARTELLANTE
  • Feedback: NON PERVENUTO
  • Respect: NESSUN RISPETTO
  • Courage: DA VENDERE

Permalink link a questo articolo: http://www.andrea.rustichelli.name/dallextreme-programming-allagile-passando-per-lapp-io/

Dialogo sui massimi sistemi (operativi)

“Il Mac è meglio di Windows, senza ombra di dubbio; se non altro non si pianta mai, e, comunque, è molto più veloce.”

Questo è quello che mi è toccato sentire.
Beh vorrei esprimere alcune considerazioni personali sui 2 principali sistemi (intendendo con la parola sistemi l’accoppiata Mac+iOS e PC assemblati + Windows).

Per iniziare vorrei sottolineare come l’instabilità di Windows non sia solamente un blocco di sistema, ma una frustrante e sporadica dimostrazione della fallibilità del lavoro umano. Qualcosa di più profondo dunque di un errore di sistema, è un’occasione di crescita per il Vero Uomo (che ricordiamo, non usa certo il Mac). Quando compare il c.d. “schermo blu” (detto anche BSOD – Blue Screen Of Death) il Vero Uomo sa che ha commesso un errore. Ha scritto un programma errato, ha eseguito contemporaneamente troppe istanze di programmi, oppure, molto più semplicemente, il programma in esecuzione ha cercato di accedere ad una porzione di memoria RAM già occupata da altri dati e il SO ha avvisato l’utente dell’accaduto e vi ha posto rimedio.

Ma perchè il Mac è più stabile?

La risposta è molto semplice: perchè è un sistema operativo creato per essere eseguito su 4 pc e 5 portatili, con un hardware prestabilito e non scelto/modificabile dall’utente. Windows nasce per poter girare su qualsiasi pc e quindi, per estensione di questa filosofia, fatto per non girare alla perfezione su nessuna macchina. Windows (in qualsiasi delle sue versioni) ha al suo interno un numero enorme di driver proprio per poter gestire praticamente qualsiasi periferica acquistabile sul mercato (passata, presente e, qualche volta, anche futura come i draft dei vari protocolli in fase di beta test). Addirittura il sistema operativo del Mac ad un certo punto del suo sviluppo termina di essere compatibile con i modelli precedenti dei computer della Mela. E’ quindi chiaro che se un sistema operativo nasce per “girare” su un numero ristretto di periferiche hardware allora sarà sicuramente stabile e performante (altrimenti ci sarebbero dei seri problemi se ciò non avvenisse).
Per certi versi è un po’ come ricompilare il kernel dei sistemi Unix/Linux che permettono di conformare perfettamente il cuore del sistema operativo all’hardware del pc. Vorrei chiedere ad un utente della Mela quanto volte ha aperto il proprio Mac, magari per aumentare la dotazione di memoria RAM, oppure per aggiungere un disco fisso o anche solamente per guardare la meraviglia tecnologica che c’è dentro un computer. Ma cosa lo apre a fare un Mac? Tanto non puoi aggiungerci nulla perchè il Sistema Operativo non riconoscerebbe il nuovo hardware. Per la cronaca: i Veri Uomini hanno la necessità di “smanettare” con l’hardware dei propri PC, quindi, per derivazione, i Veri Uomini non hanno Mac.

Passiamo ora ad affrontare il problema della velocità. Il Mac dal 2006 a questa parte monta dei processori sviluppati dalla Intel e quindi si è allineata con gli altri produttori di PC e ha abbandonato i vecchi processori sviluppati dalla Motorola (fino al 1996) e poi dal “consorzio AIM (Apple-IBM-Motorola); possiamo parlare quindi di un’era RISC e di un’era CISC.
Nel corso della prima era, l’architettura del processore era di tipo RISC (Reduced Instruction Computer Set) ovvero era un processore che, a prescindere dalla velocità di clock, aveva un ridotto numero di istruzioni. Storicamente tutti i processori con architettura RISC proprio in virtù del basso numero di istruzioni elementari, erano particolarmente ‘veloci’ nell’eseguire le istruzioni booleane (and, or, not, nor ecc.). Le istruzioni booleane sono da sempre utilizzate per la grafica e l’editing audio/video che, in quanto le funzioni che vengono applicate su foto, immagini, audio e video, altro non sono che complesse funzioni aventi come fondamenti proprio le istruzioni booleane. E guarda caso dov’è che i sistemi Mac hanno sempre dato un grosso contributo? Proprio nei settori della dell’editing grafico e della creazione musicale. Quindi tornando alla domanda iniziale possiamo dire che nell’era pre-Intel i Mac erano sicuramente più veloci, a parità di velocità di clock, degli altri processori con architettura CISC (Complex Instruction Computer Set) soprattutto in quegli ambiti dove si faceva un massiccio utilizzo di operazioni elementari e booleane.
Adesso che siamo nell’era Intel questo divario, causato dalla differente architettura del processore non sussiste più. Che poi il Sistema Operativo abbia una migliore gestione dell’hardware per tutti i motivi sopra elencati questa è un’altra storia, ma sicuramente i Mac non sono più veloci degli altri PC.

Inoltre girano alcuni “rumors” secondo i quali nel 2021 l’Apple equipaggierà i propri computer (sia portatili sia da tavolo) con i processori basati su architettura ARM della serie A abbandonando quindi il sodalizio con la Intel. La serie A fa parte della famiglia di processori ARM Cortex presentati dalla ARM Holding nel 2005 e sono indirizzati principalmente verso l’utilizzo di computer e dispositivi portatili che necessitano di potenza di calcolo e flessibilità.

Infine voglio far notare una verità assoluta: gli utilizzatori di Windows sanno che il loro sistema fa schifo, ma lo utilizzano ugualmente al massimo delle loro potenzialità (e del sistema). Know your enemy!

Non parlo di Linux in questo post perchè ho voluto concentrarmi sullo scontro sociale, culturale ed economico che da sempre avviene tra queste due fazioni opposte e inconciliabili.

Permalink link a questo articolo: http://www.andrea.rustichelli.name/dialogo-sui-massimi-sistemi-operativi/

Linux, fatti riconoscere!

Riporto di seguito alcuni comandi che possono essere utili per identificare una versione di Linux, del Kernel e, in caso di Linux Mint (LM), la versione corrispondente di Ubuntu. Questo ultimo aspetto è particolarmente comodo quando dobbiamo installare un pacchetto e troviamo solo la corrispondenza con Ubuntu (ad esempio Virtual Box). In questo modo possiamo sapere quale pacchetto scaricare che sia compatibile con la nostra versione di LM.

Quindi, per trovare la versione di Ubuntu da cui deriva la nostra versione installata di LM, il comando più comodo è:

cat /etc/upstream-release/lsb-release

Per ottenere info sul kernel:

uname -r

Infine, per ottenere info sulla versione di linux in formato “verboso” occorre lanciare il seguente comando:

lsb_release -a

oppure per avere le singole informazioni usare i seguenti comandi:

 lsb_release -d #per avere la descrizione (ad esempio "Linux Mint 20")
 lsb_release -r #per avere il numero di release (ad esempio "20")
 lsb_release -c #per avere il nome in codice  (ad esempio "ulyana")

Le stesse informazioni possono essere recuperate dal file /etc/os-release:

more /etc/os-release

Permalink link a questo articolo: http://www.andrea.rustichelli.name/linux-fatti-riconoscere/

“Hello World”… le prime parole di ogni programma (in tutti i linguaggi di programmazione)

Chiunque abbia mai programmato in un qualsiasi linguaggio di programmazione lo sa!
La prima cosa da fare è imparare come scrivere “Hello World” (a prescindere dal fatto che lo “standard output” sia il monitor, una pagina web o una stampante).

Sul sito The Hello World Collection c’è la più vasta raccolta di linguaggi di programmazione e di esempi su come un nuovo programma debba salutare il mondo alla nascita.

Permalink link a questo articolo: http://www.andrea.rustichelli.name/hello-world-le-prime-parole-di-ogni-programma-in-tutti-i-linguaggi-di-programmazione/

SSG – Static Site Generators

Come dicevo nel post sul manuale GitHub di A. Pipinellis, dopo aver letto di Jekyll, ho voluto approfondire il tema degli Static Site Generator, ovvero di programmi/applicazioni che servono per generare siti statici (in contrapposizione a quelli dinamici, generalmente appoggiati a database SQL come Joomla, Drupal o Word Press).
Le differenze le potete intuire o trovare facendo una ricerca sul vostro motore di ricerca preferito.
Io ho utilizzato come base di partenza il sito staticgen.com per avere un elenco aggiornato degli SSG disponibili e valutare velocemente le loro caratteristiche. Ho installato una macchina virtuale su VirtualBox con la versione 20 di Ubuntu per fare qualche test senza sporcare la mia distribuzione di Linux Mint e ho provato a installare i seguenti SSG:

  • Jekyll: ho dovuto installare tutti i prerequisiti (ruby, gems, gcc e make) e poi ho potuto finalmente installare il pacchetto Jekyll (https://jekyllrb.com/docs/installation/ubuntu/)… poi ho eseguito il comando per creare un nuovo sito… errore… F**K
  • Hugo: installato con il comando “sudo apt-get install hugo”… sono riuscito fin da subito ad eseguire il comando per creare un nuovo sito. Bene, proverò a perderci un po’ di tempo.
  • Gatsby: come prima cosa è necessario evidenziare che non è completamente gratuito… sul sito è presente una sezione “Pricing”… e poi non ho neanche capito come installarlo… F**K

Poi ho avuto un’altra illuminazione… anzichè utilizzare un SSG perchè non provo ad utilizzare un CMS senza database (o Flat-File CMS). Adesso ho scaricato GRAV e nutro grandi aspettative… perchè?

  • perchè sembra un giusto compromesso tra i siti dinamici (Word Press, Drupal, ecc) e gli SSG (raccolte di pagine statiche)
  • ogni pagina/articolo è una cartella (e dentro c’è il testo, immagini e eventuali altri file)
  • ha una interfaccia opzionale di amministrazione
  • ha temi carini (non tanti ma molto vari tra di loro)
  • pochi plugin che, a volte, è un vantaggio rispetto al mare di plugin disponibili per WP.

So cosa vi state chiedendo: “Ma gli SSG sono la stessa cosa dei Flat-File CMS (o DB Free)?”
Adesso vi rispondo velocemente: no. Però se cercate meglio su internet potete trovare delle risposte con maggiori approfondimenti e dettagli a supporto di questa risposta.

Alla fine Grav è un CMS dinamico, che a differenza degli SSG non è una mera raccolta di pagine statiche, e a differenza degli altri CMS non ha bisogno di un database ed è più a misura di uomo…

Permalink link a questo articolo: http://www.andrea.rustichelli.name/ssg-static-site-generators/

Ray D. Bradbury – Il popolo dell’autunno

Libro letto la prima volta alle superiori.. avevo preso il libro in prestito alla Biblioteca di Campagnola… nella sezione adulti al primo piano della vecchia sede (quella storica). Era nel sottotetto… ambiente ovattato e buio… grande tavolone di legno scuro centrale e tutto intorno scaffali con le letture più interessanti presenti tra la sterminata collezione di libri. Stop alla rievocazione.

Inutile dirlo… è stata una delle letture più belle dei miei primi 20 anni.

Poi in occasione di un regalo ho deciso di omaggiare la festeggiata (appassionata di passioni) con questo libro… ho lascito anche una veloce recensione (che c’è tutt’ora).

Recentemente l’ho riletto, per vedere se l’entusiasmo e la magia era frutto della giovane età o se è veramente il libro che merita… inutile dire che è il libro che merita. Anche dopo 20 anni ho trovato le stesse atmosfere e le stesse allegorie che mi hanno conquistato… che mi hanno catapultato in un piccolo angolo di America nascosta e segreta dove forze impari si sono scontrate in un’avvincente susseguirsi di colpi di scena e di astuzia.
D’altronde uno che scrive “Era bionda come il mattino e fresca come i fiori di domani, e incantevole come qualsiasi fanciulla quando un uomo chiude gli occhi e l’imprigiona, in una perfezione di cammeo, nella conchiglia delle sue palpebre” merita tutto il mio rispetto.

Permalink link a questo articolo: http://www.andrea.rustichelli.name/ray-d-bradbury-il-popolo-dellautunno/