Archivi categoria: Development

code, IDE, snippets and all about my nerd side

Intervista per la Droidcon Torino

Dato che non sono stati i primi a farmi queste domande, riporto un pezzo di intervista fatta per la Droidcon di Torino, il 6 e 7 Febbraio 2014. Magari sono riuscito a spiegare meglio il mio attuale lavoro e perche’ mi appassiona.

Ciao Alfredo, raccontaci qualcosa di te: dalla tua esperienza accademica a quella lavorativa.
Lo confesso, non sono un ingegnere. Ho iniziato a nutrire la mia passione per l’informatica dalla quarta elementare, quando i miei mi regalarono un computer, un glorioso Intel 8080. Finite le superiori, sono subito andato a lavorare come sviluppatore, laureandomi nel frattempo in Scienze della Comunicazione perché pensavo, e penso ancora, che la consapevolezza delle nostre abilità sociali e comunicative sia indispensabile nel bagaglio delle conoscenze che ognuno dovrebbe avere. In Google, poi, ho trovato il connubio ideale tra queste mie due inclinazioni. Tra le due, però, vince ancora la programmazione.

Siamo molto curiosi di sapere di cosa ti occupi in questo momento in Google: puoi parlarci brevemente delle tue mansioni?
Sono nel team Developer Relation, e il mio compito è rendere quanto più divertente possibile la vita degli sviluppatori italiani che usano le tecnologie dev di Google. Seguo le community sul territorio, organizzo eventi, faccio formazione nelle università, mi tengo aggiornato sul mondo delle startup nel nostro paese e cerco di far capire ai miei colleghi in America che anche l’Italia vale la loro considerazione e perché.

Com’è lavorare direttamente per il colosso di Mountain View? Data la tua vasta esperienza lavorativa, trovi ci siano differenze di mentalità rispetto alle aziende Italiane?
E’ bello sicuramente, ma impegnativo. Tutti sanno quanto Google tenga alla qualità del posto di lavoro dei propri dipendenti e questo, assieme a dei buoni colleghi e alla possibilità di lavorare su ciò di cui sono appassionato, non condiziona con inutili pesantezze la mia giornata, ma anzi! Di differenze ce ne sono, ma niente che non si possa importare e adattare al proprio contesto. Occorre però essere disposti a mettersi un po’ in gioco: tutta l’azienda, non solo una sua parte.

Che consiglio puoi dare a chi spera un giorno di poter entrare in una grande azienda all’avanguardia come Google che non segue l’innovazione, ma la crea?
Penso che in Google non si assumano persone per far fare loro qualcosa, ma piuttosto per farli continuare in quello che stanno già facendo con successo. Quindi mi sento di consigliare di credere nelle proprie passioni, quelle vere che costruiscono qualcosa d’innovativo, in qualunque campo. Di non pensare a cosa ci ferma, ma focalizzarsi al cosa invece ci aiuta ad andare nella direzione in cui ci vediamo proiettati e felici. Di essere il cambiamento che si vorrebbe vedere intorno a se’. Prima o poi, una Google arriva. E se non arriva, se ne può sempre creare una.

Annunci

Un altro hackathon, un’altra bella esperienza da ricordare

HackItaly 2013“Se ci sono cose che senti come parte di te, e’ inutile combatterle o reprimerle, piuttosto dai loro corso, e troverai la felicita’”. Con questa autocitazione d’altri tempi in mente, dopo una pausa forzata durata quasi due anni, ho deciso che era il momento di sporcarsi nuovamente mani e piedi con il codice, perdere un bel po’ di ore di sonno, pensare a come realizzare un’idea infattibile in un tempo improponibile. E via, macchiva direzione HackItaly Camp.

Nessuna cronaca dell’evento, ma solo alcune considerazioni di varia natura.

