Sparalink #5

Dec 7, 2007 - 0 comments - Archiviato in: #Cazzate

-quack

Your money back

Dec 6, 2007 - 0 comments - Archiviato in: #Cazzate #Pippe Mentali

Una mail che ho ricevuto qualche giorno fa riguardo XYZ mi ha lasciato un po' perplesso. XYZ è un "prodotto" di cui ho avuto a lamentarmi nel gennaio 2007 (il motivo per cui non lo nomino sarà chiaro fra breve) e nella mail, un po' come altrove su questo blog, mi si diceva money che:

  • i problemi di XYZ si fermano a casa mia (nel senso che me li sono inventati)
  • XYZ è un prodotto immaturo e per fare quello che voglio veramente dovrei usare ZYX, adducendo l'ipotesi che usassi XYZ per parlare male in realtà di tutti prodotti di "marca" ABC incluso ZYX che è "perfetto" Indifferent

Le due affermazioni sono in palese contraddizione, ma la conclusione della mail è stupefacente: "se ABC ti fa schifo non ne parlare sul tuo blog". Al che mi è venuta in mente la risposta di Roy a dei commenti sul suo blog:

My apologies. Please let me know what you'd like me to write about next. In fact, it would be great if you could also send me the full text of the post you'd like me to write.

You are free to get your money back if this blog has not lived to its SLA.

In realtà qualcuno ha osservato, checché se ne dica, che questo tipo di "aggressività" è molto tipica di alcune "comunità dalle scapole ampie che pensano solo a risolvere i problemi". Lo ha fatto Cesare Lamanna in questo post illuminante che a sua volta cita un altro post di Rob Enderle di cui già avevo parlato in passato. 

Rob Enderle aggiunge che "The Register" teorizza l'esistenza di uno strike team che si abbatte, con aggressività inaudita, contro chiunque critichi il verbo ABC:

According to The Register, there is actually some kind of a strike team that comes after me every time I say something positive on CBA or negative on ABC. And I’m not alone: Laura DiDio at Yankee gets sexual harassed, and Dan Lyons over at Forbes is attacked regularly, although he does have supporters as well.

Può darsi che parlare di strike team sia esagerato ma il log dei referrals mi ha confermato che c'è davvero gente, che immagino oltre ad avere scarso sense of humor abbia davvero poco di interessante da fare nel tempo libero[1], che spende tempo cercando su google "ABC fa schifo" per poi lasciare commenti impietosi alla stregua della mail all'origine di questa mia assurda pippa mentale. Cesare conclude il suo post citando la frase di Rob:

How can anything be “Open” if honest discussion isn’t allowed?

Io ci metto del mio:

How can anybody appreciate "free products" (as in free speech) if free speech about them isn't allowed?

Di nuovo il tutto sembrerebbe ridursi ad una contraddizione. Ma da una contraddizione si può ottenere tutto (ex falso quod libet). Fanatismo incluso. Mi sbaglio?

-quack

Technorati Tags:

[1] avrei una mia teoria al riguardo sul perché

Come funziona il secure boot

Dec 5, 2007 - 0 comments - Archiviato in: #Security #Trusted Computing

Nell'ultimo post dedicato al trusted computing mi ero ripromesso di spiegare come funziona praticamente un dispositivo TPM.

L'architettura tipica di un dispositivo TPM 1.2 come quello di Infineon è descritta dalla seguente figura:

TPMArchitecture (fonte)

Come si può vedere un chip TPM fornisce diverse svariate funzionalità: è infatti possibile ad esempio di usare il TPM come generatore di numeri casuali (RNG), oppure come memoria (limitata) non volatile, ecc. Ogni funzionalità può essere usata in maniera più o meno indipendente dalle altre.

Per quanto riguarda il secure boot la funzionalità associata è quella dei platform configuration register (PCR). Ogni TPM viene fornito con un numero svariato di PCR: le specifiche richiedono che ne siano forniti almeno 24, i primi sedici dei quali (PCR0-PCR15) devono essere non resettabili. Per semplificare d'ora in poi mi riferirò con il termine PCR ai PCR non resettabili. Un PCR è un registro schermato e come tale protetto da interferenze e occhi indiscreti. Il PCR permette solo due tipi di operazioni 'semplici': lettura ed estensione.

  • la lettura restituisce al chiamante il valore contenuto nel PCR
  • l'estensione prende come input un valore di 160 bit e scrive nel PCR l'hash (comunemente si usa SHA-1 e quindi i PCR stessi sono grandi 160 bit) della concatenazione tra il valore del PCR e il valore in ingresso. In parole povere esegue la seguente operazione:
    PCR = SHA-1(PCR && input-value)
    il valore in ingresso rappresenta l'evento che si va a "misurare". Non è possibile sovrascrivere direttamente il valore dei vari PCR

Le specifiche del TCG per PC definiscono anche l'uso che si va a fare di ogni PCR:

