Tuesday 31 December 2013

Inferno Pizza

L'APOTEOSI del junk food è finalmente tornata, dopo più di un anno di assenza, nel reparto surgelati del supermercato più trash di tutta Europa.

Solitamente non faccio la spesa al Lidl, preferisco la Coop per evitare di dare troppi soldi a datori di lavoro sottopagato e ipersfruttato. Tuttavia vi si trovano - uh - generi alimentari introvabili altrove, anche se è comunque consigliabile consumarli con moderazione se si ha a cuore il proprio fegato.
Inoltre i tipi umani che si incontrano al Lidl sono - uh - più interessanti della media di posti come Coop, Esselunga, Carrefour o Panorama..

La Inferno Pizza tuttavia è un caso a parte. E' probabilmente la pizza più piccante che si possa assaggiare in tutto il mondo occidentale, a meno di inventarsi qualcosa nella propria cucina. Chi ama i cibi piccanti deve provarla almeno una volta. Del resto bastano solo coraggio, 2-3 euro, e, diciamo, 3-4 litri di acqua minerale ben fredda a portata di mano.

Come si siano inventati 'sta roba alla 'Trattoria Alfredo' (lol) è un vero mistero. La pizza Inferno è pure diventata un piccolo meme su internet, anche se fortunatamente i media mainstream non se ne sono mai occupati. Provate a cercare inferno pizza su youtube, ad esempio...

Frei lebt wer sterben kann






Oggi, curiosamente, riposandomi dopo pranzo mi sono imbattuto in questa citazione. E' scritta in un libro che non menzionerò: l'autore la attribuisce a Isak Dinesen. Che in realtà è solo uno degli pseudonimi di Karen Blixen. Ed in effetti non è un aforisma della Blixen, ma solo un verso del vecchio inno nazionale svizzero.

Curioso come la frase si possa adattare al personaggio ritratto nell'immagine di questo post. C'è indubbiamente un nocciolo di verità nell'affermazione, tuttavia personalmente dopo essere uscito sano e salvo per miracolo da un imponderabile, imprevedibile evento wo man sterben kann simile a quello vissuto da Schumi, in un certo senso (non sciavo a 100 all'ora per divertimento, ma andavo in auto a 130 per lavoro, siamo lì) preferisco continuare a vivere, anche se meno liberamente.

Un ulteriore, spassoso, punto di vista sull'incidente che riempie le cronache di questultimo scorcio di MMXIII lo fornisce il buon Venturi, in poche righe ai massimi livelli.

Saturday 14 September 2013

Le canzoni de "La Zanzara"

E' un po' di tempo che (to my shame) sono diventato un ascoltatore assiduo de La Zanzara di Peppe Cruciani con Davìd (lol) Parenzo. Un po' è la decadenza dei tempi, la mia, e il fatto che in questo periodo posso ascoltare qualcosa in sottofondo mentre lavoro. Questa estate ho pure tirato fuori poco più di una decina di euro per 'Cattivissimi noi' - che è una lunga intervista prodotta dal duo qualche mese fa. E' uscita per capitalizzare il successo di questanno, svela qualche curiosità in più sul programma, conferma che i due marpioni non si fermano davanti a nulla pur di fare carriera, comunque è una lettura piacevole per un paio d'ore se si è appasionati da programma.
Ma divago: Cruciani nella sua trasmissione usa diversi stacchetti musicali, quasi tutti a tema 'zanzarino'. Sono brani che probabilmente trova cercando su youtube, sono quasi certamente tagliati a puntino per non pagare diritti e sicuramente Peppe Cruciani non ha MAI detto di quali artisti si è servito. Un peccato perchè si tratta di band o cantautori spesso poco conosciuti - uno o due li ho pure ascoltati dal vivo recentemente - però bravi.

Rimedio dunque con questa lista. Se ho tralasciato qualche canzone, segnalatemela..

Microtraumi - Zanzara Twist

Pippo Franco - Chi Chi Chi Co Co CO

Banda Elastica Pellizza - Gerani sui balconi
Yeah Yeah Yeahs - Mosquitos


Franco Califano - Tutto il resto è noia

Ridillo - Zanzara Party
Qbeta - Le Zanzare di casa mia

Vanessa Paradis - Mosquito


Alessandro D'Orsi - Zanzara

Antonella Noceto - Cha della Zanzara

I Cantamilano - Zanzare

Jacopo Mezzanotte - Zanzare
The Doors - Mosquito

Folco Orselli - La Strada


Strike - Come le zanzare
Rita Pavone - La Zanzara


Renzo Arbore - Zanzarita

Jonathan Richman - I'm nature's mosquito

Radici nel cemento - Siamo tutti omosessuali

Luca Bassanese - La canzone del laureato

Licantropi - La Zanza

Pippo Franco - La Puntura

Squallor - Non mi mordere il dito

Doppie Viti - Zanzare

Frankie Magellano - La Zanzara

Manca ancora La Zanzara di Toni d'Aloia che trovate però qui su Spotify. E ultimamente anche la versione di No me moleste mosquito della Mirko Casadei Beach Band, anche questa su Spotify.

Con la fine della stagione 13/14 e l'inizio della stagione 14/15 gli stacchetti musicali sono stati cambiati completamente, con un passaggio a brani hard rock più ..automobilistici e molto più conosciuti:

Van Halen - Panama
Deep Purple - Highway Star
Deep Purple - Ted the Mechanic
Deep Purple - Burn
Knack - My Sharona
Run DMC + Aerosmith - Walk this way
The Who - Can't explain
The Kinks – All Day and All of the Night
Bruce Springsteen - Cover Me
AC/DC - It's a Long Way to the Top (If You Wanna Rock 'n' Roll)
AC/DC- Highway to hell
AC/DC - Black in Black
U2 - Pride ( In the name of love)
ZZ Top - Sharp dressed man
Black Sabbath - Paranoid
Ram Jam - Black Betty
Ramones - Blitzkrieg Bop
Steppenwolf - Born to be wild
Guns 'n' Roses - Welcome to the Jungle
Rolling Stones - Sympathy for the Devil
Steppenwolf - Born to be Wild
Steppenwolf - Magic Carpet Ride
Yes - Owner of a Lonely Heart
Tom Petty and the Heartbreakers - Runnin' down
Sammy Hagar - I can't drive 55 
Def Leppard - Action
Led Zeppelin  - Immigrant Song
Wolfmother - Joker & The Thief
Black Strobe - I'm a man
Autograph - We're an American Band
38 Special - Rockin' Into The Night
Motley Crue - Kickstart My Heart

Friday 6 September 2013

Use SPDIF as passthrough on lindy usb audio pro adapter

