Perché qui, il dolore, è una costante.

“Il Colibrì”, l’emozionante opera di Sandro Veronesi, offre un’immersione profonda nel tumulto dell’esistenza umana. Questo intricato affresco letterario dipinge la vita di Marco Carrera, figlio dell’alta borghesia fiorentina, un uomo che, nonostante le sue personali sfide fisiche, incarna l’essenza della resilienza e del coraggio.

Nel cuore di questo romanzo, la metafora del colibrì si fa portavoce di una potente simbologia: l’uccellino che batte le ali con fervore per rimanere fermo, diventa un emblema di tenacia e resistenza, un faro di forza interiore nel tumulto delle tempeste della vita.

Ma il mondo di Marco si frantuma quando sua moglie Marina chiede il divorzio, portando in grembo il figlio di un altro uomo. Eppure, come il colibrì, Marco rimane saldo, ancorato nei suoi valori, un monolite di tenacia e coraggio nell’oceano delle avversità.

Attraverso una scrittura che oscilla tra rapidità e risolutezza, caos e delicatezza, Veronesi traccia il percorso di vita di Marco. La storia del protagonista si intreccia con la nostra, in un balletto intricato di sfortune, malattie, perdite, lutti e amore (quello per Luisa) incondizionato.

Verso la fine, “Il Colibrì” ci conduce verso un capitolo finale di amara dolcezza. Marco, avendo vissuto il tormento della morte lenta del padre a causa di un tumore, prende una decisione estrema ma di una nobiltà straziante. Scopertosi ammalato, decide di praticare l’eutanasia, non per sé, ma per proteggere le persone a lui più care dal dolore della sua possibile sofferenza. Questo gesto finale di sacrificio è un ulteriore richiamo alla forza e alla resistenza del colibrì, e un esempio straordinario della profondità dell’amore di Marco per coloro che lo circondano.

“Il Colibrì” è una sinfonia di emozioni, un viaggio attraverso il dolore e la gioia, la sconfitta e la vittoria, la morte e la vita. Non si tratta solo di un romanzo, ma di un’ode alla resistenza umana, all’amore incondizionato e alla nobiltà del sacrificio. È un’opera che lascerà un’impronta indelebile nell’anima del lettore; un libro capace di invitare alla riflessione, che scava nell’intimo e che non teme il dolore. Perché qui, il dolore, è una costante.

Aveva un occhio straordinario per i dettagli

Levitt aveva un occhio straordinario per i dettagli, per le piccole cose che molti di noi non noterebbero mai. Questo, combinato con il suo profondo amore per le persone e la sua comprensione della vita di strada, ha reso il suo lavoro un vero capolavoro.

… a una velocità impressionante.

Mi sono ritrovato a riflettere sulla velocità stupefacente con cui le cose possono cambiare. Solo sei mesi fa, i membri del Movimento Cinque Stelle erano ancora al governo, e meno di sei anni fa, erano riusciti a vincere le elezioni con promesse audaci di eliminare la povertà, estirpare la corruzione e instaurare un’etica popolare salda.

Pensavo a come Benedetto Croce affermava che la vera moralità, quella autentica e ponderata, non teme di interagire con la realtà e utilizza la vita per migliorarla. In contrasto, un moralismo vuoto, e ancor più un moralismo estremamente vuoto, come mi piace aggiungere, porta a una vita più povera – e lo fa con una rapidità sorprendente.

Mentre mi perdevo in queste riflessioni, nel fluido magma della rete, un video di Danilo Toninelli è apparso davanti ai miei occhi. Un breve filmato in cui rideva sarcasticamente per la nomina di Renato Brunetta alla presidenza del Cnel. Ricordavo di aver letto un articolo de Il Messaggero che parlava del suo ritorno a Brescia per lavorare come assicuratore.

Altri nomi del Movimento mi venivano in mente: Luigi Di Maio, che sembrava pronto a riprendere il suo ruolo politico come inviato nel Golfo per l’Unione Europea. Alessandro Di Battista, che aveva deciso di creare un movimento tutto suo. Alfonso Bonafede, che era ritornato a esercitare la professione legale.

E infine, Beppe Grillo, l’ultimo soggetto di pettegolezzi, per cui si diceva che Giuseppe Conte non avesse intenzione di rinnovare il suo contratto annuale da 300.000 euro per sporadiche apparizioni sul suo blog.

E così, il quadro di un’epoca era completato, una foto di squadra che mostrava dove si trovavano ora tutti i suoi membri. E tutto questo, si era svolto a una velocità impressionante.

Un libro dimenticato…

Ritrovarsi a leggere un libro dimenticato è come riaprire una porta sul passato. Un libro che era stato messo da parte, perso tra gli scaffali, e di cui si era persa memoria. Quando si riapre, le parole e le storie che racchiude tornano alla mente lentamente, come le immagini di una fotografia polaroid che appaiono a poco a poco. E le storie del libro sono storie particolari, perché parlano di abitudini, pensieri e colori ormai desueti; di strumenti che non servono più, ma che un tempo erano indispensabili.