PCR Uso
0 CRTM, BIOS and Platform Extensions
1 Platform Configuration
2 Option ROM Code
3 Option ROM Configuration and Data
4 IPL Code (MBR)
5 IPL Code Configuration and Data
6 State Transition and Wake Events
7 Reserved for future usage

e cioé per esempio nel PCR4 sarà caricato il valore finale di tutte le misurazioni del MBR (nella maggior parte dei casi una sola).

Altra nota importante: durante l'accensione tutti i PCR vengono resettati (e cioé conterranno 0).

Per comprendere come funziona il secure boot, bisogna introdurre un altro elemento della piattaforma, il Core Root of Trust Module (CRTM). Per banalizzare il concetto, il CRTM è il pezzo di codice IMMUTABILE che su una piattaforma TC viene eseguito per primo e che si occuperà di misurare se stesso ed il BIOS per poi passarvi il controllo. Questo avviene con il seguente pseudocodice:

Extend( PCR0, SHA1 (CRTM))
Extend( PCR0, SHA1 (BIOS))

Dopo di che il controllo viene passato al "BIOS" che procederà alla misurazione degli altri componenti (opzioni del BIOS, MBR, ecc.) e alle normali operazioni di boot. La fase di esecuzione del CRTM e del BIOS, che termina con il passaggio del controllo al MBR, è sempre la stessa e l'unico elemento variabile in gioco è il contenuto finale dei valori dei PCR. Questo significa che il codice contenuto nel MBR verrà eseguito comunque e sarà compito di tale codice prendere in considerazione o meno quanto registrato nei PCR.

A questo punto dovrebbe essere chiaro come funziona il secure boot, almeno in linee generali: si installa un SO che supporta il secure boot su una macchina da zero, il sistema operativo "prende nota" dei valori del PCR considerati da questo interessanti dopodiché se i valori non coincidono vuol dire che qualcosa è cambiato e sta al sistema operativo decidere come notificare l'utente e cosa fare.

I più curiosi invece si chiederanno come è possibile memorizzare tali valori da qualche parte senza che il malintenzionato di turno possa sostituirli e vanificare la protezione offerta dal secure boot. La piattaforma viene in aiuto degli sviluppatori di OS con due API simmetriche, TPM_Seal e TPM_Unseal. La prima prende in input una bitmask (rappresentante i PCR da usare) e un array di byte: l'array viene criptato e "firmato" usando come chiave i valori dei PCR specificati nella bitmask. La seconda fa esattamente l'opposto ma in più restituisce errore se i valori dei PCR, usati per firmare, non coincidono. Il compito del sistema operativo, una volta effettuato il primo boot, è quello di sigillare dei dati (volendo anche casuali) e memorizzarne il risultato sul disco. Nei boot successivi, se si riesce a desigillare il file, vuol dire che il sistema è integro altrimenti qualcosa è cambiato.

La sequenza di misurazioni/esecuzioni è rappresentata da questa figura:

ChainTrust (fonte)

dove in cima alla chain of trust c'è il CRTM. Il CRTM quindi, insieme al chip TPM, è di fondamentale importanza per l'integrità di una trusted computing platform. Un sistema che rispetta le specifiche TCG deve garantire una protezione "assoluta" contro attacchi software contro il TPM e CRTM. Per quanto riguarda la protezione da eventuali attacchi hardware cito da Trusted Computing Platforms:

The TCPA specification requires a limited but specified amount of physical protection for the TPM and CRTM. This reflects reality. In many cases it is impractical to provide a high level of physical protection, and in any case, it is impossible to provide absolute physical protection. If someone wants to physically interfere with a TPM and CRTM, they can (given enough time and money), and there is nothing that can be done to stop them.

Nella maggior parte dei sistemi TCP odierni (come il mio Vaio di lavoro) il CRTM è memorizzato in una parte non modificabile via software del BIOS. Le specifiche prevedono che - laddove il CRTM sia in qualche modo aggiornabile - possa essere aggiornato solo dal vendor del sistema (nel mio caso Sony). Le specifiche tuttavia non prescrivono in nessuna maniera come e dove implementare il CRTM, infatti in questo paper viene preso in considerazione un approccio diverso e proposta una soluzione con il CRTM embedded nello stesso TPM su cui non esprimo nessun parere personale. Nel prossimo post ho intenzione di entrare nei dettagli implementativi della funzionalità bitlocker di Vista che fa uso del TPM laddove presente.

Linko-bibliografia:

Trusted Computing Platforms
TCG Architecture Overview
TCG specifications for PC
How To Build Hardware Support For Secure Startup
A New Approach of TPM Construction Based on J2810
Trusted Computing for Linux
TCPA Misinformation Rebuttal
Trusted Computing Platform
The CRTM and authenticated boot process

-enjoy

Technorati tags: ,

La mia vita lavorativa con Outlook

Dec 4, 2007 - 0 comments - Archiviato in: #Aneddoti #Link #Recensioni

