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

Paraxenotopia Americana

Tradotto maccheronicamente (Google Translate) dall’inglese per “posti strani”, laddove la geografia politica è governata da coordinate creando risultati interessanti.

Colorado e Wyoming: due stati dai confini perfettamente rettangolari, almeno nelle intenzioni (nella pratica ci sono stati in passato diversi errori e dovute correzioni). Più informazioni qui.

Four Corners: l’unico quadri-punto americano, uno dei pochi al mondo. Ovvero l’unico punto del territorio degli Stati Uniti in cui si toccano quattro stati: Arizona, Colorado, Nuovo Messico e Utah. Reso famoso in un episodio di Breaking Bad.

Haskell Free Library: una biblioteca a confine tra Canada e Stati Uniti, così a limite che il confine è segnato con una striscia nera sul pavimento di una delle stanze della biblioteca.

Point Roberts: exclave degli Stati Uniti in territorio Canadese.

Indiana: lo stato diviso in diversi fusi orari. A peggiorare le cose, la suddivisione stessa è andata mutando nel tempo.

-quack

Pubblicato martedì 20 maggio 2014 alle 2:48 AM - 2 commenti so far
Archiviato in: Cazzate, Seattle e dintorni

Herpes

Finalmente si può comprare una XBox senza Herpes (riferimento alla vignetta spettacolare).

Ovviamente, come è successo persino quando Microsoft ha dichiarato che rimuoveva il DRM restrittivo dalla nuova, qualcuno ci spiega che in realtà accontentando i clienti MS non stia facendo loro un favore perché l’abbiamo già sentito in passato: un certo tipo di DRM è il futuro, il nuovo start screen è il futuro, un bundle che viene mandato giù per la gola è il futuro, ecc. ecc. ecc.

Il ragionamento (sbagliato) è questo: siccome i developer Xbox One sanno che Kinect è ubiqua, ci saranno più giochi che la supporteranno e meglio.

Come se “l’adattabilità” di un gioco alla Kinect fosse un dettaglio estremamente secondario.

Poi ci sono altri aspetti che rendono la faccenda molto triste, come ad esempio il fatto che per l’ennesima volta MS ha bisogno del feedback dei suoi clienti per capire che sta facendo una cazzata. Fossi membro della board sarei molto preoccupato di questo aspetto ovvero del fatto che una azienda è così scollegata dalle esigenze dei propri clienti da richiedere continue e costose correzioni di rotta.

Spero che il nuovo CEO metta la nave in rotta. Trattandosi di un Titanic un certo tipo di latenza è persino prevista. Però mi sembra che i tempi siano maturi per notare le prime correzioni importanti.

-quack

Pubblicato mercoledì 14 maggio 2014 alle 7:20 PM - 15 commenti so far
Archiviato in: Microsoft, Cazzate, Vignette

Sneakernet

Piccolo aggiornamento: sono nella fase finale di messa a punto del Cray-1 e stasera ho fatto la migrazione dell’OS dal disco meccanico (che poi ho scoperto essere un povero 5400rpm) al disco solido. Immaginavo che usare CloneZilla sarebbe stato più semplice che usare un prodotto per Windows che gira su Windows in quanto CloneZilla lavora offline, ma mi son sbagliato di grosso. Per fortuna avevo una licenza gratuita dell’ottimo prodotto della Paragon Software ed è passata la paura. Effettivamente l’hard disk era il collo di bottiglia, il sistema adesso si avvia in meno di un minuto, misurato al momento in cui la sintesi vocale annuncia che “il servizio rippatutto” è stato avviato con successo. Col disco meccanico i minuti richiesti erano quasi sei, ma il resource monitor non mostrava molto accanimento verso il disco e per questo ero un po’ scettico.

Adesso che le prestazioni sono decenti, che il guest agent di xenserver sembra non avere più bisogno di un GB di RAM per girare e che lo scanner è tornato allegramente a poter essere condiviso, è arrivato il momento di riprendere a pensare ad un piano di backup offline (ho i file importantissimi riversati anche nel cloud, ma ciò non basta secondo la famosa regola del 1-2-3).

