Skip to content
Archive of posts filed under the Technology category.

Livelli di logging e consigli per usarli

Non tutti sono soliti loggare cosa sta succedendo durante l’esecuzione di un’applicazione. E questo e’ il MALE, c’e’ poco da dire! Altri invece, pur loggando, non sanno mai quando loggare come trace, debug, info oppure warning, e spesso si ritrovano ad usare uno solo di questi valori, assieme al canonico error per segnalare l’accadimento di disastri.

Ho trovato su questo post una guida che puo’ aiutare a decidere “dove va cosa”:

ERROR: something terribly wrong had happened, that must be investigated immediately. No system can tolerate items logged on this level. Example: NPE, database unavailable, mission critical use case cannot be continued.

WARN: the process might be continued, but take extra caution. Actually I always wanted to have two levels here: one for obvious problems where work-around exists (for example: “Current data unavailable, using cached values”) and second (name it: ATTENTION) for potential problems and suggestions. Example: “Application running in development mode” or “Administration console is not secured with a password”. The application can tolerate warning messages, but they should always be justified and examined.

INFO: Important business process has finished. In ideal world, administrator or advanced user should be able to understand INFO messages and quickly find out what the application is doing. For example if an application is all about booking airplane tickets, there should be only one INFO statement per each ticket saying “[Who] booked ticket from [Where] to [Where]“. Other definition of INFO message: each action that changes the state of the application significantly (database update, external system request).
Continue reading ‘Livelli di logging e consigli per usarli’ »

Organizzare Hackathon in Italia, qualche considerazione

Dopo aver partecipato a diversi hackathon in giro per l’Europa, aver preso parte all’HackItaly a Milano lo scorso Febbraio ed essermi messo in gioco in prima linea organizzando quello della WhyMCA Mobile Conference del 21 Maggio, ecco qualche mia personale considerazione.

  • In Italia gli hackathon non sono ancora cosi’ diffusi come in altri paesi d’Europa/America. E’ un format ancora sperimentale e sono pochi i “ricettivi” nei confronti di queste iniziative. Per fortuna i partecipanti sono tutti parecchie spanne avanti rispetto alla media, quindi la qualita’ dei presenti e’ gia’ di per se’ una buona garanzia della riuscita dell’evento.
  • In altri paesi e’ usuale fare hackathon che vanno dal tardo pomeriggio del venerdi’ alla mattina del giorno seguente, o addirittura durante tutto il weekend. In Italia non penso ci sia ancora la cultura per farlo. La data ideale per beccare anche programmatori senior e’ quella quindi del sabato, dalla mattina alla sera. Un’oretta per scaldare i motori e presentare le API, 9-10 ore per realizzare gli hack e 3 minuti ad ogni team per presentare quanto realizzato (consideratene almeno 6 reali tra cambi di scena, collegamento cavi, imprevisti vari)
  • Nella presentazione delle API, sopratutto se queste trattano temi d’avanguardia, e’ meglio fare qualche esempio di applicazione “entusiasmante” che sia da stimolo ai partecipanti. Il rischio e’ che non venga percepito il valore innovativo oppure non si riescano ad immaginare scenari d’uso da realizzare durante l’hackathon.
  • I premi messi in palio contano, eccome se contano. Possono essere di qualunque natura, non necessariamente legati al prodotto presentato, l’importante e’ che abbiano il loro appeal per i partecipanti. Ho sentito team che sceglievano alcune tecnologie piuttosto di altre solo perche’ i premi in palio erano piu’ interessanti, anche se sapevo di aver piu’ partecipanti a contendersi la vittoria. Buoni spesa di qualunque tipo, viaggi, oggetti utili. Evitiamo pero’ le nerdate: sono carine, ma un po’ fine a se stesse.
  • Il luogo geografico ha la sua importanza. Trovare hacker su Milano o Roma e’ piu’ facile che trovarli ad Ancona (lo dico perche’ un po’ conosco l’ambiente di tutte e 3 le citta’ indicate). All’HackItaly eravamo circa una dozzina di team, al WhyMCA sei hanno presentato le loro creazioni. Sotto i venticinque-trenta partecipanti si rischia di perdere un po’ il senso della competizione, non fondamentale per un hackathon, ma comunque ben accetta.
  • Si possono organizzare con successo hackathon verticali (su un certo tipo di dispositivo come i tablet, oppure su uno specifico sistema operativo), hackathon orizzontali (tutte le api che parlano di musica, oppure di social reading, oppure di open data), oppure trasversali (tecnologie + vincoli di piattaforma, come la musica sul mobile, oppure gli opendata con drupal ecc)
  • Gli hackathon sono una grande occasione di innovazione, anche per i fornitori di API che vi partecipano, soprattutto se sono startup con prodotti in evoluzione. Nuove idee possono venire sia dagli hacker stessi, sia guardando come si stanno muovendo altri attori dello stesso settore. Anche Nokia, nel mobile hackathon WhyMCA, ha detto di aver imparato qualcosa di nuovo ;)
  • Coinvolgimento massiccio. Evento dopo evento, si sta creando anche in Italia una base di partecipanti. Stuzzichiamoli, invitiamoli a portare un nuovo amico, facciamo che siano i nostri hub informativi. Non siamo ancora in quella fase dove le persone arrivano da sole, occorre invogliarle ed attirarle a se’. Poi magari, tra un paio d’anni, non ce ne sara’ piu’ bisogno.
  • Gli hackathon devono diventare (imperativo voluto) una grande occasione di raccolta e recluiting di persone e di idee.
  • Ci sarebbe da coinvolgere le universita’ nell’organizzazione di questi eventi. Sarebbe qualcosa a costo praticamente zero per gli organizzatori e sarebbe un ottimo modo di mettere in contatto talenti in erba con chi e’ interessato a loro. E sarebbe anche un modo per far avvicinare gli studenti al mondo reale, che ce n’e’ proprio bisogno. Sono stufo di vedere conferenze in Italia con pochissimi studenti e tanti lavoratori. Ragazzi, svegliatevi: sono punti in piu’ sul vostro CV, oltre che occasioni per capire veramente cosa c’e’ qui fuori e dove stiamo andando!
  • Filmare, fotografare, condividere e diffondere il piu’ possibile. C’e’ bisogno di far percepire l’entusiasmo e la qualita’ di questo tipo di “innovazione che viene dal basso”. Non lasciamola confinata e chiusa dentro una stanza. A meno di non essere dei veterani, le emozioni che si provano durante un hackathon sono uniche, non puoi capirle finche’ non partecipi.
  • Piccola postilla personale: facciamo in modo che non ci sia niente di male se anche gli organizzatori partecipano: vi garantisco che non e’ bello pensare un evento, raccontare il tuo entusiamo per l’iniziativa e contagiare chi di dovere, essere presente dal suo inizio alla fine e… e non poter scrivere codice da mettere in competizione con gli altri!

