Archivi categoria: Italiano

Zero to One di Peter Thiel – prima parte

Zero To One book cover peter thiel
Zero To One (da Zero a Uno nell’edizione italiana) è un best seller del 2014 dove Peter Thiel parla del mondo delle  startup veramente innovative, quelle che producono qualcosa di nuovo, che non c’era prima, appunto quelle che fanno il salto da 0 a 1.

In questo articolo troverai quelli che secondo me sono i più importanti spunti di riflessione che ho trovato leggendo il libro. Se desideri saperne di più, puoi acquistare il libro su Amazon in tre versioni:

Progresso verticale e progresso orizzontale

Il titolo del libro, come anticipato, è riferito all’innovazione, a quelle startup che creano qualcosa che non esiste prima. Quando pensiamo al futuro, di solito ci immaginiamo un futuro di progresso, e questo progresso può assumere due forme:

  • progresso orizzontale, cioè la replica di qualcosa che esiste già; in pratica la globalizzazione non è altro che un esempio di questo tipo di progresso: basti vedere la Cina, che non ha fatto altro che replicare moltissimi processi industriali che esistevano già in occidente.
  • progresso verticale, cioè la creazione di cose totalmente nuove, che non esistevano prima; l’esempio non è più la globalizzazione ma il settore tecnologico, che prevede continua innovazione per stare al passo con i tempi e non essere tagliati fuori dal mercato.