Giovy chiede: quante e-mail ricevete al giorno?

Questa è la statistica di ieri, lunedì, giorno piuttosto "moggio": 287Items  Di queste ben 165 risultano ad oggi non lette e probabilmente non saranno mai lette. Questo secondo numero è meno preoccupante di quello delle email importanti lette ma dimenticate, soprattutto se si aggiunge la mia carenza cronica di disciplina.

Eppure Outlook, che è molto di più di un client di posta elettronico arrivando a scandire l'andamento delle giornate lavorative del campus, ha tutti i mezzi tra search folders, plugins, rules, flags e compagnia bella per venirmi incontro. Ciononostante ogni sera vado a casa con il senso di colpa per qualcosa d'importante sfuggito tra i meandri della mia memoria. Ieri è successo davvero:

revoked

e così oggi sto fermo un giro di lancetta di minuti e mi metto qui a scrivere cosa non si deve fare e cosa vorrei fare meglio, riassunto nel consiglio di due libri fichissimi tra il predicare bene e il razzolare male:

  1. Getting things done conosciuto ormai con l'acronimo GTD
  2. Never check E-mail in the morning

Interessante la combinazione GTD + outlook che si può ottenere integrando ClearContext. Sto pensandoci davvero di farmelo finanziare in questi giorni di e-mail perdute.

Tornando alla questione originale: sul lavoro la mail e i meetings li ricevo realtime. Purtroppo molto spesso ad essere processate realtime sono le cazzate, a finire in coda dimenticatoio sono le cose importanti. L'email personale non la controllo quasi mai sul lavoro, tranne quella collegata al messenger solo perché "fa rumore"; a casa - per fortuna - ne ricevo così poca che il processing è quasi sempre immediato nonostante usi ormai 5 account diversi. Il "quasi" mi salva da eventuali reclami in commento a questo post! Smile

-quack

Technorati Tags: ,

Predicatori di Sofia

Dec 2, 2007 - 0 comments - Archiviato in: #Cazzate #Seattle e dintorni

Il quartiere 'storico' di Pioneer Square è uno dei pulpiti improvvisati preferiti dai predicatori ambulanti. Tra questi uno dei più eclettici ha deciso di tappezzare qualche parete della città con una foto di Sofia Loren:

Sofia

per predicare e ricordare al mondo la sua bellezza.

La teoria della long tail è applicabile anche alle religioni.

-quack

Technorati tags:

Time Machine vs Windows Backup

Dec 1, 2007 - 0 comments - Archiviato in: #Apple #Backup #Windows

windowsbackup vs Leopardtime

Questi giorni mi son ritrovato a leggere per caso un paio di post che ringuardano le funzionalità di backup di Vista e di Leopard. Siccome la questione mi riguarda da vicino (per colpa del mio NAS non ho ancora fatto un backup completo dei miei PC visto che il famoso NAS in questione non supporta file più grandi di 2GB) ed incuriosito da una domanda di FDG che chiedeva conferma sul fatto o meno che Time Machine faccia di più di Vista, ho deciso di raccogliere quanto finora trovato in giro e pubblicare questo post con delle conclusioni personali.

  • Guida completa alle tecnologie di backup di Windows Vista. La pagina spiega tutto quello che c'è da spiegare sulle varie funzionalità di backup di Vista e come interagiscono tra loro.
  • Descrizione del funzionamento Time Machine da parte di Ars Technica. Purtroppo è un link di "terze parti" ma mi sembra tecnicamente ineccepibile. Sul sito ufficiale di Apple ho trovato solo questo scarno link. Se qualcuno ha di meglio da linkare mi faccia sapere e aggiorno subito.
  • Infine qualcosa di più frivolo sull'origine - per me "dubbia" - del nome Time Machine. In Windows Server 2003 il nome in codice per le "Previous Versions" era timewarp come conferma questo post del solito Raymond Chen datato Settembre 2005; come dice Benigni, si fa per scherzare!

Riassumo brevemente quali mi sembrano i vantaggi della soluzione Windows ordinati in base ad un mio personalissimo criterio di importanza:

  1. La funzionalità di base, quella relativa alle Previous Versions, non richiede un supporto esterno per essere disponibile
  2. Il backup differenziale di Windows è a livello di "blocco" anziché di file; questo riduce enormemente la quantità di tempo e di spazio necessaria per i backup differenziali, soprattutto in presenza di file enormi come possono essere i vari hard disk virtuali
  3. il backup di Windows usa formati standard come file zip per la modalità file-backup e vhd per la modalità full-pc che possono quindi essere salvati su qualsiasi supporto (DVD, hard-disk esterno, NAS, WHS, ecc.)
  4. è possibile il ripristino di un backup completo senza sistema operativo tramite il windows recovery environment

