Juan: “Da grande vado in Colombia a prendere un bambino… no, due. “Più tardi, nel bosco a cercare castagne (ricerca molto impegnativa perchè non ce n’erano), Mariana si interrompe dalle corse e ci dice: “Siamo quattro una famiglia!”
I thought that by nowadays two main consensuses had been established towards requirements. The XP-ish “waste-of-time” school of thought that pretends this stuff belongs to NASA and similarly priced development and clearly are NAH (Not Applicable Here). And the “we-need-them-right” school of thought that believes in properly written and managed requirement documents.Of course, I am biased, I belong to the second school since I don’t buy the XP gibberish and I am a firmly believer that a sound methodology may not be The Solution to all software development troubles, but it is surely part of it.
So I am a bit surprised when I received a 35 pages requirements document that’s actual crap. Joel Spolsky wrote a sort of basic requirements for requirements in four parts. Well below is my list. I don’t want to compete with Joel (really, do read his post, even parts 1 and 2 and 3, it’s worth), but mine is shorter and should fit even in a tight schedule should you be requested to write specifications.
Think of it as a baseline rules of thumb:
- start by describing the system to which the specification refers. What it does, which kind of existing systems do more or less the same.
- don’t go ahead. These are specification, not software design. Leave out the “how”s.
- define every acronym you are using. Not everyone knows even the most basic acronym, left out the more exotic ones (I’m still wondering what “TBP” does mean). Also define terms that are meaningful only for those who already knows what you are talking about.
- list requirements in a way you can refer to them. Number them, or better use textual tags so that you can refer them in the same document or in the documentation that is following.
- Don’t use the following words: “some”, “etc.”, “good”, “bad”, “fine” and the ellipses. The idea is that you have to be precise and define the entire system without leaving open holes.
- use a spell checker. It’s easy, every modern Word Processor has it, just switch it on and fix the words underlined with the red snake (you should really do this for everything, not just the requirement document).
- re-read everything. People is going to read and work on that document, just re-read and fix, iterate until you don’t fix anything.
As trivial as they seems, all these rules were broken at least once in the document I was handed.
Sono due settimane che Juan non abbandona un attimo una mucca di peluche. La porta sempre con sè e l’accudisce come fosse un principe: alla mattina le prepara la colazione, si assicura che non abbia freddo, a pranzo la mette sulla sedia vicino e la fa mangiare, la porta in giro quando usciamo, la sera dorme con lui, la fa giocare con le macchinine… l’ha persino fatta giocare all’XBox. Questa sera… ha gonfiato appena appena qualche palloncino dicendo che erano uova… della sua mucca. A nulla sono valse le nostre obiezioni che le mucche NON fanno le uova: lui vuole che la sua mucca faccia le uova… Cosa c’è dentro le uova di mucca? Ma naturalmente, ha risposto Juan, i piccoli di mucca.
Giusto per smentire le nostre superstizioni (non è che perchè non abbiamo mai visto una mucca che fa le uova allora non esistono mucche che depongono le uova… no?) questa sera la mucca ha covato sul suo letto. E mi raccomando tutti sottovoce, piano, che la mucca e i piccoli stanno dormendo.
|Ecco due uova di mucca|
|La mucca che dorme covando la sua prole e Juan che controlla che nessuno dia fastidio|
|Questo è Winnie the Pooh(tm)|
|Juan ha spedito un bacio alla mamma che faceva la foto.|
Anche quest’anno per il nostro anniversario di matrimonio siamo andati all’Alpe di Siusi, ma stavolta in 4! O forse, vista la presenza costante di una mucca, sarebbe meglio dire in 5. Invero Juan e Mariana sono stati proprio bravi, sia in albergo sia sui sentieri. Cioè hanno capito subito che in questa famiglia camminare… fa bene e si sono adeguati. Già il primo giorno li abbiamo portati fino al rifugio Molignon e ci hanno stupito… certo per tutta la passeggiata hanno cercato e guardato mucche, fiori e cavalli. Anzi al ritorno si sono fatti un bel pezzo di corsa!
E anche il secondo giorno, malgrado le condizioni meteorologiche non propriamente ideali, hanno camminato ancora e siamo arrivati fino al rifugio Arnika.
|Ecco i nostri 2+1 figli. La mucca è sempre stata con noi.|
|Cioè, voglio dire, ma un posto così… non lo potevano fare più vicino a Castellanza?|
|“Sempre camminato” … o quasi|
|“Papà, Mamà, JuanDavì e giò”|
Due foto, stessa località, a distanza di un anno…
|L’anno scorso, intorno al 21 settembre.|
Fa effetto, no?
Having a bit of spare time at work, I decided it was time to upgrade my Linux box to the latest version of my favorite distro: Fedora Core 9. KDE4 in FC9 holds a very slick and professional look whereas KDE3 on FC8 looked quite hobbyist.Rather than going the old proved way, I decided to try the yum upgrade method. By using yum upgrade, you don’t need to download an iso image, burn it and boot from the DVD. Instead you just let yum downloading all the new packages while you can continue working… at least for a while.
Everything starts by yum’installing the preupgrade package:
yum install preupgrade
This is an handy GUI tool that helps you throughout the upgrading process. Just go through the wizard and let it download what it needs. Well apparently not everyone had such a smooth experience, if something fails you may want to look up how to do it manually.
Preupgrade ends its activity by changing the /boot/grub/menu.lst so that next boot will load the anaconda system configuration tool to perform the latest setups.
In my case it didn’t fully worked – I had to change manually the default property setting it to point to the preupgrade boot entry.
The next step has to be performed at the computer console, since it requires a reboot. You will go through the usual anaconda Linux setup, again follows the wizard path and pray your favorite divinity.
At the end of the configuration another wealth of bytes are downloaded from internet for quite a long time. During the download I got an error (likely I didn’t pray enough my favorite divinity) – the system was unable to found the kernel package. Luckily enough the system had the network configured and I could log in another console. At this point I looked for the specified file (kernel-2.6.25-14.fc9.i686.rpm) and downloaded it via wget.
To find where to put the rpm file, I just issued a system-wide:
find / -name "*.rpm"
And I put the kernel where most rpm files were. Then I got back to the GUI and hit the “Retry” button. Anaconda looked satisfied and continued to download stuff.
After downloading the universe and a couple of parallel ones, anaconda told me that it was configuring and it could take a couple of minutes. Likely because of the mass of the download some time warp occurred and anaconda kept crunching for a couple of hours of my biological time. Eventually it asked for rebooting the machine.
At the next reboot I got a black screen with a laconic grub prompt. Apparently all this procedure has something against the grub loader. Well, if it happens, it is not hard to get out – just use the tab key for completion of both commands and files. You have to set the kernel file, the root and eventually boot the system.
kernel vmlinuz-184.108.40.206.fc9.i686<br>root initrd-220.127.116.11.fc9.i686.img<br>boot
At this point you should be greeted with the standard FC9 boot sequence that ends in the login manager.
Everything’s fine? Well not quite. I switched to FC9 mainly for KDE4, so I was quite disappointed to find myself in gnome desktop environment.
After yum’installing the switchdesktop utility and run it, nothing happened. I had to manually create the file
with the single line:
Then, as root, I did:
telinit 3 ; telinit 5
Et voilà, the new system was, not only up and running, but tailored to my taste.
Facciamo più quello che è giusto, invece di quello che ci conviene. Educhiamo i figli ad essere onesti, non furbi.
The next step in the google march towards world domination appears to be Chrome. It is not that odd that google aims for the web browser market, after all they are providing web services and a tight integration with the client counterpart could just benefit their business. What is odd is that they try to enter the crowded market with a brand new product.The most used web browser by far, at least according to the statistics is Internet Explorer that has the power of defaultness – i.e. it is the default browser on every Windows machine. Then, at a distance, Firefox is the next widely used with 16% share. Next is Safari at 3% and all the rest at 1% and below. For Chrome success two factors are strongly needed – google needs to show marketing muscle and Chrome needs to be clearly a superior product.
And this appears to be perfect clear to google, just have a look at Chrome presentation.
Chrome is impressive for a number of things, the main reason is that it has been built from scratch. The Internet today is a very different place from what is used to be 10 years ago and architectures tailored for a simpler world may no longer suit today’s needs.
Computers as well have gone far on the roads of memory and computing power. What held as mandatory 10 years ago, may be ignored today. Take for example the “Threads are faster than processes” assumption, though still valid in principle, could be pointless on today’s hardware for most applications. Processes are safer, we know that from the dawn of computer science, because different operations are insulated from each other.
Chrome will be open source. I think this is more a need than a free decision. Today Google handles a lot of sensitive information – they have your mail, they have your documents, your photos, they know which sites you have visited and so on. In change you have free services and their word they are not going to do any evil with all that knowledge about you.
A closed browser from Google would rise such privacy concerns that could seriously prevent its acceptance.