Yahoo Pipes – mashup made easy

4 09 2009

Oggi ho provato ad utilizzare Yahoo Pipes: davvero impressionante!

Si tratta di un servizio che consente di aggregare, filtrare, generare feed partendo dalle più disparate fonti. E’ ad esempio possibile recuperare i feed dei principali quotidiani e filtrare gli articoli in base al fatto che contengano o meno alcune parole (o più in generale un’espressione regolare). Potentissima poi la possibilità di utilizzare come fonte una ricerca di google news (o blog search), sfruttandone tutte le potenzialità per ottenere un’inesauribile fonte personalizzata di new di qualità. Putroppo non è possibile utilizzare (direttamente) i risultati di una ricerca sul web (con google), ma è possibile avere a disposizione quelli di yahoo.

Tecnicamente le sorgenti possibili comprendono oltre ad rss e atom, anche XML, JSON, HTML, CSV, consentendo davvero di accedere a qualsiasi fonte disponibile sul web. L’unico limite è che le fonti non devono avere un file robots.txt che ne impedisca l’accesso.

Alle sorgenti è poi possibile applicare un gran numero di “operatori” che consentono di filtrare, dividere, unire, contare, troncare, verificare l’univocità, ordinare, etc, etc. in modo da ottenere davvero qualsiasi risultato si desideri.

Ma l’aspetto davvero straordinario del servizio è l’eccezionale tool grafico di generazione:

yahoo pipes edit

yahoo pipes edit

E’ un ambiente visuale estremamente semplice da utilizzare e allo stesso tempo potentissimo. Con qualche click è possibile selezionare le sorgenti, filtrarle unirle ed ottenere poi un feed che si può pubblicare con estrema semplicità.

Date un’occhiata al box qui a lato: trovate il feed che ho costruito per ottenere news simili ai contenuti di questo blog. In pochi minuti un risultato davvero eccellente!





Il vicario di Dio sulla Terra ?

6 06 2009

Se il Pontefice fosse il vicario di Dio sulla Terra, Noi, essendo Dio, lo sapremmo.

Con questa lapidaria sentenza, Il Divino Otelma (alias Marco Belelli), intervistato da radio radicale, “dimostra” che Benedetto XVI (che chiama amichevolmente ”Lo Stregone Alemanno”) e i suoi predecessori, non possono essere i vicari di Dio sulla Terra.

Ascoltate l’intervista, perché è davvero uno spasso ;)





La sottile differenza tra IP delivery e Cloaking

12 05 2009

Tra le linee guida di google più “profonde” c’è ovviamente il fatto di evitare il cloaking, ovvero di presentare a googlebot contenuti differenti rispetto a quelli presentati ad un normale utente. Ci sono però alcuni casi in cui presentare un contenuto differente sulla base dello user-agent, non è affatto un “imbroglio”, ma è anzi un modo per fornire migliori informazioni o addirittura una necessità in qualche caso.

In particolare può essere necessario fornire contenuti differenti in base al browser utilizzato (ad esempio in mobilità o con una risoluzione molto bassa) o in assenza di plugin (come flash) o ancora in seguito ad informazioni ottenute automaticamente (tramite cookies) sull’utente.

Altro caso tipico in cui una generazione “specializzata” dei contenuti è utilizzata in modo lecito è legato alla lingua o alla localizzazione geografica dello user-agent. Si tratta di tecniche ormai diffusissime che possono essere estremamente utili e funzionali per gli utenti, anche capisco che possano mettere in difficoltà sistemi puramenti automatici di crawling.

Purtroppo però la posizione di google rispetto all’utilizzo di tali tecniche non è completamente chiaro e mette quindi in grosse difficoltà i webmaster che devono valutare (paradossalmente) se implementare funzionalità a vantaggio degli utenti con il rischio di essere penalizzati dai bot convinti che tali funzionalità siano implementate a loro vantaggio.

Tale problematica ha dato luogo a lunghi dibattiti tra gli addetti ai lavori, tra i quali va senz’altro letto questo post su seomoz blog.

