HTML5, una rapida panoramica sulle novità

HTML5 ormai è alle porte e le novità che porta questa versione “aggiornata” dell’hypertext markup language vanno ben oltre il tag video (che, anche su questo sito, ha suscitato interessanti diatribe).

HTML5, infatti, per chi (come me) considera il web un ambiente dove sviluppare applicazioni, fornisce supporto a tantissime tecnologie e strutture dati che, formalmente inserite mediante i rispetti tag, consentono di rendere i contenuti online sempre più orientati al web semantico.

Ad esempio, è possibile definire un menu con l’apposito tag (<menu>) o altri elementi di layout delle pagine quali header (<header>) e footer (<footer>, ovviamente 🙂 ).

Ciò consente, innanzitutto, di superare i limiti dei classici tag <div> e <p> nella organizzazione della rilevanza dei contenuti in una pagina…un esempio ? Attualmente, dal punto di vista del DOM, una lista di voci all’interno di un paragrafo del contenuto principale e una lista di voci di un menu in un altro paragrafo della stessa pagina, hanno la stessa “dignità”…questo in quanto il browser, a meno di un markup molto “pulito” non ha modo di interpretare né di distinguere elementi il cui contenuto è più informativo rispetto agli altri elementi della pagina.

…a dirla tutta, i browser attuali non hanno una reale necessità di discernere i contenuti dagli elementi accessori alla pagina…(l’ho scritta malissimo ma spero renda l’idea 🙂 ), il discorso però cambia se si vogliono estrarre contenuti da pagine con layout molto complessi, ad esempio per una lettura più agevole.

In tal senso, alcuni browser (come Safari) si stanno “portando avanti” integrando soluzioni di estrazione del contenuto principale (quindi, presumibilmente quello più informativo)…nello specifico, Safari usa Readability, un progetto open source.

Piccola parentesi: di recente il discorso della readability è un tema molto sentito…iBooks vi dice nulla ?! 🙂

Ma questa è solo una delle novità introdotte da HTML 5, in realtà una delle più evidenti è presente anche su questo sito…ed è visibile nel logo: il mio logo, infatti, è realizzato utilizzando non più un’immagine bensì dei canvas (che per ora vengono generati da un javascript) ma che sono pienamente supportati da HTML 5

Senza contare tutte le novità relative ai tag <audio> e <video> e ai già citati risvolti relativi all’introduzione di quest’ultimo tag 🙂

Nei prossimi giorni pubblicherò un articolo con tutte le novità di HTML5 relativamente ai form, alle tecnologie come la geolocalizzazione, l’offline storage e tutto quanto permette di apprezzare la vera potenza di questo linguaggio, decisamente più orientato alle web application.

Prima di salutarvi, però, vi segnalo un link molto interessante, completo di tutorial su HTML 5 e su cheat sheet per avere sempre sott’occhio i tag del nuovo linguaggio: http://webdesignledger.com/tutorials/15-useful-html5-tutorials-and-cheat-sheets

ciao 🙂

PS: l’immagine abbinata a questo post è tratta da Smashingmagazine ed è un intero fumetto su HTML5, ecco il link.

Online la nuova versione del mio blog!

Da oggi è online le nuova release del mio sito: ovviamente il restyling è d’obbligo…ho trascorso svariati giorni in piena crisi di web identity 🙂 …finché sono finito sul sito di Woothemes dove ho acquistato un tema (Coda) che ho adeguatamente modificato per renderlo quanto più rispondente alle mie esigenze.

Alla fin fine mi son ritrovato a stravolgerlo sia negli elementi delle pagine che nella grafica di questi ultimi: questo punto è ancora un work in progress ma, credetemi, i margini di personalizzazione che fornisce un template come questo non hanno paragoni.

In ogni caso, i cambiamenti sono più strutturali: ho eliminato una serie di pagine/sezioni che, così come erano state concepite, non sarei riuscito mai a portare avanti con assiduità (non con i tempi risicati che ho adesso)…motivo per cui ho cercato di massimizzare le informazioni nella home page mantenendo sempre presente la ricerca e l’archivio temporale dei post.