Invece questi mi sembrano i vantaggi della soluzione Apple:

  1. Il restore avviene, dal punto di vista dell'interfaccia, a livello applicativo laddove l'applicazione supporta Time Machine; immagino, ma non voglio fare il Gutmann della situazione, che per essere compatibile con Time Machine l'applicazione debba "registrarsi" in qualche modo
  2. La UI di ripristino, proprio per quanto riguarda il punto precedente, è davvero semplice; non mi riferisco agli effetti speciali, che dopo un paio di ripristini diventerebbero una scocciatura, ma ai comodi pulsanti e alla comoda time line.

Voglio infine far notare che alcune feature del backup di Vista sono disponibili solo nelle edizioni più avanzate (Premium, Business e Ultimate) ma che sono disponibili anche su tutte le altre - incluse versioni precedenti come XP - con il client di Windows Home Server (che è molto simile, se non identico, alle funzionalità di backup completo di Vista).

Riassunto: ho l'impressione che guardando le feature in modo più o meno soggettivo a fare molto di più sia il sistema di backup incluso in Windows Vista; io odio gli hard-disk esterni e adoro la possibilità data dalle Previous Version anche in assenza di backup mentre non ho bisogno di una interfaccia a prova di idiota per fare ripristino, quindi almeno sulla carta i vantaggi della soluzione Windows sembrerebbero superiori. Anche Oliver Rist sulla questione backup sembrerebbe sarcasticamente concordare con me dalle pagine di PC Magazine:

So why doesn't Time Machine do block-level backups? I have no idea. Apple controls the file system. It controls the backup application. Generally, that's all you need. Maybe Apple couldn't spare the programmers working on the hugely important Star Wars core animation splash-screen project.

Altre esigenze potrebbero però portare a preferire Time Machine.

-quack

Technorati tags: , ,

Sparalink #4

Nov 30, 2007 - 0 comments - Archiviato in: #Cazzate #Link

  • Quelli "sicuri": cosa si ottiene combinando quelli del browser più sicuro al mondo insieme allegriaa quelli con la security in mind sin dal primo giorno? Si ottiene l'unico browser al mondo vulnerabile al baco di QuickTime . Come direbbe Mike Buongiorno: allegria!
  • Bachi conosciuti: un giorno racconterò la storia del baco internamente più famoso del Framework 1.1; nel frattempo mi consolo con il fatto che "qualcuno" rilascia un update software pur sapendo che potrebbe rendere un sistema in-operativo; quando l'unica soluzione è cancellare tutti i dati senza neanche "spostarli"
  • I migliori clienti di Vista? indovinate su cosa gira usa il 10% delle copie retail di Vista (secondo qualcuno circa 2,4 utenti visto che in tutto sono state vendute 2 dozzine di copie)? Lo dice Joe Wilcox. In tutta onestà non so se sia un bene o un male. Smile
  • È uscito Visual Studio 2008 già da una settimana. La feature più interessante del C# 3.0? Linq, ancora meglio Linq2SQL degno erede di ObjectSpaces. Scott Guthrie parla nel suo blog di come una LINQ diventa SQL.

-Allegriaaaaaaaaaah!

Metodi dinamici di delegazione

Nov 29, 2007 - 0 comments - Archiviato in: #Codice

Questi giorni sto giochicchiando con i DynamicMethod di .Net e ho pensato di condividere. Lo scopo di tali classi - conosciute anche come lightweight code generation - è di generare codice IL (il P-code di .Net) dinamicamente. Accoppiandoli con i metodi delegate (puntatori a funzione) si possono fare cose veramente interessanti. Gli esempi che seguono sono alquanto banali (il classico "Hello World"), ma con la LCG si possono fare cose moooolto deliziose: esempio 1, esempio 2.

Altrettanto interessante è il funzionamento della Virtual Machine stack based di .Net: il set di istruzioni è documentato qui ma se si vuole giocare seriamente a questo tipo di giochi pericolosissimi (roba impossibile da debuggare capace di creare codice a fungo atomico in men che non si dica) consiglio _IL_ testo di riferimento che è "Compiling for the .Net Language Runtime" il cui unico neo è quello di essere basato sulla CLR 1.0 (niente template e altre corbellerie "moderne"). Volendo, la via più breve per capire l'IL da generare, è l'uso "a posteriori" di reflector.

Ed ora gli esempi, giusto per stimolare l'appetito:

using System;
using System.Reflection;
using System.Reflection.Emit;

public class TestClass
{
    string message;
    public delegate void TestMethod();
    TestMethod myTestMethod;

    public TestMethod MyTestMethod
    {
        get { return myTestMethod; }
    }

    public TestClass(string aMessage)
    {
        this.message = aMessage;
    }

    public void RealTestMethod()
    {
        Console.WriteLine(this.message);
    }

