Pensieri e parole su HCI, home computing, tecnologie desktop e sul Progetto Lobotomy

domenica 30 settembre 2007

No Hack, No Cry

0 commenti
Ahime', il talk su Lobotomy all'HackMeeting di quest'anno non c'e' stato. Vuoi perche' non ho seguito piu' che tanto le fasi di assegnazione delle aule e definizione del programma dell'evento, vuoi perche' magari non e' piaciuta l'idea, vuoi perche' in effetti non m'ero manco preparato nulla ed ho preferito non "occupare" uno spazio, di Lobotomy ho avuto modo solo di accennare all'amico Mikro, uno dei pochi developers "acari" con cui ho il piacere di chiaccherare di quando in quando.
Tanto peggio, se ne parlera' nei prossimi anni (sempre che decida di continuare ad andare al Meeting...).
Ad ogni modo, all'evento pisano non son stato solo ed esclusivamente passivo (al contrario della densa coltre di turisti che ad ogni anno si presentano... Mah...): ho avuto l'onore di far da "valletto" nel corso del talk degli amici Leso e brain in merito al loro progetto di grid internazionale che vogliono mettere in piedi unendo le risorse dei vari hacklabs sparpagliati in Italia ed in Europa, la cosa non e' affatto male e spero che raggiungano qualche obiettivo (cosi' da poter attingere potenza di calcolo quando mi decidero' ad implementare e testare il modello per per l'handwritten recognization da includere in Lobotomy :-P )

venerdì 7 settembre 2007

Thinking Kiazma

0 commenti
Leggendo questo per niente nuovo ma comunque sempre interessante articoletto sul multithreading (argomento su cui mantengo alto il livello di guardia) mi son ricordato che non ho ancora menzionato su questo blog gli ultimi progressi raggiunti nella fase di ri-progettazione di Kiazma, su cui ancora sto lavorando ma per cui vengo continuamente interrotto da altri impegni.
Assunto che il toolkit di riferimento sara' Clutter, il cui widget elementare da cui derivano tutti gli altri e' il ClutterActor, Kiazma avra' le interfacce KiazmaFile e KiazmaMetadata: la prima sara' implementata da tutti i widgets destinati a rappresentare a video elementi prelevati dal filesystem Hyppocampus (KiazmaIcon, KiazmaApplication...), la seconda da tutti i widgets destinati a rappresentare singoli metadati (KiazmaNote, e tutti gli oggetti editabili creati per ogni tipo di metadato previsto). ClutterActor "liscio" sara' usato per implementare widgets di contenimento (KiazmaIconView), prettamente decorativi o con scopi legati alle funzionalita' dell'applicazione in se' (KiazmaButton).
A dirla tutta non so ancora se KiazmaFile e KiazmaMetadata saranno interfacce o widgets da cui derivare poi gli altri, la prima soluzione permetterebbe di scrivere oggetti generici (da usare in ogni contesto, non necessariamente legato al filesystem) da estendere poi in altri oggetti che ne ereditino completamente le funzionalita' ed implementino solo le funzioni descritte dall'interfaccia, la seconda permette di mascherare meglio i dettagli che descrivo sotto; devo ancora analizzare le implicazioni delle possibili opzioni, ma piu' o meno la linea sara' questa.
Tra le maggiori novita' in questo sistema ci sara' una revisione che si spinge fino a LibHyppo, libreria che include il Virtual File System per l'accesso a Hyppocampus. HyppoVFSFile (il link si riferisce alla versione 0.2.3, che non e' piu' valida) diverra' un GObject (adesso e' una semplicissima struct) ed ogni istanza sara' monitorata, col supporto di SCD, per emettere signals in caso di modifica, aggiunta o rimozione dei contenuti o dei metadati assegnati: in questo modo, intercettando appropriatamente tali signals all'interno di KiazmaFile e KiazmaMetadata sara' possibile aggiornare dinamicamente la grafica presentata all'utente pressoche' senza intervento alcuno da parte del programmatore che sviluppa l'applicazione finale, rendendo implicita nel toolkit questa funzionalita'.
Quanto sopra descritto e' ancora completamente suscettibile di stravolgimento (vedro' di trovare un poco di tempo per meditare questo weekend), ma riassume a grandi (grandissime) linee quel che si vorrebbe ottenere per la serie 0.3 della componente grafica del progetto Lobotomy.

domenica 2 settembre 2007