Ok, spero la nuova grafica vi piaccia ma, soprattutto, apprezziate il fatto che ciò comporta una più assidua frequenza nella pubblicazione dei post che, prometto, saranno sempre su temi “caldi” (iPhone, HTML ed il web in generale)..vorrei, però, dare un po’ più di spazio a post tecnici e, al tempo stesso, a contenuti sui miei hobby (spinning e musica elettronica in particolare).

“stay tuned”  (come ha detto steve jobs, in risposta ad una email sui problemi di ricezione dell’iPhone 4 :D)

Quartz Composer: un tool visuale per creare sistemi di DSP

E’ dai tempi del mio progetto per la tesi di laurea che non sentivo parlare (o meglio, non me ne interessavo più come allora) di framework e strumenti per la realizzazione di sistemi di elaborazione numerica.
E intanto, col mio Mac, sono anni che faccio qualsiasi cosa (lavorativa e non) e, in tutti questi anni ho praticamente avuto da sempre, sotto il naso, un potentissimo strumento di progettazione e sviluppo di filtri numerici, sistemi di elaborazione, di calcolo e di rendering, perfettamente integrato con l’I/O del mio Mac e completamente programmabile con Xcode (altro strumento, ugualmente potentissimo, per lo sviluppo di applicazioni), sto parlando di Quartz Composer.

La mia curiosità è scaturita da un post trovato ieri in rete in cui si parlava dell’impiego in Apple per uno dei più attivi sviluppatori di applicazioni e filtri di Quartz Composer. Probabilmente, la notizia è la dimostrazione del rinnovato interesse per questo tool, estremamente utile alla ricerca, in tempi in cui i dispositivi portatili sono dotati di pannelli multi-touch ed elevate capacità di elaborazione grafica.

…ma veniamo al dunque 🙂 Quartz Composer, cos’è ?

E’ un tool visuale, disponibile all’interno dei Developer Tools di Apple (quindi basta scaricare Xcode dal sito della Apple per averlo) dal quale è possibile creare sistemi (o compositions, come le definisce il tool in questione) inizialmente concepito per realizzare  screensaver, filtri per Final Cut e così via.
Questo tool, in realtà, è uno strumento molto potente, comprensivo di innumerevoli filtri preesistenti per le operazioni DSP più disparate: dalle interpolazioni di sorgenti all’applicazione di filtri bidimensionali, di operazioni matematiche e così via.
Il valore aggiunto di questo software, a differenza di tool quali Simulink et similia, consiste nell’essere già integrato con il sistema operativo e con le periferiche di I/O e i relativi plug-in, realizzati nell’ambito dei framework specifici: questo vuol dire che se, ad esempio, la webcam integrata nei Mac è gestita da un framework che espone proprietà/metodi di accesso alla webcam, questi saranno accessibili anche dai filtri (chiamati patch, in Quartz Composer) realizzati per composizione all’interno del tool e/o direttamente, programmandone il funzionamento, da Xcode.
Sì, perché altro enorme vantaggio nell’usare questo tool a supporto di test/sperimentazioni di elaborazione di segnali, consiste proprio nella possibilità di poter creare patch completamente personalizzati, da Xcode, ad esempio per realizzare uno specifico flusso/algoritmo di elaborazione (mi viene in mente la codifica a descrizione multipla, sperimentata proprio nella mia tesi).
Avendo, infatti, un minimo di esperienza di sviluppo, si potrà creare un custom Patch con  Xcode e scrivere il codice necessario (in Objective-C) a realizzare operazioni anche complesse.
Un ottimo riferimento per partire con lo sviluppo di un Patch è a questo url della documentazione online di Apple.

Giusto per darvi un’idea di quanto sia semplice applicare filtri con questo tool: l’immagine in basso rappresenta una composition che ho creato per:

  • acquisire il video, in tempo reale, dalla webcam
  • applicare un filtro che realizza l’ASCII art dell’immagine corrente
  • applicare ogni singolo fotogramma sulla facciata frontale di un cubo 🙂
  • Composition ASCII Art

…e questo è il risultato all’interno del player 🙂

Output della composition

ciao  🙂