    public void CreateMethod()
    {
        /*
         * this is equivalent to:
         * Console.WriteLine("Hello world!");
         * there is no access to object members 
         * so the method can be declared as 'static'
         * 
         */
          
        // declare the method signature as void HelloWorld()
        //
        DynamicMethod dm = 
            new DynamicMethod("HelloWorld",  // name of the method
            typeof(void),           // return type
            new Type[] { },         // input types
            typeof(TestClass)); // class to 'attach the method to
        ILGenerator il = dm.GetILGenerator();

        // create a constanst string using the 
        // message and put it on the stack
        il.Emit(OpCodes.Ldstr, this.message);

        // invoke Console.WriteLine(string)
        // since it's a static method it only 
        // requires a string (the one on the stack)
        il.Emit(OpCodes.Call, 
            typeof(Console).GetMethod("WriteLine", 
            new Type[] { typeof(string) }));

        // return
        il.Emit(OpCodes.Ret);

        // create a delegate
        this.myTestMethod = 
            (TestMethod) dm.CreateDelegate(
            typeof(TestMethod)
            );
    }


    public void CreateMethod2()
    {
        /*
         * this is equivalent to:
         * Console.WriteLine(this.message);
         * there is access to object members 
         * so the method cannot be declared as 'static'
         * 
         */

        // declare the method signature as 
        // void HelloWorld(TestClass implicitThis)
        // it will be mapped to 
        // TestClass.HelloWorld() as instance method
        //
        DynamicMethod dm = new DynamicMethod(
            "HelloWorld",                      // name of the method
            typeof(void),                      // return type
            new Type[] { typeof(TestClass) },  // input types
            typeof(TestClass));     // class to 'attach' the method to
        ILGenerator il = dm.GetILGenerator();

        // puts the arg_o (this) on the stack
        il.Emit(OpCodes.Ldarg_0);

        // puts (POP)->message on the stack
        il.Emit(OpCodes.Ldfld, typeof(TestClass).GetField("message", 
            BindingFlags.NonPublic | BindingFlags.Instance));

        // invoke Console.WriteLine(string)
        // since it's a static method it only 
        // requires a string (the one on the stack)
        il.Emit(OpCodes.Call, 
            typeof(Console).GetMethod(
                "WriteLine", new Type[] { typeof(string) }
                )
            );

        // return
        il.Emit(OpCodes.Ret);

        // create a delegate
        this.myTestMethod = 
            (TestMethod)dm.CreateDelegate(typeof(TestMethod), this);
    }
}


public class HelloWorld
{
 
    public static void Main(string[] args)
    {
        TestClass myTestClass = new TestClass("Hello World!");
        myTestClass.CreateMethod();
        myTestClass.MyTestMethod();

        myTestClass.CreateMethod2();
        myTestClass.MyTestMethod();
    }

}

-quack

Burocrazie

Nov 28, 2007 - 0 comments - Archiviato in: #Cazzate #Seattle e dintorni

Oggi nella casella della posta ho trovato una simpatica sorpresa: la patente americana rinnovata. Non che sia una patente grande sorpresa perché il "rinnovo" - per la prima volta - l'ho fatto online alcuni giorni fa. Però mi ha portato a riflettere della differente burocrazia tra il paese che mi ospita e l'Italia.

Innanzitutto non so neanche se la mia patente italiana è scaduta o meno: questo perché la scadenza del documento italiano è legata alla data di rilascio e di quella data mi ricordo a malapena l'anno. Il documento americano invece, intelligentemente, scade il giorno del proprio compleanno. Vuoi mettere tra le due date quale sia la più facile da ricordare?

Poi ci sono i costi: 25$ tutto compreso pagabili via carta di credito. Da aggiungere la completa informalità della lettera che mi invita a rinnovare il documento con tanto di torta con le candeline e scritta con un linguaggio ultra-semplice. In Italia, tutte le comunicazioni ufficiali, sono seriose e scritte in gergo burocratico.

Infine la comodità: tra rinnovare online e fare 30-40 minuti di fila allo sportello non c'è proprio paragone. Tanto in tutti e due i casi la patente verrà comunque spedita a casa per verificare l'indirizzo fornito. Una delle tante cazzate geniali!!

-quack

Technorati tags:

Venerdì nero

Nov 23, 2007 - 0 comments - Archiviato in: #Cazzate

