Apr 15

Il kernel 2.4 di Linux da una prospettiva diversa.

Apr 14

Da circa 5 anni utilizzo Linux come sistema operativo preferenziale: sul mio portatile Windows é stato prima relegato ad una piccola partizione, poi del tutto eliminato.

Personalmente utilizzo il computer in due modi profondamente diversi.

  • Fede “utente standard” é tutto mail, office, skype, etc.
  • Fede “power user” vuole aver una shell di tutto rispetto per lavorare a basso livello, poter compilare velocemente libreirie e programmi all’occorrenza, non disdegna di utilizzare Photoshop & co, etc.

Quando ho deciso di abbandonare progressivamente Windows come piattaforma personale per approdare a Linux, ho fatto una scelta precisa basata sulle funzionalità .

  • Windows mi consentiva molto facilmente di essere un utente standard, molte meno un power user.
  • Linux mi rendeva la vita leggermente difficile su tutti i fronti, ma potevo avere il controllo completo della macchina da una parte e disinteressarmi completamente dei problemi di sicurezza e virus legati a Windows che ritengo essere solo inutili perdite di tempo.
  • In quel periodo non potevo considerare Mac come alternativa valida: il vecchio System 9 era per me troppo fuori dagli standard, Mac OS X si affacciava come promettente ma m’intimoriva la piattaforma hardware PowerPC.

Scegliendo Linux mi sono detto: nel tempo migliorerà , interverranno anche le grandi aziende affiancando le comunità  di sviluppatori e il gap di facilità  e funzionalità  sulle “cose scontate” verrà  colmato.

Questo é capitato solo in parte. Linux, per facilità  d’uso e installazione, é migliorato moltissimo rispetto a cinque anni fa. Ma resta sempre indietro:

  • il supporto dell’hardware é migliorato moltissimo, ma resta ancora moltissimo da fare sui drivers terze parti;
  • utilizzare device particolari é sempre un problema, come ad esempio connettersi via cellulare o palmare, sincronizzare i dati;
  • banalità  come installare Skype, a volte ti prendono mezza giornata solo per far funzionare l’audio e le chiamate vocali e in ogni caso ti becchi un client di 2 generazioni più vecchio rispetto quello Win.

Mi fermo qui perché non voglio assolutamente scrivere un articolo a sfavore di Linux e a favore di qualcun’altro. Adoro Linux, ammiro e sottoscrivo in pieno i concetti di base del software libero, stimo tutti gli sviluppatori che si prestano a un così grande, impegnativo progetto comune.

Quello che é mancato a Linux nel corso degli ultimi anni é una visione comune, che potesse concentrare gli sforzi e le immense quantità  di lavoro spese su obiettivi comuni di eccellenza nei tempi necessari a mettersi in pari a Mac OS X e magari, dati i continui rinvii di Vista, a superare Windows.

Non penso che Mac OS X sia il sistema operativo perfetto, ma Apple ha agito (e sta agendo), in modo decisamente più furbo. Hanno scelto di utilizzare le fondazioni BSD, solidissime da 20 anni di sviluppo, e sviluppare in innovazione nell’interazione uomo-macchina.

Linux e tutti i suoi progetti correlati hanno una fortissima caratteristica di dispersività :

  • a differenza di Win e Mac, la comunità  di sviluppo open source mantene non una interfaccia grafica, ma una pletora (Gnome, KDE, XFCE, etc);
  • i subsistem audio di Linux sono almeno due (ALSA e il più vecchio OSS, che comunque fatica a scomparire), non parliamo dei sistemi di gestione audio che sono molti, molti di più;
  • ogni distribuzione ha praticamente il suo package manager, o la customizzazione del package manager di qualcun’altro, il suo installer, etc.;
  • se ti sbagli ad aggiornare il kernel, c’é il rischio di dover ricompilare una pila di driver (ma possibile che nonstante la natura monolitica del kernel Linux aiuti pochino non si sia ancora trovata una soluzione decente?).

Il vantaggio é la liberta di sceltà . Non ti piace Gnome, usi KDE per esempio. Intanto diventi scemo e passi le notti a fare tuning.