Felice di sentire critiche/integrazioni da parte vostra.

Performance test con Appcelerator Titanium

Ci sono tante scelte che possono portare o non portare all’uso di un framework mobile come Appcelerator Titanium. Tra queste, sicuramente, le performance delle applicazioni realizzate.

Per fare alcuni test ho usato il progetto KitchenSink, fornito da Titanium stessa come “banco di prova” per dimostrare quello di cui e’ capace. Effettivamente la meraviglia c’e’ stata, vedere la stessa identica app (a livello di sorgente JavaScript) girare su un Android e su un iPhone riprendendo aspetto e comportamenti tipici del sistema applicativo.

Titanium infatti crea un progetto in codice nativo (Android o iPhone) dal file Javascript di origine e quel progetto viene poi compilato per il dispositivo. Non ci sono quindi librerie grafiche intermedie di supporto e, a meno di personalizzazioni grafiche, il look’nd feel dell’applicazione realizzata e’ quello del particolare dispositivo dove si andra’ ad eseguire. Quindi conta molto la bonta’ del codice generato nella valutazione delle performance. Ovvio che nessun codice generato automaticamente per uno scenario medio-complesso puo’ essere allo stesso livello di un codice scritto a manina e ottimizzato per quella specifica esigenza, ma a volte le differenze sono trascurabili.

Purtroppo non e’ successo cosi’ per una delle viste di Titanium, composta da una ListView per Android o da una UITableView per iPhone un po’ complessa. Come si puo’ vedere dal video, le performance sono bassine su Android, sotto l’usabile, mentre rimangono soddisfacenti su iPhone.

Continue reading ‘Performance test con Appcelerator Titanium’ »

The future of Media

Un interessante video di Chris Brogan sull’evoluzione dei media e quello che ci aspettera’ nei prossimi anni.

Continue reading ‘The future of Media’ »

Nuovi contest Google, tutti banditi dall’Italia

Mi e’ capitato di notare che gli ultimi contest organizzati da Google includono l’Italia tra i paesi banditi dalla competizione.

Nexus S Challenge Official Rules
ELIGIBILITY: To be eligible to enter the Contest, you must be: (1) a legal resident of and physically located in either the 50 United States or the District of Columbia, Canada (excluding the province of Quebec) or the United Kingdom;
E vabbe’, qui non e’ un gran male dato che sono molti i paesi esclusi, ma il concorso e’ vecchio ormai.

