Archive for the ‘Software Development’ Category

Javaday 2007: Turin setup is almost over

Sunday, September 30th, 2007

I don’t think I should talk about that now, but since it’s a common marketing practice to introduce things while they are “almost” done (the mythical beta!) here you can download the draft of the brochure and here you can get to the website. Do not bookmark it as in the following days the official web addres will pop up: http://www.javadaytorino.com

DB: it’s a matter of balance

Saturday, September 29th, 2007

It was since the beginning of my career as a software developer that I’ve seen too many devs building their so called OO apps on top of some database.

I mean those apps were nothing without a DB and things like event notifications were done (”are” done, actually) through the db: some polling task looking at a table for new things to do.

Every of these projects has a common pattern:

  1. they are started thinking at the database, and the objects structure and hierarchy is a consequence of the relational structure of the tables
  2. db fans have built a perfectly normalized db, but it is slow: too many “joins”, indexes that cannot be created because the DBAs fear the loss of speed (remember: fear is a consequence of ignorance. If you fear something, you don’t know something). DBAs de-normalize the db, keeping it in sync through stored procedures and triggers.
  3. the customer asks for some new feature that would have been just as simple as a decorator, BUT since your object hierarchy is still reflecting the DB structure, you realize very soon that you would need to modify a couple of different classes instead than adding one. And because you fear (fear! again) to modify your code, you ask the DBA to adapt the DB structure to your needs: and so views, stored procedures and functions start to pop up like pustules.
  4. step 3 is repeated ad nauseam for a whole year or so. The team is exhausted by the continous effort put on maintaining the app (that’s what I call “kick programming”, that’s stacking quick, dirty and violent solutions to small problems). Some of the older team members leave as they like to be programmers, not maintainers. Junior developers replace them, and things go worse, as a junior may not have enough experience and being new to the team means he/she doesn’t know the app well enough to keep on maintaining it even at the low quality level of the old programmers.
  5. I still don’t know, I’ve never seen that, but I know there is still some fifth point. Maybe the project is kept on by people who “just code”, continously patching the whole thing. Maybe the project dies. Maybe something else…

All this mess JUST because someone has given the DB more importance than it deserves.

Remember: a database is a place where you put things when you leave the office, because you’ll need them the day after. Period.

It’s a base to put data on: no logic, no influence on the project.

Have you ever thought at your desk drawer as a player in your project management or design process? I don’t think so.

ITA: JUG Torino Meeting di Settembre

Wednesday, September 5th, 2007

Quando sono tornato a Torino, mi sono ripromesso di non perdere i contatti con il JUG di Milano (dove è nata la mia passione javista e per le cose fatte bene).

Purtroppo i tempi non sempre permettono di fare tutto ciò che si vuole: fu così che mi persi uno speech molto interessante su Google Web Toolkit (interessante perchè, avendone tenuto uno su Echo2 ed essendo l’approccio di quest’ultimo opposto a quello di GWT, non volevo perdere l’occasione per qualche domandina provocatoria!)

Ma se Maometto non va alla montagna, sarà ben la montagna a raggiungere Maometto!

E allora, il 21 Settembre, presso la sede della CSP in Corso Svizzera, ci sarà il meeting del JUG Torino con in scaletta, insieme ad Hudson (Bruno Bossola), GWT (tenuto dallo stesso Gian Carlo Pace che allora tenne quello a Milano).

Maggiori dettagli sul wiki del jug.

E’ un venerdì, quindi possiamo fare tardi :)

ITA: BarberaWare

Monday, September 3rd, 2007

Non posso non inoltrarvi questa bella notizia: è nato BarberaWare, SourceForge in bagna càuda

Ciao * ,

Mi permetto di inoltrare questa mail alle liste di tutti gli Users Groups che operano in Piemonte, perche’ e’ proprio agli amanti del software libero della regione pedemontana che rivolgo la mia attenzione.

Negli ultimi mesi i miei soci ed io abbiamo lavorato su una piattaforma di sviluppo collaborativo, raggiungibile presso l’URL http://barberaware.org , rivolta esplicitamente ai developers di freesoftware e con una spiccata passione per le tecnologie open. In breve, ci proponiamo come un modesto SourceForge a livello locale, ed offriamo a tutti coloro che li richiedano servizi per la gestione dei propri progetti rilasciati con licenza libera: spazio web, strumenti ditracking, gestione delle mailing lists, repository SVN e quant’altro.