Forse ho meno tempo, forse ho meno energie, forse ho meno voglia di passare le notti a capire perché far girare bene VMWare sia sempre un terno al lotto.

Ho bisogno che le cose nella maggioranza dei casi funzionino e basta. E voglio per aprire una bash per farmi i fatti miei quando ne ho bisogno. E non voglio tornare alle crociate contro possibili intrusioni e virus.

Per cui passo a Mac.

Mar 4

Mi sono messo in testa di sistemare un po’ le infrastrutture dell’azienda, così la settimana scorsa ho messo mano alla connettività .

Per connetterci ad internet, proteggerci e elargire alcuni servizi anni fa avevamo assemblato una Linux box dotata di una rarissisma scheda ADSL PCI: chipset Itex che miracolosamente eravamo riusciti a far funzionare… chiaramente ricompilando kernel e moduli.

La macchinetta ormai era vetusta, la scheda ADSL PCI non più supportata (a Itex é fallita) e in azienda si sentiva la voglia di un passaggio a banda ancora più larga: una bella ADSL 2+ da 10 o 20 Mbps a costi decisamente abbordabili.

Parto con il progetto sperimentando, e impazzendo, su varie soluzioni… ma questa é l’anima dello smanettone!
Prima di tutto le distro firewall oriented. Nel mondo dell’OS si trova molto, le maggiori che ho provato sono:

Durante una lunga serata di confronto l’amico Leonardo Buffa, presidente del Bilug e specialista di reti, mi aveva consigliato una soluzione ancora più tosta: OpenBSD e hardware dedicato Soekris. I vantaggi di questo approccio era lampante:

  • un hardware semplice e stabile, a basso consumo e senza parti mobili soggette a rottura (sistema operativa installato su Compact Fash o Disk on Module);
  • OpenBSD é famoso perla sua stabiltà  e mancanza di exploit;
  • pf, Packet Filter il firewall comune a molti BSD e anni luce più semplice da configurare di IPTable.

Alla fine rinuncio e scelgo Endian, di gran lunga la distro più facile completa e più facile da utilizzare via l’ottima interfaccia web. Un po’ di campanilismo: Endian é italiana!!

Passiamo all’hardware:

  • riciclo un obsoleto ma ancora ottimo, un Athlon XP da 1,5Ghz che prudenzialmente abbatto a 1Ghz;
  • modem/router ADSL 2/2+ che mi permetta di essere utilizzato in PPPoE da Linux, uno dei modi più facili e sicuri per utilizzare ADSL con il Pinguino.

Tolto il lavoro di prova e sperimentazione iniziale, la messa in opera del nuovo firewall ha significato:

  • un paio d’ore di assemblaggio e test dell’hardware,
  • circa 15 minuti per l’installazione di Endian,
  • un’altro paio d’ore per la configurazione completa del firewall e dei servizi di rete di contorno,
  • nessun costo.

Ne approfitto e sistemo anche la rete Wifi: un ottimo LinkSys WRT54GL a cui sostituisco il firmware con OpenWrt.

Gen 29

Unix.png Nell’ultimo mese mi é capitato di sentire “Mac OS X é basato su Linux”: no, niente di più sbagliato. Mac OS X fa parte della grande famiglia dei sistemi operativi Unix, nel dettaglio del ramo che ha preso vita dallo Unix di Berkley: il BSD.

Le origini di Mac OS X risalgono a metà  degli anni 80 in quanto erede diretto di NeXT Step.

Breve parentesi storica. Nel maggio del 1985 Steve Jobs venne estromesso dalla Apple, l’anno successivo

  • acquisì la “The Graphics Group” che chiamo Pixar (da poco venduta a Walt Disney in cambio di un sostanzioso pacchetto azionario) e
  • fondò la Next Computer, nuovo tentativo di Jobs sul mercato del computing d’avanguardia.

Il progetto Next prevedeva la realizzazione di computer di fascia alta, delle workstation per intenderci. Il progetto hardware assomigliava ai Mac di quel periodo basati su processori Motorola di classe 680×0. Il sistema operativo NextStep venne realizzato a partire:

  • dal kernel Mach, microkernel sviluppato in seno alla Carnegie Mellon University;
  • dalla userland dello Unix BSD.