La prima: perche’ lo fai? Questa e’ facile: perche’ abbiamo l’obbligo morale di vivere quanto piu’ possibile nel nostro stato di flow. E quando codo durante un hackathon, a me capita proprio questo. Totalmente perso nell’idea da implementare, irrimediabilmente assorbito nella bolla che l’evento crea per le 7/10/12/24 ore della sua durata, appassionatamente immerso in pensieri creativi. Avere gia’ chiaro quello che ti aspetta mentre le tue mani danzano, quasi da sole, su quello che stai ancora facendo. Solo possibilita’, qualche problema da risolvere che separa da queste, e la piu’ completa, disinteressata e coinvolgente gioa del fare. Fallire, perche’ tra la fretta, la stanchezza, i cambi di luna e le distrazioni, di errori ne fai tanti. Ma poco importa, perche’ si va ad un hackathon per immaginare, per creare, per divertirsi. Materia creativa allo stato grezzo, di colore bianco puro: tutto dipende dalle tue decisioni e dalle tue capacita’. E’ una delle piu’ belle palestre per crescere nella consapevolezza dei propri limiti.

La seconda: con chi lo fai? Con chi so capace di condividere questo tipo di approccio. Se poi sono amici di lunga data o ragazzi conosciuti sul momento, poco importa. La bella cosa dei dev, quelli veri, e’ che non fanno distinzioni di titoli, stato sociale, ruolo sul lavoro o esperienza. Se vedi che anche l’altro (o l’altra) ha quello sguardo furbetto di chi sa titillarsi nello sperimentare, compiacersi di aver fatto una cosa nuova sbattendo e risbattendoci il muso, preso dalla tecnologia e dalla voglia di metterci su le mani (se riconosci in lui, insomma, alcuni tratti tipici dell’essere nerd), tanto basta per essere subito amici.

La terza: come potresti farlo meglio? Come per ogni cosa, c’e’ sempre spazio per migliorare. Grande cruccio di questi hackathon cosi’ grandi (saremmo stati in pocomeno di 300) e’ la gestire della fase di presentazione di quanto realizzato. Pitch di 1/2 minuti, per rimanere nell’oretta e mezzo di tempo, purtroppo spesso vanificano le 24 ore di lavoro, possono banalizzare le cose fatte dai team e diluiscono la passione e lo sforzo che ci sono voluti per ottenerle. Vero che l’importante di un hackathon non e’ vincere, ma divertirsi, pero’ la condivisione del proprio hack rimane un tassello fondamentale di quel divertimento, almeno per me. Perche’ insegno qualcosa, perche’ imparo moltissimo dagli altri. E ancora non sono riuscito a trovare una buona soluzione di compromesso, anche negli eventi che ho realizzato io stesso, Android University Hackathon compreso.

Inoltre, proprio perche’ creare il tuo hack ti assorbe cosi’ tanto, c’e’ il rischio di chiudersi in un ermetismo da sviluppo. Per ovviare a questo problema, oltre ad organizzare attivita’ sociali durante l’evento (cena ed altro), si potrebbero anche dare dei “punti socialita’” ai team che si impegnano, in qualunque modo, a rendere l’intero evento piu’ social, piu’ condiviso.

La quarta: cosa ti riporti a casa? Ovviamente del gran divertimento, nuove avventure condivise con i miei amici, le riflessioni fatte fino ad ora e il fatto che la multidisciplinarita’ che scaturisce dal contatto con gli altri e la voglia di buttarsi vincono sempre. Perche’ un hackathon, alla fine, questo ti insegna: essere dannatamente focalizzati verso un’obiettivo creativo, con il sorriso pero’ sulle labbra, assieme ad altre persone. Grazie a FrancescaPaolo, Marco per questa avventura 🙂

Postepay e quel vizietto di contattare servizi in background

Update 17:30: ho modificato il precedente titolo “Postepay e quel vizietto di contattare server di terze parti” in quanto, finche’ non si fa dello sniffing, non e’ possibile sapere a chi e’ destinato il traffico. Il bello e’ che lo avevo scritto anche nei commenti, ma mi era sfuggito il titolo ed e’ rimasto cosi’ quando l’ho pubblicato ^_^ Ribadisco, ho rimosso l’app perche’ effettuava delle chiamate in background pur non essendo stata avviata e senza un motivo apparente. Grazie ai ragazzi di 01tribe per avermi fatto notare la svista.
———————–

Stavo facendo un po’ sano di debug di una mia app Android quando,casualmente, mi cade l’occhio su queste stringhe nella shell con l’output di adb logcat:

D/dalvikvm(27834): GC_CONCURRENT freed 429K, 6% free 8894K/9412K, paused 26ms+47ms, total 115ms
D/kM      (27834): =============================== RESPONSE START ================================
D/kM      (27834): 
D/kM      (27834): 
D/kM      (27834):     
D/kM      (27834):         
D/kM      (27834):             999
D/kM      (27834):             Non e' stato possibile verificare la disponibilita' dei servizi
D/kM      (27834):         
D/kM      (27834):         791654851
D/kM      (27834):     
D/kM      (27834):     
D/kM      (27834): 
D/kM      (27834): ================================ RESPONSE END ================================
I/System.out(27834): 
I/System.out(27834): 
I/System.out(27834):     
I/System.out(27834):         
I/System.out(27834):             999
I/System.out(27834):             Non e' stato possibile verificare la disponibilita' dei servizi
I/System.out(27834):         
I/System.out(27834):         791654851
I/System.out(27834):     
I/System.out(27834):     
I/System.out(27834): 
D/EXPIRED (27834): 
D/EXPIRED (27834): 
D/EXPIRED (27834):     
D/EXPIRED (27834):         
D/EXPIRED (27834):             999
D/EXPIRED (27834):             Non e' stato possibile verificare la disponibilita' dei servizi
D/EXPIRED (27834):         
D/EXPIRED (27834):         791654851
D/EXPIRED (27834):     
D/EXPIRED (27834):     
D/EXPIRED (27834): 
D/fB      (27834): Siamo spiacenti. Non è stato possibile effettuare l'operazione richiesta. Si prega di riprovare più tardi

Mmmm, insospettito da un messaggio del genere, inizio a chiedermi cosa possa averlo generato e, scorrendo il log, trovo poco sopra quest’altro messaggio:

D/kM      (27834): +++++++++++++++++++++++++++++++ REQUEST START +++++++++++++++++++++++++++++++
D/kM      (27834):

  
    791654851
    mobile
    appCheckPublicWorkflow
    ActionAppCheck
    Android
    it
    IT
  
  
    
      postepay
      1.2.3
    
  

D/kM      (27834): ++++++++++++++++++++++++++++++++ REQUEST END ++++++++++++++++++++++++++++++++

Postepay app on Android E scopro che l’artefice di tutto questo e’ l’applicazione Postepay, realizzata da 01tribe.

Ora, de gustibus, ma a me app che mandano richieste in background a servizi senza dirmi niente, senza essere in esecuzione e che richiedono permessi anche un po’ sospetti (tipo Phone calls, Your social information) anche se poi vengono tutti usati legittimamente dentro l’app, a me queste app mi provocano una reazione immediata: disinstallazione.

Certo, potrei controllare con uno sniffer il traffico realmente scambiato (ammesso di riuscire a riprodurre questa situazione) e verificare che sia innocuo per la mia privacy, ma in questo momento ho altro da fare, quindi bye bye Postepay, io ho installato la tua app, non capisco perche’ devi contattare server di un sito di cui non so niente in background. E per fare cosa poi?

Apps4Italy ed Eureka!, come trovare il posto migliore dove vivere

Logo EurekaSono passati diversi anni da quanto Tim Berners-Lee ha iniziato a diffondere lo slogan “Raw Data Now” e oggi l’attenzione di governi ed opinione pubblica sta finalmente dando risalto agli OpenData e sul fenomeno delle SmartCities. Anche in Italia, nonostante il ritardo rispetto ad altri paesi, stanno prendendo piede iniziative riguardanti questi temi. Una di queste e’ stata Apps4Italy, un bel concorso volto a premiare applicazioni, idee e visualizzazioni che sfruttano dei dataset italiani (Istat, comuni, regioni e tanti altri), senza vincoli di piattaforma ed utilizzo.

Lodevole iniziativa, dato che spesso quando ci si avvicina al settore pubblico e si parla di OpenData, alla domanda: “Bellissima teoria, ma poi che ci si puo’ fare”, i meno visionari hanno bisogni di esempi concreti di utilizzo, e uno degli scopi di Apps4Italy e’ stato sicuramente quello di fornire tanti spunti per dare risposte.