HTML5 e tag video: l’inizio della fine per i player Flash ?

Ormai se ne parla un po’ ovunque: l’HTML 5 apporterà davvero tante novità, la maggior parte di queste, sicuramente diventeranno gioie e dolori per chi del web ne sviluppa le interfacce, chi realizza il markup…altri aspetti, altrettanto innovativi, danno origine a speculazioni di vario genere.

Ma prima di arrivare al punto, una piccola parentesi: dovete sapere che quando nel lontano 1996 Google non era ancora l’indice della Rete, una delle mie attività preferite sul web (oltre a scrivere un blog in inglese sulla realtà virtuale immersiva 🙂 ) consisteva nel praticare ore (notturne) di netsurfing selvaggio: semplicemente partendo da un sito che mi interessava, proseguivo senza alcun freno verso i link in uscita da quella pagina…questa attività, molto spesso, conduceva su pagine sperdute nella rete, dove mi ritrovavo a leggere di chissà quali argomenti.

Ebbene, nel corso degli anni (per motivi di facile comprensione), ho un po’ abbandonato questa pratica, ma capita che avendo sempre con me un “cellulare connesso alla rete” (se mi sentisse Steve Jobs… 🙂 ), di tanto in tanto riesco a riprovare questa esperienza.

Di recente, infatti, sono incappato in un sito dove il tema principale è l’approccio all’imminente html5 ( Dive Into HTML5 ) e, in particolare, mi ha colpito la completezza con cui vengono descritti i protocolli di codifica, le questioni di licenze annesse e connesse e le alternative open per realizzare e riprodurre contenuti video su pagine conformi al nuovo standard.

Di cosa si tratta: in poche parole, con l’avvento dell’HTML 5, sarà possibile inserire video all’interno delle pagine html utilizzando un tag (<video>, per l’appunto), esattamente come avviene ora per le immagini (mediante il tag <img>).
Attualmente, invece, l’inserimento di un contenuto video in una pagina html prevede l’inclusione di un oggetto (il player) preposto alla riproduzione dei video: negli ultimi anni, infatti, la diffusione di player video in Flash hanno fatto la fortuna di progetti com YouTube e Vimeo e, in virtù della loro notorietà, aumentato enormemente la diffusione di contenuti video in rete.

Di pari passo con la diffusione di player Flash per i video, è altrettanto diffuso proprio il formato di codifica dei video compatibile con Flash: l’FLV (FLash Video).

Attualmente, per inserire un player flash e riprodurre video flv in una pagina html, infatti:

  1. I video da riprodurre vanno convertiti (o transcodificati, come direbbe il mio prof di Elaborazione Numerica dei Segnali 🙂 ) nel formato FLV
  2. Il player (che di fatto è un programma flash, compilato, con estensione .swf) va reso disponibile sul server
  3. All’interno della pagina html dove inserire il video (ed il relativo player), vanno aggiunte le istruzioni di embed necessarie ad informare il browser che dovrà eseguire un programma, in flash, con determinati parametri (il percorso del file al punto 2 e, generalmente, anche il percorso del video .flv al punto 1)
  4. L’utente deve avere installato un plug-in per eseguire nel browser applicazioni flash (come le animazioni, i banner animati…i player flv)

…ed è proprio su quest’ultimo punto che vorrei soffermarmi: fermo restando che qualunque contenuto video, affinché sia “riproducibile”, in un modo o nell’altro, prima o poi, andrà transcodificato e che, anche sull’inserimento di tag nella pagina non ne possiamo fare a meno, ciò che attualmente è legato alla specifica tecnologia (di riproduzione) utilizzata, richiede:

  • L’esistenza di un player sul server
  • L’esistenza di un plug-in sul client

Questo è quanto accade ora, con Flash.

…e qui arriva la mia speculazione: se HTML5, con l’avvento del tag <video> ed il relativo demand al browser della scelta del miglior player (disponibile dal sistema operativo), per riprodurre filmati non solo in flv ma anche (e, credo, soprattutto) in H.264, in un certo senso tenderà a “liberare” la questione dell’embed di video dai punti 2 e 4 dell’elenco di sopra,
è plausibile che il predominio di Flash, per la riproduzione di video, ne sarà influenzato ?

