Python logs

Photo by Markus Spiske on Unsplash

In questi ultimi tempi sto facendo grande uso di Python per alcuni progetti personali e per alcune cose che usiamo in Sketchin per muovere dati da una parte all’altra facendo un pochino di analisi.

Da sempre sono stato un grande fanatico dei file di log per seguire l’esecuzione dei programmi che sto scrivendo.

Per questa ragione il mio personale template per la scrittura di applicazioni da linea di comando contiene delle funzioni dedicate al logging che ho curato nel tempo e che soddisfano i miei requisiti.

Per questo genere di cose ho sempre utilizzato la libreria logging. Non appena la mia applicazione parte configuro i miei logging handler, tipicamente uno per la console ed uno per un file, e definisco il formato del mio log.

Salvo casi particolari il formato di log che utilizzo riporta il tempo dell’evento, il thread in cui è avvenuto l’evento, il nome della funzione, il numero di linea all’interno del file sorgente, il livello di debug ed il messaggio vero e proprio.

L’unica cosa che mi rimane da fare è impostare i criteri di rotation dei file di log.

Sono poche righe di codice e funzionano alla perfezione.

Recentemente ho scoperto la libreria loguru che nativamente fa quello che ho sempre fatto con una sola linea di comando.

Loguru ha tutta una serie di funzionalità che potrei, abbastanza semplicemente, implementare con logging ma che richiederebbe tempo che posso quindi evitare di spendere.

La possibilità di evidenziare alcuni messaggi di log con un colore, la possibilità di serializzare il messaggio di log, una più potente formattazione dei messaggi di log, eccezioni estremamente descrittive e tante altre cosette che possono tornare utili.

Se vi interessa trovate la documentazione qui: Loguru

Non ho cartelle

Photo by Wesley Tingey on Unsplash

Non sono mai stato un grande amante delle tassonomie, nemmeno sul mio personal computer per quanto riguarda l’archiviazione dei miei documenti.

Per questa ragione e, a memoria, da almeno una decina di anni non organizzo più i miei documenti in cartelle.

In realtà qualche cartella esiste nella mia architettura dell’informazione.

Ecco come sono organizzati i miei documenti sul mio personal computer:

  • Da leggere – E’ una cartella in cui deposito cose che un giorno o l’altro vorrò leggere. Contiene documenti PDF, articoli e link a cose che penso siano interessanti ma che per qualche motivo non posso leggere subito.
  • Da archiviare – E’ una cartella che contiene tutti quei documenti su cui ho lavorato ed il cui lavoro è terminato. Sono pronti per essere archiviati ma che tengo in sospeso nel caso in cui abbia bisogno di fare piccole modifiche prima di archiviarli.
  • Archivio – E’ il deposito principale di documenti su cui ho lavorato. Il nome del file tende ad essere parlante in modo da semplificare la ricerca nel futuro. Non esistono altre cartelle all’interno di questa cartelle.
  • Urgenti ed importanti – In questa cartella ci sono tutti i documenti su cui sto lavorando al momento o che richiedono la mia attenzione.
  • code – E’ la cartella in cui sono archiviati tutti i miei progetti personali e non che contengono del codice che ho scritto o con il quale ho giocherellato.

E’ tutto qui non c’è altro.

Per il resto faccio un enorme affidamento alle funzioni di ricerca che il mio computer mi mette a disposizione. Nel corso degli anni non ha mai mancato un colpo.

Naturalmente questi folder sono replicati su iCloud, Google Drive e Dropbox in modo che siano perfettamente sincronizzati su tutti i miei computer.

Vodafone, addio…

Photo by Egor Myznik on Unsplash

Dopo anni di onorato servizio è arrivato il momento di cambiare operatore di telefonia mobile.

Vodafone, ci siamo voluti bene ma è sempre stato un rapporto in cui io ti ho dato molto di più di quanto ho ricevuto.

Nonostante sia un cliente che può essere certamente definito alto spendente hai continuato a torturarmi con chiamate e messaggi. Hai provato insistentemente a vendermi una connessione in fibra quando sai benissimo che da me la fibra, purtroppo, non arriva.

Non sei stata in grado di farmi attivare una e-sim per il mio Apple Watch.

Nonostante tu mi abbia garantito una opzione secondo la quale dovrei avere Giga illimitati, ogni volta che sono in vacanza mi mandi un messaggio dicendomi che il mio traffico dati si sta per esaurire.