Fortunatamente c’è anche un post sul blog ufficiale di google che fa una buona chiarezza sulla vicenda; lo spirito della “legge” di gogle è estremamente ragionevole:

Googlebot should see the same content a typical user from the same IP address would see.

Ovviamente non è chiarissimo cosa voglia dire “the same content”: identico al byte ? identico solo nei contenuti (ad esempio non nella pubblicità) ? uguale in una buona percentuale del sito ? Sinceramente non credo che sia possibile determinare in mo affidabile al 100% nessuna procedura completamente automatica, visto che mi vengono sempre in mente casi “leciti” estremamente difficili da estrapolare. Ma almeno lo spirito mi sembra estremamente condivisibile.





Alcuni modi comuni per rovinarsi la vita con l’XML

12 03 2009

In un ottimo articolo Kyle Brown, elenca tre “comuni” problemi che affliggono i Web Services basati su XML (SOAP o meno). Merita una lettura attenta perché non mette in evidenza  le meravigliose capacità di un qualche tool, libreria o linguaggio, ma collega a errori di principio nel design i disastri che si riesce a produrre anche in contesti abbastanza semplici e con strumenti tutto sommato ben conosciuti.

Il primo errore è davvero banale e non mette in evidenza nulla di “profondo”: gestire messaggi da parecchi megabyte, magari con dati binari (senza forse neppure accorgersene) è semplicemente una scelta da incapaci; non è certo un problema dell’XML.

Il secondo è invece molto più interessante, perché è davvero una forza che guida spesso il design: definire i servizi ad un livello esremamente basso (ad esempio a livello di ogni singola operazione SQL). Perché (come dice Brown) “[...]such low-level data services often fail.” ? A mio parere il discorso è molto generale: Un Web Service dovrebbe rappresentare un’interfaccia che maschera la complessità che si trova a monte, semplificandone l’utilizzo in base alle esigenze di chi si trova a valle. Purtroppo invece scrivere un XML o richiamare un servizio non è più facile che accedere direttamente ad un DB e scrivere l’SQL relativo, né maschera alcuna complessità o dettaglio implementativo se il contenuto informativo necessario a richiamarlo è in relazione biunivoca con l’SQL utilizzato. Introdurre un layer (o un’interfaccia per l’accesso di una qualche risorsa/servizio) deve essere motivato da concreti vantaggi nel contesto specifico e non è certo buono in astratto e in generale.

Il terzo problema è paradossale e viene fuori soprattutto con SOAP: siccome non è comodo né banale definire gli schema in modo completo e soprattutto non è facile modificarli, spesso alcuni servizi sono solo semi-definiti con una parte (spesso predominate) magari ancora in XML, ma non parte dello schema della richiesta. Questa situazione è spesso solo la spia del fatto che si è sbagliato nel definire le interfacce, che risultano complesse ed devono essere cambiate molto spesso, perché sono poste al livello sbagliato.

Ultima nota a livello generale: in programmazione qualcosa di inutile è quasi sempre dannoso, specie un’astrazione.





Cosa pensate del caso Eluana Englaro ?

8 02 2009

Indipentemente dai miei convincimenti e dai vostri, vi propongo 3 sondaggi sul caso Eluana Englaro.

Condividete il vostro parere: è un modo eccellente per iniziare un confronto, su temi concreti.

Un giudizio specifico sulla sospensione dell’alimentazione e dell’idratazione forzate,

Un giudizio sull’azione del governo Berlusconi,

Considerazioni più generali sul testamento biologico (scelta multipla)





Un decreto piccolo piccolo

7 02 2009

Sono davvero rassicurato del fatto che il governo all’unanimità, agisca con tanta risoluzione e urgenza per impedire a qualcuno di danneggiare il proprio bene più alto (la vita).

Sono ancora più rassicurato dal fatto che le leggi in discussione, semplicemente espropriano ogni cittadino del proprio diritto a scegliere della propria vita.

Ed è come sempre una garanzia ulteriore la forza delle argomentazioni che si concentra adesso sul fatto che non è certa la posisizione di Eluana a riguardo, quando poi, in futuro sarà un dettaglio irrilevante.

