martedì 31 ottobre 2006

Aaaaargh!

Scusarte il titolo... ma non ho parole:

http://uk.news.yahoo.com/28102006/356/cruise-set-star-trek.html

Non mi rovinate Spok!

ciao Piero

Live @ Linuxday 2006

Bella esperienza, non c'è che dire.

Sabato sono stato uno dei relatori al LinuxDay di Sesto Calende. L'argomento del mio seminario è stato Ruby on Rails.

Sebbene non conosca da molto questo framework, mi ha talmente entusiasmato che ho voluto tenere una demo pubblica.
Ho diviso il seminario in due pomodori, un primo teorico di 25 minuti seguito da 5 di pausa, e un secondo pratico, dove ho mostrato come sia veramente possibile sviluppare più velocemente applicazioni Web con Rails. L'idea è stata quella di sviluppare un blog (sulla traccia della demo di DHH presente sul sito di rails), chiedendo al pubblico quali features desideravano (es. "Modifichiamo la grafica o diamo la possibilità di inserire commenti?").

Il momento più entusiasmante è stato al termine quando mi è venuto in mente di dimostrare quanto Rails sia intuitivo:
volevo contare i commenti presenti all'interno di un post del blog, non sapevo bene come fare, ma mi sono fidato di Rails.
Dissi che non sapevo se quello che stavo per scrivere avrebbe funzionato, così scrissi:
<%= post.comments.count %>

la cosa più logica che mi venne in mente... e funzionò!

Ho approfittato dell'occasione per parlare di alcune buone abitudini di eXtreme Programming, e di come queste siano ben utilizzabili in Rails. Mi pento di non aver mostrato come fare Tdd (Test Driven Development), il problema è che forse non era la presentazione adatta e che non sono ancora padrone di questa tecnica sotto Rails.

Sono stato molto contento del feedback, oltre alle domande, ho ricevuto anche un paio di mail di ringraziamento e di richiesta di maggiori informazioni su Rails e sul varese-xpug!

Ora non mi rimane che imparare veramente bene rails!

Ciao Piero

-

Ps: Peccato che una slide conteneva dei bug...

Ubuntu Linux an Easy way to use Linux

Chi ha detto che linux è ancora complesso da usare?

Da circa una settimana è stata rilasciata la nuova release di Ubuntu Gnu/Linux, la 6.10. Ho aggiornato il mio pc dalla versione precedente, e il processo di installazione è stato semplicissimo e molto veloce (tralasciando il fatto che ho eseguito l'upgrade via internet, percui ho scaricato circa 1.5 Gb di pacchetti).

Gnome 2.16 fa la sua bella figura, è stabile, veloce e potente. La tempo di avvio è stato dimezzato grazie alla sostituzione del vesueto SysVInit con UpStart, un demone di avvio sviluppato da Ubuntu basato su eventi.

Nell'installazione è compresa di default l'ultima release di OpenOffice la 2.0.4 che supporta finalemente un buon sistema di plugin (speriamo che porti a una evoluzione più rapida del progetto OOo).

Utilizzando prelink è possibile incrementare ancora la velocità finale del sistema.

Per quanto riguarda Internet viene incluso Firefox 2, che con le sue nuove funzionalità (come il restore dei tab) semplifica maggiormente la navigazione. Gaim è stato aggiornato alla versione 2 beta 3, e comprende diverse migliorie, sia sotto l'aspetto della Gui (è più ordinato) che delle funzionalità.

Non c'è più nessuna scusa! Passare a linux oggi non è mai stato così facile!

Ciao Piero

venerdì 27 ottobre 2006

Linux e il Beppe nazionale....

Per chi non leggesse il blog di Beppe Grillo, ieri è stato pubblicato un interessante articolo dal titolo "Adotta un pinguino".

Vale la pena di leggerlo...
ciao

P

-

Update (30/10/2006): Putroppo non posso concordare con tutto ciò che dice Beppe. Non sarà molto semplice passare a Gnu/Linux in una PA. Provate a dare un'occhiata ai blog di Federico e di Moreno (link a fianco)

venerdì 20 ottobre 2006

Bigino per Rails

Ecco un piccolo bigino per Ruby on Rails, da tenere a portata di mano sulla scrivania...


Ruby on Rails bigino

giovedì 19 ottobre 2006

Java multi-threading in four steps

Ecco un breve appunto per creare un'applicazione multi-threading in Java:

1) Definire una nuova classe che implementi l'interfaccia Runnable
public void Slave implements Runnable {

}

2) Inserisci un metodo run() in questa classe e inseriscici all'interno il codice che deve essere eseguito in parallelo
public void Slave implements Runnable {

public void run(){

MyApp.executeSomethingStatic();

}

}

3) Nella classe principale, che andrà eseguita parallelamente, inserisci il codice per avviare un nuovo thread della classe Slave:
Thread peasant = new Thread(new Slave()); /* Istanzio un nuovo oggetto di tipo thread */

t.start(); /* Lancio il thread*/

/* il codice presente qui sotto sarà eseguito subito dopo insieme al nuovo thread*/