Non ci siamo. Mi costi un botto di soldi e non mi offri un servizio all’altezza della spesa che sostengo.

A questo punto, immagino a parità di servizio, scelgo qualcosa che costa un quinto rispetto a te.

E’ stato bello finché è durato, ma tutto ha una fine.

Sono certo che da buona ex non farai altro che torturarmi per convincermi a rimettermi con te. Mi spiace ma la decisione è presa e, per il momento, non si torna indietro.

Percezione

Photo by Caleb Woods on Unsplash

Da qualche mese ho ripreso a scrivere con una certa costanza su queste pagine e devo confessare che ne sentivo la mancanza. Non credo si possa dire lo stesso dei miei undici lettori ma questo è del tutto irrilevante.

Non presto mai particolare attenzione alle statistiche del sito, di Medium o LinkedIn. Mi limito a rispondere quando qualcuno lascia qualche commento, sopratutto per avere speso del tempo leggendo quello che scrivo.

Per puro caso l’altro giorno ho guardato le statistiche del sito e ho dato una occhiata all’elenco degli articoli più letti.

Ne sono uscito con una strana sensazione.

Mentre scrivo qualcosa mi capita di pensare che le parole che stanno finendo sulla pagina possono davvero essere interessanti e, forse, utili per qualcuno. Ne sono proprio convinto.

In altri casi mi dico che quello che sto scrivendo è una cosa che alla fine serve solo a me. Una sorta di pagina di diario che mi capiterà di rileggere in futuro, sorridendo.

Ed invece è spesso il contrario. Quegli articoli che penso essere interessanti sono letti di meno mentre cose più leggere, spesso corte e senza grandi contenuti, tendono ad essere letti con maggiore frequenza.

Evidentemente è un problema relativo alla mia percezione del valore di quello che sto scrivendo.

La cosa comunque mi ha sorpreso. Adesso le statistiche le riguardo l’anno prossimo che tanto non ce ne è molto bisogno.

Se il nostro fosse un paese normale

Photo by K. Mitch Hodge on Unsplash

Se il nostro fosse un paese normale non mi ritroverei a scrivere queste poche righe.

Se il nostro fosse un paese normale non mi ritroverei colmo di rabbia perché due ragazzi si baciano in spiaggia e vengono insultati da una congrega di ignoranti che li circonda. Gli viene suggerito di baciarsi in bagno di modo che i bambini non vedano quello che sta accadendo. Comunque hanno ragione. Ci sarebbe davvero da chiamare la forza pubblica ed i servizi sociali. Non per fare allontanare i due innamorati ma per sottrarre quei minori ai genitori. Ragazzi, Tirrenia, non Marte…

Se il nostro fosse un paese normale non sarei costretto a leggere di una ragazza cui viene rotto il setto nasale per avere reagito a delle offese nei confronti del fidanzato. Aggressione da un uomo verso una donna. Il coraggioso individuo, ovviamente, fugge prima dell’intervento della forza pubblica.

Se il nostro fosse un paese normale non dovrei incrociare la notizia del suicidio di una donna che si è tolta la vita perché le sue scelte non sono accettate dalla società ipocrita in cui vive. Si è tolta la vita lasciando uno scritto che è una delle cose più toccanti che io abbia letto negli ultimi tempi. Doloroso, molto. Si racconta che un padre abbia anche scritto in regione per lamentarsi delle scelte di vita della donna di cui sopra, una professoressa. Un altro coglione che spero venga presto abbandonato dalla figlia o dal figlio che ha generato.

E tutto permeato da presunti valori che vengono continuamente urlati e sbandierati a destra e a manca.

Confesso che ho davvero dovuto trattenermi per non riempire queste poche righe di parolacce ed insulti.

La cosa più terribile è che questi presunti valori stanno generando dei mostri terrificanti. Persone che non sono in grado di gestire la fine di una relazione, persone che non comprendono il valore della diversità, persone convinte di essere in possesso di tutte le risposte.

Mala tempora currunt.

La macchina del caffè mi spia!

Photo by earlybird coffee on Unsplash

Leggevo un documento scritto da Christopher Balding e Joe Wu in cui si parla di una macchina per preparare il caffè che è connessa ad Internet e che invia informazioni più o meno sensibili in Cina.

Il documento originale lo potete trovare a questo indirizzo nel caso vi interessi: Chinese Data Collection on Internet of Things Connected Devices: The Case of Smart Coffee Machines