La mia risposta è: FORSE, soprattutto perché se è vero che convertire e riprodurre video in FLV non è esente da costi/condizioni di licenza a favore di Adobe, la situazione non è molto differente se, anziché usare Flash Video, si usa Windows Media, QuickTime e persino H.264 (come riporta quell’articolo su DiveIntoHtml5)…ovviamente esistono soluzioni open e questo scenario, magari, farà da cassa di risonanza proprio ai formati di codifica open source.

Ma la considerazione immediatamente successiva è quella relativa all’accesso dei dispositivi dotati di browser web, sinora sprovvisti di plug-in per Flash, a contenuti video su pagine conformi allo standard HTML5:

In questo momento, ad esempio, la versione di Safari per iPhone non supporta Flash in quanto Adobe non ha rilasciato un plug-in che consenta al gioiellino di casa Apple di riprodurre filmati Flash e, di conseguenza, player .flv qualora questi siano presenti nelle pagine…

Ma il motivo per cui sto spostando l’attenzione di questo post sul discorso mobile non è casuale 🙂

…vediamo se riesco a rendere l’idea:

  • Attualmente un Nokia N97, ad esempio, a differenza di altri palmari, può riprodurre contenuti Flash ed ha un supporto di terze parti (Adobe) a contenuti quali Flash e Pdf
  • Google, anni fa ormai, acquista YouTube: decisamente il più diffuso portale di video sul web…che sinora usava esclusivamente Flash
  • Ma Google sta sviluppando Android quindi, al pari di YouTube, potrebbe ritrovarsi a “dipendere” da una tecnologia proprietaria (non sua 🙂 ) per riprodurre filmati sul browser dei dispositivi dotati di Android

…e ora un po’ di domande:

  1. Che succede se YouTube inizia a sposare la causa dell’HTML 5 e, magari in poco tempo, iniziare a testare i video in HTML5 a scapito di Flash Video ?
  2. E’ un caso che Chrome (il browser di Big G, alla base anche del futuro Google OS) sia basato su WebKit, attualmente il framework per lo sviluppo di client web che meglio supporta HTML5…e che questo framework sia lo stesso su cui è basato Safari (sia su Mac che su iPhone) ?
  3. E’ un caso che su YouTube sia costantemente suggerito l’uso di Chrome ? (ovviamente, il primo motivo per farlo è quello di risicare quote di utenti a IE, Firefox ed altri…ma, secondo me, il motivo è più profondo…)
  4. Se Google (e tutti i progetti in suo possesso) ed Apple non avranno più necessità della tecnologia di Adobe, in virtù dell’alternativa derivante dall’utilizzo di HTML5 per il supporto del video sul web, chi ne trarrà i maggiori benefici ?

Personalmente piuttosto che addentrarmi nelle speculazioni su risvolti commerciali, mi piace concentrarmi sull’effetto che un simile ipotetico scenario avrà sui dispositivi che tutt’ora utilizziamo e che, ancora di più, avremo magari in tasca, in borsa, in ufficio e con cui accederemo alla rete nei prossimi mesi:

il mio MacBook Air non potrà che ringraziare se anziché stressare i due core del processore per far andare un player flash, demanderà l’esecuzione dei contenuti video, anche in HD, a Quartz e fratelli 🙂

Insomma, dal punto di vista dell’utente, io credo che i cambiamenti (soprattutto se nella direzione degli standard) non possano che produrre miglioramenti e, cosa piuttosto usuale sul web, favorire l’open source a scapito di tecnologie proprietarie…ma dov’è che l’utente davvero ci guadagna ?! sicuramente quando le aziende, man mano che prendono coscienza di tale processo, si staccano dal concetto di royalty a favore dei servizi da poter offrire: IMHO su questo Big G è davvero lungimirante,
staremo a vedere.

Android, ovvero Google in mobilità

Ok, so benissimo cosa staranno pensando i mei amici/colleghi che mi conoscono come un Apple dipendente …e decantare i pregi di un sistema operativo per palmari alternativo ad iPhone OS, dovrebbe rientrare in quel meccanismo di auto-censura che spesso mi vieta di divulgare, ad esempio, la mia passione per le Spice Girls 😀 (…ops, l’ho detto)

