A Ovest Di Paperino

Welcome to the dark side.

  • Fuor di finestra

    Non sono superstizioso ma certi messaggi hanno ben poco di subliminale:

    3 corvi

    -quack

  • Saluti da

     CartolinaCartolinaBack -quack

    P.S. Quanno ce vuo’, ce vuo’….

  • Blast from the Past

    Il film omonimo racconta la storia di un ragazzo cresciuto per 35 anni Blastin un rifugio anti-atomico in quanto i suoi genitori scambiano un piccolo incidente aereo per un attacco nucleare durante gli anni della guerra fredda. Una delle figure cruciali è il padre paranoico che, scoperta la verità, non si arrende al fatto che la realtà è ben diversa da quella immaginata nel bunker e che la guerra fredda è finita da un pezzo.

    Di personaggi così anacronistici ce ne son tanti: Fidel Castro o il nostro amatissimo Bertinotti (l’unico comunista al mondo con cappotti di cashmere e la ‘r’ moscia). E restando in campo informatico il mitico Richard Stallman, gran Visir delle cicale.

    Mentre lui dichiara guerra a zanzare e moscerini come nel mitico film Due Mafiosi contro Goldginger, il resto del mondo, quello che lavora, continua a produrre trattati di pace su trattati di pace.

    E se per i due capi politici ormai nel dimenticatoio trentacinque anni non sono neanche bastati, mi rimane da chiedermi se per Stallman in un arco di tempo equiparabile arriverà prima l’oblio o il successivo gradino di illuminazione. Si aprono le scommesse, è lunedì e mi sento cattivo.

    -quack

  • Stickeria

    Appeso sulla mia porta d'ufficio:

    BingI bing. U bing?
    She bangs!!

    -quack

  • Game nostalgia quiz

    Qualcuno saprebbe riconoscere il gioco per DOS raffigurato in queste immagini?

    Quizillo Quizillo2

    Nessun premio, solo un po’ di nostalgia…

    -quack

  • Risorse per il WebMaster .Net #1

    Sparo un po’ di link che ho trovato molto interessanti per chi vuol giocare con ASP.Net e jQuery.

    Throbblers e generatori:

    ICONE:

    -quack

  • Endgame

    Cosa succede gli ultimi giorni prima del rilascio? Perché secondo alcuni l’RTM non è un punto nel tempo ma un intervallo di tempo? Provo a dare qualche risposta.

    Chi controlla il rilascio di un software è principalmente il test team che firma (col sangue!) sulla qualità del prodotto ed infatti il test team è anche denominato Quality Assurance team. Le fasi di un prodotto si distinguono grosso modo in sviluppo, stabilizzazione e rilascio. Lo sviluppo introduce modifiche che causano bachi: questo di solito è tollerato entro certi limiti e tali limiti durante lo sviluppo di Windows 7 sotto la guida di Sinofsky sono stati ridotti di parecchio. Durante la pianificazione del prodotto si scelgono delle cut-off dates (in genere milestone) e se la feature non ce la fa ad essere codificata in tempo è fuori dal prodotto (feature fantasma, di cui pochissimo si sente parlare in giro).

    Successivamente, la fase di stabilizzazione è quella in cui ci si concentra per la sistemazione dei neo-introdotti bachi (o qualche vecchio baco stagionato). I test automatizzati vengono completati e se qualche team dichiara di avere bisogno di più tempo per sistemare i bachi o completare il testing, la feature viene “processata”: in base al tempo richiesto, all’importanza della feature ed altri fattori astrologici viene deciso se la feature viene tagliata (postposta a nuove versioni) o meno valutandone il rischio di far slittare il rilascio. Ovviamente nel frattempo il test team individua nuovi bachi, i developer sistemano e ogni giorno viene generata una nuova build. Man mano che il tempo passa la barra dei bachi sale di livello: ad esempio si passa da “ogni team decide per se” al “tell mode” dove ogni team dichiara la propria mano all’ask mode, dove ogni team chiede il permesso di poter sistemare certi tipi di baco. Durante l’ask mode poi la barra può continuare a salire: alcune priorità vengono automaticamente scartate (esempio: bachi di priorità 3 o più bassa), altri bachi vengono “processati” e così via. Ovviamente trattasi di esempi, ma la costante è il fatto che periodicamente la bug bar viene alzata (o abbassata se si pensa ad una gara di Limbo). Durante tutto questo tempo la differenza tra una build e l’altra, a livello di bit, è così grande che gli stress test assumono un significato diverso da quello più tradizionale di stress test. Si cercano bachi che si verificano solo dopo lunghe sessioni di azioni ripetitive o meno (ortogonalmente: artificiali o meno) ma molti di questi vengono dichiarati “automagically fixed”.

    Raggiunta la stabilizzazione comincia il vero e proprio rilascio: questo avviene con la prima build “abbastanza buona” che viene dichiarata escrow e si entra nell’escrow period, ovvero un periodo di tempo in cui quella build è garantita per la maggior parte delle funzionalità di essere equivalente a quella finale. Gli stress test entrano nel vivo, i bachi importanti continuano ad essere sistemati, ogni giorno viene generata automaticamente una nuova build e tutto fila liscio fino all’accadere di due possibili eventi:

    1. nessun nuovo baco viene trovato
    2. viene trovato un baco importante e con un impatto così elevato che bisogna resettare l’escrow, ovvero non si può più garantire con una certa confidenza statistica che la build che contiene la fix sia funzionalmente equivalente alla precedente, baco a parte of course

    Nella condizione 2. il ciclo si ripete e si continua fino a quando non si esce dal ciclo tramite la condizione 1.

    A questo punto la build è QUASI quella finale. Vengono sistemate le ultime cose (numero della build), viene interrotto il processo di generazione giornaliera delle build (nel ramo RTM of course) e si invita i vari team a fare il sign-off dei propri componenti. Il sign-off consiste nel fare le ultime verifiche durante le quali qualche baco potrebbe sempre fare capolino. Nel caso il baco sia molto importante sarà necessario generare una nuova build e in alcuni casi annullare il sign-off già cominciato. Il sign-off può richiedere un lasso di tempo che va da qualche ora per i prodotti più semplici a qualche giorno o settimana: si tratta di una vera e propria firma su un modulo Web e tutte le eventualità del caso possono accadere (malattie, assenze, ecc.). Ovviamente si può decidere che per alcuni bachi non vale la pena generare una nuova build oppure che vale la pena oppure che si approfitta della necessità di una nuova build richiesta da un altro team (piggy-back) per schiacciare gli ultimissimi bachi. Quando tutti i responsabili firmano il sign-off è fatta; alcuni stappano lo champagne, altri come il sottoscritto escono in corridoio a fare il ballo della banana.

    Ora dovrebbe essere chiaro perché una build con qualche numero cabalistico (es. 7600) è condizione necessaria ma non sufficiente per la RTM; dovrebbe anche essere chiaro perché è impossibile prevedere con determinata precisione la data ufficiale di rilascio: ogni previsione ha una componente di rischio non indifferente che può portare ad interpretazioni diverse; e dovrebbe essere anche chiaro perché la build RTM è sempre vecchia di qualche giorno nel momento in cui viene dichiarata tale.

    -quack

    P.S. quello che ho scritto è valido in generale

  • Onda d’urto

    In questi 2 o 3 giorni il blog ha subito una vera e propria onda d’urto causata dall’effetto a cascata di un paio di cosette:

    1. la ricerca del “baco” (un po’ stupida come definizione, I am sorry, ma tre tazze sono comunque state assegnate)
    2. un sovraccarico temporaneo
    3. una regressione in NVelocity

    La regressione è stata tutta colpa mia. Avevo già sistemato il baco ma non avevo pensato di proporre la patch; e così dopo aver aggiornato i sorgenti alla versione SVN, il baco è riapparso. Sto parlando di quell’errore di:

    [NullReferenceException: Object reference not set to an instance of an object.]
       Commons.Collections.LRUMap.IndexOf(Object key) +83

    Sono sicuro di averne già parlato in passato e si tratta di un baco veramente difficile da riprodurre (cercherò di farlo artificialmente) e per il quale stavolta ho sottomesso la patch ai canali ufficiali. Difficile da riprodurre perché richiede una specifica temporizzazione di eventi che avviene solamente sotto notevole carico. A questo proposito, non so se per qualche referral o per la visita predetta da EnricoC, ho notato un paio di cose estremamente strane. Il numero di pagine servite ieri era circa il doppio della media degli ultimi 30 giorni (7600 vs. 3800). La quantità di spam ricevuta via commento pari a 245 unità. Può sembrare poco ma il totale di spam auto-cestinato ricevuto fino a ieri è stato di 992 commenti, 850 dei quali precedenti all’introduzione dell’editor “grafico” che ha ridotto di parecchio anche l’arrivo di spam-bot. Staremo a vedere se l’andazzo continua e sicuramente darò un’occhiata attenta ai log “RAW” di IIS, solo per curiosità.

    Last but not least, ho scoperto il baco che affliggeva il modulo di invio di messaggi di posta. Usavo l’indirizzo email di chi mi scriveva come sender della mail e molto probabilmente GMail utilizza un sistema di autenticazione particolare che fa in modo che tutto quello che può sembrare spoofing, anche nel mio caso speciale di spoofing legittimo, venga taggato come spam. Almeno questo è quello che ho potuto dedurre dai log creati ad-hoc per la situazione: anche un altro lettore, con un account GMail, ha subito la stessa sorte; però per lo meno adesso posso replicare grazie appunto al tracing degli eventi.

    Ed il naufragar è tornato dolce in questo mar…

    -quack

    PS non è RTM, ripeto non è RTM

    Dimenticavo: grazie a tutti quelli che mi hanno segnalato il baco in forma pubblica e privata!

  • Anime in pena: Schmidt

    Nel campo dell’informatica ci sono personaggi che amo definire anime in pena: non sanno quello che vogliono fare, ma sanno chiaramente quello che vogliono disfare.

    Una di queste anime in pena è Schmidt, attuale CEO di Google. La biografia professionale di Schmidt è alquanto curiosa. A capo del team Java di Sun, grazie a questa tecnologia, ne diventa CTO.image

    Java, come il WWW nei piani di Netscape, doveva diventare secondo il suo ideatore la tecnologia ammazza-Windows. Write Once Run Everywhere era la promessa mirabolante di Java, promessa rivelatasi un po’ grossa e mai mantenuta, per lo meno in maniera così come era stata dipinta (le promesse di portabilità moderna sono nate contemporaneamente al linguaggio C di K&R).

    Su questo argomento sono stato sempre estremamente scettico anche perché quando si parla di applicazioni è istintivo per me pensare al mercato consumer (il mercato enterprise è una bestia con tante teste, lì il middle-ware come Java la fa da padrone). Il mio scetticismo è sempre stato rafforzato dall’atteggiamento di chi proprio con il middle-ware dalla notte dei tempi sogna di scalzare il dominio di Windows: il WEB, Java, Linux, AJAX, Flash, Google Gears; tutti ottimi strumenti ma, in un mercato dove scrivere applicazioni native può fare la differenza tra successo commerciale e dimenticatoio, hanno poca chance di diventare Game Changer technology.

    Ovviamente Java non ha mai raggiunto l’obiettivo ambizioso dichiarato (nessuno che mi venga a dire per carità che fu colpa dell’implementazione della JVM di Microsoft!), sul campo c’è stata pure una aspra battaglia legale e nel frattempo Schmidt è migrato per altri lidi. Dopo una parentesi in Novell, Eric è stato colloquiato e assunto come CEO di Google raggiungendo l’apice del suo successo almeno guardando il suo passato prossimo. Da allora sono cominciati una serie di sgambetti anti-Microsoft che, almeno secondo la mia umilissima opinione, non hanno portato nessun vantaggio apparente alla società di Mountain View; l’esempio lampante è Google Docs, che con il core business di Google ha meno attinenza del progetto di Google OS. Se quest’ultimo può essere visto come un tentativo di portare Google laddove non ci potrebbe arrivare, paradossalmente chi usa Google Docs è quasi costretto a stare online: dubito che dietro ci sia una strategia ad ampio raggio e come tale incomprensibile ai non adepti.

    Dal 2006 Schmidt siede anche nel consiglio di amministrazione di Apple, cosa che già nei giorni passati era entrata nell’occhio attento degli organismi di controllo del mercato americano. Con l’annuncio Vaporware di Google OS, la questione si è fatta estremamente delicata e più di qualcuno ha cominciato a chiedersi se sia ancora appropriato che Eric scaldi una poltrona nella board di Apple, altra società – guarda che  combinazione! – in forte competizione con Microsoft.

    Anche se da quanto ho scritto in questo post può sembrare che Eric mi stia antipatico, in realtà ultimamente per conflitto di interessi mi son ritrovato spesso a fare il tifo per lui. Coi prodotti “anti-microsoft” ha finito sempre per danneggiare molto la concorrenza microsoft spesso open source non riuscendo davvero a combinare più di qualche scompiglio nei mercati da 50% in su. Prima sourceforge (Google Code), poi Firefox (Google Chrome), ora Ubuntu (Google OS). L’aspetto più stupefacente però è il fatto che per Google ci sia sempre molta acclamazione da parte delle folle anti-microsoft-per-costituzione; nonostante Google sia oggi molto più Microsoft di quanto lo sia stata Microsoft dei “tempi bui”; un po’ mi aspettavo che il Vaporware ad orologeria fosse una pillola blu Wachowskiana, ma le reazioni in giro mi fanno capire che certa gente ci prova gusto a vivere a Wonderland. Ignorance is a bliss, no?

    -quack

  • Come si apre una banana

    Non lo sapevo neanche io che la linguetta di apertura fosse dalla parte opposta:

    Anche dalle scimmie c’è qualcosa da imparare.

    (notevole la stampa sui boxer dell’istruttore)

    -quack

  • Svendo Link – Luglio 2009

    I link di Luglio, come da cadenza mensile.vendesi

    1. Introducing Google Chrome OS, il post che ha iniziato tutto. Puro Vaporware in tante buone promesse (che schifo che sono i PC). La soluzione? Un’altro (altri) flavor di Linux, quanto basta per caricarsi e navigare. E pensare che credevo che Ubuntu fosse buono già. È una coincidenza che si chiacchiera che il rilascio alla manifattura di Windows 7 sia imminente? Se MS avesse chiesto a qualche sceneggiatore di Hollywood di scrivere un testo molto enfatico per il rilascio non avrebbe potuto chiedere di meglio.
    2. Altre chiacchiere su un presunto “big announcement” di Lunedì prossimo che parrebbe non si tratti di Windows 7.
    3. Storie di Build Numbers, raccontate da Larry Osterman
    4. Firefox si muove in direzione del Multi-Process browsing. Avrei sperato che la priorità fosse data al sandboxing ma a quanto pare l’approccio alla security di Mozilla è rimasto ancora reattivo più che pro-attivo. Forse non sono cresciuti con la pubblicità/slogan di Mentadent P.
    5. HTML 5: mentre ancora ci sono dubbi su come diavolo debba funzionare l’HTML 4, le commissioni sono già al lavoro sull’HTML 5. Nessun accordo però è stato trovato sul codec video “obbligatorio”. Roba da rimpiangere gli standard de facto.
    6. Microsoft chiarisce la posizione legale di Mono (o parte di). Mentre le formiche festeggiano, qualche cicala si prende qualche merito tirando fuori la teoria degli alieni. Sì, come no…
    7. A Seattle un giudice decide che gli IP non sono PII. In Europa si viaggia in verso opposto. Casini giuridici aspettansi.
    8. [BONUS] Charlie Miller scopre una vulnerabilità che permette di avere root access su un iPhone semplicemente mandando al malcapitato un SMS. La cosa è estremamente seria, un po’ come se qualcuno potesse formattare un PC mandando una mail che basta solo ricevere: senza leggerla, senza aprirla, senza cliccarla. Qualche fan, di quelli che comprano e consigliano mele perché coi PC si “acchiappano” virus, minimizza e consiglia di aspettare perché i termosifoni si sa che van bene per l’inverno. Aspettare??? Ma meglio buttare…

    -quack

    UPDATE: Tre commenti alla faccenda Google OS che vale la pena leggere:

    http://fakesteve.blogspot.com/2009/07/lets-all-take-deep-breath-and-get-some.html

    http://dashes.com/anil/2009/07/googles-microsoft-moment.html

    http://www.nytimes.com/2009/07/13/opinion/13cringely.html

    Di quest'ultimo occorre non farsi trarre in inganno dai primi paragrafi.

  • Caccia aperta

    <post_assolutamente_poco_serio>

    Mi sono accorto di aver trovato un baco in questo blog.

    Siccome è estate e per qualcuno è tempo di cazzeggio, ho pensato alla malsana idea di un “concorso a premiO” (uno solo!). Il premio è questa tazza da latte/capuccino/tè made in Redmond; più probabilmente in qualche provincia cinese ma venduto a Redmond:

    Geek mugUn paio di cose prima di dare il via alla caccia.

    IL BACO NON RIGUARDA LA PARTE DEI COMMENTI. PER FAVORE NON “SPAMMATE” CON COMMENTI (IN)UTILI.

    Regola 1: Un solo tentativo a testa. Se la risposta non verrà trovata darò _IO_ il via ad un altro giro di tentativi e così di volta in volta. Tentativi multipli (anche se mascherati) = squalifica.
    Il tentativo si può fare via commento o via email privata se proprio non si vuole de-lurkare.

    Regola 2: Non c’è nessun’altra regola però massima correttezza, ok?

    Suggerimento: il baco è nascosto tra le pagine (?) di questo blog. Altri suggerimenti potrebbero seguire.

    Pseudo-suggerimento: Vista la regola 1, suggerirei di pensare a lungo prima di tentare.

    </post_assolutamente_poco_serio>

    -quack

    P.S. il post è poco serio ma la tazza è reale. La spedirò a destinazione i primi di Agosto tramite le fantasmagoriche poste italiane. Se l’eventuale destinatario ci tiene all’anonimato si possono fare ulteriori arrangiamenti.

  • Baco solitario

    Le voci di corridoio online dicono che tra qualche giorno Windows 7 potrebbe essere rilasciato Urbis et Orbis in versione gold. Le voci ufficiali (seconda metà di Luglio) sono in linea con quelle di corridoio.

    Gli ultimi giorni del rilascio non sono più come quelli di una volta a causa dell'evoluzione dei processi di sviluppo: il rilascio di Windows NT 3.1 seguì una vera e propria Death March, meglio ancora Death Marathon. L'aria che si respira nel building 26 (e 37) sembra invece surrealmente silenziosa. Ma tecnicamente cosa succede? Lo raccontano Larry Ostermann e Raymond Chen in queste tre storie:

    1. Last Checkin Chicken
    2. Losing the game of the Last Checkin Chicken
    3. Thinking about the Last Checkin Chicken

    In Vista l'ultimo checkin spettò allo stack audio. Ma neanche questo bachino scherzava assolutamente. Stavolta sono io che ho trovato un baco, sempre nello stack audio, col mio netbook solamente pochi giorni fa. Un po' di analisi e la risposta è stata: There is an audio driver on WU that will fix this issue. Peccato! Ahem... volevo dire Great!

    -quack

    P.S. il post è stato scritto con il Blogoo Editor Online nuovo di zecca. La Beta sta arrivando.

  • Neologismi

    Altra storia ripescata dal repertorio scolastico, questa volta attingendo dagli anni del liceo.

    Avevamo un professore di filosofia alquanto precisino e a tratti un po’ cattivo che si chiamava Don Luigi in quanto sacerdote part-time. Un giorno gli è toccata una supplenza per la quinta ora d’italiano. Di solito le supplenze, in quanto gestite da professori di altri corsi, erano considerate da sempre tempo semi-ricreativo. abbacalamentoUna supplenza alla quinta ora doveva esserlo ancor di più. Invece il prof aveva tutta l’aria di approfittarne e partire con una lezione extra rispetto a quella impartita durante la prima ora, ma ciò sollevò immediatamente un coro di proteste. Il professore questionò: ma figliuoli volete passare quest’ultima ora con le bocche aperte come fulminati da abbaccalamento da foto scultura? Mimando con il volto la posa della foto. La classe scoppiò in una fragorosa risata e ci si accordò per 20 minuti di lezione extra ed i rimanenti di free time.

    L’abbaccalamento è descrivibile come quella sensazione a metà tra estasi e sorpresa di fronte ad un risultato (semi) inaspettato. Mi succede quando, scopiazzando tecniche di video-editing made in Hollywood sul filmino della comunione, si scopre che l’effetto calza come un guanto. O quando la combinazione di JavaScript + CSS + HTML funziona quasi come un WinForm. L’abbaccalamento purtroppo richiede più di qualche minuto per essere smaltito ed ha effetti negativi sulla produttività immediata ma molto positivi su quella a lungo termine. Il mio abbaccalamento è di solito accompagnato dall’espressione barese intraducibile Mò cè jè!

    ~quack

  • Regex & Lambda

    Prima della cura:

    private static string FormatLinks(string input, bool insideLink)

    {

        MatchCollection matches = inlineUrls.Matches(input);

        if (matches.Count == 0)

        {

            return input;

        }

     

        StringBuilder sb = new StringBuilder(input.Length * 2);

     

        int inputIndex = 0;

        foreach (Match tag in matches)

        {

            // add the normal text between the
            // current index and the index of the current tag

            if (inputIndex < tag.Index)

            {

                sb.Append(input.Substring(inputIndex, tag.Index - inputIndex));

            }

     

            string url = tag.Value;

     

            sb.AppendFormat(insideLink ? "{1}" :
             "<a target='blank' href='{0}'>{1}</a>", url,
             HtmlHelper.ReduceUrlLength(url, maxUrlLength));

            inputIndex = tag.Index + tag.Length;

        }

     

        // add remainder

        if (inputIndex < input.Length)

        {

            sb.Append(input.Substring(inputIndex));

        }

     

        return sb.ToString();

    }

    Dopo la cura

    private static string FormatLinks(string input, bool insideLink)

    {

        return inlineUrls.Replace(input, m =>

            {

     

                return String.Format(insideLink ?
               "{1}" : "<a target='blank' href='{0}'>{1}</a>",
                 m.Value,
                HtmlHelper.ReduceUrlLength(m.Value, maxUrlLength));

            }

        );

    }

    Interessante anche il fatto che, sebbene normalmente le lambda siano meno leggibili, nel caso specifico la riduzione di codice ridondante rende l’intenzione più evidente.

    -quack

    P.S. è un periodo in cui sniffo RegEx da mattina a sera; dienticavo: grazie all’enorme lavoro di refactoring i link nella nuvoletta sono ora cliccabili, per la gioia di Dovella

  • Anti-pattern: pausa caffè

    Durante i miei trascorsi universitari ho potuto notare che le “materie” che mi hanno arricchito di più sono sempre state quelle più orientate alla teoria che alla pratica. La cosa si è rivelata lampante durante la preparazione dell’esame di “Sistemi II” che richiedeva la presentazione di un caso di studio dall’analisi al codice finale. L’esame ha avuto risvolti tragicomici così eclatanti che sebbene abbia difficoltà a ricordare la data della seduta di laurea, non ho alcuna difficoltà a ricordare quel maledetto 28 Maggio 1993. Da allora ho sempre guardato con occhio estremamente critico a tutto quanto recepito durante quel corso e mi son ritrovato più che spesso a fare cose e riflettere: “quanto aveva torto quel professorone”. Insomma, la mia è diventata una vera e propria malattia, per fortuna ne sono conscio e penso di essere in via di superamento del trauma. Un episodio però mi ha colpito in maniera positiva ed è ritornato alla mente ieri. Assistevo all’esposizione di un collega (quanto ci piaceva appellarci così) e al fatto che volesse difendere l’implementazione estremamente criptica quanto esageratamente performante di un pezzo di codice. Implementazione anche molto curata rispetto a quasi tutto il resto del lavoro. Al che il professorone esordisce: “immagino che questo pezzo di codice per essere così intenso debba essere fondamentale…”. Il malcapitato però ammette che si trattava di un pezzo di codice non critico al funzionamento dell’applicazione sul modello di “codice di rigenerazione degli indici” che fa tanto figo a pronunciare ma poco utile alla prova dell’atto pratico, tant’è che “il cliente è supposto di rigenerare gli indici al massimo una volta al giorno per garantire prestazioni adeguate all’uso normale dell’applicazione”. Fu lì, durante la seduta d’esame, che il professorone espose l’anti-pattern della pausa caffè (nome ‘inventato’ da me in quanto la Gang of Four ha pubblicato il mitico lavoro solo nel 1995). Il professorone sosteneva che pezzi di codice lento e scarsamente ottimizzato, se accoppiati con funzionalità di uso molto raro in applicazioni di carattere produttivo (leggasi: destinate agli uffici), sono fondamentali per la soddisfazione dei clienti che – nei momenti più noiosi della giornata – possono giocare la carta “lancio la rigenerazione degli indici e vado a fare un caffè”. Il professorone faceva altresì notare che il fatto che tale funzionalità sia non-fondamentale all’uso della applicazione è conditio sine qua non per l’introduzione dell’anti-pattern. Se un pezzo di codice di uso molto frequente richiedesse lunghe pause caffè si avrebbe l’effetto collaterale di produrre clienti impazienti, insoddisfatti o magari epilettici. Osservazioni come queste meritano un solo tipo di aggettivo: geniali.

    A questa storia sono così affezionato che la riciclo spesso quando vedo qualche collega combattere con l’ottimizzazione esagerata di pezzi di codice di scarsa utilità. Cosa buffa ieri, mentre ero in preda ad un piccolo attacco di insonnia che mi ostinavo a combattere con un po’ di refactoring domino (*), mi sono accorto che stavo facendomi pippe mentali davanti ad un pezzo di codice perfetto o quasi per l’anti-pattern pausa caffè generalizzato. È stato un lampo e pienamente soddisfatto della scelta “strategica” sono tornato a nanna. Certe volte funziona così.

    -quack

    (*) materiale per un’altra storia.

  • Me vs. Firefox 3.5

    Ho appena installato la 3.5 sul mio netbook e la mia workstation in ufficio. me-firefoxLe nuove feature non mi fanno assolutamente rimpiangere Chrome. Per tutto il resto mi sono attrezzato con 2 o 3 estensioni che lo rendono quasi indistinguibile dal browser californiano. Ho deciso di ridurre al minimo quelle installate e le elenco qui per futura memoria.

    1. Extended Statusbar
    2. Firebug
    3. Fission
    4. Hide Menubar
    5. Omnibar
    6. ShowIP
    7. Total ReChrome
    8. TwitterFox
    9. User Agent Switcher

    Grandi assenti Adblock Plus e NoScript, decisamente irritante per le mie abitudini di navigazione quotidiane. Grandi presenti Total ReChrome che nell’ultima reincarnazione è pressoché perfeto e Omnibar, che sostituisce la Awesome bar con quella ancora più Awesome di Chrome. Qualche microscopica customizzazione ha fatto il resto. La differenza di prestazione è ancora a sensibile vantaggio di Chrome, ma niente ancora da strapparsi i capelli. Manca ancora una sandbox e sarebbe perfetto. D’altra parte però Chrome non supporta i lettori di impronte. Tirando le somme, per una funzionalità che va (sandbox) una più importante che viene (password manager). Nella mia personale classifica FF si piazza al primo posto previa installazione delle estensioni indicate. Segue IE8 il cui privacy mode è una spanna sopra gli altri e Chrome ormai superato. Non qualificati Opera e Safari, quest’ultimo definirlo un browser è pure troppo.

    -quack

  • Delle cicale e delle formiche

    È arrivata l’estate e il crì crì estivo delle cicale si fa assordante.

    Le formiche invece sono al lavoro per prepararsi per l’inverno.

    Per fortuna le formiche hanno ottimo sense of humor:delle cicale

    RMS claims that:

    1) it’s good to write C# implementations like Mono, to encourage people to run their C# on a free platform like Debian; but

    2) we should discourage people from writing C# software by making it hard to run, so Mono shouldn’t be on the default Debian install.

    So it should be possible but not easy to run C# programs. Yep, sounds like Linux.

    Complimenti a bluegrama, l’autore del commento per il nuovo motto: Linux, everything is possible but just not easy.

    E come diceva Confucio, a 20 milioni di sviluppatori .Net di RMS non frega assolutamente una mazza.

    -quack

    P.S. sia chiaro, mi sento formica anche io. Potrei sbagliarmi?

  • Addio BOB

    BOB

    Bob è stato uno di quei progetti dal punto di vista tecnico/commerciale molto sfortunati e morto subito dopo il rilascio. Da altri punti di vista ha cementato il fidanzamento tra Bill e Melinda; quest’ultima – all’epoca semplice girlfriend – è stata messa a capo dell’intero progetto da Bill in persona.

    Una delle legacy di Bob è l’icona dello smiley nerd in MSN Messenger, a cui il set di smiley di questo si ispira. Sfortuna ha voluto che per Bob io abbia scelto una combinazione di caratteri che in alcuni casi ha anche un significato: 8) è un punto tra 7) e 9), raro ma pur sempre possibile, tanto da scombinare una decina di commenti in tutto. Deciso ad impratichirmi dell’uso delle RegEx, e forte della lettura del testo raccomandato in precedenza, ho abolito l’iconcina dalla lista degli smiley disponibili nei commenti. In fondo era [quasi] totalmente inutile.

    Nel frattempo ho rivisto un po’ di codice di sanitizzazione (??) disinfestazione dei commenti: quello che gira adesso è preso in prestito da altre piattaforme e non soddisfa i bisogni di questa piattaforma al 100%, inclusa la possibilità di un attacco XSS scoperto durante il processo di revisione. Ed ho cominciato ad apprezzare le RegEx che “se le conosci non ti uccidono”. How funny.

    -quack

  • I miei guai con Android

    Ormai son passati diversi mesi da quando son corso a comprare il primo smartphone made in Mountain View (parlo del software). Da allora è stato rilasciato più di qualche aggiornamento, l’ultimo risalente a pochi giorni fa con il codename di cupcake. I miei guai con il G1 non sono diminuiti di molto.GuaiAndroid

    1. Prima di cupcake lo streaming bluetooth non era abilitato. Cupcake ha aggiunto anche questa feature ma purtroppo funziona molto molto male, almeno in abbinamento con la mia autoradio.  Ogni volta che accendo la radio il bluetooth si sincronizza. Poi in maniera totalmente casuale inizia lo streaming. Casuale vuol dire un sacco di cose: certe volte lo streaming si attiva dopo qualche secondo; certe volte dopo parecchi (10-15) minuti. Quasi sempre lo streaming dura meno di un secondo e si ferma in pausa: alcune volte basta passare alla canzone successiva, altre volte neanche questo funziona. La cosa antipatica è che una volta che lo streaming va in pausa l’autoradio diventa silenziosa
    2. Quando Android è di ottimo umore e decide di suonare una canzone in streaming va in modalità di shuffle automatica.
    3. Il client di posta elettronica ancora non funziona come dovrebbe. Certe volte segnala nuova posta in arrivo anche se non è arrivato un fico secco; con gli account Hotmail poi è impossibile marcare un messaggio come già letto.
    4. La navigazione alle volte è a dir poco confusa. Se nell’applicazione X c’è un schermata A e da A si naviga alla schermata B, con il pulsante BACK si torna alla schermata A. Tranne quando si switcha da un’altra applicazione (Y) per cui BACK potrebbe navigare da B ad Y o da B ad A. Tutto ciò non avviene in maniera casuale, ma all’utOnto medio (IO!!) sembra così. Se l’applicazione è incasinata di suo (tipo Touchdown, il client Exchange) è davvero la fine.
    5. La trackball del G1, tanto comoda per la navigazione ad una mano, è un po’ piccola ed ogni tanto causa qualche sfasamento. Siccome agisce anche come pulsante, nel momento in cui si preme si crea abbastanza coppia per spostare il cursore al link successivo
    6. L’autofocus della fotocamera, essendo puramente software, è lento come una processione: una foto può richiedere qualche secondo.
    7. Raramente la connessione USB via cavo è instabile.
    8. [update 28/6/2009] L’applicazione Google Maps è stata aggiornata. Aggiornamento non vuol dire sempre miglioramento: è il caso di Google Maps che ha perso diversi punti usabilità. È sparita la possibilità di mappare un elemento della history ed è diventato più complicato chiedere le indicazioni per raggiungere una destinazione partendo dalla posizione attuale

    Ovviamente questo post tenderà ad allungarsi col passare del tempo; magari pure ad accorciarsi. Però nonostante tutto il G1 ha cambiato le mie abitudini in positivo (a parte i bestemmioni in macchina quando “parte” lo streaming).

    -quack