Il documento è interessante ma, secondo la mia opinione non rivela nulla di particolarmente nuovo.

Partiamo dall’assunto che nelle nostre case ci sono una enorme quantità di oggetti che sono, in qualche modo, connessi ad Internet. Alcuni lo sono direttamente, altri lo sono per mezzo di applicazioni satelliti che vivono sui nostri smartphone.

E’ la tanto discussa Internet delle Cose, che di per sé rimane una figata pazzesca ma, troppo spesso, realizzata in stile armata Brancaleone.

E’ ben evidente che qualsiasi oggetto che è connesso ad Internet scambia dei dati con un’altra entità. Su questo non ci piove e, di fatto, gli oggetti non potrebbero funzionare se così non fosse. Gli altoparlanti Sonos che stanno in tutte le mie stanze non potrebbero riprodurre la musica di Spotify se non si collegassero ad Internet.

Qui, così come descritto nel documento di Balding e Wu, ma anche da tanti altri, cominciano i problemi.

In primo luogo non siamo certissimi di quali informazioni vengono scambiate con i sistemi remoti. Nel caso della macchina del caffè insieme a dati meno sensibili come la quantità di latte che vuoi nel caffè vengono scambiate informazioni sui metodi di pagamento e sulla posizione della macchina del caffè. Dati, questi, decisamente sensibili.

Nel caso specifico i due ricercatori sono venuti in possesso di una copia del database su cui questi dati sono stati salvati e quindi possono parlarne a ragion veduta.

Il problema si pone comunque per qualsiasi oggetto che sia connesso ad Internet. Siamo davvero tutti a conoscenza della quantità e della qualità dei dati che vengono trasmessi e, molto probabilmente, immagazzinati in sistemi remoti?

Quanta consapevolezza abbiamo riguardo questo argomento. In generale piuttosto poca e questo è un problema.

Potremmo dire che abbiamo il GDPR che dovrebbe, in qualche modo, difenderci. Nel caso della macchina del caffè il produttore non sembra farci molto caso.

Il problema secondario è la sicurezza dei sistemi che ci mettiamo in casa. Essendo per la maggior parte prodotti consumer, devono costare poco. Se devono costare poco lo sforzo che posso spendere per renderli sicuri dal punto di vista informatico è modesto. Se lo sforzo è modesto uno bravo riesce a manometterli con un ragionevole sforzo e quantità di tempo.

Questo credo sia un altro dei problemi fondamentali. Vale per tutti, anche i nome più blasonati. Tempo fa avevo un router WiFi/UMTS. Per giocare ho provato a tentare di manometterlo un pochino dato che se ne stava nel cassetto a fare nulla. Non parlo del brand perché non è necessario. Long story short: scarico la configurazione del router in un file JSON, vedo una voce “telnet: false”, cambio la voce in “telnet: true”, mi collego al router con l’account root, mi viene chiesta la password, premo invio e mi ritrovo con un bel prompt di shell con i privilegi di root.

Quindi il problema è molto più vasto di quello evidenziato nel documento di cui ho parlato poco sopra.

La lista delle cose da non fare

Photo by Glenn Carstens-Peters on Unsplash

Premetto che non sono mai stato un grandissimo fan delle liste delle cose da fare. Ultimamente un pochino meno, più per venire incontro alla mia memoria che per un amore spassionato. Di fatto ne uso due. La prima per le cose che riguardano la mia sfera professionale e la seconda per la mia sfera personale.

In genere classifico le cose da fare in un quadrato che ha sulle ascisse le voci importante e non importante e sulle ordinate le voci urgente e non urgente. Se non mi ricordo male era uno strumento utilizzato dal generale Eisenhower. Ad ogni modo, poco importa l’origine.

Non ho necessità di una tassonomia più vasta di quella.

In realtà nella mia testa esiste un ulteriore livello di tassonomia che distingue tra le cose che voglio fare io e quelle che qualcun altro vuole che io faccia. Questo non è un distinguo da poco.

Ultimamente mi sono imbattuto in un concetto che ho trovato interessante e che mi sono deciso ad utilizzare.

La lista delle cose da non fare.

Nella sua semplicità trovo che sia un concetto interessante da aggiungere al tema della lista delle cose da fare.

E’ abbastanza evidente che fare una cosa che non dovresti fare toglie tempo alle cose che dovresti fare per davvero.