Ma ci tengo a chiarire subito che:

  1. Questo post, anche se dai presupposti ironici, è tutt’altro che “leggero” (cercherò di illustrare anche alcuni dettagli sull’architettura delle applicazioni per Android, dopo aver sviluppato qualche applicazione di test)
  2. Android NON è il sistema operativo anti-iPhone (ma rischia di diventarlo)

…e proprio da quest’ultimo punto voglio partire: pensare che i dispositivi che montano Android siano in concorrenza con iPhone, a mio avviso, è come pensare che un qualunque set di hardware con un sistema operativo Open Source sia in concorrenza ad un iMac con Snow Leopard 🙂 (ma in fondo a questo post ci sono un po’ di considerazioni che possono cambiare le cose…)

Il punto è proprio questo e, man mano che snocciolerò la mia idea, sarà ancora più chiaro: Android è un sistema operativo, basato su kernel Linux 2.6, corredato di un middleware (ovvero un sistema di accesso alle singole caratteristiche hardware/software del dispositivo su cui è installato) che consente l’esecuzione di applicazioni…applicazioni sviluppate in Java, che sfruttano dati e servizi di Google, che però vale la pena descrivere nel dettaglio del loro ambiente di esercizio:

Android, come dicevo, è un sistema operativo basato su kernel Linux…pertanto tutto il sottosistema di driver e adapter, i servizi, ecc sono sviluppati in C++ e compilati, assieme al kernel, per eseguire su dispositivi conformi all’architettura hardware definita e condivisa dall’ Open Handset Alliance.
I dispositivi conformi a questo standard di architettura hardware vanno dai più semplici telefonini a palmari con display multitouch ai prossimi tablet pc…e questo è il motivo per cui, secondo me, pensare ad Android OS come ad un concorrente di iPhone OS ha poco senso.

O meglio, che Apple, ad esempio, possa integrare una versione customizzata di Mac OS X nel prossimo (?) tablet come ha fatto per l’ iPhone, è una possibilità ma, a mio avviso, la linea di sviluppo di una versione custom del loro sistema operativo tende a spingersi nella direzione del dispositivo stesso… come dire: ad ogni dispositivo nuovo, corrisponde una specifica personalizzazione del sistema operativo dove Apple (bravissima in questo) sviluppa nuove interfacce utente e meccanismi di human interaction via via più specifici.
Che poi questi dispositivi diventino degli ottimi prodotti (prima) e delle ottime piattaforme di sviluppo (poi), nonché delle galline dalle uova d’ora (se si pensa al fatturato dell’App Store)…questo è, secondo me, il maggior merito attribuibile a Steve Jobs ed all’ottimo marketing di Apple.

Android non è questo e, tornando all’architettura del sistema operativo, è per l’appunto un sistema che, ad un livello di astrazione più alto, fornisce tutte le librerie di accesso a funzioni vitali per lo sviluppo di qualsiasi applicazione (dai programmi di gestione personale, ai giochi): viene fornito agli sviluppatori il supporto a librerie grafiche (una versione di Open GL, pensate un po’…), a SQLite per i database, Freetype per il rendering e il pluri-premiato WebKit per il browser web.

Le applicazioni per Android sono sviluppate in Java e, a dirla tutta, richiedono l’installazione di Eclipse, di un sdk, di un plug-in di Eclipse, la configurazione di un emulatore…non proprio affascinante come X-Code per iPhone e tutti gli strumenti forniti dai Developer Tools di Apple, con tanto di tool di debug dalla grafica accattivante (anche qui, Apple sa ammaliare anche gli sviluppatori 🙂 ).
Le applicazioni vengono compilate e racchiuse in pacchetti con estensione .apk (mentre su iPhone, ci sono i file .ipa).