È da parecchio che rimugino su un sistema basato appunto su Sneakernet, ovvero tenera aggiornate due repliche di dati usando un supporto fisico come mezzo su cui far viaggiare i dati. Credo che abbia cominciato a pensare a qualcosa del genere mentre ascoltavo una collaboratrice dello scomparso Jim Gray, ed ho pensato ad una ricetta basata su ingredienti a mia disposizione:

  1. la possibilità di ottenere l’elenco dei file modificati, aggiunti, cancellati o rinominati a partire da uno snapshot disponibile con qualche incantesimo da riga di comando con solaris
  2. una volta ottenuta la lista, processare i file e metterli su una chiavetta che poi a destinazione verranno sincronizzati con la seconda replica
  3. un servizio Windows (perché nonostante tutto sono ancora estremamente più produttivo con C# che con qualsiasi altro mezzo) che automatizzi quanto più possibile la sequenza di operazioni: tipo inserisci la chiavetta, si smazza il delta e quando ha finito la sintesi vocale annuncia che la copia è pronta

Vista la mia attuale familiarità con Java, ho pensato ad un demone Solaris che si mette in ascolto e che, ricevuta la parola d’ordine, mette a disposizione il delta su una share e poi tutto il resto comodamente gestito da Windows.

Avrei pensato che la parte più difficile sarebbe stata conciliare il nuovo delta con un delta pre-esistente, ma a quanto pare scrivere un demone in Java sembra sulla carta molto più semplice di quanto sia in realtà. Tra l’altro mi dovrei fidare di un OpenJDK qualora volessi usare una versione più recente di quanto preinstallato già su OpenIndiana.

Ergo, il viaggio che mi aspetta sembra essere molto lungo… caro diario…

-quack

Pubblicato sabato 10 maggio 2014 alle 6:58 AM - 0 commenti so far
Archiviato in: Cazzate, Backup

XenRecipes #5 - OpenIndiana PV su XCP 1.6

Sono riuscito finalmente a trovare una versione di pygrub/pvgrub che supporti il boot da ZFS. Ovviamente come spesso accade con progetti distribuiti solo come codice sorgente, ho dovuto smadonnare un bel po’ prima di ottenere dei binari funzionanti. Poi giacche’ c’ero, ci ho aggiunto un tocco personale rimuovendo un po’ di messaggi diagnostici sparati alla console.

PvGrub consente di risolvere il problema dell’uovo o della gallina dovuto al fatto che bisogna far partire un kernel da un file-system che solo il kernel può “interpretare”. PvGrub emula un mini-OS che fa il boot e lancia una versione di Grub in grado di interpretare i file-system tra i più disparati.

Ricetta:

  1. scaricare l’ISO di OpenIndiana in /var/opt/xen/iso (creare il folder se già non esiste).
    cd /var/opt/xen/iso && wget [openindiana.iso url]
  2. copiare alcuni il kernel ed il boot_archive in /guests (creare il folder in caso)
    mkdir /iso
    mount -o loop /var/opt/xen/iso/openindiana.iso /iso
    cp /iso/platform/i86xpv/kernel/amd64/unix /guests/unix
    cp /iso/platform/i86pc/amd64/boot_archive /guests/boot_archive
    umount /iso
  3. scaricare mini-os.quiet.gz in /guests
    cd /guests && wget [url pvgrub]
  4. creare la macchina virtuale via XenCenter e assegnare l’ISO ma non avviarla
  5. switchare la macchina virtuale in modalità PV con avvio da CD
    export UUID=[uuid della VM]
    xe vm-param-set uuid=$UUID PV-kernel=/guests/unix
    xe vm-param-set uuid=$UUID PV-ramdisk=/guests/boot_archive
    xe vm-param-set uuid=$UUID PV-args=
    '/platform/i86xpv/kernel/amd64/unix -B console=ttya'
    xe vm-param-set uuid=$UUID HVM-boot-policy=
    xe vm-param-set uuid=$UUID PV-bootloader=
  6. installare Solaris e fare shutdown
  7. switchare il loader a pv-grub
    xe vm-param-set uuid=$UUID PV-kernel=/guests/mini-os.gz
    xe vm-param-set uuid=$UUID PV-ramdisk=
    xe vm-param-set uuid=$UUID PV-args='(hd0,0,a)/boot/grub/menu.lst'
  8. riavviare Solaris, creare gli utenti, le share, ridurre il timeout in grub, ecc.

Questo tipo di setup non richiede ulteriore manutenzione, ovvero non bisogna copiare o forzare l’update del boot_archive o altro.

PV-grub e’ scaricabile qui oppure qui in versione “quiet”.

-quack

Pubblicato mercoledì 7 maggio 2014 alle 11:55 PM - 0 commenti so far
Archiviato in: Virtualizzazione