follow me on Twitter

    I'm back in...

    Ebbene si… sono tornato… in realtà il rischio è stato più che altro quello di non arrivarci proprio al FOSDEM, visto che come anche qualcun’altro mi ha fatto notare: Me l’aggiu propriu chiamata…



    Alle volte ho l’impressione di avere le abilità di un precog… ma ovviamente non lo dite a nessuno… non vorrei passare il resto della mia vita a mollo nell’acqua come in Minority Report :-P



    Cmq grazie al verificarsi dell’ imprevedibile sono riuscito ad arrivare a Roma con sole 3 ore e mezza di ritardo (Lecce-Roma -> 12h?!?!?!) e a perdere l’aereo… ma ci vuole ben altro per farmi desistere e anche se con 7 ore di ritardo sono arrivato a Bruxelles (per fortuna non era a San Francisco il meeting… altrimenti sarei probabilmente arrivato con qualche mese di ritardo :-P)



    Per mia fortuna a parte la difficoltosa partenza, il resto dell’esperienza è stata assolutamente fantastica: per i geek con cui ho avuto modo di chiacchierare e per i talk che ho avuto modo di seguire.



    Devo ovviamente ringraziare Mozilla Europe per avermi sponsorizzato trasferta e permanenza, ma soprattutto Bard che mi letteralmente trascinato ;-) e Dafi che ha vissuto con me tutta l’esperienza.



    Inoltre questo meeting mi ricorderà per gli anni a venire un altro piccolo traguardo raggiunto da una piccola società cooperativa come la nostra: spingere (e sponsorizzare) 4 propri soci/collaboratori a recarsi per 3 giorni a quello che probabilmente è il può importante meeting europeo sul Software Libero perchè parte integrante delle attività della cooperativa.



    Potrei sbagliarmi ma credo che sia la prima volta che una realtà della nostra zona manda i propri componenti ad un meeting sul Software Libero dall’altra parte dell’europa… è qualcosa di obiettivamente piccolo ma per me è una grande soddisfazione ed è un segnale positivo in momento storico che positivo non lo è poi così tanto, per cui spero che Alca possa continuare a farlo per molti altri anni e con molti altri geek :-P



    Beh… e ora che siamo di nuovo qui nel Salento… forza… c’è tanto da fare ancora qui da noi :-D



    P.S. Trova l’intruso!

    FOSDEM2009 - Mozilla Room

    P.P.S. Debian/rules :-P

    FOSDEM2009 - Debian Room

    I'm going to...

    I'm going to FOSDEM, the Free and Open Source Software Developers' European Meeting

    Ebbene si... manca poco... e poi finalmente avrò il piacere di partecipare a quello che probabilmente è il meeting con la maggiore concentrazione di sviluppatori di software libero che ha luogo in Europa:

    il FOSDEM... 2 giorni ad altissima concentrazione di freesoftware.

    Più guardo la griglia dei workshop e dei lighting talk e più penso che... non vedo l'ora di atterrare a Bruxelles :-P

    Se poi penso alla nutrita delegazione salentina di cui farò parte... non posso fare a meno di sorridere... sarà certamente una esperienza memorabile... in qualche modo mi ricorda tanto il primo hackmeeting a cui partecipammo un po' di anni fà :-D

    Sono certo che da Bruxelles porteremo tanti bei nuovi geekevening :-D

    P.S.: Certo che bisogna essere veramente folli per decidere di farsi 4000 Km in 3 giorni... ma è anche vero che la follia è un articolo che non mi è mai mancato...per cui come il mitico Rutelli/Guzzanti ho "deciso" che un pezzo del viaggio me lo farò in treno con le care vecchie ferrovie dello stato... un po' di sano masochismo non guasta mai :-D

    ...beh si... basta "ca nu m'annu fa' perdere puru l'aereu" però!!! :-P

    geekevening 0x12

    Domani l'appuntamento a ZEI che ha come argomento il wiimote scripting in ambiente GNU/Linux in compagnia mia e del buon fabio ;-)

    geekevening 0x12: wii && GNU/Linux

    Lo sapevate? Il wiimote è molto di più di un joystick per la Nintendo Wii... e potreste utilizzarlo come telecomando, trasformarlo in un strumento musicale o nell'accelleratore di una moto virtuale!!! Come? Vi aspettiamo Mercoledì 19 Novembre alle 21.00 per scoprire insieme come comunicare con questo fantastico dispositivo con la sola imposizione delle mani e due manciate di Software Libero :-D Sapevatelo su geekevening 0x12 :-P

    Just4Fun: Python Wiimote Control

    Just For Fun: Python Wiimote Control

    From SaLUG’s LinuxDay2008… … powered by “Just4Fun (TM)”

    Python Wiimote Control

    Intro

    In principio c’era il declino inesorabile della Nintendo nel panorama delle console per videogame, la quale lasciava il passo alla muscolosa Sony con la sua PlayStation… ed infine a Microsoft che con la sua XBox sottocosto (che in realta’ paghiamo tutti noi con le licenze di Windows che siamo costretti a comprare insieme ai nostri PC) intende rompere le balle alla Sony… buon per noi :-P

    La Nintendo in questa lotta a due (tra PlayStation e XBox) ha deciso di non immischiarsi e ha scelto la strada dell’innovazione anziche’ quella dei muscoli… evidentemente hanno assunto qualche dirigente piu’ sveglio e rinfrescato il settore Ricerca e Sviluppo.

    Questi fatti apparentemente banali e senza alcun interesse “scientifico” hanno generato pero’ un importante cambiamento nel campo dell’intrattenimento casalingo:

    nuove possibilita'/modalita' di interazione uomo-macchina

    Quanti anni sono passati da quando abbiamo cominciato ad usare tastiere, joystick, joypad e mouse… … e’ arrivato il momento di cambiare… ed era anche ora!!!! :-)

    Sono veramente poche le tecnologie rimaste cosi’ statiche quanto quelle di interazione uomo-macchina.

    E questo non riguarda solo il settore ludico o dell’intrattenimento.

    Wiimote

    Questo e’ il Wiimote (il telecomando/joystick bluetooth della Nintendo Wii) una periferica di interazione totalmente nuova, le cui possibilita’ sono solo in minima parte conosciute e sfruttate a pieno dai giochi della Wii.

    Probabilmente neanche chi lo ha inventato sapeva realmente quanti campi di applicazione gli avrebbero trovato in breve tempo gli hacker di tutto il mondo:

    Ma come fanno?!?!?!?

    Cosa c’e’ di tanto magico in un Wiimote da renderlo cosi’ poliedrico?!?!

    Beh si fa presto a dirlo :-P

    Oltre a vari pulsanti, pulsantini e freccette (comuni in altri joystick/joypad) ci sono 2 importanti novita’:

    • un accellerometro… che misura, indovinate un po’… l’accellerazione
    • una videocamera che (attraverso varie elaborazioni dei segnali fatte all’interno del wiimote stesso) calcola la posizione di 4 sorgenti luminose infrarosse all’interno del suo campo visivo

    … oooooh! (fate un’espressione stupita… dai! :-P)

    Grazie all’accellerometro possiamo conoscere gli spostamenti del wiimote sui 3 assi e cosi’ come alcuni degli angoli di orientamento (in particolare pitch e roll)…

    … pero’ non e’ possibile calcolare lo yaws…

    e che c…to e’ lo yaws direte voi…

    Per riuscire a calcolare lo yaws i ricercatori della Nintendo hanno pensato di piazzare una barra dotata di 4 led (la Sensor Bar) con la console e di utilizzare una telecamerina nel Wiimote per identificare l’orientamento del Wiimote sul piano orizzontale quando la Sensor Bar si trova all’interno del suo campo visivo…

    e avete ragione… e’ quello che ho pensato anche io… non si capisce un… ma dato che una illustrazione vale piu’ di mille parole ecco a voi:

    grafico degli assi applicati ad un wiimote

    Ora dopo aver ringraziato tutti quelli che hanno reversato, documentato e scritto librerie ed applicazioni per questa stupenda periferica (e molte sue estensioni ;-)):

    potete andare a divertirvi anche voi un po’ ;-)

    Just For Fun: Python Wiimote Control

    Da vero geek non sono riuscito a vedere tutta sta gente divertirsi come i matti e non poter partecipare :-D

    Quindi ho deciso di farmi un regalo e comprarmi un bel Wiimote… si solo la periferica ;-)

    Ho cominciato a giocarci un po’ attraverso la libreria cwiid e in particolare utilizzando il binding in python.

    I primi timidi tentativi si sono concretizzati nell’emissione di rumori di vario genere da parte di un sintetizzatore (ZynAddSubFX) a cui inviavo messaggi MIDI basati (malamente) sull’accellerazione del Wiimote…

    avevo proprio bisogno di leggere un paio di righe di documentazione in piu’ … http://www.wiili.org/index.php/Motion_analysis

    Dopo aver letto un po’ di documentazione l’emissione di rumori e’ diventata l’emissione di 3 note diverse con velocita’ (nel senso midi del termine) proporzionale all’accellerazione del wiimote opportunamente riscalata (sarebbe piu’ corretto dire empiricamente riscalata :-P)

    Volendo mi sarei anche accontentato… se non fosse stato per la gradita visita di due altri geek locali (Fabio “valvola” Viola e Enrico “Bongy” Tramacere) che con domande, valutazioni e nuove periferiche (il Nunchuk :-P) mi hanno costretto a continuare :-PPPPP

    Come potevo non provare a far diventare il Nunchuk il plettro della mia “chitarra elettrica” bluetooth? Come potevo resistere all’irresistibile voglia di utilizzare i due accellerometri presenti in Wiimote e Nunchuk di concerto per simulare le due bacchette di una batteria?

    Non potevo… ma soprattutto non volevo resistere :-P

    Quindi una variante dopo l’altra mi sono trovato con 3 scriptini in python:

    • wiiguitar: per simulare una chitarra elettrica con wiimote e zynaddsubfx
    • wiidrums: per simulare una batteria con wiimote e hydrogen
    • wiidesktop: per controllare desktop e applicazioni con il wiimote durante le presentazioni

    LinuxDAY2008

    Un hack cosi’ divertente non poteva mancare al linuxday del GLUG piu’ bello del mondo :-D

    Pero’ sai che palle riavviare lo script e rieffettuare il detect del wiimote per passare da uno modalita’ all’altra?!?!?

    Gia immaginavo Francesco “haku” Palermo esclamare: “che pizza… ma devi scrivere tutte ‘ste cose ogni volta?!?!?”

    Allora ho pensato che sarebbe stato carino fondere di nuovo insieme i 3 script e studiare un modo per passare da una modalita’ ad un’altra con la pressione di un tasto del Wiimote (il tasto home in particolare).

    Visto che fondamentalmente le differenze tra quegli script si limitavano alla fase di inizializzazione e all’interpretazione dei messaggi provenienti, il refactoring e’ consistito nel trasformare gli script in moduli da caricare e scrivere un nuovo script che inizializzi tutti i moduli e nella propria callback intercetti un tasto di cambio modalita’ per poi passare il controllo alle callback dei moduli attivi…

    … si si… e’ piu’ facile da scrivere in python che a spiegarlo in italiano :-P

    Get the sources

    Essendo un piccolo hack non c’e’ ovviamente ne binario ne risoluzione automatica delle dipendenze :-)

    C’e’ un repository di codice GPLv3 da scaricare, studiare e modificare a proprio piacimento … esercitate liberamente le vostre 4 liberta’ :-P

    Nel README ci sono anche due note sulle dipendenze ma in ogni caso invito chi decidesse di cimentarsi nel tentativo di utilizzarlo sulla propria macchina o di utilizzarlo come base per qualche proprio esperimento di scrivermi le proprie idee e/o problemi su questo piccolo pezzo di “cera pongo” :-) all’indirizzo “rpl AT salug.it”

    Per eventuali flame, troll, insulti etc. scrivetemi pure… saranno tutti ridirezionati su /dev/null :-D

    beh… bando alle ciance ora…

    Happy Hacking, rpl

    Mozilla, Ubiquity e DBUS

    La scorsa settimana mi sono imbattuto in una estensione per mozilla molto interessante: mozjs_dbus

    Credo che Ubuntu dovrebbe seriamente valutare la possibilità di compilare e installare questa estensione di default per migliorare l’integrazione del browser con il resto dell’ambiente desktop.

    In pratica la funzione dell’estensione è quella di esporre all’interno di chrome (inteso come la componente privilegiata del broser e non il broser di google) dei servizi che consentano di accedere e fornire servizi dbus.

    Il tutto è condito da un’API Javascript che consente di colloquiare agevolmente con dbus, che all’interno del panorama delle tecnologie Desktop libere costituisce l’analogo di COM, CORBA o XPCOM.

    Visto che la compilazione dell’estensione (che necessita dei sorgenti di mozilla) non è risultata troppo complessa (come unico imprevisto ho dovuto aggiornare il file install.rdf del’estensione per estenderne la compatibilità a Firefox 3.0.3)

    Volevo fare una prova… così ho pensato che poteva essere una buona scusa per provare a scrivere il primo comando per Ubiquity, estensione che aggiunge a firefox una commandline con cui colloquiare con il browser un po’ come faccio con emacs :-)

    Mediante dbus-viewer è possibile navigare le interfacce dbus messe a disposizione dalle applicazioni attualmente attive… tra tutte ho individuato Tomboy.

    Tomboy è un’applicazione gnome per conservare delle note ed esporta un interfaccia dbus particolarmente completa in quanto consente di effettuare tutte le operazioni CRUD sulle note.

    Ho creato quindi 2 nuovi comandi per ubiquity:

    • tomboy-list: che restituisce in preview l’elenco puntato dei titoli delle note
    • tomboy-view: che restituisce in preview l’elenco puntato di titolo e contenuto delle note che contengono la stringa passata come parametro

    iNvida CSS bomb

    Se avete un amico sborone che vi costringe ad apprezzare la superficie satinata del suo portatile XPS ed ammirare le fantastiche performance della scheda Nvidia con cui è equipaggiato… non disperate…

    Se il pomeriggio è particolarmente noioso e piovoso e volete divertirvi con poco potete vedere impazzire il vostro caro amico sborone e sfruttare una fantastica feature della sua scheda NVidia ;-)

    vi basterà creare una pagina con tanti bei div e span colorati e sparare nel css un bel:

    body {
      opacity: .99;
    }
    

    … BOOOOOOOOM: 100% CPU

    vallo a capire ora che il bug non è in Firefox… non è in X.org… … non è nel kernel Linux… ma nel fantastico driver NVidia :-D

    iNdivia bombarda anche tu un tuo amico sborone ;-)

    MozREPL e Firefox 3: access unsafe properties from chrome

    Ci sono dei tool senza i quali mi sentirei disarmato… come farebbe il muratore senza la “cardarina” o la “livella” :-DDDD

    Nello sviluppo in Javascript il tool a cui non riesco assolutamente a rinunciare è MozREPL!!!

    La sensazione di controllo che mi da potermi collegare in telnet (comodamente dal mio emacs) dentro il browser a navigare nella mia applicazione e relativo codice Javascript è ineguagliabile.

    Certo c’e’ Firebug… ma vuoi mettere… ssh con vnc? :-D

    non c’e’ confronto :-P

    Purtroppo le notevoli rivoluzioni avvenute tra Firefox 2 a Firefox 3 hanno introdotto tutta una serie di policy aggiuntive di sicurezza che hanno reso il porting faticoso (o meglio fastidioso :-P) per lo sviluppatore del progetto.

    Per la gioia di tutti bard ha preso la volpe per le corna (:-PPP) e bypassato tutta una serie di complicazioni introdotte da queste nuove policy, ridandoci MozREPL in tutto il suo splendore anche su Firefox 3.

    Colpo di scena

    Giocavo un po’ con ExtJS come passatempo domenicale e ad un certo punto ho avuto bisogno di vedere alcuni dettagli da più vicino … attivo MozREPL!

    Navigando nel DOM mi accorgo di qualcosa di strano:

      repl> repl.enter(content)
      [object XPCWrappedNative [object Window]] ...
      repl> repl.look()
      ...
      this.Ext= undefined
      ...
      ...
      repl>
    

    uhm… strano… l’object che dovrebbe contenere tutti gli oggetti di ExtJS è presente nell’elenco delle proprietà di window ma risulta undefined.

    uhm… dopo averne discusso brevemente con bard l’occhio salta improvvisamente qualche riga sopra:

      repl> repl.enter(content)
      [obejct XPCWrappedNative [object Window]] ...
    

    Azz… window risulta wrapped… in altre parole per evitare di accedere inavvertitamente a codice insicuro Firefox 3 ricopre gli oggetti provenienti dal content con una interfaccia di protezione quando ci accediamo da chrome :-(

    e ora?!?!?!

    WebSurfing

    Non bisogna mai disperare… chi cerca trova:

    Secondo quanto scritto nella documentazione mozilla:

     If unsafe access to a property is required for some reason, this can 
     be accomplished via the wrappedJSObject property of the wrapper.

    bene bene bene… quindi:

    Workaround

      repl> repl.enter(content.wrappedJSObject)
      [object Window] ...
    

    perfetto!!! ora le proprietà sono nuovamente accessibili :-D

    Soluzione

    Beh che c’e’ di meglio per una domenica pomeriggio dell’eliminare un workaround :-D

    Il codice di MozREPL è veramente pulitissimo, di conseguenza sono bastati pochi minuti per identificare il punto in cui intervenire ed introdurre la modifica:

     // CONTEXT NAVIGATION
     // ----------------------------------------------------------------------
     
    -function enter(context) {
    +function enter(context, wrapped) {
    +    if (wrapped != true && context.wrappedJSObject != undefined) 
    +      context = context.wrappedJSObject;
    +
         this._contextHistory.push(this._workContext);
     
         if(isTopLevel(context))
    

    Ohhh ora tutto è tornato come prima e ho di nuovo la mia “livella” :-D

    Goosh - a command line on google

    Dato che mi sembra che il post precedente abbia occupato per troppo tempo questa prima pagina... talmente tanto che gli annunci di google qui accanto cominciano a propormi roba del tipo "11 esami in 10 mesi" :-P e visto oltretutto che a parte il dovuto sfogo ho altro a cui pensare e con cui divertirmi ;-)
    ma soprattutto dato che il compagno Domenico continua a punzacchiarmi su questa cosa...
    ho deciso di dedicargli questo micropost :-D
    Goosh è una "interfaccia CLI non ufficiale" per effettuare ricerche su google.
    In pratica è una piccola applicazione XHTML+Javascript che implementa una interfaccia in linea di comando (del tutto simile ad una shell) la quale comunica in AJAX con i servizi google mediante le loro API.
    E' un hack molto simpatico e anche particolarmente piacevole per chi come noi adora usare il terminale a caratteri ;-)
    Happy gooshing
    View Luca Greco"s profile on LinkedIn

    Rpl

    La mia foto
    Lecce, Italy
    Fulltime Coder and *nix BOFH