Il giorno dopo il Thanksgiving (che appunto è il quarto Giovedì di Novembre) si chiama Venerdì Nero. È un giorno in cui tutti i commercianti fanno sconti pazzeschi su alcuni articoli molto appetibili come regalo di Natale. La teoria più accreditata su tale nome fa coincidere con il Venerdì nero, sia per gli sconti che per la posizione strategica nel calendario, il giorno in cui le attività commerciali raggiungono "la parità". Tutti i giorni precedenti sono considerati "rossi" quelli successivi "verdi". I negozi aprono molto presto (Fry's apriva i battenti alle 5 e mezza) e la gente fa ore ed ore di fila per accaparrarsi gli articoli più convenienti. Dietro questa manovra molto consumer friendly parrebbe nascondersi un interesse molto subdolo dei commercianti: pare che in base ad una legge ammerigana, se si restituisce un prodotto senza essere provvisti di scontrino, il commerciante ha il diritto di restituire il prezzo storicamente più basso durante i 30 giorni precedenti alla restituzione; con un paio di giorni di supersaldi strategicamente piazzati (come appunto il Venerdì Nero) è possibile garantirsi un interesse economico non trascurabile su tutti i regali di Natale - ovviamente senza scontrini - non perfettamente azzeccati! Quanto sia vera questa storia, non lo so neanche io: mi è stata raccontata da Forrest - mio collega quasi-onnisciente - tanto, troppo tempo fa

Questo è il primo anno in cui ufficialmente ho deciso di fare shopping. Attirato a Fry's come una allodola allo specchietto da un paio di offerte molto interessanti: combo Intel QuadCore (Q6600) + scheda madre SiS (di quelle che danno i problemi coi mouse su Ubuntu Big Smile) a 200$, prezzo di molto inferiore al costo del processore soltanto; drive USB da 8GB a 30$ (con rebate!); drive da 4GB a 13$ (sempre con rebate). Purtroppo siamo arrivati tardi (circa 10AM): l'affare più goloso (il processore) era andato già esaurito. La fila alle casse, che si estendeva labirinticamente per tutto il negozio, stimabile in circa 120 minuti di attesa non è valsa la pena per gli altri deal (sono un freddo e cinico calcolatore).

E così io e Beppe, anche lui alla prima esperienza di VN, abbiamo abbandonato sconsolati il paradiso di Fry's alla ricerca di altri lidi. Siamo approdati da Circuit City che aveva una super offerta su Guitar Hero II + chitarra per XBOX 360 a 60$.

GuitarHero2

Ormai scettici ci siamo avventurati lo stesso ma per fortuna, vuoi perché tutti magari erano da Fry's, ne abbiamo trovata una (ce n'erano diverse). Per par condicio abbiamo pensato anche alla formichina, ormai dietologa iscritta all'albo, con una confezione di Dance Dance Universe corredata di tappeto sensore allo stesso prezzo nonostante l'adesivino indicasse 20$ in più. Per la prossima stagione festiva siamo ormai ben attrezzati. A questo punto, la foto commemorativa di Beppe in versione rock-star, non poteva mancare:

BeppeRockStar

Un paio di canzoni ed il dolore del mancato (?) affare sul processore è sfilato via.

Enjoy!

Technorati tags:

Happy turkey weekend

Nov 22, 2007 - 0 comments - Archiviato in: #Cazzate

turkey

No c'è un refuso. Parlo di questo "turkey":

turkey

P.S. il weekend comincia oggi.

-quack

Brevetto ep287578

Nov 20, 2007 - 0 comments - Archiviato in: #Codice #Software

Il brevetto ep287578, non so se sia un numero ufficiale ma come titolo fa figo, è quello considerato come il "brevetto base MP3".musical_note
Mai più che mai vale il disclaimer quello che segue è farina del mio sacco personale.

La mia microanalisi che segue si basa su una voce wikipedia per un motivo semplice: se wikipedia su questi articoli fosse di parte penderebbe dal lato della "fondazione". Cominciamo dal LAME. In passato è stato detto che il codec LAME è "brevettualmente pulito" in quanto non usa l'implementazione di Fraunhofer. Wikipedia è abbastanza chiara, nonostante l'uso del condizionale:

Like most (if not all) MP3 encoders, LAME may implement technology covered by patents owned by the Fraunhofer Society and other entities. The developers of LAME do not license themselves the technology described by these patents. Distributing compiled binaries of LAME, its libraries, or programs which are derivative works of LAME in countries which recognize those patents, may be considered infringing on the relevant patents.

Il codec LAME potrebbe infrangere il brevetto e gli sviluppatori non ne hanno mai comprato la licenza che lo ricopre. Gli sviluppatori di LAME, ignari su tale infrazione, danno però un consiglio abbastanza chiaro:

they advise obtaining a patent license for any relevant technologies that LAME may implement before including a compiled version of the encoder into a product

In poche parole, se volete compilare e ridistribuire il codec, compratevene una licenza (come hanno fatto quelli di Linspire). Ma perché secondo tali sviluppatori non c'è nessuna infrazione? Semplice. I brevetti sono considerati documenti pubblici e come tali consultabili e - immagino - ripubblicabili liberamente. Probabilmente nessuno mi vieta di prendere un brevetto scritto in Inglese, tradurlo in Ostrogoto, e pubblicarlo sul mio blog. Quello che hanno fatto gli sviluppatori del codec LAME è altrettanto semplice, solo che invece dell'Ostrogoto, è stato scelto un linguaggio di programmazione e la "traduzione" pubblicata sul loro sito. Geniale vero? Per gli increduli, la stessa fonte recita:

The LAME developers state that since their code is only released in source code form, it should only be considered as a description of an MP3 encoder, and thus does not infringe any patent by itself when released as source code only.

