Follow the money

Prendo spunto da una serie di commenti sul caso Youtube per Windows Phone per dire con più dettaglio la mia e portare alcune ipotesi a supporto. Userò il parallelo di Office su Linux cercando di spiegare perché lo ritengo completamente valido.

Cominciamo dal fatto che se fossi in Google sinceramente di supportare Windows Phone me ne sbatterei altamente: non solo la piattaforma dal punto di vista della penetrazione di mercato è sfigata, ma se pure avessero sviluppato una app per Windows Phone 7, l'avrebbero probabilmente dovuta riscrivere per Windows Phone 8. E poi forse di nuovo per Windows Phone 8.1

Google è responsabile dello sviluppo delle app per YT sia per Android che per iPhone. Il fatto che WP sia poco interessante è completamente comprensibile nell'ottica costi/benefici. In un'azienda quotata in borsa costi/benefici vanno sempre giustificati: questo non significa che sia l'unico parametro, ma nel momento in cui bisogna giustificare una decisione nell'assemblea degli azionisti, mostrare diligenza sotto questo aspetto è sempre necessario. Da aggiungere: quando controlli sia il client che il server, dal punto di vista ingegneristico qualsiasi scorciatoia è giustificata, come l'assenza di un layer di API propriamente detto.

Dopo di che passerei a fare alcune considerazioni sulla gravità di quello che ha fatto MS quando ha rilasciato la sua "versione" del client per YT. Bypassare due vincoli di servizio d'uso di YT (permettere di scaricare e non visualizzare la pubblicità) è equivalente a rilasciare una versione di WINE per Linux che permette di scaricare Office gratuitamente e bypassare il processo di attivazione: da un'azienda che fa vagonate di soldi e pretende il rispetto dei termini di licenza ci si aspetta che faccia altrettanto. La scusa di "non avevamo le API" non regge. Non. Regge.

Una volta che gli avvocati si sono scornati e l'accordo è stato raggiunto e si è deciso che Google provvederà una API per il supporto di YT su WP (cosa che MS in passato non ha mai fatto, ad esempio lasciando lo sviluppo di Silverlight al reverse engineering amichevole di Novell), il tutto diventa "esecuzione". A questo punto non conosco altri retroscena ma immagino che la feature "creare API per YT con il supporto della pubblicità" sia finita in una lista nelle mani di qualche Program Manager. Pongo l'accento sulla parola "lista". Ogni team ha una lista della spesa di ciò che va fatto e tale lista viene ordinata per priorità, con il famoso rapporto Costo vs. Beneficio a contribuire al peso di ogni elemento.

Si aggiunga che oggi giorno, come qualcuno fa notare, ci sono decine e decine di applicazioni fatte da tabaccai che rendono la questione quasi irrilevante. Google su questi frangenti si è dimostrata abbastanza tollerante, infatti nel marketplace delle estensioni per Firefox campeggiano svariati "youtube downloader", completamente eradicati dal marketplace per Chrome (ci ha fatto caso qualcuno?).

Quanto detto finora dovrebbe essere analitico abbastanza da comprendere quello che sta accadendo: al posto di Google farei la stessa cosa, ed infatti MS ha fatto la stessissima cosa evitando di supportare piattaforme sfigate (Linux; Android ed iOS non qualificano più come sfigate).

Al posto di MS avrei fatto qualcosa di molto più intelligente: visto che su WP gira "il miglior browser mobile in circolazione" (*), avrei creato un'applicazione che - trasformando il contenuto delle pagine HTML in maniera intelligente - avesse delegato al browser il tutto. Avrebbero risparmiato tempo, energie e al tempo stesso ottenuto un prodotto migliore.

Due parole sul fatto che Google non supporta YT su WP per paura del successo di WP: ma davvero questa teoria sembra più plausibile delle famigerate scie chimiche.

-quack


(*) affermazione che mi vede in totale disaccordo; supportare Flash nativamente non è motivo né necessario né sufficiente.

Pubblicato venerdì 13 giugno 2014 alle 8:01 PM - 12 commenti so far
Archiviato in: Microsoft, Google

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