Ma la cosa davvero decisiva è che la Legge sia chiamata ad imporsi con la forza in questo conteso, quando invece per “piccole cose”, come la pedofilia …. è molto meglio non chiamarla in causa, come dice addirittura S.Paolo.

Guardatevi questo esilarante servizio delle Iene e capirete a cosa mi riferisco.

http://www.video.mediaset.it/mplayer.html?sito=iene&data=2009/02/06&id=5064&from=email





Il numero esprime la realtà

27 01 2009

Mi sforzo sempre di quantificare le mie stime. E’ il modo migliore (l’unico in effetti) per poterle valutare e quindi migliorare. Spesso è un modo eccellente per tenersi aggiornati sulla realtà. Quanti sono gli abitanti della Turchia ? Quante automobili circolano a Il Cairo ? Quanti dipendenti ha la regione sardegna ? Che fatturato ha il gruppo Fiat o la Microsoft o la Toyota ? Mi faccio spesso domande di questo tipo e provo a rispondermi con dei numeri…

Oggi mi chiedevo quanti blog ci fossero al mondo. Credo che all’incirca 1 persona su 50 che usa abitualmente (almeno 1 volata alla settimana), internet finisca con l’aprire un blog. Quanti hanno un accesso ad internet ? Direi 1.500.000.000 di persone e di queste circa 750.000.000 hanno un accesso abituale. Il numero di blog dovrebbe essere quindi dell’ordine dei 15.000.000.

Vi sembra ragionevole ?

Sicuri ?

Sicuri Sicuri ?

Bene: ho sbagliato la stima di più di 1 ordine di grandezza !! I blogs sono circa 133.000.000 !!!

Date un’occhiata a questo interessante post su pingdom e vi renderete conto.

La cosa più interessante è che, visto che la mia stima sul numero di utenti era sostanzialmente corretta, era sbagliata la mia percezione del grado di “attività” degli utenti. Quasi un utente “attivo” su 5 ha un blog! Salvo che non ci siano utenti (in numero significativo) con più blog… Comunque sia è davvero un aspetto rivoluzionario per il modo di fare informazione dei consumatori dell’informazione stessa.





Beati gli ultimi perché saranno i primi

26 01 2009

Ho avuto modo di leggere per caso la strana storia dell’allenatore della squadra di una scuola “cristo-centrica” che non si scusa per aver vinto troppo nettamente e viene perciò licenziato.

Non mi stupisce affatto la reazione dei “religiosi” (che l’hanno licenziato), ma quella dell’allenatore che sostiene che vincere dominando (e in sostanza umiliando) gli avversari sia onorevole e cristiano.

Lo so che le affermazioni di carattere religioso non possono essere prese alla lettera, ma mi sembra davvero che vincere, dominare ed essere primo, non possa certo essere preso come un valore (in questa vita) da un cristiano.

In effetti, riflettendo con calma, non so bene perché ho una simile idea: “Beati gli utimi perché saranno i primi”, sembra chiarissimo, ma (come sempre) non lo è.

In effetti non dice che i primi saranno ultimi e quindi potrebbero (ad esempio) stare in una posizione mezzana. Comunque non è presente un ordinamento per  valori intermedi (ad esempio i penultimi diventeranno secondi).

Ma la cosa più difficile da comprendere è il fatto che i crisitiani non si sforzano affatto di diventare ultimi in qualcosa nella quale vorrebebro essere primi. Ad esempio ultimi nella gioia (ovvero primi nella sofferenza e nel dolore), per essere primi nel regno dei cieli… Sarà perché non è un loro interesse, ma non mi sembra neanche che la maggioranza dei cristiani (e delle gerarchie ecclesiastice) s’impegni molto per essere all’ultimo posto nella classifica dei più ricchi. Eppure i credenti, dovrebbero crederci davvero e dovrebbero anche aver capito bene il messaggio di Dio che non è affatto in contraddizione con la ragione.

Sicuramente sono io che non capisco qualcosa…. forse ho capito:

Il loro agire è un atto di altruismo! Certo, evitano di raggiungere l’ultimo posto per favorire gli altri (non credenti in testa).