Su questa base vennero sviluppati i contributi orginali del gruppo di ricerca e sviluppo della Next:

  • il linguaggio di programmazione Objective-C, per un ambiente integrato ad oggetti con forti caratteristiche di modularità  e riusabilità 
  • un’interfaccia grafica basata su un motere di rendering Postscript, quindi vettoriale e indipendente da media.

Entrambe queste due caratteristiche si ritrovano in Mac OS X: Objective-C é tuttora il linguaggio preferenziale per lo sviluppo, l’interfaccia Postscript si é evoluta in Aqua in PDF (variante del PostScript).

Anche le linee guida di licensing erano già  definite sul finire degli anni ottanta: la base del sistema operativo (kernel e userland) sono sempre state open source, l’interfaccia grafica proprietaria della Next. Attualmente il progetto Darwin é il rilascio open della base di Mac OS X, da cui sono nati diversi progetti completamente open source come GNU Darwin.

NextStep vide la luce nel 1988 e girava specificatamente su hardware Next. Nel 1993 erano pronti i porting per le versioni PowerPC e Intel: questo spiega i tempi di migrazioni quasi istantanei dell’ultima evoluzione in Apple (il porting per Intel era sostanzialmente già  pronto da anni).

First_Web_Server.jpgUna curiosità  per gli amanti del web. Quando nel 1991 Tim Berners-Lee, ricercatore del CERN, inventò HTML e sviluppo il primo browser lo fece su una workstation NextCube con sistema operativo NextStep.

A causa di un grosso calo di vendite e di prodotti sbagliati, nel 1996 Steve Jobs venne richiamato in Apple, che acquisì la Next per 402 milioni di dollari: staff e know-how vennerò integrati e si posero le basi per il futuro sistema operativo della mela che venne rilasciato nel 1999 in versione server, nel 2001 la prima é più conosciuta versione desktop (Mac OS X 10.0 Cheetah).

I tentativi precendenti al ritorno di Jobs nel rinnovare il sistema operativo furono fallimentari e abbandonati: Taligent e Copland. Jobs impose l’uso di NextStep come fondazione del nuovo sistema operativo (nome in codice del progetto Rhapsody).

L’evoluzione da NextStep a Mac OS X fu sostanziosa:

  • il nuovo kernel XNU, basato sull’originale Mach, venne integrato di alcune funzionalità  monolitiche dall’ambiente BSD per ridurre i tempi di latenza classici dei micro-kernel;
  • l’interfaccia raffinata dal punto di vista grafico per il palato degli utenti Apple e portata da PostScript a PDF.

Ma la fondazione del sistema operativo resta ancora oggi di chiara derivazione NextStep: la maggior parte delle classi e delle interfacce portano un prefisso NS_ che ne indica chiaramente l’origine.

Gen 24

Può essere interessante integrare Wordpress con le social web application per arricchire i contenuti del proprio blog o per sperimentare formule di marketing integrato.

L’obiettivo di questo esperimento é utilizzare Flickr in modo da avere una gallery contestuale ai contenuti del post. La denotazione contestuale la ricaviamo attraverso il tagging.

Abbiamo bisogno di installare e attivare due plugin di Wordpress:

Vi rimando alla documentazione dei rispettivi plugin per le procedure d’installazione e configurazione.

Una volta che siete certi che Ultimate Tag Warrior funziona ed avete taggato qualche post, si procede in questo modo. E’ necessario modificare il file ultimate-tag-warrior.php che trovate nella cartella /plugins/UltimateTagWarrior aggiungendo in coda la seguente funzione.


function UTW_GetTagsForCurrentPost() {
global $utw, $post;
$myTags = $utw->GetTagsForPost($post->ID);
$r = array ();
$i = 0;
foreach ($myTags as $myTag) {
$r[$i] = $myTag->tag;
$i++;
}
return $r;
}

UTW_GetTagsForCurrentPost() ha il semplicissimo compito di estrarre l’array di tags che abbiamo assegnato ad un post.

Fatto questo modifichiamo i nostri template. L’idea é che nel loop di Wordpress, vicino a post e tag, vengano estratte le immagini contestuali tratte da Flickr attraverso il plugin flickrRSS. Ecco l’esempio di codice.