Una ulteriore nota: i brevetti - in quanto pubblici - non impediscono assolutamente la libera circolazione della conoscenza come qualche crociato vuole far credere. Chiunque può scegliere un brevetto e implementarselo per uso personale (o compilarsi il codec a piacimento). Quello che non si può fare con i brevetti - e qualcuno mi corregga se sbaglio - è ridistribuire commercialmente prodotti che ne fanno uso nei paesi che riconoscono tali brevetti senza pagare la licenza all'intestatario del brevetto. Ops.

Ora gli sviluppatori di LAME hanno un senso dell'ironia formidabile (al mio paese si userebbe una espressione colorita che coinvolge due parti anatomiche ben distinte): hanno protetto la loro "traduzione" di qualcosa che non gli è mai appartenuto con la licenza LGPL. Per cui Sony, che del brevetto sugli MP3 avrà licenziato milioni e milioni di copie ma ha deciso di usare l'implementazione LAME, è stata chiamata in causa per adempiere agli obblighi della licenza LGPL:

In November, 2005 there were reports that the Extended Copy Protection software included on some SONY Compact Discs includes portions of the LAME library without complying with the terms of the LGPL.

Morale della favola: scherza con i santi brevetti, ma lascia stare i fanti le licenze. Aggiungo: nel frattempo occhio a coloro che si professano "maestri di etica".

-quack

P.S. scusate le eventuali ripetizioni; spero che questo sia il post tombale sulla questione "brevetto MP3" e sul perché penso la scelta di Canonical sia filosoficamente ma anche pragmaticamente sbagliata.

Sparalink #3

Nov 19, 2007 - 0 comments - Archiviato in: #Privacy #Security

buona settimana, ne parliamo presto!

Technorati tags: ,

Picchio De Sisti

Nov 18, 2007 - 0 comments - Archiviato in: #Cazzate #Video

Domani (lunedì) lo faccio: gli spezzo anch'io la noce del capocollo Big Smile. In "attesa dell'allenatore del pallone 2"

-quack

P.S. il mio De Sisti è qualcuno che ha bruciato una settimana di lavoro di due persone. Big Smile

Convegno Net&System Security

Nov 18, 2007 - 0 comments - Archiviato in: #Security

Se la sicurezza informatica vi appassiona e siete a Pisa e dintorni (con dintorni = raggio di 500 km!), non perdetevi assolutamente il V Convegno Net&System Security.

Il programma è davvero da leccarsi i baffi.

-quack

Technorati tags:

Seattle skyline

Nov 17, 2007 - 0 comments - Archiviato in: #Seattle e dintorni

Turista per caso, mi son concesso diversi giorni fa qualche foto dello skyline di Seattle al crepuscolo, scattata con una piccola compatta (la Exilim Z-60 rosso Ferrari della formichina).
Sarò pure di parte, ma mi sembra tra i più belli del mondo. A sinistra campeggia lo Space Needle, a destra in estrema lontananza si intravede la maestosità del Mount Rainer.

SeattleSkyline

Ci sarebbe da mostrare davvero tanto di queste parti: il main campus (per il nonno: sapevi che ora si è aggiunto "Alcatraz"?), le cascate, il Puget Sound. Per questo tanto vale una categoria apposita: "Seattle e dintorni".

-quack

Technorati tags:

Google sussidiaria di Microsoft

Nov 16, 2007 - 0 comments - Archiviato in: #Cazzate #Microsoft

MSGOOGLE

Tempo fa, quasi un mese per l'esattezza, mi veniva riportato questo illuminante pezzo di informazione (sono masochista, lo ammetto):

Microsoft, attraverso una sua sussidiaria, avrebbe fatto causa a Linux(*) per violazione di brevetti.

Qualcuno l'aveva addirittura definita "SCO 2 la vendetta".

I fatti sono questi: Acacia, la summenzionata "sussidiaria" di Microsoft, avrebbe fatto causa ad un paio di vendor Linux (Red Hat, Novell) per il brevetto sui "Virtual Desktop". Apple, che nella nuova versione di MacOS include tale tecnologia, aveva a riguardo capitolato e raggiunto un accordo extra-giudiziario (fonte).

Il ragionamento fatto per stabilire che Acacia è sussidiaria di Microsoft è semplice. Alcuni pezzi grossi di Microsoft (tra cui Brad Brunnell, fonte) avrebbero lasciato l'azienda per andare a lavorare in Acacia giusto qualche giorno prima che Acacia intentasse causa ai vendor Linux (tra cui Novell; facilissimo immaginare il flaming seguito dal fatto che Novell avesse per di più firmato l'accordo brevettuale con MS). Quindi se il VIE (very important employee) "X" lascia di tronco l'azienda "Y" per passare all'azienda "Z", allora si può affermare con "certezza" che l'azienda "Z" è sussidiaria dell'azienda "Y".

Sostituendo "X" con Kai-Fu Lee, "Y" con Microsoft e "Z" con Google, si ottiene appunto che "Google è sussidiaria di Microsoft", cvd.