…ma prima di andare più nel dettaglio di una tipica applicazione Android, un’ultimo sguardo all’ambiente di esecuzione: ogni applicazione, di default, viene eseguita in una sua Virtual Machine (un po’ differente dalla sandbox di iPhone), su un unico processo Linux, cui viene assegnato un unico userId…questo vuol dire che ogni applicazione è, da un punto di vista esecutivo, isolata dal resto delle altre, scongiurando eventuali interruzioni derivate da segnali generati da un medesimo utente (e su questa considerazione, mi spiace, ma un corso di Sistemi Operativi è propedeutico 🙂 ).
Ciò non è tassativo, è possibile anche fare in modo che più applicazioni condividano userId e virtual machine, per ovvii motivi di concorrenza (se richiesta dall’applicazione) ma anche per una questione di performance (non dimentichiamoci che, per ogni processo, viene eseguita una virtual machine…).


Com’è fatta l’architettura di una applicazione Android ?

Un’applicazione Android si basa su 4 componenti:

  1. Activities: ovvero ciò che descrive il flusso di esecuzione delle singole funzionalità dell’applicazione. Esempio, un editor di testo avrà come sola attività quella di interagire con un area di testo modificabile (come una textarea, una textbox, ecc). Un programmino per leggere le previsioni meteo, invece, avrà come sola activity la rappresentazione di informazioni prelevate da una fonte.
    Ciò che cambia in una activity è la view , ovvero l’attuale interfaccia che si presenta all’utente. Nel caso di un programmino di previsioni meteo, ad esempio, avremo per lo meno una view per rappresentare le previsioni ed un’altra per scegliere la località di cui ottenere le previsioni.
    La presentazione delle view è gestita delle activites che, come un proiettore di diapositive, sceglie quale rappresentare (in funzione delle azioni dell’utente e/o del flusso di esecuzione)…in ottica MVC, le activities espletano il ruolo del controller (ma non solo).
  2. Services: ovvero servizi che possono essere avviati/interrotti, che non necessariamente devono essere sincronizzati con le activites. Il classico esempio è quello di un player di brani: il servizio di riproduzione di un brano è, di fatto, asincrono rispetto a ciò che l’utente fa (tipo scorrere playlist, leggere i testi dei brani, ecc). L’interazione con il servizi avviene allorquando l’applicazione (o un evento broadcast, come l’arrivo di una telefonata) ne altera lo stato.
  3. Broadcast receivers: un componente in ascolto rispetto agli eventi del sistema: una chiamata in arrivo, il livello della batteria scarica, ecc… (nulla di nuovo rispetto alla gestione degli interrupt dei processi Linux 😉 )
  4. Content providers: ovvero contenitori di dati resi disponibili nelle modalità più disparate e su dati di qualunque natura. Ad esempio, l’elenco dei contatti della rubrica è un content provider, l’elenco di nodi di un file XML contenente le previsioni meteo. Ogni content provider può specializzare il proprio modello dei dati e le modalità di get e/o set dei dati stessi (…qualcosa di molto simile al concetto di model ma più vicino ai Java Bean)

Ora, senza scendere ulteriormente nel dettaglio dei singoli componenti (tanto, per questo c’è un’ottima fonte di riferimento, la pagina di Application Fundamentals di Android), per completare il quadro sulla struttura di un programma Android e sulla sua esecuzione, basta sapere che:

  1. I Content Providers sono attivati/disattivati mediante degli oggetti chiamati Intents
  2. Le Activities ed i Services hanno anch’essi dei metodi/funzioni di controllo ma sono tipicamente di avvio/arresto o di acquisizione del controllo di esecuzione.
  3. Le modalità di esecuzione e i parametri relativi al funzionamento dell’applicazione (ad esempio, l’esecuzione in modalità portrait o landscape, il nome del programma, ecc) sono definiti in un xml (chiamato Manifest)  …qualcosa di molto simile a quanto già presente nei progetti di applicazioni iPhone.

Ok, ma ora veniamo al sodo…


Come mai Android mi ha incuriosito, affascinato e spinto a dedicarvi del tempo a svilupparne applicazioni ?

Per la semplicità nello svilupparne applicazioni ? non direi 🙂 (ci si impiega del tempo solo a installare e configurare il tutto)