Per quanto le attivita’ di promozione e diffusione della cultura del software libero siano importantissime, crediamo che il modo migliore di contribuire alla nobile causa della condivisione della conoscenza sia arricchire e perfezionare costantemente il patrimonio di codice e di informazione liberamente fruibili; proprio per questo miriamo a sostenere l’opera di coloro che attivamente, ogni giorno, dedicano il loro tempo e le loro energie nella creazione di applicazioni utili per tutti.
Uno spazio costruito non di parole e buone intenzioni, ma di risorse effettive e di strumenti concreti accessibili ed usabili da tutti.

Per questo, mentre il progetto muove i suoi primi passi, mi rivolgo in primo luogo a coloro che quotidianamente dimostrano passione ed entusiasmo nei confronti del tema del software libero, per raccogliere pareri, commenti, critiche e spunti per migliorare e perfezionare la piattaforma ed i servizi offerti.
Cosa ne pensate dell’idea? E dell’implementazione della stessa? Cosa vi piace di piu’? Cosa modifichereste?

Attendo feedback ;-)

Back from ESSAP 2007

Sunday, July 1st, 2007

Guys, the ESSAP was amazing, simply amazing!

Maybe not everybody knows it, so let me go into the details, with a brief introduction.

What is it?
ESSAP means European Summer School on Agile Programming. It’s a 5 days course, full time, full load, sponsored by the Insumbria University, that aims to introduce the student to every aspect/method of agile software development. Defining “agile” is still not easy for me (by the way, I’ve just completed the course) but I think that I could use a couple of words to give you an hint: communication (lots and sincere), organization (time, ideas, activities), testing (at large), creativity.

Why did you go there?
When I’ve read the announcing email from the xp-it mailing list, I didn’t know what would be of my time and deadlines for the end of June, so I marked it read and forgot it. Fortunately, near the deadline for application submission, two seats were still available, so I seized the opportunity: the best invested money (a few) and time so far!

Ok, but why did you go there?
Because, both at the Milano and Torino Java User Groups, agile techniques are used on a daily basis by some active members: this produces lots of words and discussions that I’ve just listened to and that communicated an enthusiasm I’ve seen for the first time at webbit 2003 (thanks Bruno!) (Amir: do you remember it?). I’ve needed to know more but time pressure, the lots of books needed to have an hint and my few customers took me away of it. ESSAP seemed to (and did) solve such issues.

First impact: students
Agile techniques (at least in Italy) live in a niche. Probably that’s because changing is undesirable by the majority but not for someone: indeed, someone likes to change and keep on changing everything, IF that means improving. It is necessary to have an open mind: open to changing, to news, to people. At ESSAP I’ve been fueled up! Twenty techs wanted some more change, some improvement. Students? Not just students! Managers, old (no offense) and young programmers, businessmen, consultants, everything. Everybody wanted to change.

Second impact: location
Judge for yourself. Not bad, uh?

Unity of measurment: the pomodoro
The pomodoro would require a book on its own, but since somebody has already written it, just know that we set it to 25 minutes work, 5 minutes pause. Each 3 pomodori, 1 pomodoro pause.

Day zero: Sunday in pizzeria
About half students (who live apart, me, for example) came to the hotel on Sunday. We then went to a pizzeria (how many pizzerie do these fratelli la bufala own?) and begin chatting (in English, of course). Lucky me to sit right between David and Rick. After half an hour of pleasantry, we talked about books, social life, software and expectations.

Day one: Intro & Executable Documents
Monday begins with Matteo Vaccari introducing XP and Agile, followed by 6 pomodori from David Hussman e Rick Mugridge about Executable Documents. At launch break, Matteo brought salad, salami, pizza and bread. Altogether having launch in the beautiful park sorrounding Villa Toeplitz. We began chatting and comparing our business domains: in particular I met people using C# and even the old Visual Basic (it’s amazing how many customers still need traditional desktop apps: I really think RIA will raise and spread).

Day two: XP Game & Mind Maps at large
The best day, imho: right after learning how to split customer requests into user stories, we practice it with the XP Game. Really good! Perfectly scheduled!.
The day kept on with Federico Gobbo and wikimaps.

Day three: TDD and JooB project
On Wednesday, Carlo Bottiglieri gave us, with 3 pomodori, an introduction to Test Driven Development, and with other 3 pomodori we saw how to apply TDD starting from user stories.
The afternoon was dedicated to the JooB project: Matteo and the guys from Varese XPUG wrote down a basic story (a web site for search and submission of job offers). We then split in three teams, one of our team played the customer, we created a couple of user stories, assigned priorities and difficulty level, shared them with the customer and got three iterations. So, right after the XP game, we use user stories on a real software project.