Predicar bene e razzolar male?

0 commenti
Rileggendo alcuni dei miei precedenti posts, soprattutto quelli in merito all'utilizzo di Clutter per la re-implementazione di Kiazma e Synapse, un interrogativo morale mi e' sorto: forse qualcuno, leggendo i miei propositi di utilizzo di una libreria grafica tanto avanzata e "sbrilluccicosa", pensa che mi sia ridotto anche io a voler sviluppare qualcosa di esteticamente bello e nulla piu'? Forse che tutte le proteste di innovazione e rivoluzione si riducono a qualche icona animata?
La risposta a questi interrogativi, qualora fossero sorti codesti sentimenti in qualcuno dei miei lettori, e' ovviamente "no": l'utilizzo di Clutter deriva da una (e piu' d'una) necessita'.
I motivi per cui ho deciso di riscrivere la mia propria libreria di widgets sono fondamentalmente due:
  • usando GTK+ mi sarebbe stato impossibile implementare l'environmental mapping ed altre tecnologie analoghe in programma per Synapse: poiche' in tali condizioni urge avere il pieno controllo dei singoli elementi che appaiono sullo schermo non e' possibile poggiarsi su una libreria che pone (legittimamente ed anzi fortunatamente) dei paletti alle manipolazioni possibili, ma e' indispensabile andare ad agire direttamente nella logica interna del sistema grafico. Indi, il fatto di riscriversi suddetto sistema grafico rispettando sin dalle fondamenta determinati obiettivi risulta addirittura piu' rapido e comodo che non compiere degli hacks di dubbia stabilita' su quanto c'e' di gia' esistente.
  • una delle parole chiave che appaiono nella roadmap del progetto Lobotomy e' "multithreading": se gia' adesso il sistema e' scomposto in piu' componenti che agiscono in processi separati, nell'immediato futuro si mira a strutturare ogni applicazione per operare quanto piu' possibile in modo parallelo, con il preciso scopo di massimizzare la prestazione su quella che oramai sembra destinata ad essere l'architettura hardware con cui dovremo confrontarci negli anni a venire: il multicore. Con tale obiettivo in mente, la nuova libreria grafica sara' orientata proprio alla parallelizzazione della generazione, disposizione e visualizzazione dei frammenti grafici da presentare all'utente: ad esempio, la KiazmaIconView che proprio adesso sto sviluppando sara' in grado di ricevere asincronicamente le informazioni sui files da visualizzare, si' da costruire nel frattempo le icone finali (le quali non saranno statiche, come nei filemanager attuali, ma ponderate in funzione del result set estratto da Hyppocampus che si intende rappresentare) e operare su piu' fronti contemporaneamente.
Oltre ai bisogni sopra esplicitati, non manca naturalmente anche il desiderio di costruire qualcosa che sia esteticamente bello ed ancor piu' funzionale: il gia' piu' volte menzionato Clutter permette di approcciarsi alla creazione di interfacce utente seguendo un paradigma completamente diverso da quanto visto sinora coi tradizionali toolkits grafici (disponendo gli oggetti non piu' a "scatole cinesi", uno dentro l'altro, come in GTK+, ma posizionando liberamente i tasselli che formano l'interfaccia nel suo complesso), sfrutta l'accelerazione OpenGL (dunque: la computazione prettamente grafica va a carico della scheda grafica, che in questo modo viene utilizzata non solo per i giochi tridimensionali ma anche nei tradizionali compiti di tutti i giorni), e viene comunque finanziata e sviluppata da una societa' (OpenedHand) che opera nel campo del mobile, dunque e' lecito aspettarsi un occhio di riguardo anche per quanto concerne la performance e l'ottimizzazione.

Ad oggi lo sviluppo di Kiazma procede assai a rilento, un po' perche' ancora mi si pongono problematiche strutturali che intendo pero' ben analizzare (in modo da non dovermi nuovamente trovare a scontrarmi con ostacoli logici da me stesso creati, come ahime' mi succede troppo spesso...) ed un po' perche' sono abbastanza preso dall'organizzazione del LinuxDay2007 a Torino: vedro' cosa riusciro' ad approntare da qui alla fine di settembre (quando, in un modo o nell'altro, qualcosa dovro' portare a Pisa...), ma e' piu' probabile che una release 0.3 di Synapse/Kiazma arrivi ad ottobre.
Stay tuned ;-)