<?php
if(count(UTW_GetTagsForCurrentPost()) > 0) {
$myTags = implode(",", UTW_GetTagsForCurrentPost());
get_flickrrss(6, "user", $myTags, "square", "", "", "IL_VOSTRO_ID_FLICKR");
get_flickrrss(6, "public", $myTags, "square", "", "", "");
}
?>

Il funzionamento anche in questo caso é semplice:

  • innanzi tutto verifico che il post abbia effettivamente dei tags,
  • poi concateno i tag delimitandoli con le virgole (come richiesto da flickrRSS,)
  • infine richiamo flickrRSS per stampare le immagini.

Vi rimando al sito di flickrRSS per la documentazione e le possibilità  della funzione.

Gen 24

Per poter accedere alla API di YouTube é necessario ottenere un Developer ID e la documentazione é abbastanza completa, anche se mi aspettavo qualche metodo in più. Le metodologie di accesso sono due: REST e XML-RPC.

Obiettivo del post é fare una panoramica di come implementare una classe Java che, dati DEV_ID e una lista di VIDEO_ID, acceda alle API di YouTube, ne scarichi i dettagli, provveda a costruire una cache su filesystem. Non entrerò in dettagli che uno sviluppatore Java conosce sicuramente meglio di me.

Metologie di caching:

  • la più semplice in Java é serializzare l’oggetto ottenuto dall’XML su filesystem;
  • per palati più raffinati, si possono utilizzare ottime librerie open source come

REST Interface

Interfaccia estremamente semplice si basa su una chiamata http che come risultato restituisce un file xml. Un esempio.

http://www.youtube.com/api2_rest?
method=youtube.videos.get_details&dev_id=YOUR_DEV_ID
&video_id=YOUR_VIDEO_ID

dove:

  • method é il parametro in cui si indica il metodo delle API YouTube a cui si vuole accedere;
  • dev_id il proprio id di sviluppo;
  • video_id é l’id univoco del filmato su YouTube.

La nostra classe:

  1. scorre la lista di VIDEO_ID;
  2. verifica se esiste già  una cache per quel video (o verificando su filesystem se esiste l’oggetto serializzato o interroganto EHCache/OScache);
  3. se non esiste una cache:
    • farà  la chiamata http alle API di YouTube
    • riceverà  l’xml di dettaglio del video per quel determinato VIDEO_ID
    • elaborerà  l’xml trasformandolo in un oggetto strutturato nel modo che ci viene più comodo e utile
    • creerà  la cache per quell’oggetto
  4. se esiste l’oggetto cachato, la classe si preoccuperà  soltanto di recuperarlo;
  5. viene restituita una lista di oggetti contenenti i dettagli dei nostri video.

Per effettuare una chiamata http é necessaria una libreria che implementi un client http, va benissimo l’HttpClient del progetto Jakarta Commons. La chiamata può essere fatta in GET o in POST: in questo senso la documentazione di YouTube non dice nulla (l’esempio sopra simula una GET) ma penso che l’API accetti entrambi i metodi (preferibile il POST).

Il codice (plausibilmente un metodo privato della classe) dovrà  essere strutturato più o meno così:

HttpClient client = new HttpClient();
PostMethod method = new PostMethod(”http://www.youtube.com/api2_rest”);
method.addParameter(”method”, “youtube.videos.get_details”);
method.addParameter(”dev_id”, YOUR_DEV_ID);
method.addParameter(”video_id”, YOUR_VIDEO_ID);
try {
// eseguo la chiamata
int statusCode = client.executeMethod(method);
if (statusCode != HttpStatus.SC_OK) {
System.err.println(”Method failed: ” + method.getStatusLine());
}
// leggo la risposta
byte[] responseBody = method.getResponseBody();
// utilizzo la response.
// Attenzione: assicurarsi che l’encoding sia corretto ne non siano dati binari
String myXML = new String(responseBody));
} catch (HttpException e) {
… // gestione dell’eccezione
} catch (IOException e) {
… // gestione dell’eccezione
} finally {
// chiudo la connessione.
method.releaseConnection();
}

