python

Glenn Glould e l’open source

Avevo voglia di ascoltare “So you want to write a fugue?” di Glenn Gloud, quindi sono andato su youtube ed ho cercato il brano, anche se ce l’avevo offline sul computer. Ho trovato una versione animata in stile karaoke col testo che in verità conoscevo già da tempo, quasi dieci anni, ma che avevo dimenticato e che soprattutto non avevo ancora rivisto e riascoltato con attenzione. Per quanto sia uno smanettone ai tempi non bazzicavo GitHub, anzi studiavo musicologia ed avevo mollato del tutto l’informatica, quindi non ho fatto caso che alla fine del video c’è un url al codice sorgente che ha permesso la realizzazione di questo video. Codice open source e scritto in Python, uno dei pochi linguaggi che conosco e che so leggere. La cosa mi ha fatto riflettere perchè stiamo parlando di Glenn Gould e Python… e tra i due sicuramente il più conosciuto ai più è Python.

Glenn Gould era un folle genio che scrisse questo pezzo nel ’63 per una trasmissione radiofonica canadese allo scopo di far capire alle persone cosa fosse una fuga, in musica. E penso che ci sia riuscito perchè ci ha messo le parole che rendono la sua opera più intellegibile ai profani della musica e non solo. Ma cosa è una fuga? Voglio azzardare a spiegarvelo io, a modo mio, secondo la mia esperienza. Lasciando stare i tecnicismi contrappuntistici barocchi ai testi di musicologia la fuga è un evitare la ripetitività, cercare di essere originali ed evitare di suonare due volte la stessa cosa. Un po’ come il walkin’ bass nel jazz. Vivere e suonare qui ed ora, lasciarsi indietro il passato già suonato e suonare cose nuove, sempre (ove possibile perchè a volte, in alcuni brani veloci, è davvero difficile e disumano suonare sempre cose diverse). Si può e si deve citare il passato, il già suonato, ma non ripeterlo. Mi viene da pensare che una fuga sia una fuga dalla realtà ma è errato, è una fuga dalla consuetudine di mettere cose che non stonino. Puoi mettere anche note stonate se servono, Glenn Gould stesso dice “forget the rules and try”. E nel suo ambito le regole sono molto più ferree del jazz.

Avere a disposizione un video del genere è bellissimo, ha un valore didattico esagerato e l’averlo trovato è più bello ancora. Scoprire stasera che è stato generato grazie a Python (un linguaggio open source) e che l’autore abbia regalato il codice sorgente al mondo su GitHub è meraviglioso. Senza questo video, senza questo codice, senza questa persona (che oltre essere sicuramente un programmatore è sicuramente anche un musicista sopraffino) capire questo brano e capire più profondamente cosa sia una fuga e che che Glenn Gould era un figo sarebbe stato molto più difficile.

rif: https://github.com/zhanrnl/PyMusAnim

Toast Machine

La Toast Machine è un distributore automatico di software libero in grado di masterizzare distribuzioni GNU/Linux su CD/DVD, copiare su supporti removibili USB/SD le immagini ISO, raccolte di sofware libero per altre piattaforme o materiale informativo.

L’idea è del LugCR e nasce per risolvere il problema dei supporti CD/DVD preparati in gran quantità in vista di eventi pubblici come i Linux Day ed avanzati perchè l’affluenza di pubblico è stata minore. Ma capita anche l’opposto, ovvero che si verifica una affluenza maggiore e non si hanno abbastanza CD da consegnare a chi li richiede perchè è interessato al software libero.

La Toast Machine permette di masterizzare, self service o con un assistente, solo quello che serve. Oltre a permettere di copiare software libero direttamente su chiavetta USB, gadget che ormai chiunque ha in tasca.

La Toast Machine è scritta in Python/gtk ed è rilasciata sotto i termini della licenza GPLv2.

Nel Novembre 2010 la rivista Linux PRO (N.97) ha pubblicato un articolo che racconta l’esperienza del LugCR nella realizzazione ed allestimento di una Toast Machine.

Nota (06/2012): Attualmente il progetto è in mantenimento e non verrà portato su python 3.

Screenshots

Installazione

Al momento la Toast Machine è testata solamente su Ubuntu GNU/Linux 10.04 ma dovrebbe funzionare senza grossi problemi su tutte le distribuzioni che sono in grado di risolvere le seguenti dipendenze: python-pam, python-gksu, brasero, udisks, python-gtk2, xloadimage, *gettext.

Per trasferire le immagini avviabili su chiavette USB o SD è necessario che l’utente a nome del quale giri la Toast Machine appartenga al giusto gruppo, in base alle distribuzione. Ad esempio su Ubuntu è il gruppo disk.

sudo usermod -a -G disk username

Per utilizzare la Toast machine in modalità chiosco con una sessione X dedicata è necessario non instarla in /usr/local in quanto GDM potrebbe non trovare il file xsession. E’ preferibile installarla con l’apposito script (in attesa di una pacchettizzazione ufficiale):

sudo python setup.py install --prefix=/usr

Download

Non esistono ancora pacchetti per le varie distro, è possibile solamente scaricare i sorgenti da launchpad:

Toast Machines in azione

Stand del LugCr alla festa del volontariato – Cremona
LugCR, autori dell’articolo su “Linux PRO”

Compilare Stackless Python su Linux PowerPC (PPC)

IMHO una delle cose più affascinanti del mondo dell’Open Source e del Free Software è che per il 95% delle problematiche c’è già un folle che se ne sta occupando. Per il restante 5% pure, ma è solo questione di tempo… il tempo che i motori di ricerca reindicizzino blog e mailing list.

Io non so quanta gente (in Italia) usi GNU/Linux su processori PowerPC e non so nemmeno quanta gente abbia voglia di smanettare con Netsukuku su processori PowerPC… ma se qualcuno c’è (e mi ci gioco le palle che c’è) e sta sbattendo la testa a cercare di compilare Stackless Python ottenendo solamente un Segmentation Fault… beh forse questo mio post potrebbe essergli utile!

Prima di tutto devo ringraziare Mads Darø Kristensen Aarhus che con il suo post Building Stackless Python on a PS3 (PPC Linux) mi ha dato una direzione sulla quale continuare a smanettare… perchè se lui sulla PS3 ci era riuscito io su un PowerBook G4 no :(

Bene. Non importa se avete scaricato i tarball dei sorgenti o fatto il checkout SVN… spostatevi nella dir dei sorgenti e date un:

./configure --prefix=/test --enable-stacklessfewerregisters

Io ho impostato il prefix in /test per stare tranquillo, di default viene impostato /usr/local ma se avete altra roba installata li forse preferite anche voi installlarlo in una dir separata per non inquinare /usr/local qualora vorreste cancellare del tutto stackless python…

Una volta terminato il ./configure dovete editare il Makefile nella root dei sorgenti (le subdir lo erediteranno) e modificare le var OPT e SLPFLAGS:

  • in OPT cambiare -O2 in -Os
  • in SLPFLAGS modificare -fno-omit-frame-pointer in  -fomit-frame-pointer e -O2 in -Os.

make && sudo make install e poi su /$PREFIX/bin/python avrete il vostro Stackless Python!

Non chiedetemi il perchè… a me ha l’ha compilato solamente così… anzi, se qualche programmatore C passa di qui e me lo spiega gliene sarò grato :)