Tuesday, April 25, 2006
A few days home...
I started by running a little - I came closer to the top of the mountain, but I was in time-boxing mode :-) and decided to postpone gratification :-)) and turn back at 12:30. It's fine, anyway: next time, I'll get on the top.
Running is nice because very little conscious attention is needed, and the mind can wander everywhere, hopefully far away from everyday concerns :-). Sometimes, however, while running I get some interesting ideas, and this time it was about Gantt charts. Gantt charts are very popular and handy to document a plan; however, most experienced people tend to confirm my idea that those charts are not a good planning tool. They do not engage you in the kind of thinking that makes you plan better, and cannot even express some common real-world scenarios (incremental dependencies, open choices, uncertainty, etc). I've got some ideas on how to improve them, but the first step should probably be a SWOT analysis of Gantt charts. SWOT is usually considered a business tool, but I've seen it applied to technological issues a couple of times (can't remember where though) and it can be a useful mind tool.
Finally, I managed to complete version 1.0 of the probabilistic estimation tool I've been talking for so long. I just need to write down a first sketchy user manual (1 page or so :-), and it will be ready for a few beta testers (besides those few loyal customers that already tried out the underlying models using ugly prototypes; by the way: thank you guys :-). After a short period, I'll make the tool freely available to everyone, and sooner or later I'll write a short paper on why this tool is useful, and how it works internally.
While working on this tool, I had to work around a nice share of bugs in the .NET framework. Probably the worst has to do with using the SOAP formatter to serialize a class with events declared, but I'll need more time to present it thoroughly. Visual Studio gave me a very unpleasant experience when I first moved from debug to release, by silently erasing a whole lot of code that was using user-defined visual components. I had seen this happening before to other people, but somehow thought I was immune :-))). Well, it seems like I'm not :-).
I've been able to keep the code of this tool short and simple, first by trying to avoid hard work / boring work, and then by allowing me the luxury of waiting for good ideas :-). Sometimes, the best way to get a good idea is to take a walk; it's so bad (and somewhat stupid) that in most working environments, getting out for a walk is not considered a valuable problem-solving technique (at least, not during working hours :-).
Thursday, April 20, 2006
Information Appliances and a few quotes
So, here are a few useful quotes for the brave guys out there:
- The most profound technologies are those that disappear. They weave themselves into the fabric of everyday life until they are indistinguishable from it. (Mark Weiser)
- What do you get when you combine a computer and [name any useful object: a car, alarm clock, camera, etc]? A computer. (Alan Cooper)
- I have always wished that my computer would be as easy to use as my telephone. My wish has come true. I no longer know how to use my telephone. (Bjarne Stroustrup)
Is there anything you can do to make your technology disappear (while still being useful)? :-)
Wednesday, April 19, 2006
First application of semantic tags on my website
I didn't use semantic tags before October 21, 2005. However, I'll slowly go back and retrofit some tags in existing posts. Having some real use for them will help :-). Besides, this is just the first step, the next being a better search page for the blog, where you can search (or filter) on semantic tags as well.
Ricerca Programmatori C++