4) OOOPPs! Chi mi garantisce che la classe principale non acceda alle stesse risorse dell'istanza di slave? (es MyApp)

/* Utilizziamo i metodi sincronizzati */




public class MyApp {


public synchronized void executeSomethingStatic(){


/* Risorsa per un solo thread alla volta */


}


}



Abbiamo implementato un piccolo esempio di thread in Java, utilizzando il metodo classico per questo genere di applicazione in Java.

Esistono però alcune librerie Java SE che permettono di giocherellare con i thread in maniera più simpatica: gli Executors.

Tramite gli executors, per esempio, posso creare un pool di thread facilmente:

public class SwimmingPool{


...


private int poolSize = 20;


private SwimmingPool(){




ExecutorsService pool = newFixedThreadPool(poolSize); /*Creo 20 thread differenti, che saranno utilizzati all'occorrenza, e non saranno terminati fino alla chiusura della vm*/


Future threadResult = pool.submit(MyApp); /* Restituisce il valore di ritorno di MyApp quando verrà terminata*/


...


}



}



Ora rifattorizziamo la classe MyApp... è molto semplice, basta cambiare l'interfaccia implementata: da "runnable" a "callable" e sostuire il metodo run() con call() e il gioco è fatto.

Utilità? Potrebbero essere molto utili per lo sviluppo di un server web, personalmente li ho usati per scrivere un piccolo schedulatore di processi.

Fatemi sapere se ho scritto qualche errore, capita ai migliori... figuriamoci ai peggiori :)

Ciao Piero

mercoledì 18 ottobre 2006

Varese Xp User Group 2nd meeting

Martedì ci siamo riuniti per la seconda riunione dell'Xp User Group di Varese: presenti 9, un buon risultato!

Abbiamo iniziato con uno Stand-Up meeting: ognuno di noi ha parlato delle sue aspettative per la riunione e devo dire che abbiamo tirato a segno! Le storie sono state scritte con successo, e grazie a Federico che ci ha fatto da "Cliente" ne abbiamo preparate undici. Per la prossima riunione, fissata per il primo di novembre (aule premettendo), ci siamo proposti di iniziare la prima iterazione con la codifica di tre storie per un totale di otto punti (un buon punteggio per una iterazione delle nostre, dato che abbiamo al massimo 4 pomodori ogni due settimane).

Il gruppo al lavoro sulle storieil Gruppo al lavoro sulle storie

Speriamo di superare presto le difficoltà inerenti a questioni relative al nuovo team: alcuni di noi si conoscono e hanno sviluppato in pair all'essap o in altre occasioni, altri invece no. Oltretutto c'è un problema di know-how: abbiamo sceto Ruby on Rails per sviluppare il nostro progetto, un framework nuovo per molti, che ci rallenterà un po' all'inizio, ma che nel lungo periodo ci divertirà (dato che il nostro scopo è divertirsi programmando...) e ci darà la velocità giusta. Allo scopo di migliorare questa carenza esiste la possibilità di assistere al corso di Applicazioni Web dell'Università dove il principale argomento di insegnamento è proprio RoR.
Due persone nuove (entrambi studenti) hanno assistito al meeting, e devo dire che ho ricevuto un buon feedback, credo che torneranno...
Creare un gruppo di eXtreme programming all'interno della facoltà (anche se aperto anche al pubblico) è stata una buona idea: per gli studenti è molto più semplice imparare ora xp piuttosto che un domani dopo anni di programmazione non meglio organizzata. Oltretutto è un modo per approfondire e apprendere le tecniche agili tramite osmosi (e non) da chi le ha glà applicate in ambito lavorativo.

Spero che questo gruppo continui a crescere (chissà che un domani non venga avviato un insegnamento di XP all'Università?)

Ciao Piero

Sito varese-xpug

lunedì 9 ottobre 2006

Easter egg in OpenOffice 2.0

Un amico mi ha inviato le istruzioni per un easter egg in OpenOffice2.0

1) Aprire OpenOffice Calc

2) digitare su una cella vuota "=GAME("StarWars")"

3) premere invio

Salta fuori un bel giochino stile Space Invaders...

Ciao Piero

domenica 8 ottobre 2006

Jazz

Grazie al blog di Federico (dovreste trovare il link a dx) ho scoperto swissjazz, una radio svizzera che trasmette... jazz!

Ottimo nei momenti di relax e non solo!

Grazie SwissJazz e Federico!

-

Ciao Piero

Anomalie...

