Info:

twitter

Ultimi commenti: Comment feed

Tags:

Sponsor:

Archivio 2018:

Feb Gen

Archivio 2017:

Dic Nov Ott Mag Apr Mar Feb Gen

Archivio 2016:

Dic Nov Ott Ago Mag Mar Feb Gen

Archivio 2015:

Nov Ott Set Mar Gen

Archivio 2014:

Dic Nov Ott Set Lug Giu Mag Apr Gen

Archivio 2013:

Dic Nov Set Ago Lug Giu Mag Apr Feb Gen

Archivio 2012:

Dic Nov Ott Set Ago Giu Mag Apr Mar Feb Gen

Archivio 2011:

Dic Nov Ott Set Ago Lug Giu Mag Apr Mar Feb Gen

Archivio 2010:

Dic Nov Ott Set Ago Lug Giu Mag Apr Mar Feb Gen

Archivio 2009:

Dic Nov Ott Set Ago Lug Giu Mag Apr Mar Feb Gen

Archivio 2008:

Dic Nov Ott Set Ago Lug Giu Mag Apr Mar Feb Gen

Archivio 2007:

Dic Nov Ott Set Ago Lug Giu Mag Apr Mar Feb Gen

Archivio 2006:

Dic Nov Ott Set Ago Lug Giu Mag Apr Mar Feb Gen
Onoreficenze

Una delle cose carine che rende più nerdoso lavorare per Google è la pagina personale con un elenco di onoreficenze (tradotto: badge). Ce ne sono tra le più disparate, legate ad esempio alle ultime cifre del numero delle proprie changelist, altre più frivole e così via.

Ieri mi è capitato di cambiare, in un file di configurazione, la sequenza ‘vk’ con ‘vj’. Ho detto scherzosamente ai miei colleghi che, essendo la CL più piccola della mia carriera in Google, avrei meritato un badge. Loro altrettanto scherzosamente mi hanno risposto che c’è qualcosa di più piccolo di un singolo carattere… un bit!

A quel punto ho controllato ed effettivamente la contiguità delle lettere ‘j’ e ‘k’ grazie ad una probabilità del 50% mi ha permesso di realizzare l’achievement. Di più: un badge già esiste ed è dedicato a chi sistema un baco grazie ad una modifica di un solo bit. Presto fatto ho aperto un baco di solito non necessario per modifiche di configurazione e mi son messo in attesa del badge che è arrivato. Eccolo qui in tutta la sua meravigliosa gloria:

1bitbugfix

-quack

Pubblicato giovedì 14 dicembre 2017 alle 3:31 AM - 1 commento so far
Archiviato in: Codice, Cazzate

Apple languages

Da "iOS Programming: The Big Nerd Ranch Guide” terza edizione.

In general, when you have a property that points to an instance of a class that has a mutable subclass (like NSString or NSArray), it is safer to make a copy of the object to point to rather than pointing to an existing object that could have other owners.

Agli arguti lettori il compito di segnalare cosa c’è di grave nella frase di cui sopra. Suggerimento: ci si metta nei panni dello sviluppatore di una libreria.

-quack

Pubblicato martedì 28 novembre 2017 alle 2:30 AM - 0 commenti so far
Archiviato in: Codice, Cazzate

Quattro mesi report

Sono quattro mesi che ormai lavoro in un ecosistema che non è Microsoft-centrico e volevo raccontare un primo bilancio: il codice si scrive in Java (parte in 1.7, grossa parte addirittura in 1.6), usiamo tool Apache per la build, i database sono MySQL, ecc. Il tutto gira su MacOS, almeno per tre su quattro di noi del team remoto.

In passato ho giochicchiato un po’ con MacOS ma non ho mai fatto niente di produttivo e soprattutto remunerato. Le mie opinioni sono queste:

  1. parlando di lavoro, Windows è a man bassa molto più stabile di MacOS. Sarà colpa del fatto che faccio girare Windows su una virtual machine, ma io osservo un Kernel Panic per settimana. La stragrande maggioranza di questi avviene (credo) durante le power transition. A livello di usabilità però MacOS latest è un pelino meglio di Windows 8.1.1.1.1 ma drasticamente meglio di Windows 8.0, l’OS che usavo per lavoro nell’azienda precedente
  2. se chiedessi a mia nonna di scrivere un Database Engine da zero sono sicuro che farebbe molto meglio di MySQL. Quando c’è un KP lo stato del DB si corrompe nonostante il DB venga usato molto sporadicamente: i DB dovrebbero garantire coerenza anche nei casi in cui si stacca la spina dal muro in maniera violenta. MySQL, almeno nella versione che stiamo usando su Mac, va in palla nonostante sia praticamente fermo. Per non parlare del fatto che neanche mia nonna si sognerebbe di far coincidere i due valori di stringa vuota e null, cosa vera fino alla versione 5.5 (precedente)
  3. la differenza tra Java e C# è abissale, l’effetto è che alla fine mi sento come se mi avessero amputato entrambe le mani. Un’immagine può rendere meglio l’idea:

C#Java

A sinistra C#/.Net; a destra Java/JVM. L’argomento richiede sicuramente un successivo approfondimento, ma… sarà pure che ci sono migliaia e migliaia di librerie, ma nel 2014 codice così mi fa letteralmente vomitare:

private static void seek64(FILE fp, long upos) {
    LIBC.fseek(fp,0,0); // start at the beginning
    while(upos<0) {
        long chunk = Long.MAX_VALUE;
        upos -= chunk;
        LIBC.fseek(fp,chunk,1);
    }
    LIBC.fseek(fp,upos,1);
}

(eh sì, quei genii che hanno disegnato il linguaggio hanno pensato che i tipi senza segno fossero “pericolosi”).

Però almeno finalmente sono arrivate la lambda.

-quack

Pubblicato mercoledì 21 maggio 2014 alle 6:36 PM - 33 commenti so far
Archiviato in: Codice

Intentional leave

Venerdì scorso ho lasciato la mia azienda precedente: sono stati due anni (poco meno) veloci e intensi in cui ho imparato tanto e lavorato fianco a fianco ad una leggenda.

Il caso ha voluto che una nuova offerta di lavoro venisse a me nella forma di numeri che davvero non si potevano rifiutare: il mio nuovo datore di lavoro è lui stesso un’altra leggenda (Magnet) e porta in sé una caterva di cambiamenti incredibili. Per la prima volta dico addio all’ecosistema Microsoft per lavoro; scriviamo codice in Java e per Android/iOS e per questo mi hanno fornito di MacBook Pro super carrozzato che userò con MacOS (qualcuno preferisce Windows ma per me l’idea di imparare a scrivere codice iOS e allo stesso tempo dare un taglio più deciso è più appealing). Resta il fatto che non ho cambiato idea su alcune questioni fondamentali.

La cosa più bella? Sono l’employee numero due nello stato di Washington.

Auguratemi in bocca al lupo.

-quack

Pubblicato domenica 19 gennaio 2014 alle 8:08 PM - 53 commenti so far
Archiviato in: Codice

L’inevitabile decadenza del software

Mi piace Google Chrome perché semplice, pulito, pochi fronzoli e ha un Sync decente. Vero fino all’altro giorno, quando i bookmark del PC dell’ufficio non si sincronizzavano più. Non ci ho fatto caso più di tanto poi oggi, incuriosito, guardo i settings:

“Sync has been stopped via the Google Dashboard.”

Probabilmente da quel momento nel passato, quando la batteria del telefono era molto scarica e mi serviva tenerlo in vita, in cui ho disabilitato temporaneamente la sincronizzazione.

Clicco il pulsante advanced settings e mi porta su una pagina in cui devo fare il login con le credenziali Google. Fatto il login la pagina si chiude nel nulla.

Riclicclo il pulsante advanced settings e non accade nulla.

Da buon software engineer, “esco ed entro” dal programma. Niente tranne una voce che dice “manage sync via the Google Dashboard” che non porta a nulla. Noto un’altra voce “riavvia il browser in modalità Windows 8”. Fatidica curiosità: clicco e Chrome si chiude. Non riappare niente. Clicco l’icona sulla taskbar (che nell’ultima versione si è aggiunta da sola violando le policy di Windows) e niente. Riclicco e rieccolo.

La sincronizzazione riparte, ma al contrario. Ovvero i nuovi bookmark spariscono.

Domanda: a che serve rilasciare la versione 26 con tutti i fronzoli quando la versione 5 funzionava benissimo? Persino Chrome, che ha il vantaggio di avere una legacy praticamente nulla, decade molto in fretta.

C’est la vie.

-quack

Pubblicato mercoledì 8 maggio 2013 alle 7:22 PM - 5 commenti so far
Archiviato in: Google, Codice