Nexus S Challenge 2 Official Rules
To be eligible to enter the Contest, you must be: (1) a legal resident of and physically located in Australia, Austria, Belgium, Canada, Croatia, Czech Republic, France, Germany, Greece, Hong Kong, Ireland, Indonesia, Netherlands, Philippines, Russia, Singapore, Spain, South Korea, Switzerland, Taiwan, Thailand, the United Kingdom or the 50 United States and the District of Columbia.
Nuovo giro del precedente concorso, ancora tra gli esclusi, nonostante la lista delle nazioni si sia allargata parecchio!

Google Code Jam 2011
The Contest is void in Quebec, Italy, Saudi Arabia and where prohibited by law.
E gia’ qui la cosa si fa interessante: siamo a livello di Quebec e Arabia Saudita. Wow, che emozione!

Poi mi sono ricordato che questo problema ha radici gia’ nel lontano 2007,  in occasione del primo Android Developer Challenge

The Android Developer Challenge is open to individuals, teams of individuals, and business entities. While we seek to make the Challenge open worldwide, we cannot open the Challenge to residents of Cuba, Iran, Syria, North Korea, Sudan, and Myanmar (Burma) because of U.S. laws. In addition, the Challenge is not open to residents of Italy or Quebec because of local restrictions.

Continue reading ‘Nuovi contest Google, tutti banditi dall’Italia’ »

Cosa domandare all’azienda durante un colloquio di lavoro

Job InterviewArriva sempre, in un colloquio di lavoro, il momento in cui l’esaminatore chiede al candidato se ha qualche domanda da fare a proposito dell’azienda. Un momento fondamentale per approfondirne la conoscenza dato che, a meno di avere amici che gia’ ci lavorano, e’ difficile reperire in giro queste utilissime informazioni da “internals”, da cui potrebbe anche dipendere la vostra scelta finale.

Se si e’ alle prime esperienze, spesso questo momento e’ accompagnato da un completo vuoto mentale. Pessimo, questa inversione dei ruoli e’ troppo importante per permettersi di sprecarla. Se volete lavorare nel campo dello sviluppo software, ecco alcuni spunti per non rimanere a bocca chiusa.

Un esempio semplice e rapido per iniziare a farsi un’idea puo’ essera dato da una lista di domande pensate precedentemente, che definiscono alcune pratiche aziendali per noi importanti. La risposta non deve essere descrittiva, ma di tipo si/no. Ad ogni risposta affermativa si guadagna un punto, nessun nessun punto per quelle negative. Terminate le domande si sommano i punti ottenuti. Piu’ questo totale sara’ alto e piu’ l’azienda sara’ per noi desiderabile. Dodici utili punti con i quali partire sono contenuti in The Joel Test: 12 Steps to Better Code:

1. Do you use source control?
2. Can you make a build in one step?
3. Do you make daily builds?
4. Do you have a bug database?
5. Do you fix bugs before writing new code?
6. Do you have an up-to-date schedule?
7. Do you have a spec?
8. Do programmers have quiet working conditions?
9. Do you use the best tools money can buy?
10. Do you have testers?
11. Do new candidates write code during their interview?
12. Do you do hallway usability testing?

Piu’ il punteggio e’ alto, piu’ indichera’ una propensione dell’azienda alla strutturazione del metodo di lavoro, un’attenzione alla qualita’ del codice prodotto e all’adozione di un processo di gestione del ciclo di vita delle applicazioni articolato e completo sotto ogni aspetto. Se i punti ottenuti sono pochi, non passera’ molto tempo prima di trovarsi a picchiare la testa per cercare di capire chi ha fatto una modifica che ha rotto l’applicazione, quando e’ stata fatta, come mai non se ne e’ mai accorto nessuno e perche’ ora siete voi che dovete metterci una pezza. O a dovervi inventare strani e artigianali strumenti per mettere un po’ di ordine delle miriade di release, backup, componenti da collegare tra loro senza sapere con precisione come fare, ma tentando, tentando, tentando… Ne vale la pena, soprattutto se gli straodinari non sono pagati?

Continue reading ‘Cosa domandare all’azienda durante un colloquio di lavoro’ »

Piccoli problemi quotidiani con Eclipse

Open Type (Ctrl-Shift-T) non riesce a trovare nessuna classe

Capita che il task di indicizzazione di Eclipse si corrompa di tanto in tanto, quindi Open Type e altre funzioni non riescono piu’ a tirare fuori i risultati aspettati. Per risolvere il problema, cancellare tutti i file nella directory <Workspace>/.metadata/.plugins/org.eclipse.jdt.core. Maggiori dettagli qui.

 

L’autocomplete di Eclipse 3.6 Elios e’ lento con il plugin Android ADT (freezing code assist)