Si può dire quindi che mentre il progresso verticale è un passo da zero ad uno in quanto si passa da qualcosa che non esiste a qualcosa che esiste (es. da una macchina da scrivere a un computer con word processor), il progresso orizzontale è solo un passo da uno ad n in quanto non si fa altro che moltiplicare un oggetto esistente (es. ho una macchina da scrivere e ne produco altre 100.

Come si fa il progresso zero to one?

Si cerca di dare una risposta a questa domanda per l’intera lunghezza del libro… tanto per cominciare, serve un piccolo gruppo di persone, ecco perchè le startup giocano un ruolo chiave nell’innovazione.

Una persona da sola non è sufficiente, un genio solitario può riuscire a creare un’opera d’arte quale un quadro o un libro, ma per rivoluzionare un intero settore industriale servono più persone, che si occupino di tutte le sfaccettature che la creazione di un’impresa di successo richiede, dalla realizzazione del prodotto alla sua definizione dal punto di vista commerciale e promozionale.

Anche in una grande azienda è difficile fare innovazione, poichè esistono burocrazie ed interessi contrastanti (per fare carriera spesso è necessario apparire che si stia facendo cose più che farle: con una premessa del genere è ovvio che si produca innovazione col freno a mano tirato rispetto ad una startup dove questo discorso non esiste).

L’eredità della bolla dot com

Prima della bolla

La prima azienda tecnologica di Peter Thiel, PayPal, nasce prima della bolla dot com del 2000, che caratterizza un punto di svolta nell’approccio al fare startup in Silicon Valley. Nel libro viene raccontato come prima della bolla c’era un aria di indefinito ottimismo, tutti pensavano che le cose sarebbero andate bene in qualche modo, nessuna perdita sembrava troppo grande ma era soltanto vista come un investimento: con questa logica si era diffuso l’anti business model che prevedeva che un’azienda perdesse sempre più denaro mano a mano che l’azienda cresceva.

Dopo la bolla

Inevitabilmente l’insostenibile situazione collassò, e la bolla esplose. Moltissime società fallirono. Nell’ambiente presero corpo nuovi dogmi, che le startup superstiti e quelle che sarebbero nate dopo la bolla avrebbero dovuto tenere in forte considerazione se desideravano attrarre investimenti, che non cadevano più a pioggia come prima:

  • Crescere un pò alla volta, fare passi incrementali ben definiti piuttosto che puntare molto in grande fin dall’inizio
  • Essere lean, capaci di reagire agli imprevisti, iterare continuamente procedendo in modo pressoché sperimentale, fondamentalmente senza un piano definito troppo nel dettaglio
  • Assicurarsi che il mercato esista prima di buttarcisi
  • Concentrarsi sul prodotto in modo che questo sia in grado di farsi pubblicità da solo: buona parte degli insostenibili costi che hanno portato alla bolla erano infatti legati al pubblicizzare in modo costosissimo mediocri prodotti

I nuovi dogmi e l’innovazione da zero a uno (zero to one) dopo la bolla

Purtroppo i nuovi dogmi erano abbastanza conservativi da prevenire il verificarsi di una nuova bolla, ma allo stesso tempo non aiutavano di certo l’innovazione, la creazione di prodotti completamente nuovi, il passare da zero a uno. Per fare innovazione è necessario agire in modo quasi completamente opposto a quanto espresso dai dogmi:

  • Meglio rischiare un prodotto ambizioso che uno che potrebbe verificarsi fondamentalmente inutile
  • Un piano sbagliato è meglio di nessun piano, improvvisare è sempre sbagliato
  • Un mercato con molta competizione distrugge i profitti (si veda il mercato delle compagnie aeree)
  • Le vendite contano quanto lo sviluppo del prodotto

E allora? Come fare? Nel libro viene detto di non credere a quello che ci viene detto, ma pensare con la nostra testa, ragionando nello specifico caso della nostra azienda. I dogmi introdotti dopo la bolla sono eccessivamente difensivi: riducono il rischio di aziende campate in aria senza solide basi sottostanti, ma allo stesso tempo tagliano fuori molte aziende innovative o che potrebbero portare a grandi profitti in quanto orientate a mercati senza competizione, quindi che aspirano ad un monopolio nel loro settore.

Per scoprire che cosa intende Peter Thiel con “pensare con la nostra testa”, leggi l’articolo Zero to One di Peter Thiel – seconda parte (presto disponibile)

Android AsyncTask e DeepBelief SDK ( SISSEGV )

Ultimamente sto giochicchiando col DeepBeliefSDK rilasciato da JetPac, una startup acquisita da Google.

Ho avuto molti problemi quando ho provato a portare l’utilizzo della libreria, dal thread principale in cui si trova all’interno degli esempi forniti, ad un thread in background, quello che in tanti linguaggi di programmazione è chiamato Worker o qualcosa del genere, e che in Android prende il nome di AsyncTask.

La libreria fa un pesante uso della CPU, quindi va utilizzata assolutamente in un thread in background, o l’applicazione stenterà decisamente (su un Galaxy S5 ci vogliono 650ms per classificare un’immagine, sul mio terminale di più). Durante le mie prove con il thread in background l’applicazione crashava sempre, con un bel Segmentation Fault (SISSEGV error recitava la riga di errore che compariva sul LogCat se non sbaglio) e nessuno stacktrace utile (si tratta pur sempre di codice nativo C++).

Quando tutto sembrava ormai perduto ho trovato questo articolo. Per farla breve, DeepBelief usa Open MP (da wikipedia:
OpenMP (Open Multiprocessing) è un API multipiattaforma per la creazione di applicazioni parallele su sistemi a memoria condivisa.).
Ma esiste un bug nel modo in cui GOMP (implementazione GCC delle specifiche OpenMP) gestisce la memoria quando non è possibile accedere alla memoria locale del thread.

Morale della favola, quando il thread su cui è eseguita una funzione della libreria (l’AsyncTask) cerca di accedere alla memoria locale del Thread si ha un bel crash. La soluzione suggerita è ricompilare l’intero DeepBeliefSDK con una toolchain GCC a cui è stata applicata una patch particolare, che in qualche modo (non chiedetemi come) risolve il problema.

Qua trovate l’SDK ricompilato, pronto all’uso anche all’interno del thread in background.

Taggare amici con l’App di Facebook per Windows Phone

Questo non è il solito riassunto di qualche libro come gli altro post di questo forum, è solo un post che spero aiuti qualcuno che ha avuto il mio stesso problema…

Questo è il problema: essendo abituato all’app di Facebook per Android, mi aspettavo che scrivendo le prime lettere del nome di un mio amico, comparisse un menu a tendina che permettesse di taggare l’amico, come appunto avviene su Android. Invece sull’App di Windows phone questo non avveniva, e non sapevo come taggare amici nei commenti e nei post.

Per avere lo stesso risultato su Windows Phone, bisogna scrivere @ prima della prima lettera dell’amico che si vuole taggare. In questo modo compariranno in basso gli amici i cui nomi iniziano con le lettere digitate, e sarà possibile taggarli su commenti e post. Spero siate impazziti su questa cosa meno di quanto ho fatto io!

Windows Phone 8. Guida all’uso

Suggerimenti e trucchi per MongoDB: 50 Tips and Tricks for MongoDB Developers di Kristina Chodorow

Dopo questo articolo di più di un anno fa, oggi torniamo a parlare di MongoDB.

In particolare parleremo di questo libro: 50 Tips and Tricks for MongoDB Developers
mongodbtricks
Questo breve libro racchiude dei consigli, corredati di esempi, su come utilizzare il database NoSQL MongoDB in modo corretto. Può capitare ad esempio che essendo abituati all’utilizzo di database relazionali, questa abitudine si rifletta sul nostro modo di utilizzare MongoDB: al contrario questo tipo di database è profondamente differente, e va utilizzato dimenticandoci o quasi tutto ciò che sappiamo sui database relazionali.

Esempi dei suggerimenti dell’autrice del libro:

  • Quando embeddare un’informazione? Quando invece inserirla in un documento a parte? Domanda complessa, l’autrice esamina quelli che sono tutti i parametri che vanno presi in considerazione durante questo processo decisionale: prendendo la decisione di embeddare delle informazioni, cioè incorporarle tutte in un sottodocumento, si accettano possibili inconsistenze (anche solo temporanee, ad esempio bonificabili ad intervalli di tempo fissati tramite script batch) ma si ottengono performance migliori, dato che non sono necessarie query extra per recuperare questi dettagli. Altri parametri sono poi presi in considerazione, come numero di letture vs scritture (è sconsigliato embeddare un campo che cresce molto, ad esempio un array con centinaia di documenti, dato che l’operazione di append di sottodocumenti è poco efficiente)
  • Best practices quali l’inizializzazione dei campi previsti anche quando inizialmente sprovvisti di valore, spiegata dal punto di vista prestazionale, e l’operazione affine di preallocazione dello spazio quando è previsto che un documento crescerà considerevolmente già al momento della sua creazione
  • Array vs documents quando sono intercambiabili? Quando non lo sono? E perchè? (Nell’ambito delle ricerche, se sappiamo cosa cercare meglio un document, quando invece dovremmo scorrere tutto la situazione si capovolge ed è consigliato l’utilizzo degli array)
  • MongoDB offre funzionalità avanzate ($where, altre funzioni logiche esprimibili in JS), ma non significa che dobbiamo abusarne, anzi il loro utilizzo viene sconsigliato nel libro tranne quando indispensabile.
  • Cosa si cela dietro gli oggetti ObjectId ? Quando utilizzarli e quando invece preferire un identificativo proprio?
  • Il fatto che siano presenti le references non significa che dobbiamo usarle come fossero “JOIN”, andando a ricostruire un modello relazionale sopra MongoDB: soprattutto da un punto di vista relazionale sono sconsigliate: si tratta di query doppie in fondo, da evitare a causa delle povere performance.

Nei prossimi giorni ulteriori esempi tratti dal libro..