…semplice, perché “rischia” di diventare la piattaforma di riferimento di tutti i dispositivi mobile che non hanno alle spalle una accurata attività di ricerca e sviluppo in ambito di OS, come possono essere invece Apple, Nokia, e così via…non è una mia previsione, ma di fatto è già una scelta siglata nel momento in cui aziende come Motorola, HTC, Samsung, SonyEricsson, ecc hanno preso più o meno parte alla Open Handset Alliance.

Badate bene, ognuna di queste aziende di telefonini ci sta mettendo il proprio contributo (di recente ho visto il video dell’imminente SonyEriccson Experia X10…con una interfaccia veramente incredibile) : ognuna sta sviluppando le proprie GUI sfruttando le primitive di Android.

Ma quello che a me più interessa e che sta dando i primi frutti in virtù della vastità delle informazioni e dei servizi offerti da Google, è proprio la disponibilità out of the box di servizi/programmi che, tutti i possessori di dispositivi Android, avranno a disposizione, di volta in volta che Google li rende disponibili.
Una delle più recenti feature disponibili su Android 2.0 è, ad esempio, il programma di navigazione turn-by-turn, che consente di avere PRATICAMENTE GRATIS l’equivalente di un TomTom o Navigon per ottenere indicazioni GPS.

La vera svolta nella realizzazione di un servizio simile su dispositivi mobile è la possibilità di accedere alle informazioni che Google già possiede e che vanno, dalle mappe ai riferimenti e i contatti di attività commerciali, di persone che hanno condiviso in rete le proprie informazioni mediante microformati.

Questo vuol dire che, a differenza degli attuali software di navigazione su cellulari, sfruttando ad esempio anche il software Google Voice, potremo chiedere al nostro cellulare “portami al ristorante cinese più vicino”, come si vede in questo video.

Non finisce qui: provate a cercare un contatto in rubrica e Google suggest vi suggerisce il nome e cognome, eventualmente cercando riferimenti anche in rete.
Considerate pure la possibilità di aggiungere un contatto in rubrica, partendo da informazioni presenti in rete o arricchite dai profili di quest’ultimo sui social network.
Pensate alla possibilità di andare su un contatto e vederne, aggregate, tutte le sue attività in rete e sui social network (come promette il già citato SonyEricsson X10), ovvero, una VERA integrazione del nostro mondo digitale con il resto della rete, con i suoi servizi, i social network.
Per non parlare dei servizi push costantemente attivi per fornire in tempo reale: email, notifiche, aggiornamenti di notizie e dei tweet.

Tutto questo è Android: una piattaforma che in meno di un anno è passata dalla versione 1.0 alla 2.0 (e già hanno annunciato la 2.1) aggiungendo migliorie su migliorie ad un sistema operativo che, anche se oneroso in termini di risorse hardware (la maggior parte dei dispositivi montano CPU da 500MHz) e che, c’è da riconoscerglielo (ad Apple), strizza parecchio l’occhio alla filosofia (di Apple) “The touch is the new click” (prima dell’iPhone i palmari erano degli scomodi dispositivi da usare con un pennino).

In più le applicazioni sono in Java, scelta (credo) fortunata dato il numero di sviluppatori che già conoscono il linguaggio ed i framework MVC che ricalcano molto le scelte architetturali delle applicazioni Android.

Cambierei il mio iPhone per un cellulare Android ?

Hmmm…è dura: l’iPhone è dannatamente semplice, bello e, per quanto mi riguarda, è un iPod touch con telefono e gps…con un OTTIMO negozio di musica ed applicazioni online che mi permette di avere sul mio iPhone un brano che mi viene in mente, pochi minuti dopo averne ricordato il motivetto 🙂
Ormai sono un iTunes-dipendente, quindi la mia musica è naturalmente sincronizzata sul mio iPhone…ed ormai è naturale che sia così.
..certo, se qualcuno tira fuori un cellulare con:

  • Risoluzione schermo doppia rispetto all’iPhone
  • Maggiore velocità
  • Autonomia almeno doppia rispetto all’iPhone (che fa al max 1h di conversazione)
  • Integrazione con Google come sopra
  • Prezzo contenuto

beh…a quel punto un pensierino ce lo faccio 😉