Le possibilità  di ottimizzazione sono svariate, come per esempio creare un unico client e sfruttare un’unica connessione per evitare overhead inutili: a voi la scelta. La response che si otterrà  sarà  simile a questa.

Per elaborare l’xml e trasformarlo in un più comodo oggetto, possiamo utilizzare uno dei moltissimi parser a disposizione della piattaforma Java. La scelta in questo caso é più orientata su considerazioni di gusto (riguardo l’API del parser), di leggerezza del parser e della sua velocità  di elaboarzione.

Per un utilizzo leggero e snello consiglio di utilizzare un pull-parser anche senza feature di validazione (che in questo caso servono a poco e non avremmo comunque il DTD su cui lavorare). Un elenco veloce di alcuni:

Alla prossima puntata farò una panoramica su come può funzionare l’approccio via interfaccia XML-RPC.

Gen 23

rev37668_1__ori.jpgPrendetevi la rivincita e friggetela!

Inaugurata oggi alla Galleria Aus18 la mostra “Fritto Misto”. L’artista Mirko Credito si accanisce su pad, console, pistole e modellini friggendoli: una veloce impanata, una bella pentola d’olio caldo e l’arte é pronta da servire.

Gen 22

Come volevasi dimostrare: l’innovazione di Nintendo Wii l’ha spuntata sulla strategia “tutti muscoli” della Sony Play Station 3: i dati di vendita danno la nuova console Nintendo a oltre 1.200.000 unità  vendute contro le circa 520.000 della PS3.

Entrambe le console hanno avuto i loro problemi di lancio:

  • sembra che Sony abbia avuto difficoltà  nel processo di produzione che hanno resa difficoltosa la reperibilità  nei negozi;
  • Nintendo dev’essere stata seppellita dalle richieste di risarcimento per i danni provocati dal “lancio” del nuovo controller tanto da pubblicare una pagina di precauzioni.

L’innovazione ha in ogni caso i suoi costi, ma la Nintendo vince sempre per simpatia!

E non contenti, il famoso modder Ben Heckerdorn si é inventato il Wii portatile:

Wii portatile

Queste le caratteristi principali:

  • 16:9 widescreen LCD, 7 pollici di diagonale
  • Suono Stereo
  • Gamecube controller port
  • Built-in Sensor Bar a corto raggio
  • Porta per usare la Sensor Bar originale e A/V output jacks (per usare un televisore esterno)
  • Built-in power supply e vano per il cavo di alimentazione
  • Dimensioni: 8.5 x 7.7 x 2-inches

Un nuovo modo per “lanciare” il Wii Remote ovunque ti trovi!

Gen 19

Per anni mi sono rifiutato di utilizzare un telefono cellulare che facesse troppo più che chiamate e invio sms.

Non per ristrettezza di vedute, al contrario perché sapevo che avendo un dispositivo mobile di ultima generazione mi sarei scontrato con la mia insana curiosità : sperimentare i servizi di connettività , navigare con Opera Mini, leggere RSS e controllare email, installare tonnellate di applicazioni Java.

Nell’arco di poco più di sei mesi, un po’ per lavoro un po’ per sfizio, ho ceduto alla tentazione:

  • prima un ottimo i-mate K-JAM,
  • poi un galattico Sony Ericsson K800i (grandiosa la fotocamera!).

Alla fine é andata come pensavo e ora mi ritrovo smanettone pda. Ho resistito solo alle video-chiamate, che trovo ancora immorali. Ma forse perché sono fotogenico come un tubero isterico.

Mondo affascinante e pensando a questi accrocchietti, toccando con mano la “potenza di fuoco” che possono esprimere, riflettendo sul significato di terminale mobile, lumando le capacità  dell’iPhone mi sono trovato ad affrontare una domanda: a quando i server portatili?

Pensateci bene:

  • la miniaturizzazione porterà  a dispositivi sempre più performanti e con capacità  di storage sempre maggiori;
  • le nuove tecnologie per le batterie ne accresceranno l’autonomia;
  • lo sviluppo e l’accesso di servizi mobile sempre più evoluti si concretizzeranno in costi di connettività  sempre più bassi e velocità  di trasmissione sempre più elevate.