Io ritengo che la lista delle cose da non fare sia molto più importante della lista delle cose da non fare.

Provateci.

Piccole cose lente

Photo by Hossein Farahani on Unsplash

Sto trascorrendo qualche giorno di vacanza in un piccolo paese della Liguria. Qualche giorno di distanza dalla quotidianità e dal lavoro.

Mi alzo la mattina presto e scendo a bere il secondo caffè della giornata in un piccolo bar al centro del paese. Due chiacchiere con le persone che stanno dietro al bancone per iniziare la giornata.

Faccio quattro passi e mi muovo verso il giornalaio dal quale compro i quotidiani che leggo sempre in gran numero quando sono in vacanza. Due chiacchiere anche lì.

Intorno all’ora di pranzo faccio un giro al mercato e guardo la merce sulle bancarelle. Ascolto di discorsi delle altre persone e osservo i frequentatori. Mi fermo in un banco di frutta e verdura. Compro due meloni e delle ciliegie.

Sulla strada verso casa entro in macelleria e compro del prosciutto. Due chiacchiere anche con il macellaio.

Ho pagato tutto con la carta di credito, che mi sembra già un successo.

La lentezza di questi giorni mi affascina e mi rilassa.

Adesso mi vesto e vado al mare a fare un bagno.

La lentezza è una scelta. Si può fare.

I miei dati

Photo by Markus Spiske on Unsplash

Credo che la maggior parte di noi abbia ormai la piena consapevolezza del fatto che i propri dati vengono raccolti e analizzati da qualche entità ogni volta che facciamo qualcosa online.

Google, Facebook, Amazon, Netflix e, praticamente, ogni servizio che utilizziamo in forma più o meno privata.

Alcuni di questi servizi permettono di scaricare il set di dati che vengono trattati. In altri è necessaria una richiesta esplicita dell’interessato perché questi dati vengano forniti. L’ultima affermazione è un diritto sancito dalla normativa GDPR.

E’ qualche settimana che mi frulla in testa una idea per un progetto personale che mi permetta di scaricare in maniera automatica tutti i miei dati personali dai vari servizi per poi poterli analizzare offline.

Mi interesserebbe capire quale mole di informazioni ho ceduto, più o meno inconsapevolmente, e mi piacerebbe riuscire a fare un qualche tipo di analisi sulle correlazioni tra i vari set di dati.

Non ho ancora dato una forma precisa a questa idea ma mi ritrovo a pensarci su con una certa frequenza.

Perché si può fare!

Photo by Glen Carrie on Unsplash

Ritorno la rubrica “Perché si può fare” che è, in tutta sincerità, una delle cose che mi diverte di più.

Io sono sufficientemente anziano per ricordarmi i “padelloni” dalla astronomica capacità di 5 Mb che si usavano sui mainframe di ICL nei primi anni novanta. Pesavano un botto e li dovevi mettere a manina dentro il disk drive che aveva le dimensioni di una lavatrice. Facevano un rumore infernale e quando una testina del drive si andava a schiantare sulla superficie del padellone sembrava di assistere ad uno schianto automobilistico in autostrada.

Non sono però sufficientemente vecchio per avere utilizzato le schede perforate, o puch card, come le chiamavano gli americani.

Il signor Michael Kohn ha replicato il concetto delle schede perforate utilizzando dei mattoncini lego. Un mattoncino bianco rappresenta uno zero mentre un mattoncino nero rappresenta un uno. Ovviamente in codice binario. A questo punto su una lastra che ospita i mattoncini possiamo metterne in fila otto ed ottenere un byte. Più file possono quindi rappresentare delle informazioni che possiamo immagazzinare.

A questo punto è sufficiente costruire una rotaia, motorizzare la nostra lastra e fare uso di un array di sensori per leggere il contenuto della singola fila e trasformarlo in una informazione digitale.

Questo è il video in cui viene dimostrato il funzionamento del sistema:

Tutte le volte che vedo qualcosa di questo genere mi rattristo per la mia scarsa capacità di immaginare cose di questo genere.

Dopo le chiacchiere

Photo by Sven Brandsma on Unsplash

Mi ritrovo a riflettere a valle della moderazione dell’evento Human 2 Human durante la Milano Design Week.

La prima cosa che mi ha colpito è stata la grande partecipazione all’evento nonostante le non enormi dimensioni del luogo dove avevamo scelto di stare. Purtroppo non siamo stati in grado di soddisfare la lista di attesa per non infrangere nessuna regola riguardo l’occupazione dello spazio.

