Vi regalo questo video, è un'intervista ad Alessandro Alinone (il mio capo) durante l'Indian Developer Summit a Bangalore.
E' stato girato con un telefono quindi non è proprio il massimo della qualità, video e audio sono fuori sincrono e il rumore di sottofondo rende difficile l'ascolto, ma tant'è...
Interview with Alessandro from Kumar Veetrag on Vimeo.

E' con sommo piacere che oggi vi parlo di Coverit Live, piattaforma di blogging live da oggi (ieri) online con Lightstreamer.
Se vi piace l'idea ma non volete abbandonare la vostra piattaforma non preoccupatevi. Gli autori di cover it live hanno visto lungo e prodocuno i loro post in modo che sia possibile publicarli su QUALSIASI piattaforma. L'inclusione è identica a quella di un video di youtube, si incolla un pezzetto d'html nel codice e si è pronti per andare.
Il flow di lavoro sarà dunque il seguente:
- Ci si logga su CoveritLive
- Si crea un nuovo post in tre passi. Uno di questi fornirà il codice html da includere sul proprio blog.
- Ci si logga sul proprio Blog.
- Si crea un nuovo post che farà da "cornice" al post live e vi si incolla l'html fornito.
- Nel frattempo CoverItLive ha aperto la sua console di Live blogging, è il momento di andare "in onda".
Molto semplice insomma. Tutti i visitatori del blog potranno così assistere alla stesura del post, avendo anche la possibilità di interagire con l'autore.
Questa modalità oltre a prestarsi egregiamente alla stesura di un post di cronaca d'un evento proprio mentre questo evento è in svolgimento, può essere anche divertente-utile come stesura collaborativa con leader.
Qui è disponibile un filmato che illustra alcune delle peculiarità del servizio (è in italiano)
Ah dimenticavo, è ovviamente tutto free :D
Beh, siete ancora qui? Su a registrarsi a CoveritLive!
Si sta spargendo la voce che comet non sia ancora pronto per il mondo reale.
Forse perchè si tratta di un termine coniato solo nel 2006, ma posso assicurarvi che questa opinione è completamente errata.
E' vero, la maggior parte dei server comet in circolazione sono molto giovani, ancora in rodaggio e privi di features avanzate, ma non è così per tutti.
Il team di cui faccio parte dall'ottobre 2004 è attivo su un progetto comet dal lontanissimo 2000... Lightstreamer è pronto da tempo :D
Eccovi dunque alcune applicazioni comet che usano Lightstreamer in sistemi di produzione, pultroppo molte cose mi sfuggono per via dell'accordo stretto con TIBCO mentre altre non posso rivelarle per questioni contrattuali e altre ancora non sono proprio accessibili via internet.
- Extrabet è stato forse il primo ad essere visibile sulla rete. E' un sito di scommesse sportive che fa capo a Igindex. E' pultroppo sviluppata col client javascript 3 (le altre usano tutte la 4, in sviluppo c'è attualmente la 5)
- Igindex possiede oltre a extrabet un certo numero di siti di scommesse varie, solo alcuni già migrati a Lightstreamer come quello per le scommesse finanziarie e CFD (cioè??) -confrontate con igsport che non ha ancora migrato e utilizza per il flusso di dati una applet java-
- Finanzen.net mostra degli indici di borsa aggiornati in realtime. Non sono proprio sicuro che siano indici di borsa...Fede confermi?
- Hedgestreet offre invece una piattaforma di trading per quello che credo si definisca un "mercato privato" (nuovamente mi appello alla mia ignoranza finanziaria)
- C'è anche RMDS2Web, si tratta di un prodotto che appoggiandosi a Lightstreamer publica su browser dati prelevati dai feed di Reuters
- Alpha Theory ha una demo in flash che mostra la lora applicazione. E' un video quindi non vedrete "realmente" Lightstreamer all'opera, esso gira nella versione reale (c'è una fresca press release a proposito).
- Infine c'è questa applicazione che non so cosa sia, di chi sia e di cosa tratti (per evidenti problemi di lingua...) ma vedo che gira con Lightstreamer.
- Se poi vogliamo esagerare ci sono le nostre demo e quelle ospitate da Tibco.
Alcuni clienti sono visibili qui ma come dicevo molti non sono al momento nominabili :( mentre alcune recensioni sono elencate qua
Buon Lightstreaming...
Per evitare collisioni tra diverse librerie javascript che vivono nella stessa pagina html, l'OpenAjax ha ideato l'OpenAjax Registry, un registro di tutte le variabili "globali" (quelle che risultano come window.qualcosa) presenti in ciascuna libreria.
Per partecipare ed essere accettati nel registro viene richiesto alla libreria di utilizzare un qualcosa che può ricordare i "package" java. Si richiede infatti che tutti gli oggetti presenti in una libreria (e dire oggetti in javascript comprende variabili funzioni classi...) siano dichiarati non a livello window (window.qualcosa) ma sotto una o due o tre, cmq poche variabili a livello winodow (window.VariabileAccettataDalRegistry.qualcosa).
Ad esempio nella libreria javascript di Lightstreamer stiamo procedendo alla migrazione di tutte le classi sotto un oggetto Lightstreamer, così dove prima era
var lsPage = new PushPage();presto bisognerà usare
var lsPage = new Lightstreamer.PushPage();e così via per tutte le altre classi.
Ma non è solo la parte "visibile" a cambiare, dove infatti ora noi usiamo variabili globali internamente (che per nostra convenzione iniziano tutte con "LS_") dovremo anche qui utilizzare qualcosa attaccato all'oggetto Lightstreamer. In questo modo includendo le librerie del web client sulla window ci sara un unico e solo oggetto in più: window.Lightstreamer .
Con questo noi eviteremo che nel caso in cui il client Javascript di Lightstreamer sia usato in concomitanza con una libreria che possiede anch'essa una classe PushPage, ci sia una collisione e non funzioni nulla perchè una PushPage ha sovrascritto l'altra. Infatti non avremo dichiarate nella pagina 2 variabili PushPage ma un Lightstreamer.PushPage e un AltroToolkit.PushPage .
Perchè posto ciò? Perchè Jon Ferraiolo di IBM (è lui che tiene in ordine le attività dell'OpenAjax) ha appena postato sul blog dell'alleanza un "call to arms" per tutti gli scrittori di librerie javascript a sottoporre i propri global al registry come registry candidates. I candidates vengono poi valutati secondo alcune linee guida dai membri dell'OpenAjax e infine se idonei diveranno nomi ad uso esclusivo dei possessori di tale libreria "per sempre".
Potete dare un occhio all' entry di Lightstreamer tra i registry candidates OpenAjax.
Premetto che non si tratta di comete come Comet Holmes...
Cos'è Comet?
Bisogna partire, come nell'articolo su CSRF, dal meccanismo richiesta/risposta del web.
Molto semplicisticamente, ogni volta che vogliamo una risorsa dal web (ad esempio una pagina di wikipedia) inviamo una richiesta e otteniamo una risposta, o meglio apriamo un "canale" inviamo la richiesta sul canale, riceviamo una risposta sul canale e chiudiamo il canale. Un canale eh? Immaginate un tubo che va dal vostro PC al server dove risiede la risposta che desiderate.
Un tempo le richieste erano per lo più fatte per ottenere pagine intere. Oggi, grazie all'hype generato dalla parola AJAX molte volte ci troviamo a non richiedere pagine intere ma pezzetti di pagine, ad esempio se rimanete a fissare -intensamente- GMail vedrete che la vostra pagina s'aggiorna con le nuove email senza essere completamente ricaricata.
Per fare ciò (ritirare pezzetti) si usa comunque un meccanismo di richiesta risposta ma in questi casi la richiesta viene fatta automaticamente senza bisogno di cliccare alcun che, è questa la "magia" di AJAX (anche se possibile già prima di AJAX...ma questa è un altra storia). [GMail di tanto in tanto apre il canale, manda una richiesta "C'è nuova posta?" al server, che risponde "no" oppure "si, questa: ..." e poi chiude il canale: se avete firebug rendetelo visibile e guardate il tab "NET" vedrete di tanto in tanto che scarica qualcosa].
Ma sto Comet? Dunque con l'approccio "ogni tanto invio la richiesta" ci sono 2 principali svantaggi:
- il primo (poco comprensibile se non si hanno nozioni di http...) è il ripetersi degli header che genarano traffico inutile sulla rete (spreco di banda insomma).
- il secondo sta nella latenza dei dati, cioè il tempo tra quando il dato è disponibile e quando arriva nella vostra pagina. Immaginate che vi inviino una mail ogni minuto. Se gmail chiedesse al server se ci sono nuove mail ogni 2 minuti, sicuramente non tutte le mail vi arriverebbero il prima possibile. In generale questo può essere più o meno un problema a seconda dei dati di cui si parla (immaginate un trader che aspetta le ultime quotazioni).
Qui entra in gioco Comet che stravolge questo meccanismo. Con comet il canale viene aperto, la richiesta inviata ma la risposta può:
- Non essere immediata (caso long-polling e streaming). Non c'è più necessita che il server di GMail risponda "non c'è nuova posta" e chiuda il canale, con questo approccio tal server potrebbe semplicemente aspettare col canale aperto e non appena una nuova mail è disponibie mandarla, il tutto senza dover mai mandare risposte negative (meno banda e meno latenza). [In una situazione di long-polling dopo la risposta il canale verrebbe chiuso e subito riaperto, in caso streaming sarebbe tenuto aperto].
- Essere più di una (caso streaming). Aprire il canale e inviare la richiesta implica dei tempi "lunghi" e uno scambio di headers. Potendo ricevere più risposte sullo stesso canale si eliminano in buona parte questi tempi e questi headers (ancora meno banda e ancora meno latenza). Lo streaming può essere fondamentale per questi motivi in alcune situazioni. Pensate al buon vecchio trader che deve avere sempre la quotazione più fresca possibile, non può ad ogni nuova quotazione "aspettare" che il canale venga chiuso e poi riaperto col rischio di avere alcuni dati con latenza maggiore!
Ora è chiaro cos'è comet?
Eccovene un paio di esempi live, quelli che sono secondo me più rappresentativi:
Simulazione di quotazioni
Basilare simil-chat carattere per carattere (per goderla appieno aprirla su 2 finestre differenti o farla aprire a qualcun'altro contemporaneamente a voi)
Se non vi bastano ce ne sono comunque altre.
E infine se volete vedere un'applicazione (cioè non una demo) vi consiglio igindex, il box centrale "Live prices" e l'applicazione interna accessibile previa registrazione sono aggiornate con Comet.
Il paper (come si dice in italiano??) Changing the Web Paradigm di Alessandro Alinone è un approfondimento consigliato.
Inanzitutto devo dire d'esser rimasto un po' deluso (e voi sapete quanta affezione ho per Google!). Non sapevo neanche io cosa aspettarmi ma pensavo a qualcosa di più tecnico mentre la discussione è stata quasi sempre ad alto livello.
Tralasciando le generosissimissime colazioni/pranzi/break (a pranzo c'era il sommelier!! <- si scrive così?) offerti da google ho assistito a diversi speach. I primi 4 sono stati -corti e- a catena, si è parlato -diciamo- del web 2.0, del mondo Open Source e delle sue relazioni con google nonchè delle API per le mappe. A proposito è assolutamente da vedere il sito dei trasporti publici di Helsinki...ad ora è in polling con un back-end in tecnologia .NET (se avete FireBug vedrete come ogni secondo viene fatta una richiesta di Query.aspx), pensate che fico implementarlo con Lightstreamer!
E a proposito di nuovo, Goobuntu esiste davvero!! E' il linux usato dai dipendenti google, probabilmente legato a doppio filo con l'ambiente e le applicazioni interne (ovvero noi non lo vedremo mai a meno che ci facciamo assumere) ma quantomeno ora so che esiste davvero!
Nel pomeriggio ho seguito il seminario su GWT e GData.
Del primo è stato detto cosa fa, perchè conviene usarlo etc ect. Una via di mezzo tra presentazione e marketing. Un unico pezzetto di codice mostrava la semplice realizzazione di una RPC...insomma, nulla di rilevante... ma sopratutto neanche un cenno a Comet! :D ok ok, sono di parte.
Del secondo avevo letto solo parzialmente. L'idea è davvero potente: accesso ai dati personali (le mail, adwords e altri servizi più "sensibili" sono escluse) di un utente in lettura e scrittura da parte di una applicazione di terze parti. Tale applicazione può essere una applicazione Java / Perl / Altri (essì a quanto pare han prodotto le API per il servizio in diversi linguaggi) nel qual caso l'utente deve fornire i propri dati d'accesso a tale applicazione (riiiiischio!) oppure una web application in Javascript nel qual caso entra in gioco un meccanismo ad autorizzazioni: praticamente l'applicazione deve sostituirsi momentaneamente con una pagina hostata da google passandovi le proprie generalità. A quel punto l'utente può cliccare per autorizzare l'applicazione ad accedere ai propri dati nel qual caso la pagina di google ri-redirige l'utente alla pagina di partenza passando un parametro speciale (detto token). Con questo token l'applicazione può parlare con google come se fosse loggata come l'utente che la sta usando ma senza entrare mai in contatto con user e password. Sinceramente ho un grosso dubbio: per un utente "navigato" i rischi sono certamente azzerati, ma per un utente poco esperto, temo che la pagina di autorizzazione suonerà come un "clicca ok o la cosa che vuoi provare non funzionerà". Cosa assolutamente vera se non fosse che tale utente rischia di non rendersi conto che ha bisogno di verificare l'affidabilità del sito che vuole accedere ai suoi dati! ... NB se un servizio del genere vi cancella tutti i calendari poi non dite che non ve l'avevo detto :D ... speriamo che abbiano pensato bene a cosa è permesso e cosa no...
Per la seconda sessione avevo scelto il workshop sulle mapplets, ma essendo sprovvisto di PC sono uscito poco dopo la presentazione. Anche in questo caso la situazione sembrava molto poco tecnica e più orientata a un primo contatto con le API per le mappe...insomma, nulla di spinto o di non deducibile da uno sguardo alla documentazione, per cui il dispiacere di non aver potuto partecipare è stato molto limitato.
Infine i gadgets...google ha avuto la buona idea di regalare a tutti una maglietta dell'evento e una scatola del gioco mastermind...si si, son proprio fuori quelli lì!
[Devo fare un cenno alla musica scelta, davvero tranquilla e rilassante, a tratti trip-hop! Saluto Reggie e Za che mi hanno accompagnato in questa giornata!]
Il 16 Ottobre (salvo imprevisti) avrò l'onore/onere di tenere il mio primo speech publico!
L'incontro è organizzato dal gruppo JMDF (sul sito è possibile iscriversi al meeting) e si svolgerà al CNR di Pisa sotto la supervisione Sun
L'argomento del mio intervento sarà "Mobile AJAX e Midlet" relativamente a Lightstreamer. (clicca qui)
Ne approfitto anche per segnalare il mio nuovo blog completamente in inglese e anch'esso su Lightstreamer:
Mone @ Lightstreamer
Wow e wow!
{createImage(service.iconUrl)} {title}
{user.nickname}, liked this
{body}