Già  ora sono sul mercato palmari e smartphone con processori Risc da 500Mhz e oltre: roba che si vedeva nelle farm qualche anno fa compresse da una rack a 19″ in 300 grammi di peso in mano.

Ti porti in tasca il tuo server web, installata la tua istanza di Wordpress e pubblichi.

Intanto il GPS integrato traccia la tua posizione nel mondo.

Scatti una foto con la fotocamera integrata da 8 megapixel e viene salvata diretamente su Flickr e “posizionata”.

Gli RSS che leggi sono filtrati sulla base delle tue preferenze e su dove ti trovi.

Google Map si ricorda l’elenco delle tue preferenze e ogni volta che ti avvicini ad una location che presume t’interessi ti avvisa.

Il microfono del device é sintonizzato sulla tua frequenza cardiaca: se stai male ti avverte con un bip di allarme, ti lascia cinque secondi per annullare, poi chiama l’ambulanza notificando automaticamente dove sei.

E potrai ancora telefonare: incredibile! Ovviamete in VoIP.

Connected life…

Nov 30

Esco dal seminato per avventurarmi nel mondo delle console.

In questi giorni sono uscite due console di nuova generazione: la tanto attesa Play Station 3 di Sony e la Nintendo Wii, che vanno a raggiungere la Xbox 360.

PS3 e Xbox 360 hanno puntato tutte sulle avanzatissime caratteristiche hardware: processori multicore spettacolari, grafica hdtv, hard-disk, conettività  wifi, bluetooth e usb. La sfilza di caratteristiche hardware di alto profilo si spreca. Tolti i muscoli, PS3 e Xbox a mio avviso non stupiscono su nessun fronte, se non forse per il prezzo.
Nintendo ha messo sul mercato una console meno “muscolosa”, economicamente più abbordabile e ha scommesso tutto sul controller: addio vecchio pad, innoviamo l’esperienza di gioco. Inutile spiegare il funzionamento del nuovo pad Nintendo, molto meglio vedere le facce di chi lo ha sperimentato per la prima volta.

La mia opinione: entusiasmante, soprattutto quando si riesce a far giocare a golf anche un coppia di vecchietti giapponesi!

Le ricadute del nuovo controller non si fermano qui. Ogni console moderna che si rispetti deve potersi connettersi ad internet in modo che utenti geograficamente distanti possano giocare insieme: la viralità  secondo il mondo console.

Con un piccolo sforzo si aggiunge un browser nel pacchetto di base della console, così se proprio voglio posso anche navigare: insieme a cellulari, smartphone, pda, le console sono nuovi device che si affacciano ad internet diversificando la user-experience.

Navigare con la nuova Nintendo Wii: guardare per credere!

Questo non impone un’attenta riflessione sulle interfacce del futuro. Un web pervasivo probabilmente produrrà  una sempre maggior differenziazione della user experience. E’ profondamente diverso navigare attraverso

  • una televisione e il suo telecomando,
  • un device portatile come cellulare, smartphone o pda,
  • una console
  • un normale personal computer.

Anche la predisposizione alla navigazione dell’utente cambia a seconda del mezzo, perché cambia il contesto: diverso é navigare dalla postazione aziendale rispetto a navigare con il Nintendo Wii comodamente stravaccati in poltrona o addirittura da cellulare mentre si trova su un autobus affollato.

In azienda da qualche tempo c’é una discussione in corso su questi temi. Sicuramente, dopo una iniziale eterogeneità  del software e delle sue capacità  nel navigare (un cellulare non é in grado di visualizzare i siti bene come un normale pc per esempio), le tecnologie si allineeranno.

La differenza sostanziale che rimarrà  e sarà  identificabile attraverso il device con cui l’utente naviga é la sua predisposizione emotiva, la sua capacità  di recepire meglio alcuni contenuti piuttosto che altri, l’attenzione che l’utente é in grado di mettere a disposizione della navigazione e così via.

E il maketing web, sempre più fortemente orientato ad una comunicazione one to one, si adatterà  e userà  queste informazioni e profili per ottimizzare al meglio comunicazione e messaggi.

Web 3.0 (o 4.0) si annuncia con alcuni timidi vagiti.

« Previous Entries Next Entries »