Preso bene dai temi e dagli scopi dietro ad Apps4Italy, intorno ad Ottobre ho deciso di partecipare anche io con la mia idea, che poi si e’ concretizzata in “Eureka!“. Lo scopo principale del progetto e’ quello di ottenere un indice di qualita’ della vita geolocalizzato e “zoomabile”, che puo’ andare dall’area di una provincia fino ad arrivare al dettaglio dei quartieri delle citta’ che la compongono. Un’heat-map che parte dal rosso per indicare una pessima qualita’ della vita e via via tende al verde dove questo fattore migliora. Abbiamo scelto tre categorie intorno alle quali collezionare dati: economica, sociale e ambientale. Per ognuna di queste ci sono diversi indicatori come ad esempio il numero di superamenti del pm10, il costo della vita e tanto altro che possono essere inclusi o esclusi dal risultato finale, in modo da considerare solo i parametri che contano soggettivamente per l’utilizzatore.

La particolarita’ vera del progetto pero’ e’ quella di creare dati con cui alimentare le statistiche del sistema, e non basarsi quindi solo sui dataset esistenti. Primo passo per raggiungere questo obiettivo sono le GreenStation, degli apparati in grado di misurare l’opacita’ dell’aria e altri dati ambientali che vengono poi collezionati e inclusi nell’algoritmo di calcolo dell’indice di qualita’ della vita. Capita spesso, infatti, che le rilevazioni del pm10 non siano fatte in tutte le zone delle citta’, mentre con una GreenStation ognuno puo’ rilevare la qualità dell’aria cosi’ come viene respirata dalla propria finestra di casa. Tra l’altro, le GreenStation possono anche essere autoprodotte dato che sia gli schemi di assemblaggio che il protocollo di comunicazione con il server sono pubblici. L’evoluzione digitale dei lenzuoli che un po’ di anni fa Lega Ambiente aveva chiesto di appendere alla finestra per mostrare a tutti il livello di inquinamento. Innovazione partecipativa, ognuno e’ in piccola parte responsabile del benessere della collettivita’ di cui e’ parte.

E che dire di possibili, future, survey per chiedere direttamente agli utenti di Eureka! se ci sono stati casi di malattie come cancro, leucemia, gravi problemi cardiovascolari o respiratori verificatisi nella loro cerchia di famialiari e amici? Dati su malattie geolocalizzati e temporalmente collocati, che potrebbero far emergere correlazioni tra il loro accadere e altri fattori collezionati da Eureka!. La sanita’ italiana sembra essere restia a concedere queste informazioni, tirando in ballo una possibile violazione della privacy dei dati rilasciati, anche se basterebbe una forma aggregata e del tutto anomima per fare importatissime analisi sull’andamento della nostra salute nel tempo, cosa che reputo prioritaria nelle attivita’ di uno Stato.

Per farla breve, e per tornare ad Apps4Italy, l’idea e’ piaciuta, assieme al client per Android che ho realizzato per darle un corpo, e siamo rientrati tra i 35 finalisti tra quasi 200 proposte arrivate. Ma non solo, dato che siamo anche risultati vincitori con una menzione speciale nella categoria “Applicazioni” e ci siamo portati a casa un piccolo premio in denaro.