Parlare di nuovo davanti alle persone mi ha emozionato. In questi due, e più, anni di pandemia e relativo isolamento avevo dimenticato queste sensazioni. Incrociare lo sguardo delle persone mentre parli, osservare le posture, vedere le reazioni al tuo discorso. Tutte cose del tutto dimenticate stando davanti ad una webcam. Ancora, una grandissima emozione.

Mi ha fatto piacere come il design sia in grado di attirare persone. Giovani e meno giovani che si sono ritrovati per ascoltare quello che avevamo da dire. Ho iniziato il mio discorso dicendo che non avevo nulla da vendere se non le nostre idee. E quello era veramente il caso.

Io stesso ho seguito attentamente tutti gli interventi con grande interesse e partecipazione. Ho detto che ho sempre cercato di assumere persone più sveglia di me e, cavolo, è stato proprio così. Ho sentito degli interventi veramente straordinari. Racconti che era evidente fossero stati pensati con il cervello e raccontati con il cuore. Ogni volta sono stupito dalla qualità delle cose che riusciamo a fare quando abbiamo la giusta quantità di tempo a disposizione.

E poi un sacco di chiacchiere con ragazzi appassionati di design che sono un venticello fresco che ti accarezza l’anima.

Dai, lo confesso. In principio ero preoccupato del costo che avremmo dovuto sostenere per questa settimana. Viviamo in un periodo di grande incertezza e sono stato un pochino restio ad accettare la spesa. Devo dire che, invece, è stato un ottimo investimento, sopratutto per le persone che hanno avuto l’occasione di dedicarsi alla organizzazione e alla produzione dei contenuti. Avere l’opportunità di staccare dai progetti e dai clienti per lasciare libero spazio al proprio pensiero è impagabile. Credo di avere imparato la lezione.

email client

Photo by Stephen Phillips – Hostreviews.co.uk on Unsplash

Credo di avere scritto in passato del mio approccio alla posta elettronica. Ad esempio non sono mai stato un grande fan della tassonomia. La mia posta elettronica, sia personale che personale, non è suddivisa in un insieme di folder. Tutti i miei messaggi di posta elettronica siedono beati nella inbox vita natural durante.

Per il momento uso ancora gmail come principale account personale e la posta di Sketchin vive anch’esso sotto la longa manus di Google.

In passato ho sempre avuto un client di posta elettronica sui miei personal computer. Non so perché ma ho sempre pensato che fosse la cosa più naturale del mondo. Copia dei messaggi rimanevano sempre e comunque sui relativi server, a futura memoria.

Questo fino a che le dimensioni delle mie caselle di posta elettronica sono diventate ingestibili.

Da molti mesi a questa parte uso solo ed esclusivamente l’interfaccia web di gmail. Non è perfetta ma nel tempo è diventata sufficientemente adatta alle mie esigenze.

Devo dire che non sento affatto la mancanza di un client di posta elettronica.

Mi ritrovo molto spesso a dovere cercare dei messaggi e quello che Google mi offre è sempre all’altezza della situazione. Questo è vero sopratutto quando si impara ad usare in maniera efficace i diversi filtri che vengono messi a disposizione.

Credo che difficilmente tornerò indietro.

Chiacchiere

Photo by Kevin Gonzalez on Unsplash

In occasione della Milano Design Week e di un evento presso il nostro pop-up studio in Via Farini a Milano devo fare un breve intervento.

Non ho mai avuto difficoltà a parlare davanti alle persone, anche quando il numero superava qualche centinaio. Mi sono sempre trovato particolarmente a mio agio in quelle situazioni. Maggiore era il numero di persone ad ascoltare, maggiore era il mio entusiasmo nell’affrontare il palco.

Dopo questi più di due anni di quasi completo isolamento è la prima volta che faccio questa cosa fisicamente. Ho parlato ad alcuni eventi durante la pandemia ma sempre attraverso il filtro di una webcam e di un microfono.

Oggi, finalmente, sarà di persona.

Ho venti minuti a disposizione.

Venti minuti di chiacchiere sono tanti e subito dopo di me ci sono diversi colleghi con i loro interventi. I loro interventi sono una figata pazzesca. Ho sempre cercato di assumere persone che fossero più intelligenti e capaci di me, e credo di esserci riuscito.