I have a notebook with HDMI output, and enough horsepower to play blu-rays and HD files on my TV. I also have a DTS/DD Yamaha amp, bought before HDMI came into vogue. It has coaxial and SPDIF connectors: in order to play BDs with HD audio one has to rely on the downmixing to DTS/DD provided by the software player (the TV can handle some downmixes with its toslink output, but it doesn't always work well): so I need to add SPDIF out to my notebook.

I already have a Fast Track Pro M-Audio usb interface. It has coax spdif, but at least on my system, whenenever I try to enable spdif out an downmixing from PowerDVD, the computer crashes spectacularly with a BSOD. I looked around for a cheap solutions and I found the 'lindy usb audio pro adapter' - it's a usb audio dongle based on the C-Media CM108 chip. The headphones port doubles as an optical toslink port (there is a red led behind the 3.5mm jack connector, and an adapter jack is provided). The only trouble is, once the provider driver are loaded SPDIF works, but only in PCM mode: the driver doesn't expose any SPDIF pass through capability to software players, which thus can only output 2 channel audio. At least on my system whenever the lindy dongle is used as a default audio device PowerdDVD crashed again, albeit without a BSOD.

The solution: well it's of course a driver problem, so one has to change the driver. C-Media and lindy seem particularly secretive regarding their latest drivers, but after a bit of searching I found  this. It's supposedly a "TerraTec Aureon Dual C-Media CM-108 modified Windows 7 Driver v.7.12.8.2144 for multichannel bitstream output". Different card, same chipset: it's an unsigned, patched driver, but it contains no malware, and on W7 64bit, it enables SPDIF like it should be on a small, cheap audio device.

UPDATE: Look here: http://akizetagamma.blogspot.ch/2012/08/gunstigste-moglichkeit-spdif-ausgang.html for instructions on how to patch the driver yourself, it's in German, even if you can read it should be understandable even automatically translated.

Sunday 7 July 2013

Mediacom 101s2 - Phoebus ROM 1.1

Disclaimer: la realizzazione di questa ROM deriva dal mio desiderio di creare un immagine del firmware di base del 101s2 aggiornata, con 2gb di userdata, e con le modifiche (root, gameloft, etc) che interessano a me. Posso garantire il buon funziomaneto della stessa sul mio tablet dove è usata ogni giorno, ma ovviamente non sugli altri 101s2 ne la correttezza delle istruzioni sotto riportate ( = se brickate il tablet non inseguitemi sotto casa!). Ho provato l'installazione subito dopo un ripristino della rom standard del 19/10/2012, quella del sito mediacom, e funziona. Premesso questo, se volete provarla anche voi eccola qui - nei limiti del possibile e del (poco) tempo a mia disposizione cercherò di migliorarla ed eventualmente di chiarirne il funzionamento. Attenzione che ci sono DUE versioni della ROM, perché esistono DUE versioni del 101s2!

Riconoscimenti: grazie ai tanti partecipanti al forum http://www.androidiani.com e http://www.avrmagazine.com che hanno condiviso tante utili informazioni sull'uso di Android, dei tool per RK3066 e naturalmente del Mediacom 101s2. In particolare Epaminonda e Leo. Senza di loro questa ROM non sarebbe stata possibile.

Caratteristiche:

v1.01:
+ Formato di .img upgrade standard compatibile con Rockchip Batch Tool 1.5. Si flasha e si usa come un firmware scaricato dal sito mediacom, non ha alcun prerequisito se non la preinstallazione dei driver specifici per l'upgrade del firmware e del programma di aggiornamento standard (istruzioni e software relativo qui   - si tratta di scaricare il firmware base che contiene anche il Batch Tool e i driver )
+ Firmware del 22/2/2013 (deriva dalla versione postata recentemente sottoforma di backup CWM su avrmagazine)
+ 2GB userdata invece di 1GB
+ Root
+ Recovery CWM 6.0.3.1 touch by androtab.info
+ Build.prop modificato (quello di Epaminonda) che fa vedere il tablet come un Samsung per migliorare la compatibilità software
+ Framework.jar per compatibilità giochi gameloft
+ Bootlogo standard 4.1
- App Corriere/Gazzetta/Giornali locali eliminate
- App Mediacom rimanenti: Explorer, APK Installer, Video Player, SlideME
- Launcher standard.

v1.1:
-aggiornate apk Youtube e SuperSU
-aggiornato Market (Phonesky.apk) anche se continua a non apparire direttamente sul launcher, utile se si sostuisce il launcher come app di sistema
-ripulita cartella ringtones per risparmiare spazio nella partizione di sistema
-sostituito RkExplorer (file manager RockChip) con CMFileManager.apk (da CyanoGenMod 9/Epaminonda ROM)
-tolto RkUpdateService.apk (inutile apk RockChip)
-Aggiornato RkVideoPlayer.apk (Video Player stock) con versione presa dal firmware JB 4.2.2 del MK808 con grafica rinnovata.
-Supporto USB Host (indispensabile per software che sfrutti tastiere MIDI, senza le app relative non sono nemmeno visibili dal market, e per alcuni joystick e altri dispositivi: è un file di configurazione in /system che nel firm stock manca)
-Supporto init.d (consente di eseguire script all'avvio) come sulla ROM di Epaminonda riveduto, corretto e testato .

Il firmware del 22/2/2013 ha già Gmail installato, e posizionabile normalmente sullo start screen. Google Play è già presente ma richiede comunque un'installazione  da APK per essere visibile (cfr. più avanti)

NB 1: Il firmware del 22/2/2013 (sia nella versione standard presente sui 101s2 messi in commercio recentemente e non postata sul sito mediacom, che nella versione CWM che nella mia)  non sembra migliorare in nessun modo i problemi di compatibilità con molte microSD ben noti ai possessori di 101s2. Le due fotocamere funzionano normalmente. Preparando la v1.1 ho anche testato il firmware per teclast A11 (il link è apparso qui tempo fa) un tablet simile ma non identico al 101s2 - Wifi e BT sono diversi: purtroppo anche quel firm non sembra risolvere anche se pare comportarsi in modo diverso, una microsd del tutto invisibile con in firm mediacom viene rilevata, ad es, anche se con errori ..inesistenti.

NB 2: esistono  almeno due versioni più recenti (aprile e maggio 2013) del firmware, ma ad oggi non si trovano in rete. Chi avesse sottomano dei Mediacom 101s2 con tali firmware potrebbe provare a installare la CWM e fare un ROM backup, rendendo così disponibile l'aggiornamento alla comunità degli utenti.

NB 3: sono in circolazione DUE versioni del 101s2. La differenza è nel display touchscreen, sono due modelli diversi che richiedono driver, e kernel, differenti.
Il primo modello monta uno schermo marca 'Goodix', il secondo 'focaltech'. Il primo modello usa i firmware del 19/10/12 e del 22/2/13. Il secondo quello dell' 11/1/13. Non so com'è la situazione per le due più recenti rom. Se si è mai usato il firm dal sito mediacom o la rom di Epaminonda, e il tablet continua a funzionare, si ha il goodix. Se il touch non funziona più, il focaltech. Comunque per essere sicuri montare un app tipo Terminal Emulator, dare prima il comando su (richiede root) e poi getevent -i. Nella lista di device apparirà 'Goodix' oppure 'focaltech'.
Grazie al kernel fornito da un utente di un forum ho creato una versione della ROM anche per chi ha il focaltech, utile anche per un ripristino del sistema che attualmente è impossibile con il firm del sito mediacom.


Download:

V1.1

https://dl.dropboxusercontent.com/u/15932714/Phoebus-Delenda-ROM-Mediacom-101S2-v1.1.zip
Versione per ts GOODIX (per chi ha un 101s2 che funziona il firm del sito mediacom)


https://dl.dropboxusercontent.com/u/15932714/Phoebus-Delenda-ROM-Mediacom-101S2-v1.1-focaltech.zip
Versione per ts FOCALTECH (per chi ha un 101s2 che NON funziona il firm del sito mediacom)


File .zip con apk di google play, delle applicazioni dei quotidiani tolte dal firmware standard, più i file di configurazioni aggiunti nella 1.1 e gli apk dei launcher Trebuchet e Nova Launcher

App RockChip estratte dal Teclast A11 (non necessarie, ma possono essere utili a qualcuno)

App RockChip estratte dal MK808 (a parte il player video, hanno problemi di funzionamneto su JB 4.1)
 Installazione:

versione per esperti:

Flashare l'immagine come un upgrade normale con RK Batch tool, dopo aver fatto un titanium backup. Al riavvio dopo l'aggiornamento parte il menu della CWM: ricordarsi di fare lo wipe sia di /data che della cache. Fatto questo ribootare: il sistema dovrebbe ripartire normalmente e si può riattivare internet, reinstallare titanium backup ev. dopo aver rimesso il market e fare il restore.

versione dettagliata:

L'installazione EQUIVALE A UN RIPRISTINO DEL FIRMWARE ORIGINALE, ovvero SI PERDONO TUTTI I DATI a meno di non fare un salvataggio prima.

Dunque:

FARE UN BACKUP TITANIUM BACKUP : non spiego come agire nello specifico, Titanium backup si scarica da google play e richiede il root. Altrimenti usare un altro software di backup, oppure rassegnarsi a perdere i dati eventualmente già presenti sul tablet.
Consiglio di fare il backup su una chiavetta USB, ed eventualmente di copiare il contenuto del backup anche sul proprio PC o altro supporto. Sulla chiavetta, la stessa o un altro consiglio anche di scompattare lo .zip con Google Play (com.android-vending) ed eventualmente le altre app per averle sottomano.

Evitare di usare la microSD, anzi, meglio toglierla preventivamente prima di installare il tutto.

Se non lo avete ancora fatto installare Rockchip Batch Tool e i driver: sono nel pacchetto del firmware di base del 101s2 presente sul sito mediacom, con le relative istruzioni. Sincerarsi di aver compreso bene la procedura e di aver tutto pronto per flashare. Idealmente si dovrebbe avere già esperienza nel ripristino dei firmware Mediacom
Scompattare da qualche parte il file con la Phoebus ROM, lanciare Rockchip Batch Tool, e collegare il tablet in modalità aggiornamento col cavo USB maschio-maschio (ricordo che bisogna spegnerlo, e collegarlo tenendo premuto VOL+). A questo punto Rockchip Batch Tool dovrebbe riconoscere il dispositivo nella giusta modalità (quadratino verde) e dovrebbe essere possibile cliccare sul bottone Upgrade. Il firmware a questo punto è trasferito e controllato sul tablet. Se qualcosa va storto (interruzione della trasmissione etc) si può semplicemente ripetere la procedura, ed eventualmente ritornare al firm standard.

Una volta terminato il flashaggio della ROM il tablet, la prima volta, RIPARTE COL MENU DELLA CWM Recovery.

A questo punto consiglio VIVAMENTE di fare, dal menu CWM navigabile con i tasti vol+- e il tasto power:
- wipe della partizione /data (cancella i dati utente, che ovviamente avete già backupato insieme al resto)
- wipe della cache (che non fa mai male)

Fatto questo scegliere sempre dal menu CWM reboot system.Il wipe eventualmente si può fare anche successivamente, se si sbaglia qualcosa, basta rientrare in recovery con la combinazione di tasti (vol+ accenndendo) o da terminale o da ADB (reboot recovery).

A questo punto il 101s2 dovrebbe ripartire normalmente, come dopo un'installazione del firm di base. L'unica differenza è che rimarrà a fare per qualche secondo lo 'scaning' (sic) del file system, solo la prima volta. Fatto questo si può scegliere la lingua, riattivare la connessione internet, reimpostare il proprio account google.

Consiglio di installare subito google play da chiavetta USB (usare ApkInstaller e cercare l'apk com.android-vending..) preparata in precedenza.

Alternativamente, se siete esperti e se volete usare da subito un launcher diverso da quello stock di cui avete già l'APK potete già installarlo con la procedura riportato in fondo al post. Procedere solo se si è sicuri di quello che si fa; comunque è possibile farlo anche in un secondo momento e ad ogni modo ripetendo l'installazione si ovvia a qualsiasi errore si potesse aver fatto. Ho preferito lasciare il Launcher standard nella mia rom perché Trebuchet non mi convince molto e gli altri launcher free sono molto diversi tra loro.



Una volta rimesso google play si può reinstallare Titanium Backup e fare il restore dei dati e delle app salvate in precedenza (DOVETE aver fatto il backup e DOVETE sapere com funziona Titanium Backup.

A questo punto dovreste avere un sistema con 2gb (riportati 1.97) in Impostazioni/Memoria/Archivio Interno e con versione (Impostazioni/Informazioni su Tablet):
- Numero Modello GT-P5113 ('finto samsung')
- Versione Kernel Fri Feb 22 10.25.47 CST 2013
- Numero Build: Delenda ROM 1.01

That's it!

NB:

A chi  interessasse un firmware standard mediacom (quello del 19/10/2012) con userdata a 2gb ecco qui il link all'immagine zippata, sempre in formato RK Batch Tool. E' quello standard, non cambia nulla a parte il partizionamento, app corriere, niente root, etc.

PROCEDURA PER INSTALLARE MANUALMENTE UN LAUNCHER DIVERSO DA QUELLO STOCK (SOLO PER ESPERTI)

- nb, nel file zip con le app c'è già Trebuchet.apk (Trebuchet 0.2, usato anche nella rom di Epaminonda) e l'ultimo Nova Launcher free al 6/7/13, launcher-1.apk

- collegarsi in ADB

- comando adb root da prompt dei comandi del PC

- comando adb remount da prompt dei comandi del PC

-  comando adb shell da prompt dei comandi del PC

- una volta entrati in shell unix sul tablet dare cd /system/app

- sempre in shell unix sul tablet dare rm Launcher2.apk TOGLIE IL LAUNCHER STOCK

- sempre in shell unix sul tablet dare exit rientra sul prompt dei comandi del PC

- comando  adb push /system/app copia l'apk del launcher

-  comando adb shell da prompt dei comandi del PC per rientrare sul tablet

- una volta rientrati in shell unix sul tablet dare cd /system/app

- sempre in shell unix sul tablet dare chmod 644   dove e il filename (solo il filename con estensione e stando attenti a maiuscole e minuscole) del nuovo launcer

- sempre in shell unix sul tablet dare reboot

Tuesday 11 June 2013

Chi comanda a Firenze? Renzi, oltre alla Rottamazione...


Da un po' se ne parlava, almeno online, ma non mi ero accorto che fosse uscito. E' "Chi comanda Firenze"   Il libro antirenziano di Duccio Tronci. Pare che stia vendendo abbastanza (su Amazon ad esempio ho preso io l'ultima copia, poi è tornato in questo momento si sta riesaurend). Diciamo subito che il libro di Tronci mancava nel panorama editoriale italiano. Di libri su Renzi ce ne sono ormai diversi, solo che la maggior parte di essi sono stati scritti dallo stesso Renzi, e nessuno parla veramente male dell'Obama del Valdarno, neanche quello in fondo favorevole di Allegranti. L'agile, forse troppo breve volumetto uscito per i tipi di Castelvecchi invece ne traccia un profilo secco. Un politico che in realtà proviene da quello stesso establishment che a parole vorrebbe riformare, ma che di nuovo ha solo una strategia di marketing più aggiornata.

Tronci non scopre niente che non sia già stato raccontato, nei mesi e negli anni passati. Tuttavia riassume in modo chiaro il modo in cui, dalle fila del PPI in procinto di dissolversi Renzi sia arrivato alla Provincia di Firenze e da lì abbia subito iniziato a costruire una carriera politica che per un momento, durante le primarie del PD, è sembrata prendere davvero la via maestra, e che potrebbe ancora riservare molte sorprese. Sullo sfondo, i molti scandali passati e presenti che hanno contrassegnato quasi tutte le operazioni in cui a Firenze e dintorni affari e politica si sono intrecciati. Da Castello, all'attraversamento TAV, alla tramvia. E ai tanti, troppi progetti ancora non realizzati da Renzi in quello che ormai è un primo mandato giunto alla fase finale e durante il quale Renzi si è contraddistinto soprattutto per le iniziative politiche nazionali. Interessante, all'inizio, la mappa della rete di conoscenze e appigli cui Renzi ha attinto per le nomine. Un aneddoto che non conoscevo: la CHIL, la società del padre di Renzi in cui lo stesso sindaco è stato impiegato, si occupava non solo di strillonaggio, ma proprio per un quotidiano come la Nazione, e si è beccata pure una causa con l'INPS per contributi irregolari.

In appendice, alcune pagine sulla tristissima vicenda del Forteto. Che col personaggio di Renzi in verità non ha molto a che fare, ma col milieu politico fiorentino e toscano invece sì.

Come scrivevo più sopra è un volumetto non molto impegnativo. In una serata o due si termina agevolmente. Per terminare invece l'ultimo, recentissimo parto letterario dello stesso Matteo Renzi, 'Oltre la rottamazione', bastano due orette scarse.

Ebbene sì, per la seconda volta, spinto dalla curiosità ho finanziato Renzi, dopo aver comprato 'Fuori!' due anni fa, mentre ero riuscito ad evitare 'Stil novo'. Il nuovo libro, uscito da Mondadori col solito strascico di polemiche che in fondo non fa neanche male, non è niente di esaltante. Potrebbe essere la trascrizione di un paio di discorsi: sicuramente è il canovaccio sul quale Renzi sta impostando non solo la presentazione del libro stesso, ma anche le ultime comparsate televisive. Le battute, le frasi a effetto sono le stesso. I 15-12 euro del prezzo di copertina sono ben spesi anche se si tiene presente quello che il personaggio scrive e poi ripete in tv. Il libro è la storia delle primarie, della campagna elettorale e della nascita del governo Letta dal punto di vista di Renzi. O meglio da quello che Renzi vuole dare a intendere sia il suo punto di vista. In fondo alle 112 paginette qualche sviolinata impressionistica su un progetto e un programma che in realtà non ci sono. Nel sotto-fondo, invece, un politico scaltro che è più aggiornato della media dei colleghi in materia di marketing e comunicazione, ma che di concreto finora - si consulti ad esempio il libro di Tronci - ha portato a casa ben poco, successi personali a parte.

Anche il libro di Renzi si chiude con un'appendice relativa alla violenza sui minori. E' il capitolo "L'Italia di Gregorio", i prossimi ventanni che dovrà vivere Gregorio, un bambino nato questanno. Renzi scrive tuttaltro? Beh, sì, ma anche la linea 2 della tramvia doveva partire a novembre 2011 ed essere pronta in 950 giorni..

Thursday 6 June 2013

My .NET Windows Forms app doesn't print in Windows 8!!

It has happened to me, today. A not so old .NET 2.0/3.5 Windows Forms app, from a generally capable and reliable developer. It installs fine in Windows 8, it stars without problems, but clicking on the 'Print' button doesn't do anything. I ran a few tests on my Windows 8 systems and I noticed that it DIDN'T happen on Windows 8 32 bit. So I tried this.

corflags.exe application.exe /32bit+

corflags.exe is an utility from the .NET SDK, I myself got it with the Visual Studio install. Application.exe is a placeholder for the applicatione executable. One needs to use this in an elevated command prompt: it lets the application print again. The utility forces the executable (apparently compiled in anycpu mode) to run in 32 bit mode, and magically printing works again.

This of course will work only with .NET executables.

Sunday 21 April 2013

Image and reality in the Ford-Chewbacca conflict

La cosiddetta stampa italiana oggi:


http://it.cinema.yahoo.com/blog/gossip-celebrity/harrison-ford-litiga-con-chewbecca-da-jimmy-kimmel-161641567.html

http://www.tgcom24.mediaset.it/televisione/articoli/1091357/harrison-ford-litiga-con-chewbacca.shtml

Solo il Corriere.it scrive,l forse dopo che qualcuno si è preso la briga di avvertirli, che si tratta solo di una gag:



 

Sunday 31 March 2013

Corsi e ricorsi

L'altra settimana è diventato virale questo spot



l'avrete ricevuto anche voi sul 'uoll o sulla mail.

Peccato che l'idea l'avessero già avuta un anno fa
i bravissimi ragazzi del terzo segreto di satira...




E mi ricorda ancora qualcosa.. 

Monday 25 February 2013

Occasioni mancate per la campagna elettorale.

http://www.repubblica.it/cronaca/2013/02/25/news/centri_imigrati-53351554/?ref=HREC1-2

In questa campagna elettorale, a parte il solito wishful thinking sulla cittadinanza à la carte 'per tutti i nati in Italia' (in pratica inedita nel resto d'Europa), il tema dell'immigrazione si è fatto notare solo per la sua assenza. Per non parlare di quello della sicurezza, proprio quando almeno certi tipi di crimine sono in aumento.
Ora leggo come se nulla fosse che dal 28 febbraio il governo lascerà in giro per la penisola circa tredicimila (13000) rifugiati (o aspiranti tali). E' un numero di persone equivalente alla popolazione di una cittadina come Fiesole o San Severino Marche, o, a seconda dei gusti, agli effettivi di una divisione militare.

Con 500 euro a testa di buonuscita e dopo aver speso una somma equivalente a...  un miliardo e mezzo di euro. Circa 1/3 dell'IMU sulla prima casa - per usare un paragone da campagna elettorale.

Saturday 23 February 2013

Niscemi in a Coma

Oggi sulla homepage del Corriere, il maggior quotidiano italiano, si trova un titolo...

"Il radar Usa? Serve contro gli asteroidi"

che porta a questo interessante intervento di Antonino Zichichi 

http://corrieredelmezzogiorno.corriere.it/palermo/notizie/cronaca/2013/22-febbraio-2013/zichichi-muos-smentisce-crocetta-il-radar-usa-serve-contro-asteroidi-2114153146834.shtml

"Essendo la cultura detta moderna, pre-aristotelica.."

Il MUOS in realtà più o meno è questo:

http://en.wikipedia.org/wiki/Mobile_User_Objective_System

Non ha niente a che vedere ne con i radar, ne con proiettili di alcun genere, ne cosmici, ne terroristici. Tantomeno con gli asteroidi, ma è una stupidaggine del titolista del Corrierone.
D'altra parte nemmeno le potenze in gioco coi trasmettitori del MUOS sono trascurabili. Tuttaltro, anche se questo non vuole dire che il MUOS sia pericoloso. Zichichi, oltre ad essere un astrofisico emerito, è un assessore di Crocetta, eletto col PD.

Quella del MUOS è un polemica locale in cui ovviamente ora entrano anche i grillini, alla loro prima esperienza, col loro prezioso apporto...

http://www.linksicilia.it/2013/02/muos-trizzino-m5s-le-rassicurazioni-usa-sono-una-provocazione/

Niscemi è, incidentalmente, il paese di origine di mia nonna materna.Negli anni 20 e 30 del secolo scorso dal Sud della Sicilia provenivano molti coloni diretti in Libia. La famiglia di mia nonna era nel novero. Però mi hanno sempre parlato di Niscemi, ai tempi, come di una bella cittadina.

Domani in Italia si vota.

Tuesday 19 February 2013

La Prevalenza del Giannino


Da circa un giorno è scoppiato il caso Zingales-Giannino . Poco fa ho visto Giannino da Mentana al TG La7 parlare del suo inesistente master alla Chicago Booth e delle sue altrettanto inesistenti lauree in Giurisprudenza ed Economia. Il giornalista diversamente elegante parla di 'qualcosa che è montato in rete. Il video in cui dice chiaramente di aver fatto un master a Chicago però rimane.

Rimane anche la cronologia della pagina della Wikipedia italiana che mostra tutte le modifiche avvenute nel tempo alla voce 'Oscar Giannino'. Ecco il link:

http://it.wikipedia.org/w/index.php?title=Oscar_Giannino&offset=&limit=500&action=history

Provate a leggere partendo dal basso, da quando è stata creata la voce di wikipedia, ovviamente campionando le letture delle varie versioni della voce. Il link che porta al testo è quello della data di inserimento. E' interessante dare un'occhiata anche alla pagina delle discussioni relative alla stessa voce.

 Il risultato è sorprendente: dapprima Giannino è il semplice figlio di operai che si mette a fare il giornalista. Poi appare la laurea in legge. E quella in Economia e il master alla prestigiosa Chicago Booth. A un certo sparisce una laurea, poi riappare.

Leggere la pagina http://it.wikipedia.org/wiki/Discussione:Oscar_Giannino come dicevo è interessante: c'è anche chi, ben prima dell'inizio della sgangherata campagna elettorale 2013 si era anche premurato di chiamare la Chicago Booth. La pagina di Wikipedia era stata corretta, ma non per molto. Comunque il CV taroccato di Giannino si era talmente diffuso che persino il sito della Treccani ancora in questo momento (19/2/13, 20:45) ( http://www.treccani.it/enciclopedia/oscar-fulvio-giannino/ ) riporta:

Giannino, Oscar Fulvio. - Giornalista italiano (n. Torino 1961). Laureato in Giurisprudenza e in Economia, tra gli anni Ottanta e Novanta è stato portavoce nazionale del PRI (1987-94) nonché direttore del quotidiano del partito, La Voce Repubblicana. Esperto in politica e finanza, ha curato la pagina economica de Il Foglio ed è stato vicedirettore de Il Riformista e Finanza&Mercati; tra il 2007 e il 2009 ha diretto l’inserto finanziario di Libero (Libero Mercato). Negli stessi anni si è riavvicinato alla politica attiva riprendendo la tessera del PRI e nel 2011 è diventato membro della Direzione nazionale del partito. G. conduce una trasmissione di approfondimento giornalistico su Radio 24 (Nove in punto, la versione di Oscar) e scrive per Panorama e Il Mattino (tra gli altri); è condirettore del mensile Capo Horn. 

NB: 20/2/13 la voce è stata cambiata!

Fino a ieri qualunque persona ragionevolmente informata e capace di usufruire dei media di oggi non avrebbe avuto dubbi sui titoli accademici di Giannino, a meno di non fare una specifica e approfondita ricerca. Questo è un dato di fatto. E' anche un dato di fatto che la panzana del CV taroccato non è nata per FARE, per fini elettorali. E' nata da un bel pezzo: almeno due o tre anni. Ho letto di uno stagista, di errori di inserimento. Tutto può essere, può darsi che Giannino non sia responsabile direttamente. Certo, se non lo è (al netto del video di Repubblica) è però certo che ne lui ne il suo staff è in grado di usare bene la Rete. Possibile che non gli sia mai venuto in mente di cercare il suo nome e cognome su Google?

Non gli auguro troppi danni. FARE è un movimento che perlomeno avrà il merito di togliere a Berlusconi i voti di chi è deluso dallo stesso Banana ma ancora è fedele alla sharia neoliberista. E in effetti ha tra i suoi promotori gente molto competente, in generale: niente a che vedere con un esercito di formiche deficienti come i Grillini.

Ma tant'è. Comunque è più preoccupante constatare come funzionino veramente i media 'liquidi' Web 2.0. Proprio l'altro giorno ho noleggiato (sono all'antica, ormai anche a Firenze i videonoleggi cominciano a scarseggiare)  http://en.wikipedia.org/wiki/Burn_After_Reading , l'ho visto e apprezzato, poi sono andato a leggere la pagina Wikipedia di cui al link. Nella sezione 'plot', trama della voce, il personaggio di Brad Pitt non muore. Nel film che ho visto il personaggio di George Clooney lo uccideva: una rapida verifica (clip, trailer, imdb, etc) mi assicura che, come nel mio Blu-ray, in realtà muore sempre:  non ci sono versioni alternative del film. Ho corretto la pagina: non si può certo essere trattato di un errore a ben pensare. Una forma di strano vandalismo, ampiamente oltre lo psicopatologico.

Wednesday 9 January 2013

Hindenburg - Der Mann, der von Frederick der Grosse bis zum Hitler lebte.

Heute abend bei arte gab es Hindenburg - Der Mann, der Hitler zum Kanzler machte:
ein Doku über Marschall Hinderburg von Cristoph Weinert. Hindenburg, als junger Mann, kämpfte im deutsch-französischen Krieg von 1870–1871.

Und hier sind die passende Bilder, laut den Autoren, für den deutsch-französischen Krieg von 1870-1871 (oder 1770-1771 vielleicht?)








Wednesday 2 January 2013

The joys of floating point variables

The other week I had to examine a rather simple data import program, written in VB6. The program reads some numbers from a CSV file, and creates a bunch of SQL INSERTs to transfer them to a database: it worked flawlessly, except for some values with .15 or .45 as the decimal part.

In the end it all boiled down to a code snippet like this (it's VB6, but should compile in VB.NET too, just create a form with a button and a click event in both cases)

Dim s  As Double
Dim s3 As Double

s = 8.45 - 5.45
s3 = 3

MsgBox "8.45 - 5.45  =  :" & s
MsgBox "8.45 - 5.45  =  :" & Format(s, "0.000000000000000000000")
MsgBox "8.45 - 5.45 = 3 :" & (s = s3)
MsgBox "Int(8.45-5.45)  :" & Int(s)
MsgBox "Fix(8.45-5.45)  :" & Fix(s)


Now, the funny part is that if you print, even with as many decimal digits as you like, 8.45 - 5.45, you get, apparently, the number 3.000. Then, why s = 3 is equal to False ? Why Int(s) and Fix(s) = 2?

Never mind that using Double is not recommended in cases like this, in any way - one should use Currency : I wanted to know exactly why there is such an apparently disconcerting behaviour.

I tried to replicate the snippet in C# (using Math.Floor instead of Int()) : same result. After that I extended the snippet with a routine found searching stackoverflow.com (look in the comments for the URL) to decode the internal IEEE 754 format used to store doubles (it is the same for each and every language using double precision floating point numbers since the last iterations of microsoft compilers for DOS I believe. Here's the code:

using System;

using System.Text;

namespace TestDouble
{
    class Program
    {
        static void Main(string[] args)
        {
            double s,  s3;

            s = 8.45 - 5.45;
            s3 = 3;

            Console.WriteLine("s = 8.45 - 5.45 :" + s.ToString());
            Console.WriteLine("s (formatted)   :" + String.Format("{0:0.00000000000000000000000000000000}", s));

            Console.WriteLine("s3 = 3          :" + s.ToString());
            Console.WriteLine("s == s3         :" + (s == s3).ToString());
            Console.WriteLine("Math.Floor(s)   :" + Math.Floor(s).ToString());
            Console.WriteLine("Math.Floor(s3)  :" + Math.Floor(s3).ToString());

            Console.WriteLine("s =  8.45-5.45 IEEE 754 : " + d2s(s));
            Console.WriteLine("s3 = 3         IEEE 754 : " + d2s(s3));
         


            Console.WriteLine();
        }

        static string d2s(double d)
        {
            // yanked from: http://stackoverflow.com/questions/389993/extracting-mantissa-and-exponent-from-double-in-c-sharp
            // Translate the double into sign, exponent and mantissa.
            long bits = BitConverter.DoubleToInt64Bits(d);
            // Note that the shift is sign-extended, hence the test against -1 not 1
            bool negative = (bits < 0);
            int exponent = (int)((bits >> 52) & 0x7ffL);
            long mantissa = bits & 0xfffffffffffffL;


            // Subnormal numbers; exponent is effectively one higher,
            // but there's no extra normalisation bit in the mantissa
            if (exponent == 0)
            {
                exponent++;
            }
            // Normal numbers; leave exponent as it is but add extra
            // bit to the front of the mantissa
            else
            {
                mantissa = mantissa | (1L << 52);
            }

            // Bias the exponent. It's actually biased by 1023, but we're
            // treating the mantissa as m.0 rather than 0.m, so we need
            // to subtract another 52 from it.
            exponent -= 1075;

            if (mantissa == 0)
            {
                return "  0";
            }

            /* Normalize */
            while ((mantissa & 1) == 0)
            {    /*  i.e., Mantissa is even */
                mantissa >>= 1;
                exponent++;
            }

            return (negative ? "-" : "+") + " " + mantissa.ToString() + " * 2 ^ " + exponent.ToString();
        }
    }
}


Now we're starting to shed some light: 8.45-5.45 and 3 are stored in a completely different way in IEEE 754.

8.45 - 5.45 is stored with a mantissa of 3377699720527871 and an exponent of -50.

I fired up Mathematica to check the numbers:

In[5]:= +3377699720527871 * 2^-50
Out[5]= 3377699720527871/1125899906842624

The fraction above is the exact value of 8.45-5.45, as stored in the 64 bit double variable.

With a 15 decimal digit precision this is..




In[21]:= N[3377699720527871/1125899906842624, 15]
Out[21]= 3.00000000000000




But with a precision of more than 15 digits..

In[22]:= N[3377699720527871/1125899906842624, 16]
Out[22]= 2.999999999999999

The problem with VB6/VB.NET and C# is that a double precision number is apparently converted to a string representing a decimal number with a maximum of 15 decimal digits. This is in compliance with the standard, as far as I've seen, but it's all that the language can churn out - if I specifiy more decimal digits in the formatting string I end up with the same precision anyway, not surprisingly of course. By the way, '3' is stored as what the IEEE 754 standard defines a 'subnormal' number, all in the mantissa with a zero exponent.

It seems that I stumbled on a really pathological case of double precision rounding. In the original program the numbers represented hours (the integer part) and minutes (the decimal part): it looked like the calculations were wrong only with quarter of an hour! I've event translated the C# program in Java. It seems that Java uses one decimal digit (but only one) more formatting double data - in my case it would have helped though...

public class TestDouble {

      public static void main(String[] args) {
   
        double s,  s3;



        s = 8.45 - 5.45;
        s3 = 3;

        System.out.printf("s = 8.45 - 5.45 :%f\n",s);
        System.out.printf("s (formatted .14f)   :%.14f\n",s);
        System.out.printf("s (formatted .15f)   :%.15f\n",s);
        System.out.printf("s (formatted .30f)   :%.30f\n",s);
        System.out.printf("s3 = 3          :%f\n",s3);
        System.out.printf("s == s3         :%b\n",(s == s3));
        System.out.printf("Math.Floor(s)   :%f\n",Math.floor(s));
        System.out.printf("Math.Floor(s3)   :%f\n",Math.floor(s3));
       

        System.out.println("s =  8.45-5.45 IEEE 754 : " + d2s(s));
        System.out.println("s3 = 3         IEEE 754 : " + d2s(s3));
       

    }
   
     static String d2s(double d)
      {
          // adapted from http://stackoverflow.com/questions/389993/extracting-mantissa-and-exponent-from-double-in-c-sharp
          // Translate the double into sign, exponent and mantissa.
          long bits = Double.doubleToLongBits(d);
          // Note that the shift is sign-extended, hence the test against -1 not 1
          Boolean negative = (bits < 0);
          int exponent = (int)((bits >> 52) & 0x7ffL);
          long mantissa = bits & 0xfffffffffffffL;
                            

          // Subnormal numbers; exponent is effectively one higher,
          // but there's no extra normalisation bit in the mantissa
          if (exponent == 0)
          {
              exponent++;
          }
          // Normal numbers; leave exponent as it is but add extra
          // bit to the front of the mantissa
          else
          {
              mantissa = mantissa | (1L << 52);
          }

          // Bias the exponent. It's actually biased by 1023, but we're
          // treating the mantissa as m.0 rather than 0.m, so we need
          // to subtract another 52 from it.
          exponent -= 1075;

          if (mantissa == 0)
          {
              return "  0";
          }

          /* Normalize */
          while ((mantissa & 1) == 0)
          {    /*  i.e., Mantissa is even */
              mantissa >>= 1;
              exponent++;
          }

          return (negative ? "-" : "+") + " " +  String.format("%4d * 2 ^ %4d", mantissa, exponent);
          
      }

}