Nonostante sia stato contentissimo di questa iniziativa e tutto il mio supporto va alle persone che l’hanno resa possibile, purtroppo devo direi che secondo me si e’ rovinata proprio nel suo, importantissimo, momento finale. Questi i motivi principali:

  • mancanza di un canale di comunicazione e mancato rispetto delle scadenze dichiarate: puntualmente c’era sempre almeno un giorno di ritardo rispetto a quanto dichiarato come data per la pubblicazione dei finalisti e dei vincitori e alle diverse email che ho mandato / tweet scritti da altri non c’e’ stata praticamente mai una risposta. Il che, ovviamente, ha alimentato qualche polemica e non ha facilitato chi doveva prenotare treni/aerei per venire a Roma, come il sottoscritto.
  • l’evento conclusivo di premiazione e’ stato, a mio avviso, un gran fiasco. C’era la possibilita’ unica di far dialogare istituzioni, imprenditori e gli ideatori delle tante proposte arrivate, e invece il tutto si e’ consumato nella piu’ assoluta formalita’ e isolamento. Bastava essere nella sala per vedere le prime 6-7 file occupate da giacche e cravatte, e dietro un genere ben diverso di persone e abbigliamento, e questi due blocchi non si sono mai mischiati tra loro. Sarebbe bastato un banalissimo aperitivo offerto a conclusione della cerimonia (l’evento si e’ svolto il sabato dalle 10 alle 12.30 circa), sarebbe bastato dare 2 minuti ai primi classificati di ogni categoria chiedendogli di raccontare cosa li ha portati a partecipare, le loro idee e le loro visioni, la loro storia insomma, e invece hanno avuto la parola molti personaggi che, purtroppo, hanno contribuito ad alimentare sensibilmente la quantita’ d’aria fritta respirata. Impossibile dimenticarsi di quell'”Abbiamo scoperto che anche in Italia esistono sviluppatori capaci di scrivere codice“. Non aggiungo altro 😦
  • Dato il calibro degli attori coinvolti nell’organizzazione, non faccio fatica a pensare che era possibile far partecipare all’evento VC, imprenditori, figure insomma in grado di prendere le tante delle idee arrivate e trasformarle in opportunita’. D’accordo che soprattutto in Italia e’ difficile trovarli, ma da qui a non averne neanche visto l’ombra, ce ne passa.
  • Non c’e’ stata copertura mediatica di quanto e’ nato in seno all’iniziativa. Fin troppe persone in Italia si erigono a paladini dell’innovazione, promotori dei giovani talenti e di un brillante futuro per chi ha voglia di cambiare, e poi occasioni come questa, dove coraggiosi partecipanti cercano di innovare il settore pubblico (e non solo), vengono praticamente ignorate da tutti i tipi di media. A parte un articoletto su Repubblica assolutamente non esaustivo, non mi sembra ci siano state altre reazioni. E dell’intervista fatta per CheFuturo non c’e’ traccia alcuna. Bisogna dare visibilità ad iniziative come questa, comunicano coraggio, intraprendenza, voglia di cambiare, capacita’ di farlo. E lo comunicano con i fatti.

Comunque, una brutta conclusione non fa brutto tutto un evento, quindi 1000 di questi Apps4Italy, e sono anche contento che la corsa agli hackathon e altre iniziative italiane sugli OpenData sia gia’ iniziata (e ve lo dico perche’ con WhyMCA abbiamo gia’ qualcosa in serbo per Settembre).

Tre cose comunque mi “porto a casa” dopo questa avventura: lavorare con un gruppo di persone accomunate da una passione di fondo da sempre delle grandi soddisfazioni, spero che OpenData e SmartCities non siano solo delle keyword che passeranno presto di moda, la qualita’ di molti dataset disponibili e’ pietosa oppure estremamente vecchia e di strada da fare ce n’e’ ancora parecchia.

Il servizio Cinema di ItaloTreno anche su Android

Alla mia prima esperienza su ItaloTreno, ho notato che nel portale interno c’e’ un servizio di video on demand gratuito per i viaggiatori. Molto comodo se di dispone di un portatitle, impraticabile da tablet e smartphone Android. Ma grazie ad un po’ di sperimentazione, alla fine sono riuscito a vedere i film anche sul mio Galaxy Nexus.

** DISCLAIMER **: quanto segue e’ il risultato di alcuni tentativi con scopi puramente accademici, non e’ mia intenzione incitare utilizzi dei contenuti del portale che vadano oltre quanto consentito dal portale stesso.

Per prima cosa ho aperto un video dal portatile e ho dato un’occhiata al codice sorgente della pagina, nel caso specifico “Burn after reading”. Questa parte qui mi e’ sembrata subito interessante:


  jwplayer('mediaspace').setup({
    'flashplayer': '/bundles/ntvportal/flash/player.swf',
    'file': 'movies/Burn-after-reading_ita_854x480_3000kbps.mp4',
    'streamer': 'rtmp://portal.italolive.it:1935/vod/',
    'autostart': 'true',
    'icons': 'false',
    'controlbar': 'bottom',
    'width': '905',
    'height': '545',
    'provider': 'rtmp',
    'modes': [
      {type: 'flash', src: '/bundles/ntvportal/flash/player.swf'},
        {
          type: 'html5',
          config: {
           'file': 'http://portal.italolive.it:1935/vod/_definst_/mp4:movies/Burn-after-reading_ita_854x480_3000kbps.mp4/playlist.m3u8',
           'provider': 'video'
          }
        }
    ]
  });