La realtà, come al solito, è molto diversa: le due aziende, a parte qualche VIP transfugo, non hanno niente tra cui spartirsi tant'è vero che Acacia ha fatto precedentemente causa a Microsoft per quanto riguarda SuperFetch e una non ben specifica feature di encryption (fonte, seconda fonte)

A dirla tutta il sillogismo (?) banale in tutti i sensi ha tratto in inganno tanti Giornalisti. Molti - correttamente - hanno poi rettificato. Dopo un mese qualcuno invece ha ritenuto lasciare le cose come stanno, vuoi mettere la spettacolarità di un titolo sul genere "Microsoft contro Linux"? Alla luce delle discussioni di questi giorni mi sembrerebbe corretto un buon uso della netiquette e notificare l'autore via commento. Trattandosi di un Savonarola, tra l'altro pure precedentemente ingrato, mi auto-confesso che non mi sento in colpa se stavolta passo: per l'autore un'ennesima occasione persa per stare zitto. E scusate se sono "cattivok"!

-quack


(*) Ci sarebbe da notare la sottigliezza dell'uso di Linux al posto del nome dei vendor per far sembrare la cosa ancora più cattiva.

L'amico invisibile

Nov 15, 2007 - 0 comments - Archiviato in: #Cazzate

invisible_manParlando di interviste, mi è venuto in mente un altro aneddoto. Non so quanto sia leggenda e quanto sia realtà e siccome è molto buffo ma verosimile lo racconto.

Una volta pare che sia stato "intervistato" una persona che rispondeva alle domande dopo essersi consultato con un amico invisibile. La cosa strabiliante è che le risposte fossero eccellenti: impossibile sospettare un imbroglio wireless in quanto accaduto tanto tempo fa. Ma la cosa più buffa è stato il finale della storia: ha rifiutato la proposta di lavoro perché il suo amico invisibile non era d'accordo.

Ancora oggi, quando mi viene in mente, rido da solo come un cretino.

-quack

Technorati Tags:

Interviste moderne

Nov 14, 2007 - 0 comments - Archiviato in: #Cazzate #Codice

Accadde veramente, in quale punto dello spazio-tempo è poco rilevante:

Intervistatore: mi spiegheresti come districarsi con la concurrency nel caso di una WebApp che accede ad un DB in scrittura (tipo accenni alla optimistic e pessimistic concurrency)?
Addetto: [blateramento di 5 minuti, nessun accenno alle due strategie, una menzione del locking del codice nel middle-tier]
Intervistatore: vabbé, io avrei fatto così (mostra un SQL UPDATE statement alla lavagna).
Addetto: {faccia perplessa}
Intervistatore: ok, sei familiare con gli alberi binari?
Addetto: veramente no...
Intervistatore: {faccia perplessa} vabbé te ne disegno uno io, scrivimi un algoritmo che fa blablabla
Addetto: veramente non sono familiare con gli alberi binari
Intervistatore: {faccia perplessa} vabbé passiamo alle liste linkate. Data questa lista mi scriveresti un algoritmo che fa blablabla?
Addetto: ecco però mi manca questa informazione
Intervistatore: ti dico che non serve, infatti potresti {suggerimento 1}
Addetto: ecco però mi manca questa informazione (quella di prima)
Intervistatore: ma potresti {suggerimento 2}
Addetto: ecco però mi manca questa informazione (sempre quella di prima)
Intervistatore: ma potresti {suggerimento 3, ormai soluzione completa}
Addetto: si ma mi manca questa informazione (ancora quella di prima)
Intervistatore: ma potresti {scrive l'implementazione della soluzione completa - in tutto tre righe tre di codice - alla lavagna}
Addetto: {faccia perplessa} eh ma non so se funziona...

-quack

It's alive

Nov 12, 2007 - 0 comments - Archiviato in: #Microsoft #Software

Frankenstein (fonte dell'immagine)

È finalmente stata rilasciata la versione 5.0.2 (o meglio 5.0.5428.1056) del Microsoft Application Compatibility Toolkit, mirata a risolvere alcuni piccoli ostacoli per la customer adoption (pare che il PM nel momento della presentazione delle 10 top feature della nuova versione sia stato interrotto da tre fragorosi applausi prima che arrivasse a parlare della feature numero 4).

Motivo d'orgoglio è anche il fatto che questa versione, come un po' anche la precedente, l'ho shippata da lead visto che - dopo 9 anni - mi hanno quasi convinto a fare il grande passo; e che il codice ora giri su .Net 2.0 anziché 1.1

Se mi capita mi farebbe piacere parlare di qualche dettaglio tecnico interessante che riguarda il C# e l'accesso ai dati o sulle pene del dev-lead (caporale) confrontate con quelle del soldato semplice: roba da geek. Purtroppo sono ancora in arretrato con le conversazioni sul TPM, ma per fortuna ho buone notizie: uno dei libri di bibliografia è in arrivo. Eureka!

-quack