Day four: Creativity and DDD (and some Rails)
My personal “best talk” prize goes to Fabrizio Milo, that caught our attention with creativity examples and exercises, not just on software. Really good!
The afternoon was Antonio Terreno’s turn. Antonio spoke about Domain Driver Design and Behaviour Driven Development, disclosing what Carlo meant by naming its test classes and methods with the word “behaviour”.
At launch break, Matteo went deeper in the Rails explanation: his introduction (done on day three) suffered some technical issues and was not effective. With 2 extra pomodori, I’ve got the needed base knowledge to (almost) complete my JooB project iteration.

Day five (last day): Retrospectives
A retrospective is what you do at the end of something (could be the project, an iteration, a week, it depends on what the team chose) and it’s aimed to understanding what went well and didn’t, in order to take actions aimed to improve the next things (project, week, iteration…). The talk was hold by Luca Grulla, scrum master. At its end, we practiced retrospectives by analyzing our week at the ESSAP.
We then had a nice nature trail (astonishing view).

Xw: eXtreme week
ESSAP was my best investment so far, with reference both to time and money (for the record, it required 80 euros, and, no, I didn’t forget a zero). Quantity and quality of the things I learnt, the diversity of the people I met, the beautiful location and weather, the green park: I’ve never had a chance to see all these things together and, someway, so intense. It was a real eXtreme week.

Even the restaurants we went to were very good.

Now it’s time for ME to practice agile on a daily basis. I know there are some techniques I can’t apply (pairing when you are an alone developer, working from home, is not easy). By the way, it was suggested no to start with every single technique, but rather to try them one by one, adopting the dogmatism these methodologies require to the team and its habits.

Nonetheless, there are things I want now, because I can see the benefits in the short term.
The pomodoro, for instance, that I’ll set as the ESSAP one (25+5). But the most important technique is the user story: working alone with small companies, it’s quite easy for some useless wishes to overcome important tasks. I’ll begin writing them down on my own, discovering their business values with some timely questions but never mentioning the word “story”. If I’ll get the desired results, I’ll bring the technique to coworkers.

If all goes well, next year I’ll make my coworkers apply to the ESSAP.

Thanks
Many thanks to Matteo, Federico, to the staff (Andrea, Jacopo, Max, Mimmo, Piero), to the speakers and to every “classmate” for the wonderful week!

ITA: di ritorno dall’ESSAP 2007

Sunday, July 1st, 2007

Ragazzi, l’ESSAP è stato fantastico, semplicemente fantastico!

Ma magari non tutti sapete cosa sia, e allora vediamolo dall’inizio alla fine, con anche un po’ d’introduzione.

Cos’è?
ESSAP significa European Summer School on Agile Programming. E’ un corso di 5 giorni, full time, full load, sponsorizzato dall’Università dell’Insumbria, che introduce a tutti gli elementi necessari allo sviluppo agile. Definire “Agile” non è ancora semplice per me (d’altra parte il corso è appena finito) ma credo che, in poche parole, si possa definire come: comunicazione (tanta e sincera), organizzazione (di tempo, idee e attività), testing (ad ampio raggio), creatività.

E perchè ci sei andato?
Quando la prima email di annuncio dell’ESSAP passò nella lista xp-it, non sapevo quali sarebbero stati i miei programmi per la fine di giugno: così la ignorai. Fortuna volle che allo scadere del tempo massimo per le iscrizioni ci fossero ancora un paio di posti disponibili e colsi la palla al balzo: i soldi (pochissimi) e il tempo meglio investiti degli ultimi anni!

Sì, ma perché ci sei andato?
Perché nell’ambito dei JUG di Milano e Torino, le tecniche agili sono la quotidianità per molti: questo genera un sacco di parole che fino a pochi giorni fa mi sono limitato ad origliare, rimanendo impressionato dall’entusiasmo che mi comunicavano e che vidi per la prima volta al webbit 2003 (grazie Bruno!) (Amir: ti ricordi?). Dovevo saperne di più ma il tempo è tiranno, i libri sono tanti e i clienti pochi. L’ESSAP risolveva questi problemi.