Ho quindi provato ad inserire nel browser l’url che appare nel secondo parametro file, cioe’ questa: http://portal.italolive.it:1935/vod/_definst_/mp4:movies/Burn-after-reading_ita_854x480_3000kbps.mp4
ottenendo la seguente risposta dal server:
Wowza Media Server 3 Special Perpetual Edition 3.0.4 build1127
Ottimo, il servizio di streaming on demand dei contenuti e’ gestito da un server un Wowza Media Server.

Cercando un po’ in giro, ho trovato questo thread che spiega come si possono aprire direttamente i diversi tipi di streaming disponibili. Nella sezione Playback alla voce “RTSP/RTP player or device” ho notato un formato di indirizzo molto simile a quello visto nell’html:
rtsp://[wowza-address]:1935/vod/_definst_/mp4:myvideos/sample.mp4
che, trasposto con quello letto nell’html, diventa: rtsp://portal.italolive.it:1935/vod/_definst_/mp4:movies/Burn-after-reading_ita_854x480_3000kbps.mp4
Aperto il fido VLC, ho inserito quindi l’indirizzo e bingo, lo streaming del video si e’ aperto.

Il gioco e’ fatto, basta aprire l’indirizzo precedente con una qualunque applicazione Android in grado di leggere streaming rtsp, come ad esempio MX Player e buona visione a tutti!

Bonus track: facile pensare che, una volta ottenuto l’indirizzo della sorgente RTSP, grazie al parametro -dumpstream di mplayer, sia possibile salvarla in locale. Ma eseguendo il comando
mplayer -dumpfile Burn-after-reading_ita_854x480_3000kbps.mp4 -dump rtsp://portal.italolive.it:1935/vod/_definst_/mp4:movies/Burn-after-reading_ita_854x480_3000kbps.mp4
mplayer mi ritorna il seguente errore:
“A single media stream only is supported atm. rtsp_session: unsupported RTSP server. Server type is ‘Wowza Media Server 3.0.4 build1127’.”
Anche in questo caso un po’ di sana ricerca mi ha portato alla soluzione del problema: sostituire il protocollo RTSP con RTMP, trasformando il comando in:
mplayer -dumpfile Burn-after-reading_ita_854x480_3000kbps.mp4 -dumpstream rtmp://portal.italolive.it:1935/vod/_definst_/mp4:movies/Burn-after-reading_ita_854x480_3000kbps.mp4

** LO RIPETO ANCORA **: non voglio in nessun modo incitare utilizzi dei contenuti del portale in modi che vadano oltre quanto consentito dal portale stesso. Solo spero che presto il servizio offerto permetta una visione dei film offerti anche da tablet e smarthphone Android, e nel frattempo mi arrangio come posso.

Screen density del Kindle Fire e Galaxy Tab 7″

Android, supporto a schermi di diversa grandezza e Kindle Fire: le FAQ di Amazon la dicono giusta: il Kindle Fire viene rilevato dal meccanismo di identificazione delle risorse piu’ appropriate come un device “large” e “mdpi“, nonostante i suoi 1024×600 pixel di schermo e 160dpi di densita’. Probabilmente e’ stata fatta qualche customizzazione nel sistema operativo installato sul device, come riportato su StackOverflow.

Poco male, per fortuna basta aggiungere la il suffisso -large-mdpi-1024×600 nelle cartelle che conterranno i file di risorse specifici per il Fire, nel mio caso values-large-mdpi-1024×600 con dentro le dimensioni di alcuni immagini che erano troppo piccole viste sullo schermo del device. Per device normali sono di 80dp, per device xlarge sono di 120dp ed anche per il Fire le ho settate a 120dp, perche’ a 80dp si vedevano troppo piccole. Tutto molto bello e facile.