Questo significa che devo raccontare qualcosa che valga la pena di ascoltare.

La realtà delle cose è che non sto cercando di vendere niente se non idee. Idee che saranno esposte senza alcun costo e che tutti potranno portare via con sé senza mettere mano al portafoglio.

Non credo che preparerò qualcosa se non una lista di punti chiave che vorrei cercare di trasmettere alla platea.

Se vi siete iscritti, ci vediamo lì.

Github Copilot

Photo by Oscar Sutton on Unsplash

Sono arrivato un pochino tardi a fare una prova con Github Copilot. Mi ero messo in lista di attesa mesi e poi mi ero completamente dimenticato di verificare se la mia richiesta fosse stata accettata o meno.

Durante il fine settimana mio figlio mi ha fatto vedere del codice Python che ha scritto per una sua applicazione. In particolare stava usando il framework flask dal momento che si trattava di una applicazione web con un pochino di backend ed accesso ad un database.

Ho visto che aveva Copilot attivo e mi ha detto che aveva ottenuto accesso qualche settimana prima.

Quando ho avuto qualche momento libero sono andato a verificare se la mia richiesta fosse stata accettata e dopo avere ottenuto una risposta affermativa lo ho installato su PyCharm e Visual Studio Code.

Confesso che ne sono rimasto decisamente impressionato.

Ho usato come test il progetto Javascript che fa chiacchierare i nostri fogli Google Sheets con Salesforce tramite REST API.

Ho quindi scritto un commento all’interno del file che implementa le richieste verso le API. Qualcosa del tipo: “Write a function that gets Opportunity data from Salesforce and returns it”.

All’interno del mio codice c’è già, ovviamente, una funzione simile. Copilot ne ha scritta una praticamente identica. Già questo sarebbe impressionante di per sè.

La cosa che mi ha stupito di più è il fatto che la funzione scritta da Copilot aveva il mio stesso stile di scrittura del codice. Le funzioni che si occupano del logging avevano la stessa architettura. Nel caso specifico Copilot ha capito che la stessa funzione può essere utilizzata sia all’interno dell’Editor di Google Script che all’interno di un foglio Google Sheets.

Incredibile. Mi sembrava di avere una copia di me stesso di fianco a me. Una sorta di pair programming virtuale.

Detto questo posso affermare con certezza che non siamo ad un livello di perfezione tale da potere dire che Copilot può sostituire un programmatore.

In alcune occasioni ha fatto degli svarioni non male ed ha introdotto dei bug piuttosto subdoli nel codice. Questo significa che non ci si può affidare completamente a Copilot. Diciamo che è un ottimo suggeritore.

Un altro uso che ho trovato particolarmente efficace riguarda la sintassi del linguaggio e l’uso di alcune funzioni. Iniziare a scrivere una funzione per poi andare a cercare su Google la sintassi esatta di cui mi ero dimenticato è molto più veloce con Copilot. Da questo punto di vista l’aiuto è enorme.

Per ora mi ci sto divertendo parecchio anche se sono solo poche ore che lo sto utilizzando.

Milano Design Week

Milano Design Week

Per la prima volta dopo tanto tempo ho l’occasione di rivedere dei colleghi fisicamente. Quest’anno con la scusa della Milano Design Week abbiamo organizzato una serie di eventi per celebrare il nostro mondo ed un relativo ritorno alla normalità.

Abbiamo aperto un pop-up studio nel quartiere Isola, in via Farini 60.

Ci sono diversi interventi che vale la pena ascoltare. Io personalmente li ascolterò tutti dato che non ho avuto grandi occasioni di ascoltare il pensiero recente di alcune persone.

Un pochino mi sembra una cosa normale, per altri versi ha tutto il sapore della eccezionalità

Parole Sparse - Il podcast di Corrente Debole

Getting file data...

Parole Sparse - Il podcast di Corrente Debole         Parole Sparse - Il podcast di Corrente Debole        
Getting file data...           Getting file data...          
More
Speed: 50% Speed: 75% Speed: Normal Speed: 125% Speed: 150% Speed: 175% Speed: Double Speed: Triple
Back 15 seconds
Forward 60 seconds
More
more
    Speed: 50% Speed: 75% Speed: Normal Speed: 125% Speed: 150% Speed: 175% Speed: Double Speed: Triple
    Back 15 seconds
    Forward 60 seconds
    Currently Playing