Primo impatto: gli studenti
Le tecniche agili (almeno in Italia) sono ancora abbastanza di nicchia. Io me lo spiego pensando che cambiare è scomodo per molti, ma non per tutti: anzi a qualcuno cambiare piace, cerca di farlo in continuazione, purché ciò significhi migliorare. E’ quindi necessario avere la testa aperta: al cambiamento, alle novità, alla gente. All’ESSAP di gente così ho fatto il pieno! Una ventina di persone erano lì per imparare. Studenti? Non solo! Manager, vecchi (senza offesa) e nuovi programmatori, imprenditori, consulenti. C’era di tutto: tutti lì con un solo obiettivo.

Secondo impatto: la sede
Vi lascio giudicare da soli. Non male per essere “una roba da tecnici”, eh?

L’unità di misura: il pomodoro
Il pomodoro richiederebbe un libro a parte, ma visto che qualcuno l’ha già scritto, sappiate solo che l’abbiamo impostato in 25 minuti di lavoro e 5 minuti di pausa. Ogni 3 pomodori, 1 pomodoro di pausa.

Giorno zero: domenica in pizzeria
Circa metà degli studenti (quelli che venivano da lontano, me compreso) sono arrivati all’hotel (convenzionato con l’università) un giorno prima. Siamo quindi andati tutti insieme in pizzeria (ma quante pizzerie hanno questi fratelli la bufala?) e abbiamo cominciato a chiaccherare (in inglese naturalmente). Gran cosa essere capitato proprio in mezzo a David e Rick. Dopo una mezz’oretta di convenevoli e pizza, ci siamo messi a parlare di libri, di sociale, di software, di aspettative.

Primo giorno: Intro & Executable Documents
La giornata è cominciata con l’introduzione a XP di Matteo Vaccari ed è proseguita con 6 pomodori di David Hussman e Rick Mugridge sugli Executable Documents. A pranzo Matteo ha portato insalata, affettati, pizza e panini. Tutti insieme nel parco a mangiare. E abbiamo cominciato a conoscerci e confrontare i vari domini lavorativi: in particolare ho conosciuto diverse persone che programmano con c# e con il buon vecchio visual basic (caspita: c’è chi ha ancora ha bisogno di applicazioni desktop classiche: mi convinco sempre di più che le RIA abbiano un sacco di spazio per diffondersi).

Secondo giorno: XP Game & Mind Maps at large
Probabilmente il giorno migliore in assoluto: dopo aver passato il lunedì imparando a dividere le richieste del cliente in user stories, abbiamo messo in pratica il tutto con l’XP Game. E’ stato davvero ottimo prendere la teoria appena imparata e metterla in pratica con un gioco di gruppo. Fantastico! Uno scheduling perfetto.
La giornata è proseguita con Federico Gobbo e le wikimaps.

Terzo giorno: TDD and JooB project
Mercoledì è arrivato Carlo Bottiglieri che ha fornito, nei primi 3 pomodori, un’introduzione al Test Driven Development, mentre nei successivi 3 abbiamo visto come applicare il TDD partendo dalle user stories.
Il pomeriggio invece ci siamo buttati sul progetto JooB: Matteo e i ragazzi del Varese XPUG hanno organizzato una storia di base (un sito per la ricerca e l’inserimento di offerte di lavoro). Quindi ci siamo divisi in 3 team, uno del team ha fatto il cliente, abbiamo tirato fuori un po’ di user stories, abbiamo dato loro delle priorità e un livello di difficoltà, le abbiamo condivise con il cliente e abbiamo organizzato 3 iterazioni. Dopo l’XP game, abbiamo messo in pratica le user stories su un caso realistico, su un lavoro di software.

Quarto giorno: Creatività e DDD (e un po’ di rails)
Il mio personale premio per il miglior talk va a Fabrizio Milo, che ci ha tenuti occupati con esempi ed esercizi di creatività, nel software ma non solo. Davvero ottimo!
Nel pomeriggio invece sono comparsi Antonio Terreno e Luca Grulla. Antonio ha quindi parlato di Domain Driver Design e di Behaviour Driven Development, rivelandomi l’aspetto teorico dietro al quale stavano gli esempi del giorno prima di Carlo che in effetti usava il termine “behaviour” per dare un nome alle sue classi di test.
A pranzo invece Matteo ha parlato un po’ più nel tecnico di Rails: l’introduzione del giorno prima in effetti non era andata benissimo, a causa di alcuni problemi tecnici. Con i due pomodori extra (perché fuori programma) di giovedì invece, ho avuto gli elementi di base necessari per cominciare a sviluppare il progetto JooB.