Kindle Fire, senza risorse specifiche (errato)

Kindle Fire, con le risorse specifiche (corretto)

Peccato poi aver ottenuto questo effetto sul Galaxy Tab 7″, che prima delle modifiche fatte avete la immagini della dimensione voluta (screenshot a sinistra), dopo aver aggiunto le risorse per il Kindle Fire le aveva visibilmente piu’ grandi, e inadatte (screenshot a destra):

Galaxy Tab 7", prima della modifica per il Kindle Fire (corretto)

Galaxy Tab 7", dopo la modifica per il Kindle Fire (errato)

 

Alla fine, ho scoperto che il Galaxy Tab 7″ viene riconosciuto come un -large-hpdi-1024×600, quindi ho semplicemente ricopiato le risorse gia’ presenti nella cartella values-large anche in values-large-hpdi-1024×600 ed e’ tutto ritornato alla normalita.

Continua a leggere

Cronache dei miei Hackathon, e le idee realizzate

Hackathon: maratone di coding dove la passione si mischia alla creativita’, la stanchezza fisica e mentale alla gioia di veder nascere, riga dopo riga, qualcosa che spesso e’ un incredibile prototipo neanche lontanamente immaginato solo qualche ora prima. Oltre ad organizzarne con il WhyMCA, mi piace anche parteciparci. Di seguito la mia personalissima “Hackmission, a crazy developer history”.

OverTheAir Settembre 2008
Primo hackathon a cui abbia mai partecipato, mi e’ sempre rimasto nel cuore. Londra, in notturna, dentro una struttura universitaria, quando il Nokia N95 era ancora il top della gamma. Assieme a Robert, conosciuto sul posto, realizzammo S.N.O.B – Social Network Open Butler, un’applicazione per Windows Mobile in grado di prendere gli avatar di Twitter e di Facebook (che a quel tempo erano ancora accedibili pubblicamente e anonimamente) e associarli ai contatti della propria rubrica. Robert si occupo’ del webservice PHP che tirava fuori l’immagine in base al nome del contatto che il mio client gli passava, io del client per Windows Mobile, appunto, che verificava tutti i nomi della rubrica, faceva una ricerca dei loro avatar e proponeva se associarli o meno al contatto. Vincemmo nella categoria “Most practical / ready for market”, assieme ad uno smartphone Sony Ericsson in palio.

OverTheAir Settembre 2009
Ad un anno esatto dal primo, sempre a Londra e sempre in notturna. Assieme a Stefano e Robert creammo S.A.Y – Something Around You. Un’applicazione per Android che, in base alla posizione corrente, capiva i luoghi limitrofi grazie all’uso di Yahoo Query Language, interrogava Flickr per ottenere foto riguardandi quei luoghi e, alla fine, le visualizzava in realta’ aumentata sfruttando le API di Wikitude. Era anche in grado di ottenere informazioni sugli spettacoli cinematografici circostanti, con tanto di locandina del film, breve descrizione e orari. A Stefano e a Robert la realizzazione dei webservice che ottenere i dati, a me quello del cliente Android per realizzarli. Primi nella categoria “Best use of Yahoo APIs“,  ci riportammo a casa una macchina del caffe’ Nespresso.

HackItaly Febbraio 2011
Dopo un anno di assenza forzata dall’OTA, finalmente anche il panorama italiano si era aperto agli hackathon. Cosi, improvvisando in mattinata un team assieme a Magnum e Sammy, abbiamo dato vita a Contestr. L’idea con cui ero partito il giorno prima era quella di realizzare un servizio che permettesse di gestire gare di snowboard tra rider: ti iscrivevi ad un contest e poi giravi sulle piste, accumulando punti in base alla velocita’ raggiunta, chilometri percorsi, trick eseguiti (letti in grazie a giroscopio ed accelerometro). Alla fine della giornata avevamo messo in piedi un sito per organizzare caccie al tesoro in giro per la citta, con prove composte dal checkin in certi luoghi, prove a tempo di corsa e i punti fatti venivano raccolti e trasformati in digital goods grazie a Beintoo. Magnum e Sammy hanno curato il backend in ROR e io invece ho realizzato il client Android. Vittoria come miglior uso delle API di Beintoo e per quelle di Nokia Maps, con un bottino composto da un viaggio in una capitale europea, un Nokia N7 e hosting gratuito su Top-ix per un anno. Estratto a sorte tra noi tre, il viaggio e’ toccato a me.