La nostra capacità di adattarci al mondo è strettamente legata alla nostra abilità di cambiare forme, oggetti, materiali e persino colori. Oggi tutto viene sostituito, ma non da qualcosa di identico a ciò che era prima, bensì da qualcosa di nuovo e diverso. Tutto cambia, nulla viene riparato, tutto si trasforma e niente rimane immutato. Il mondo che ci circonda teme il tempo breve e non resiste a quasi nulla. Ciò ci fa dimenticare il tempo lungo, relegando in un angolo anche la memoria tattile e il ricordo: sostituisce i desideri con desideri nuovi e diversi, senza elaborare quelli antichi e più profondi. Ma soprattutto, ci priva della lunghezza dei pensieri.

Oggi ho riaperto quel libro dimenticato, come un’eccezione, come un evento inaspettato, come qualcosa che non stavo cercando. Perché cercare e trovare non sono sinonimi, ma parole distanti tra loro. Trovare ciò che si cerca è un processo logico e fortunato. Trovare ciò che non si cercava è passare da un universo all’altro, attraversando la forza oscura dell’universo stesso.

Introduzione alla programmazione con il gioco del Tris…

Se vuoi avvicinare tuo figlio alla programmazione e stai cercando un progetto interessante e coinvolgente, il gioco del Tris (conosciuto anche come tic-tac-toe) è un’ottima scelta.

In questo articolo, presenterò una versione procedurale del gioco del Tris, che ho scelto perché è più accessibile per i principianti rispetto a un approccio orientato agli oggetti. Scopriamo insieme come funziona!

Il gioco del Tris procedurale utilizza la libreria Tkinter di Python, che consente di creare interfacce grafiche in modo semplice e veloce. L’obiettivo del gioco è formare una linea orizzontale, verticale o diagonale di tre simboli uguali (solitamente “X” e “O”) su una griglia 3×3. Il gioco procede a turni, con i due giocatori che inseriscono il proprio simbolo in una cella vuota della griglia. Il primo giocatore che forma una linea di tre simboli uguali vince la partita.

Il codice procedurale del gioco del Tris è composto da diverse funzioni che gestiscono le varie parti del gioco. Di seguito è riportata una breve descrizione di ciascuna funzione:

  • initialize_game(): Questa funzione inizializza le variabili del gioco e crea i pulsanti interattivi per ciascuna cella della griglia. Imposta il turno del primo giocatore e crea una griglia vuota.
  • make_move(i, j): Questa funzione viene chiamata quando un giocatore fa una mossa. Controlla se la cella selezionata è vuota e, se lo è, inserisce il simbolo del giocatore corrente. Dopo ogni mossa, verifica se c’è un vincitore o un pareggio. Se non ci sono vincitori o pareggi, passa il turno all’altro giocatore.
  • check_vittoria(): Questa funzione controlla se c’è un vincitore, verificando se esiste una linea orizzontale, verticale o diagonale di tre simboli uguali. Restituisce True se c’è un vincitore, altrimenti False.
  • check_pareggio(): Questa funzione verifica se tutte le celle della griglia sono piene e nessun giocatore ha vinto. Se è così, restituisce True, altrimenti False.
  • annuncia_vincitore() e annuncia_pareggio(): Queste funzioni vengono chiamate quando il gioco termina con una vittoria o un pareggio. Mostrano una finestra di dialogo con il risultato del gioco e chiedono ai giocatori se vogliono iniziare una nuova partita o uscire dal gioco.
  • disabilita_pulsanti(): Questa funzione disabilita tutti i pulsanti della griglia quando il gioco termina, impedendo ulteriori mosse.
  • reset_board(): Questa funzione viene chiamata quando i giocatori decidono di iniziare una nuova partita. Ripristina lo stato iniziale della griglia, reimpostando i pulsanti e il turno del giocatore.


Un approccio procedurale è spesso più accessibile per i principianti rispetto a un approccio orientato agli oggetti, perché è più facile da comprendere e richiede meno concetti avanzati. Inoltre, un codice procedurale è generalmente più breve e semplice da leggere e modificare, il che può aiutare i principianti a concentrarsi sulle basi della programmazione senza dover affrontare la complessità aggiuntiva delle classi e degli oggetti.

Il gioco del Tris è un progetto semplice ma coinvolgente per avvicinare tuo figlio alla programmazione. La versione procedurale del gioco presentata in questo articolo è ideale per i principianti, poiché offre un approccio più accessibile e comprensibile rispetto a un’implementazione orientata agli oggetti. Attraverso questo progetto, tuo figlio può imparare le basi della programmazione e acquisire familiarità con la creazione di interfacce grafiche utilizzando la libreria Tkinter.

Buon divertimento e buona programmazione!

…delirio dei sensi

Bernini, maestro della passione avvolgente e calda, sapeva catturare il desiderio lacerante e violento, riassumendolo in gesti eleganti e definitivi. La sua abilità trascendeva il bene e il male, oltre la morale pubblica o privata, e oltre la legge. La sua arte, come la statua del ratto di Proserpina, dimostra una profonda comprensione del delirio dei sensi, con dita di marmo gelido che penetrano in una carne marmorea che non mostra alcun segno del suo materiale.