Capita che in alcune installazioni di Eclipse con il plugin per sviluppare con Android, l’autocomplete si blocchi per diversi secondi (anche 30) per poi riprendersi, e solo sugli oggetti che fanno parte del package Android. Problema fastidioso, e la soluzione proposta e’ alquanto bizzarra, ma sembra funzioni a diversi. Per la cronaca, a me magiamente e’ apparso, magicamente e’ scomparso (e dopo qualche aggiornamento dell’ADT). Comunque sembra sia stata risolta dalla versione 3.6 SP2 di Eclipse.

 

Inoltre, un utile post su alcune delle shortcut per Eclipse piu’ usate.

Diablo II Lord of Destruction su Linux con Wine

In attesa del terzo capitolo della saga, con i miei amici ci stiamo divertendo, di tanto in tanto, a fare qualche partita con Diablo II Lord of Destruction. Creato nell’ormai lontano 2001, oggi anche il piu’ banale dei netbook puo’ farlo girare senza problemi, compreso l’host di partite in LAN. Ho comunque voluto installarlo sulla mia Ubuntu Maverick 10.10 a 64 bit, utilizzando wine e qualche configurazione aggiuntiva.

Avendo delle immagini dei cd di installazione, ho installato CDemu prendendolo dall’apposito PPA:
sudo add-apt-repository ppa:cdemu/ppa
sudo apt-get install gcdemu
Ho riavviato il pc e ho aggiunto nella barra di Gnome il widget per CDemu, un piccola icona che mi permette agevolmente di montare /smontare immagini di dischi senza ricorrere alla riga di comando.

Avevo gia’ installato wine con tutte le configurazioni necessarie (drives, alcune librerie caricate con winetricks ecc), quindi mi e’ bastato “fare doppio click sul Setup.exe” una volta montata l’immagine del primo disco e ripetere il processo con quello dell’espansione e la patch 1.13c. Ho installato tutto in C:\Program Files\Diablo II

Il gioco funziona ad una risoluzione di 640×480 oppure 800×600, quindi se si fara’ girare in fullscreen su molti dei computer odierni, che non hanno piu’ un monitor con un rapporto 4:3, questo risultera’ schiacciato e brutto da vedere, oltre ad avere un grosso problema di freeze totale quando si passa ad un’altra finestra e si ritorna poi a quella del gioco. Per risolverli entrambi, ho lanciato wineconfig e ho configurato delle impostazioni particolari per eseguire Diablo 2:
Tab Applications – Add Application – navigare fino a seleziona Game.exe nella cartella di installazione del gioco.
Windows version: Windows XP
Tab Graphics – deselezionare Allow the window manager to control the windows, deselezionare Emulate a virtual desktop

Infine, per lanciare il gioco, ho usato questa riga di comando (fondamentale il parametro -w per il windowed mode):
wine /opt/wine/drive_c/Program\ Files/Diablo\ II/Game.exe -w
che ho inserito come icona nel menu’ Game di Gnome.

Continue reading ‘Diablo II Lord of Destruction su Linux con Wine’ »

Android Advanced Programming al Codemotion

Online video e slide dell’intervento che ho fatto a Marzo durante il Codemotion: “Sopravvivere felicemente ad un anno e mezzo di sviluppo Android”

Continue reading ‘Android Advanced Programming al Codemotion’ »

Che editor usare per Appcelerator Titanium?

Configurato l’ambiente di sviluppo, e’ ora di scrivere la prima applicazione con Appcelerator Titanium. Una volta creato il progetto, ci si accorge pero’ che non c’e’ modo di editarlo. Quindi niente autocompletamento del codice, niente reference dei metodi e documentazione inline mentre si scrive, niente refactoring e facilitazioni varie. A meno di qualche trucchetto.

In primis, si puo’ usare Notepad++ con un’apposito plugin che permettera’ l’autocompletamento del codice.

Se invece si cerca qualcosa di piu’ integrato, si puo’ passare ad Eclipse, utilizzando Aptana Studio ed alcune configurazioni aggiuntive. Aptana perche’ mette a disposizione un editor per file Javascript sia in versione standalone, sia come plugin per Eclipse, e perche’ di recente e’ stata acquistata proprio da Appcelerator, una mossa che fa presagire una futura forte integrazione tra i due.

Scaricato ed installato il plugin di Aptana per Eclipse, l’autocompletamento del codice piu’ essere ottenuto grazie a questo utile post in cui c’e’ un programma php per convertire le API doc di Appcelerator Titanium nell’header JavaScript. Per generare quello relativo al Mobile SDK 1.5.1 ecco cosa ho fatto:

wget http://jamesdlow.googlecode.com/svn/trunk/Eclipse/Aptana/Titanium/titanium.php
wget http://developer.appcelerator.com/apidoc/mobile/1.5.1/api.json
sudo apt-get install php-cli
php titanium.php > timobile.js

Il seguente video mostra invece come configurare Eclipse ed abilitare quindi l’autocompletamento:

Continue reading ‘Che editor usare per Appcelerator Titanium?’ »