HackItaly Settembre 2011
Per questo secondo appuntamento sono riuscito a coinvolgere Paolo e Mauro. Nonostante le poche API a disposizione tra cui scegliere, abbiamo partorito Kinect Says, versione aumentata del gioco Simon Says: dall’iPad/iPhone si schiacciavano una sequenza di tasti colorati su una griglia 3×3, accompagnati da una musica riprodotta in streaming grazie alle API di Play.me. Questi tasti premuti venivano salvati sul backend e letti da un’applicazione Windows WPF che, avviata la partita, li riproduceva su una griglia a schermo e, grazie al Kinect SDK, controllava se il giocatore riusciva a “colpirli”, muovendo le braccia nella loro direzione prima che questi scomparissero. sostituiti dal nuovo riquadro da colpire. Sul device del primo giocatore, inoltre, venivano mostrate le mosse giuste e quelle mancate dell’avversario, visto che il match poteva anche essere giocato in contemporanea. Sembra una roba tranquilla, ma vi assicuro che alla fine era una sequenza molto frenetica. A Paolo e’ toccata la realizzazione del client iOS, a Mauro quella del backend in PHP e io ho fatto l’applicazione WPF che parlava col Kinect. Oltre ad un divertimento spropositato, ci siamo portati a casa una XBox 360, come premio per la categoria delle API Kinect.

OverTheAir Settembre 2011
Partiti in sordina, io, Paolo e Andrea ci siamo trovati seduti in un prato sopra alle nostre beanbag, bevendo birra e ammirando le stelle (si, una notte inglese atipicamente calda e serena), e abbiamo partorito l’idea di Hack-The-Mansion, grazie anche allo zampino creativo di Andrea che ci ha fatto compagnia durante il birrastorming. Lanciati nell’impresa, alle 15 del giorno dopo era pronto un gioco per Android che si ispirava al Monopoli, ma molto piu’ articolato. I giocatori dovevano leggere dei QR-Code attaccati sui luogi del campo da gioco (idealmente alberghi o monumenti o altro). Se quel luogo non era stato ancora prenotato da nessuno, c’era l’opzione di prenotarlo per un numero variabile di turni. Se lo era stato, si doveva pagare al proprietario una “tassa di soggiorno” per la durata del turno. Questi flussi di ota-coin componevano il punteggio dei giocatori, che poteva essere incrementato acquistando nuovi ota-coin tramite le Mobile Payment Libraries di Paypal, oppure rispondendo correttamente a delle domande riguardanti il luogo dove si era, generate dal backend che interrogava dei dataset OpenData, come quelli sulla densita’ di popolazione, il numero di abitanti ed altro. A me il client Android, a Paolo e Andrea il backend in ROR. Devo dire di non aver mai scritto tanto codice in un solo hackathon, ma ne e’ valsa la pena: abbiamo vinto il premio come “Best Android Application” e quello come “Best Game”, per un totale di 3 libri, 2 Sony Ericsson Xperia Xplay e ben 3 Nexus S. Insomma, non sapevamo piu’ dove metterli nel bagaglio di ritorno a casa.

 

Considerazione di fondo. Partecipo agli hackathon sopratutto per divertirmi e per mettere alla prova le mie capacita’. Poi certo, vincere non dispiace mai, ma l’emozione di creare qualcosa che non e’ la solita applicazione che fai al lavoro, dove sacrifichi senza problemi stabilita’ per funzionalita’, dove provi a fare cose cosi’ avveneristiche che magari riutilizzerai tra un anno di tempo, dove scopri quanto e’ bello e ricco il mondo dei mashup tra librerie ed API… Beh, e’ questo il vero premio per 9 o piu’ ore di stress mentale, o per la notte passata in bianco. Ma ne valgono tutte la pena, minuto per minuto. Ci vediamo al prossimo hackathon!