Un mio cliente sta cercando alcuni bravi programmatori C++. Il dominio e' interessante e l'azienda pure (in fondo, e' abbastanza sveglia da voler essere un mio cliente :-). La posizione offerta sara' quasi certamente a tempo indeterminato (quindi, sorry, niente consulenti, body rental et similia). Qualche caratteristica fondamentale dei candidati:
- buona conoscenza del C++ [e nel caso, voglia di migliorarla ancora; se invece la voglia non l'avete :-)) dovete essere molto, molto, molto bravi :-)]. Un po' di Java non fara' male.
- buona conoscenza della programmazione ad oggetti e meglio ancora del design ad oggetti e di UML [vedi sopra per la questione voglia].
- assenza di fondamentalismi vari, metodologici, di linguaggio, ecc ecc.
- buone caratteristiche di team playing e comunicazione. Il pur bravissimo nerd, desideroso di lavorare da solo, chiuso in una stanza, non fa probabilmente al caso nostro.
- al 99%, disponibilita' a trasferirsi, visto che non sara' dietro casa (ma e' in un bel posto :-). Purtroppo, niente possibilita' di telelavoro o simili.
- una buona conoscenza di tutto cio' che rientra sotto l'argomento "software engineering" sarebbe sicuramente un buon plus, cosi' come una buona formazione tecnico/scientifica.
- ci sono sicuramente posizioni per neolaureati ma anche per persone con N anni di esperienza.
In cambio c'e' un buon ambiente di lavoro, uno stipendio buono + incentivi vari, un dominio tecnicamente interessante, significativi investimenti sulla formazione, ecc.
Se la cosa vi interessa ed avete i requisiti di cui sopra, mandatemi un CV a jobs@eptacom.net (meglio PDF, ma sentitevi liberi di usare formati strani che non si aprono se non scaricando tool introvabili, rigorosamente da compilare usando altri tool introvabili, e/o documenti con potenziali virus a seguito, in fondo fa sempre parte del CV :-))).
NB: non faccio da agenzia di collocamento, probabilmente faro' uno screening dei CV e poi li passero' direttamente al cliente, che pensera' a contattare i candidati che riterra' interessanti. Quindi, al solito, niente impegni e niente promesse... ricordatevi invece il classico consenso al trattamento dei dati personali...).
Tuesday, April 18, 2006
Language lock-in, language culture, development strategy
In fact, in many cases the issue has moved from vendor lock-in to language lock-in. Learning a language, its libraries, its idioms, and so on requires some effort (assuming you truly want to learn the language: contrast this with using (e.g.) C# but thinking (e.g.) in VB3). People have a natural tendency to avoid large efforts (and rightly so :-). Therefore, in many cases they won't switch language, unless truly compelled. It makes then perfect sense to pick "the right language", and here start the troubles :-)). Language wars abound, and I'm not going to add more fuel (well, not today :-). Instead, I'll add yet another factor to consider when picking a language: the alignment between your development strategy and the language culture.
A recurring theme in my consulting activity of the past few weeks has been the use of metrics to control some quality attributes. This is particularly important in large, distributed, partially outsourced projects, but even smaller endeavors can benefit from a few measurements (more on this another time). Of course, the first step is the selection of meaningful metrics; the second step is getting some tool to calculate those metrics. Here some facets of language culture are brought to light. For some languages, you can easily find powerful tools (commercial or open source) to calculate basically anything you may want. For others, there's basically no way to find anything decent. Does it matter? It just depends on your development strategy!
By the way: does anybody know where I could find a (commercial or free) program to calculate (at least :-) the cyclomatic complexity of a PHP function? I'm not kidding, I could actually use it...
Sunday, April 16, 2006
Easter in Rome
Anyway, today was bright and sunny in Rome, and after a light lunch I tried a pair of roller blades with my girl. Although I'm not a master of equilibrium :-), somehow I managed not to fall :-). After that, we had a short walk along a small lake, then we headed for the centre, bought a couple of books, then got an ice cream in one of the best places in Rome. Didn't turn the computer on all day, and guess what, it's already time to turn it off :-)).
Saturday, April 08, 2006
First run of the season
I choose a short (about 10Km) but challenging road, very steep for the first 4km, and yap, I can confirm I'm not really in my best shape :-)). Once on top, I met an old guy (in a very remarkable shape :-) who taught me a few new roads, so we had a short walk together while talking. The short walk ended up to be about 4km, and I had to get back, so overall my 10Km plan ended up as 18Km at a slower pace. I'll spare you the obvious similarity with software project schedules :-). I burnt about 1350 kcal, which isn't that bad.
A few things the old guy said reminded me a discussion of static and dynamics in Lila, from Robert Pirsig, probably better known for his masterpiece Zen and the art of motorcycle maintenance. Must have been all that oxygen flowing through :-)). Anyway, one of the roads I learnt today tops at over 750m; I'll try that once I'm in a better shape...
Thursday, April 06, 2006
Visual Display of Quantitative Information
- The Visual Display of Quantitative Information
- Visual Explanations: Images and Quantities, Evidence and Narrative
- Envisioning Information
So far, I've only read his first book; guess I'll go ahead and buy the other two next week.