Grazie. Adesso sono molto più tranquillo… però per certe cose, io personalmente scambierei il primo posto nel regno dei cieli, anche con una piazza mediana qui sulla Terra.





Perdita di pacchetti ad alti bitrate

19 01 2009

In un progetto sul quale ho lavorato di recente, mi è capitato di avere a che fare con flussi (streaming multimediali) a bitrate relativamente alto, per l’hw in questione. Scrivo questo post perché siamo stati vittime di un nostro (banale) bug che ci è costato qualche giorno di test e qualche mal di testa: magari qualcuno potrà evitarseli leggendo questo post… non si trova molta documentazione in giro.

Intanto qualche altro dettaglio sul sistema: un client che riceve flussi multimediali in UDP (fino a 10 mbs) su windows embedded ce 6.0, realizzato in c++ con il visual studio 2005, utilizzando direttamente winsock2. Un thread si occupa della ricezione utilizzando semplicemente una socket in modalità bloccante in un ciclo di lettura che ha anche il compito di effetture alcune operazioni sui dati (poco onerose in termini di CPU) e di copiarli in un buffer dal quale un thread consumatore le preleva. Viene utilizzata la funzione recv(), visto che la modalità bloccante non è affatto un problema (e quindi l’ overlapped I/O è inutile) e le completion routine non sono ben supportate da windows embedded ce 6.0.

Tutto sembra funzionare bene, fino a bitrare inferiori a 2 mbs, ma superando tale valore… si manifestano degli strani problemi. Dopo molta fatica (visto che ovviamente non era possibile andare in debug, ma neppure scrivere su file se non pochi kbytes e quidi il debug stesso non poteva che avvenire anch’esso via rete), sembrava inequivocabile che si trattasse di perdite di pacchetti dallo 0.3% al 3% circa. A ridurre la nostra lucità di analisi si metteva anche il fatto che ad avere problema era solo uno streamer che utilizzavamo per la prima volta, mentre quello che avevamo utilizzato fino ad allora funzionava alla grande (ora sappiamo che dipendeva solo dal bitrate).

Il passo successivo (e molto poco divertente) è stato quello di usare wireshark per verificare se una tale perdita di pacchetti era in qualche modo imputabile alla nostra lettura… provate a cercare in un dump 1 paccheto perso, verificando che non ci siano buchi in un continuity counter a 4 bit e con il parser di wireshark bacato. Davvero poco divertente. Comunque le perdite non c’erano!

Il problema è semplicemente legato al fatto che il sistema operativo allocca un buffer interno, settato di defaut a pochi kbytes, che può facilmente venire saturato se il thread che effettua la lettura non è sufficientemente veloce o se viene sospeso (anche solo per pochi ms).

Fortunatamnte la soluzione esiste: basta settare un buffer di ricezione più grande.

unsigned bufferSize = 1024 * 1024;
::setsockopt(s_, SOL_SOCKET, SO_RCVBUF, (const char FAR*)&bufferSize, sizeof(bufferSize));

con 1 mbyte di buffer, a 10 mbs, si possono gestire circa 800 ms di flusso: si tratta di un valore congruo che ci ha permesso di eliminare del tutto le perdite.





Godersi la propria vita

13 01 2009

Tra i diversi slogan delle campagne di “orgoglio ateo” che in questi giorni sponsorizzano i bus di numerose città del mondo, quello che preferisco è sicuramente l’originale:

There’s probably no God. Now stop worrying and enjoy your life.

Meraviglioso quel “probably” ad attenuare l’importanza di quel “God” (pur in maiuscolo) e della sua ipotetica e ingombrante esistenza.

Fantastico soprattutto l’invito a godersi la propria vita.

Proprio questo è in fin dei conti lo spirito più profondo del (mio) ateismo: gioia di vivere e libertà. Tutto il contrario di quelle religioni che parlano di vita, ma sono basate sulla (paura della) morte e magari hanno un uomo crocifisso come simbolo. Che parlano di libertà ma che proibiscono e vincolano quasi tutto. Che parlano di gioia ma la mortificano con il peccato ed esaltano la sofferenza.