Oggi a mezzogiorno me ne stavo tranquillo tra la veranda e il giardino a leggere un libro... (Harry Harrison - JimDiGriz (l'implacabile) ) quando ad un tratto sento grugnire da un cespuglio... pochi secodi dopo mi vedo passare davanti un qualcosa che assomiglia ad un cinghiale...  (Tweety nel mio cervello: "Oh oh mi è semblato di vedele un cinghiale...")
Come in un cartone animato, rimango stupito,  ma penso "Impossibile.... sarà il cane del vicino...", quindi ritorno a leggere... risento grugnire... e passa un'altro Cighiale davanti a me... (Tweety nel mio cervello: "l'ho visto, l'ho visto! E' proprio un cinghiale...!")

Mi sono ritrovato con due cinghialetti in giardino... troppo forti! Alla fine erano scappati dalla fattoria di Inarzo, il paese sotto Bodio (dove abito)...

Se ne sono andati da dove erano venuti, ovvero dal bosco vicino casa...

Cose che succedono vivendo in collina... Domani cosa mi devo aspettare? La mucca Clarabella?

Ciao Piero

giovedì 5 ottobre 2006

Italian Agile Day

Dal sito dell'Italian Agile Day:

"Venerdi 1 Dicembre 2006 si terrà a Milano il terzo Italian Agile Day. Si tratta di una conferenza gratuita di un giorno dedicata alle metodologie Agili per lo sviluppo e la gestione dei progetti software rivolta agli sviluppatori, project leaders, IT managers, tester, architetti e coach che hanno esperienze da condividere o che iniziano solo ora ad interessarsi a queste tematiche. La giornata ha come obiettivo la conoscenza pratica, le esperienze sul campo e un attivo coinvolgimento di tutti i partecipanti e quest'anno si rinnova con un nuovo formato (OpenSpace) e un nuovo modello (auto-finanziamento). L'accesso è libero previa registrazione, i posti sono limitati."

Per ora mi sono registrato e, salvo impedimenti dell'ultima ora, sarò presente.

Chi viene?

Ciao Piero

mercoledì 4 ottobre 2006

Cosa manca a linux

Chi mi conosce sa che amo i sistemi unix, ma non è sempre stato così. In tempi bui ho utilizzato pure io Windows, e qualche volta sono stato costretto a emularlo via vmware su linux. Rimango comunque fedele al mio Os preferito (linux).
Ultimamente invece, dato che vorrei comperare un'altra macchina (un Mac), ho installato in una partizione di 5 gb Windows Xp Home sul mio notebook, per mostrare il mio portatile ad eventuali acquirenti.

Ho notato subito una cosa che ha windows rispetto a linux: un buon meccanismo di prefetching / prelinking.

Per farmi capire, se lancio Internet Explorer sotto Windows questo si avvierà in una frazione di secondo, mentre se avvio Firefox su linux, questo ci impiegherà una media di 5 secondi per il primo load. Le cose peggiorano enormemente con i pacchetti office. Microsoft Word, nonostante sia pachidermico quanto OpenOffice Writer, carica in pochi secondi, mentre il suo concorrente open ce ne mette più di 10.
Il problema non è la qualità del software che gira sotto linux, ma come viene caricato.

Per poter caricare velocemente, Internet Explorer viene più volte istanziato all'avvio, così come tutte le librerie. Ora questo sistema esiste in forma non prettamente automatica sotto linux. Ci sono script come "prelink" che velocizzano il tutto, ma sono poche le distribuzioni che lo implementano di default (credo suse e forse RHE). Ho provato questo script all'avvio, insieme ad altri trucchetti (tra cui creare uno script che copia gli eseguibili più usati su /dev/zero, in modo tale che vengano messi pure in cache), ma il risultato è rimasto lontano da quello sperato.

Speriamo che si ponga più attenzione anche a questo fattore nello sviluppo delle distibuzioni, se si desidera portare linux su tutti i pc del mondo (sto sognando, ma serebbe bello).

Ciao Piero

Varese eXtreme Programming User Group

Lunedì si è tenuta finalmente la prima riunione dell'Xp User Group di Varese.

Abbiamo avuto un discreto successo, oltre ai membri dell'european summer school of agile programming (essap), erano presenti altri due compagni / amici di università... in totale una decina di persone, sicuramente un buon inizio.

Max ci ha tenuto un seminario su RoR e il TDD, esponendoci i vantaggi (e gli svantaggi) di questo approccio.
La cosa più interessante è stato a mio parere il brainstorm su Examinando, la nostra applicazione, e ne siamo usciti con una buona mappa mentale (che presto sarà pubblicata sul wiki del gruppo). Poi abbiamo un po' discusso delle esperienze personali fatte con i metodi agili, e sono saltati fuori alcuni problemini tra cui i test con applicazioni con codice non completamente implementato in TDD, e lo sviluppo TDD con applicazioni database-centriche (entrambi miei problemi).

Per chi volesse altre informazioni può visitare il sito del gruppo:
varese-xpug

oppure dare un'occhiata alla mailing list.

la prossima riunione è fissata per mercoledì 18 ottobre dalle 11:30 alle 14:00 in un'aula dell'università dell'Insubria. Accorrete numerosi!

Ciao Piero

martedì 3 ottobre 2006

Maledetta pioggia...

Altro impedimento per l'acquisto del Mac...

Sono uscito fuori strada con la mia carretta, ho preso una bottarella alla ruota destra, e ora non va più... sì è dissaldato l'aggancio del motore (o qualcosa del genere) e ora gratta tutto, probabilmente sarà partito il semiasse o il cambio...
Fantastico...

Mi sa che opterò per un mac usato...

Ciao Piero