Quinto e ultimo giorno: Retrospettive
La retrospettiva è un’attività che il team svolge alla fine di qualcosa (del progetto, di un’iterazione, dipende dal team) che serve a capire cosa è andato bene e cosa è andato male, al fine di prendere delle decisioni mirate a migliorare i passi successivi (il prossimo progetto, la prossima iterazione, eccetera). Di retrospettive ha parlato Luca Grulla, scrum master. Alla fine del suo talk abbiamo al solito applicato la teoria alla pratica e abbiamo fatto una retrospettiva della settimana di ESSAP giunta alla conclusione.
Il tutto è quindi terminato con una passeggiata su per le montagne.

Xw: eXtreme week
L’ESSAP è stato il miglior investimento che ho fatto negli ultimi tempi, sia in termini di tempo sia di denaro (per la cronaca sono 80 euro e, no, non ho dimenticato uno zero). La quantità di cose imparate e fatte, la qualità e la diversità della gente incontrata, le splendide giornate e il verde spettacolare: mai avevo visto tutte queste cose insieme e così, come dire, intense. In questo senso è stata davvero una settimana eXtrema.

Tra l’altro, ho anche mangiato benissimo (e tantissimo).

Ora si tratta di mettere in pratica. Già so di non poter fare tutto. Il pair programming per esempio viene difficile, lavorando da solo da casa. Inoltre, come da suggerimenti, è importante NON fare tutto e subito: trattandosi di metodologie, si tratta di introdurre un certo dogmatismo nel ciclo di sviluppo, anche se smussato e adeguato al mio ambiente di lavoro.

Certe cose però voglio farle proprio subito, perché ne intravedo i benefici a brevissimo termine.
Il pomodoro, innanzitutto, che comincerò ad impostare come all’ESSAP (25+5). Ma soprattutto le user stories: lavorando da soli e con le piccole aziende è facile che nascano dei “pruriti” che fan sembrare vitali cose di dubbio valore. Comincerò scrivendomele e valutandole da solo, scoprendo il business value con qualche opportuna domanda ma senza parlare di “storie”. Se ne ricaverò dei buoni risultati, porterò il tutto nell’azienda del cliente.

Se va come credo, il prossimo anno all’ESSAP ci mando i colleghi.

Grazie
Grazie a Matteo, a Federico, allo staff (Andrea, Jacopo, Max, Mimmo, Piero), agli speaker e a tutti i miei “compagni di scuola” per la meravigliosa settimana!

Going to ESSAP

Sunday, June 24th, 2007

I’m leaving home for ESSAP 2007, the European Summer School on Agile Programming.

Agile programming seems to be a good method to empower and speed up my carrier as a freelance, making me develop better software and have happier customers.

The schedule is really interesting, isn’t it?

Safari on Linux: got it!

Tuesday, June 19th, 2007

Yep Safari on Linux is here: there is still some work to do, tough.

  • seems like the Apple website is the only website fully working. Every other website is missing the text contents
  • the mouse cursor disappears when moving over the viewport (where the web page is rendered)
  • it is SLOW!

Anyway it is working and, with reference to my previous posts, it is getting better and better.

Safari on Linux

Here is what you need to do

  1. Ensure you got the latest wine installed: 0.9.39
  2. Download Safari from the Apple website
  3. run “wine SafariSetup”
  4. Download winetricks
  5. CD to the folder where Safari got installed (should be similar to ~/.wine/drive_c/Programmi/Safari/)
  6. Run “sh winetricks vcrun2005″
  7. Run Safari with “wine Safari”

Enjoy!

UPDATE: Latest Safari version (3.522.15.5) does not work… gosh!….
UPDATE: Here we go

Agile Ajax on Cooee

Sunday, June 17th, 2007

Open source forks are not always a good thing. Sometimes an already small community gets split so far that the projects die of neglect. Of course Echo2 has been so moribund for the last few months that I think this particular fork is a good thing. The folks from NextApp seem to have gotten a kick in the pants as a result of this development. I’ve never seen them this engaged in the forum.

Let the competition begin.

[source]

IFS 2007-06: Cooee (was: Echo2)

Friday, June 15th, 2007

While Echo2 maintainer has never accepted them, on June all my patches for Echo2Extras went into Cooee, the Karora project fork of Echo2 and its related projects. Made two apps with it: real fun and great results!