Le opere di Bernini non si rivolgono alla ragione, ma piuttosto stordiscono l’osservatore con volute e spirali che avvolgono e fanno perdere i sensi. L’artista, capace di colpire brutalmente suo fratello per un’amante destinata a essere abbandonata, si immergeva completamente nel delirio dei sensi.

La sua arte racconta storie di stupri e sante in estasi come le peggiori peccatrici, sintetizzando la lotta eterna tra l’istinto e la legge, tra carnefice e vittima, tra la passione che non ascolta ragioni e la civiltà. Il suo lavoro riflette la filosofia di Agostino: “ama e fa’ ciò che vuoi”. Bernini esemplifica questa filosofia con l’innocenza sensuale e travolgente che solo i santi e i grandi peccatori possiedono.

Che si tratti di scolpire una statua o di disegnare un portico per San Pietro, l’arte di Bernini evoca un’ebbrezza che trascina l’osservatore in un vortice di emozioni. In ogni sua opera, Bernini ha saputo incapsulare il conflitto tra la pulsione e la legge, tra il carnefice e la vittima, e tra la passione e la civiltà, in modo ineguagliabile.

così…

Silenzio e pace, rumore e burrasca. Così il mare, così i pensieri.

Tic-tac-toe…

Il codice (qui puoi scaricare il codice sorgente) implementa il gioco del tris (tic-tac-toe) con un’interfaccia testuale, permettendo a un giocatore umano di sfidare un’intelligenza artificiale (IA) semplificata che sceglie mosse casuali. Ecco il funzionamento del codice, funzione per funzione:

  1. stampa_tabellone(tabellone): Questa funzione prende in input il tabellone di gioco e lo stampa sulla console in un formato leggibile. Il tabellone è una lista di liste che contiene le informazioni sulle caselle occupate dai simboli dei giocatori.
  2. verifica_vittoria(tabellone, simbolo): Questa funzione prende in input il tabellone e un simbolo del giocatore (“X” o “O”) e verifica se il giocatore con quel simbolo ha vinto la partita. Controlla tutte le righe, colonne e le due diagonali per vedere se contengono tre simboli uguali. Se trova una combinazione vincente, restituisce True, altrimenti False.
  3. mossa_ia(tabellone): Questa funzione rappresenta la logica dell’IA semplificata. Prende in input il tabellone e sceglie casualmente una mossa tra le caselle disponibili. Restituisce le coordinate (riga, colonna) della mossa scelta. Nota che questa IA è molto semplice e non segue alcuna strategia per vincere la partita.
  4. gioco(): Questa è la funzione principale che implementa la logica del gioco. Inizialmente, crea un tabellone vuoto e assegna il turno al giocatore umano con il simbolo “X”. Fino a quando ci sono caselle libere, esegue i seguenti passaggi: a. Stampa il tabellone attuale. b. Se è il turno del giocatore umano, chiede in input un numero tra 1 e 9 che corrisponde alla casella da occupare. Converte il numero in coordinate (riga, colonna) del tabellone. c. Se è il turno dell’IA, chiama la funzione mossa_ia() per ottenere le coordinate della mossa scelta dall’IA. d. Controlla se la casella scelta è già occupata. Se lo è, chiede al giocatore di scegliere un’altra casella. e. Altrimenti, occupa la casella con il simbolo del giocatore corrente e decrementa il numero di caselle libere. f. Verifica se il giocatore corrente ha vinto la partita chiamando la funzione verifica_vittoria(). Se ha vinto, stampa il messaggio di vittoria e interrompe il ciclo. g. Se nessuno ha vinto, passa il turno all’altro giocatore.
  5. Se il ciclo termina senza che nessun giocatore abbia vinto, stampa il messaggio di pareggio.

La strategia adottata in questo codice è semplice e non ottimizzata per far vincere l’IA. L’IA sceglie mosse casuali tra le caselle disponibili, senza alcuna strategia per bloccare il giocatore avversario o cercare di vincere la partita. L’obiettivo principale del codice è di fornire un’implementazione di base del gioco del tris, piuttosto che un’intelligenza artificiale avanzata.

Per migliorare l’IA e renderla più competitiva, potresti implementare un algoritmo di ricerca come il Minimax, che analizza tutte le possibili mosse future e sceglie la mossa ottimale per massimizzare il punteggio dell’IA e minimizzare il punteggio del giocatore avversario. Tuttavia, questo richiederebbe una modifica sostanziale della funzione mossa_ia() e l’aggiunta di funzioni aggiuntive per calcolare il punteggio delle mosse e simulare le mosse future.

prenderci per le natiche…

Oh, gioveni! Quando vi dico «sequitemi miei pugnaci», dovete sequire et pugnare! Poche conte! Se no qui stemo a prenderci per le natiche…

dal film L’armata Brancaleone