www.maxpagani.org
Home
CV
Blog
Photos
book reviews
downloads
work
links
F.A.Q.

interests
 travels
 trekking
 videogames
  programming
  playing
 miniatures
 fitness
 programming
  C, C++
  Java
  Shell
  misc.

guestbook

mail
max's speaking blog archive

Rss Feed: rss feed

La montanara OE'! Si sente cantare...

2010-Jul-10 Saturday 22:51 CEST

Troppo lontani dalle vacanze di Pasqua e ancora troppo presto per le vacanze estive... che si fa? Qui urge una soluzione! Detto, fatto: un week end lungo (o una settimana breve a seconda che il bicchiere lo consideri mezzo pieno o mezzo vuoto) in un posto a noi congeniale - le Dolomiti.
Cerca che ti cerca ci siamo detti: "ma perchè non andiamo in Val Pusteria che è tanto tempo che ci vogliamo andare?". Già, perchè no?

Ecco il dinamico duo in una statuaria posa davanti al lago di Braies.
All'acuto osservatore (quali sono i lettori del nostro blog) non sarà sfuggito che il dinamico duo è a piedi nudi. E la risposta alla domanda che immediatamente ne consegue è "si, hanno messo i piedi nell'acqua del lago di Braies" la cui temperatura è di poco superiore al punto di congelamento (e si sono pure divertiti, tanto che li abbiamo convinti ad uscire con difficoltà).
Vi state divertento? YEAH! Siete pronti? YEAH! Siete forti? YEAH!! Un po' di auto-incoraggiamento aiuta sempre a superare le salite più dure.
Le tre cime di Lavaredo. Ecco i due intrepidi colombiani sulle Dolomiti al rifugio Locatelli a circa metà del giro delle tre cime.
Un altro laghetto alpino. Si, quella dietro è neve. No, questa volta i piedi se li sono tenuti asciutti nelle scarpe.
Se dico "Pino Mugo" cosa viene in mente? Grappa!!
E dopo le tre cime è la volta di Prato Piazza. Un alpeggio stupendo e magico.

Ma è chiaro che se non arriviamo in alta quota non siamo contenti. Tali i genitori, tali i figli.
Ultimo giorno. Ma non è un particolare che ci ferma: escursione alla Malga Nemes partendo dal passo di Montecroce.


Ora, sono sicuro che esiste un inferno speciale per i genitori che pretendono troppo dai loro figli. E forse, come potrebbe pensare qualcuno, ce lo meritiamo. Ma vedendo il loro interesse, la loro voglia di vedere, provare e esplorare, la loro energia pressochè inesauribile, se così fosse... ne sarà valsa la pena.

Giugno, hophophop, dindindin

2010-Jun-20 Sunday 22:38 CEST

Da due anni a questa parte giugno è particolarmente caldo. E non mi riferisco alle condizioni metereologiche (che poi quest'anno smentisce decisamemte), ma a tutta quella girandola di feste e ricorrenze - al 2 c'è il compleanno di Juan, al 6 l'anniversario del nostro incontro (o compleanno di famiglia come lo chiamiamo noi), poi ci sono le feste di fine asilo o scuola, il saggio e quest'anno, new entry, il Palio di Castellanza.
Ecco l'inizio del compleanno di Juan, un attimo prima di aprire i regali.
Al pomeriggio festa con i cuginetti con tanto di spettacolo improvvisato.
Ed eccoci al giorno del nostro compleanno. Foto di gruppo con sole negli occhi.
Peace and love, bro'
Il giorno del Palio di Castellanza. Questi sono dei figuranti del CERS (? ? Rievocazioni Storiche) (ebbene no, non siamo noi in uno dei nostri più riusciti travestimenti). A causa della presenza di tanti altri bambini non possiamo mettere altre foto.
Il saggio di ginnastica ritmica. Prima dell'esibizione, Mariana era nervosissima, preoccupata e ansiosa, ma nello spettacolo ce l'ha messa tutta ed è stata bravissima.
Naturalmente quel giorno faceva caldissimo e il body in velluto la... fastidiava (questo spiega come mai ha le maniche annodate al collo).
Festa del grazie all'asilo, con lancio dei palloncini. Mentre eravamo distratti dai puntini di colore che rimpicciolivano nel cielo, gli altri si avventavano su patatine e pizzette lasciandoci a becco asciutto... amen, ci siamo rifatti con la torta.
Non siamo tornati alla casa delle farfalle di Cervia, ma in una gita al Ticino abbiamo trovato questa che si è voluta far fotografare.

Assemblea soci CIAI 2010 (Cervia)

2010-Jun-07 Monday 23:34 CEST

Ormai anche Mariana si é rassegnata e non ci chiede piú quanto manca. E Juan, quieto, ha smesso di dare fastidio alla sorella.
Sai che sei nel mezzo di un'impresa che sfiora l'epico anche se, probabilmente, nessun futuro poeta o menestrello canterà le tue gesta.
Ti trovi in macchina al buio, la pioggia che allaga il parabrezza malgrado gli affannosi sforzi dei tergicristalli, in un posto sconosciuto alla ricerca del tetto dove dormire.
Le indicazioni di google sono ormai inservibili dopo che sulla tua via sono comparse rotonde e incroci ignorati dal gioiello tecnologico di navigazione del famoso motore di ricerca.
L'unica speranza per risparmiarti ore e ore di giri a vuoto é il tuo senso di orientamento del quale stai iniziando a dubitare, finché tanto inaspettato quanto gradito, dalle tenebre emerge un cartello che, attraverso l'acqua scrosciante, indica la tua meta. Giri deciso e ti ritrovi su una stradina sterrata che attraversa i campi o, considerando acqua e buio, quelli che potrebbero essere campi).
E finalmente l'ombra di un casolare. La proprietaria premurosa ci apre il cancello e noi capiamo di essere arrivati.

Il Jazz Country Club é, prima di essere il nostro Bed & Breakfast, un casolare di campagna circondato da alberi. Troviamo riparo sotto un ampio e lungo portico. Attraverso le ampie finestre vediamo un grande camino acceso abbracciato da innumerevoli libri. Entriamo in un accogliente collage di cimeli vintage, giocattoli di qualche tempo fa e locandine di film degli anni '70. Al secondo piano la proprietaria ci ha preparato due stanze: cosí staremo piú comodi perché siamo gli unici ospiti del JCC.

Notte di pioggia
Ci prepariamo per andare a letto. Nella nostra camera c'é un letto sicuramente comodo da rifare, ma che richiede una certa agilitá per poterci salire sopra. Il materasso é a non meno di 80cm dal pavimento.
Peró é comodo e ci addormentiamo rilassati dal rumore della pioggia che batte incessantemente aritmica sulle tegole. E ci sentiamo allo stesso modo che si sentirono i primi uomini quando trovarono una grotta asciutta e dove dormire e stare al sicuro.
E di tanto in tanto nella notte, tra il dormiveglia sentiamo il rassicurante suono della pioggia sul tetto.

La colazione
La signora Gabriella ci aspetta in cucina dietro ad una tavola imbandita. Ci ha anche preparato una torta margherita ed un rotolo con la marmellata, di cui ci promette la ricetta. Uno spettacolo. Ma Juan e Mariana sono attratti dal cane e dai numerosi gatti. Ognuno con la sua personalissima storia che ci viene raccontata con trasporto e tenerezza da Gabriella. C'é Oswald, il gatto che sopravvive, malgrado tutti volessero farlo fuori, Brutus, il gatto in perenne lotta con il mondo (ma, soprattutto con i gatti del vicinato), Bianca l'enorme cagnolona tranquilla e rilassata con il solo terrore dei temporali...
Finché arriva anche il momento di risalire in macchina, sotto ad un cielo grigio e minaccioso e partire alla volta del...

Hotel Dante
Non che sia facilissimo trovarlo, dopotutto se non facciamo un girettino per il centro di Cervia non siamo contenti. E anche quando ben l'abbiamo trovato non é che sia cosí immediato parcheggiare la macchina visto che la zona é tutta una riga blu di parcheggi a pagamento.
Comunque l'hotel Dante - Centro Congressi é esattamente come ce lo ricordavamo: grande e brutto.
Anche dentro é come ce lo ricordavamo e anche l'impatto é simile: un senso di soggezione e di trovarsi nel posto sbagliato... troppo lusso, troppo vip... noi siamo in jeans e scarpe da ginnastica.
Per fortuna, girato l'angolo siamo investiti dalla calda confusione dei soci CIAI: bambini e ragazzi di tutti i colori e tanti "grandi" alla mano come noi.
Salutiamo le nostre vecchie conoscenze (vecchie non in senso anagrafico) e accompagniamo Juan e Mariana nel salone dove un disperato manipolo di animatori tenta, senza troppo successo di non perdere la voce organizzando i giochi per i bambini.
I nostri figli non sono particolarmente entusiasti alla proposta, ma probabilmente l'idea di passare un tempo interminabile alla riunione barbosa dei grandi li convince a rimanere.

La conferenza della presidente sembra giá avviata, ma in realtà la sig.a Rossi Dragone si stá ancora scaldando. Quando entra nel vivo la sua voce non lascia scampo, agisce direttamente. Come avevo giá avuto modo di scrivere, in altri tempi, voci come la sua avrebbero mosso eserciti, spinto miti contadini a immolarsi per la difesa della patria. Un piglio deciso come il suo avrebbe spinto semplici marinai a sfidare onde alte quanto una casa o i terribili tentacoli del Kraken.
Insomma quando ci dice che nessuno uscirá da questa stanza senza aver comprato un libro, la mia mano corre al portafoglio senza che riesca a fermare il gesto.
L'autocontrollo entra piú facilmente per impedirmi di sottoscrivere un sostegno a distanza. La causa é nobile, non costa piú di un caffé al giorno, ma si sta comunque parlando di 300 euro l'anno. Niente a confronto del bene che si puó fare, ma una voce non trascurabile del bilancio familiare. Meglio rifletterci sopra e fare una scelta ragionata.
La situazione nei paesi dove opera il CIAI non sembra molto diversa dall'anno scorso - buone le collaborazioni con Etiopia e Burkina Faso, in Colombia solo un numero elevato di adozioni, mentre problemi nel sud est asiatico. In Vietnam ci sono serissimi problemi di corruzione e il governo sembra essersi messo di mezzo bloccando le adozioni del Ciai. Cambogia e Thailandia sono altrettanto problematiche per un verso o per l'altro. La Cina invece sembra essere piú rigorosa e collaborativa.

Sono un po' perplesso sulla mancanza di progetti di collaborazione in Colombia. Per il trattato dell'Aja infatti gli enti che operano facendo adozione in un paese si devono operare attivamente con progetti che abbiano come fine ultimo quello di ridurre il numero di minori in stato di abbandono in quel paese. La Colombia é il paese con cui il Ciai realizza il maggior numero di adozioni (nell'anno scorso piú della somma di tutti gli altri). Ma é anche l'unico paese (Cina a parte) in cui non é in corso alcun progetto di collaborazione.
La risposta alla mia domanda é un po' fumosa: si c'era un progetto, ma il bienestar familiar non l'ha gradito, adesso assistiamo un bambino (?!)

I bambini comunque non rimangono con gli altri a lungo e Ale interviene lasciandomi da solo a sentire la parte su bilancio e contabilità. Non che ci capisca molto... ma spunta sempre qualcosa di interessante. Tra le informazioni più interessanti ci sono sicuramente quelle sulla crisi. Le fasce piú colpite coincidono con le persone che piú sottoscrivono sostegni a distanza. Quest'anno, seppur con qualche difficoltá hanno retto. Ma si avvicina la fine della cassa integrazione e l'inizio della mobilitá. Il fatto che non riescano a continuare il SAD mi sembra il male minore rispetto al dramma che queste persone e famiglie si troveranno ad affrontare.
Il bilancio é tutto sommato buono e anche la revisione ha dato esito positivo.

Arriva il momento della pausa pranzo. Il tempo é sempre inclemente: pioviggina e fa freddo. Andiamo alla ricerca di un posto dove mangiare una piadina e dopo qualche minuto di disperazione e fame lo troviamo. Mariana, dimostrando di essere veramente americana, prende un hot dog, mentre noi altri europei e suo fratello prendiamo una piadina. Anzi una piadina con lo scquacquerone (potrebbe anche scriversi così) il formaggio tipico del posto.
Tutto molto buono, ma la temperatura é bassina e rimaniamo per tutto il pomeriggio con una sete fossile.
Il mare d'inverno è un concetto che la mente non considera cantava più di qualche anno fa la Bertè. Magari non è così, ma il grigio e l'umido, la pioggia e il vento, in riva al mare hanno una malinconia e una contraddizione tutta propria. Torniamo verso l'hotel del Sommo Vate (Vate, non Water).

Conferenza il lavoro minorile, le difficili sfide.
Il pomeriggio del primo giorno inizia con una sorta di tavola rotonda sul lavoro minorile. Lo spunto è dato dalla necessità via via più pressante per il CIAI di avere una posizione ufficiale su questa problematica.
Sicuramente il primo pensiero, quando si parla di lavoro minorile, corre ai bambini Afghani che cuciono palloni da calcio, o ai bambini che lavorano in miniera in cunicoli così stretti che solo loro riescono a passarci, sguardi seri, occhi grandi. Disperazione e dolore.
Così la prima, naturale reazione è di categorizzare il lavoro minorile come un torto, una stortura qualcosa che al pari delle altre degradazioni dell'uomo dovrebbe essere eliminato dalla faccia della terra.
Ma, come tutti i ragionamenti in bianco e nero, è riduttivo. Infatti basta pensarci più di un attimo e ci si accorge che anche il ragazzino che abbiamo visto al bar questa mattina aiutare i suoi genitori nell'attività di famiglia rientra nella categoria “lavoro minorile”. Ma pensandoci ancora, ieri sera in televisione, una buona percentuale di spot pubblicitari aveva dei bambini come protagonisti, per non parlare dei film.
Però passando ancora per la zona grigia ci sono casi in cui è difficile dire “giusto” o “sbagliato” - per esempio casi dove il lavoro del minore può portare un miglioramento delle condizioni economiche della famiglia e quindi diventare un fattore di protezione della famiglia stessa.
E non dimentichiamoci anche che l'Italia è una repubblica fondata sul lavoro. Se il lavoro ha un insieme di valori e di caratteristiche formative, tanto da fondarci sopra la nostra Repubblica, allora probabilmente non è così sbagliato che ci siano degli ambiti dove anche bambini e ragazzi possano lavorare in una maniera declinata alle proprie capacità e nel pieno rispetto dei loro diritti.
La posizione del CIAI tiene conto di tutti questi aspetti, e questo mi fa piacere perchè è l'ennesima riprova che il “nostro” ente ha un procedere pragmatico e analitico, dove al centro rimane sempre e comunque l'interesse del bambino senza inutili preconcetti o demagogie. Senza contare che nel nostro mondo complesso e intricato, l'ultima cosa di cui abbiamo bisogno è di persone che pensano in bianco e nero sostenendo crociate a destra e a manca.
La posizione ufficiale è contenuta in questo documento: http://www.ciai.it/images/stories/Lavoro_minorile_la_posizione_CIAI.pdf e sostanzialmente dice che ci sono delle situazioni di sfruttamento e pericolo e pertanto illegali che il CIAI rifiuta perentoriamente. Ci sono invece delle situazioni dove il lavoro minorile può essere accettabile o anche utile, purchè vengano prima i diritti dei bambini e dei ragazzi.
La discussione che segue alla presentazione del documento è accesa e partecipata a riprova del fatto che l'argomento tocca corde profonde vicine alle differenti sensibilità.

Non appena si conclude la tavola rotonda e viene annunciato il nuovo argomento la sala si svuota e con una certa apotropaica sollecitudine... e probabilmente non a caso visto che ora si parla di lasciti.
Ne approfitto anch'io per tornare nella hall. Malgrado le dimensioni l'ambiente è molto rumoroso, è difficile rilassarsi o anche solo riuscire a fare quattro chiacchiere. Tra le cause sicuramente è il tempo inclemente all'esterno che obbliga i bambini a rimanere all'interno con conseguente scatenamento (scatenazione?) degli stessi. Malgrado tutto Juan è riuscito, con altri bambini, a fare i compiti. Probabilmente anche grazie alla pazienza (al limite della santità) del papà di N. e V. che li ha seguiti in questa non indifferente fatica. Per fortuna la conferenza lasciti è finita e l'agenda prevede adesso un filmato:

Filmato del burkina faso – il paese degli uomini liberi.
È l'Africa e più precisamente il Burkina Faso ad essere protagonista di questo appuntamento in sala conferenze. Viene proiettato un video-documentario sui progetti di cooperazione del CIAI in questo paese.
Sullo schermo scorrono le immagini dell'Africa, di gioia, di povertà, di voglia di fare e di riscatto. Fa un certo effetto vedere le riprese della Jeep con il logo CIAI sulla fiancata, ma rincuora sentire le attività in cui il nostro è impegnato. Il filmato è sicuramente ben fatto e avvincente e ci fa immergere nella calda Africa, facendoci dimenticare almeno per un attimo che fuori piove.

Il pomeriggio è finito, quindi è ora di tornare al Jazz Country Club e prepararsi per la cena. La sig.a Gabriella ci consiglia il Ca' nori, un ristorante poco distante e ci raccomanda anche Strozzapreti e cappelletti come piatti tipici della zona.

Ca' nori è un grosso ristorante affacciato sulla provinciale, uno di quei posti che, dalle dimensioni del parcheggio, attira alla ristorazione avventori da tutto il circondario e probabilmente oltre.
L'ambiente e il servizio sono alla buona, ma senza nulla da eccepire e ben presto il locale si riempie. Decidiamo di seguire le indicazioni che abbiamo ricevuto. I cappelletti sono un incrocio tra raviolotti e tortelloni, con ripieno di formaggio. Le tagliatelle al ragù sono trionfali e non ci facciamo mancare al tavolo anche gli strozzapreti, un'altra specialità locale simile alle trofie liguri, con panna e speck.
Chiudiamo la cena con una condivisione di patatine fritte giusto prima di partire di corsa di nuovo verso l'hotel Dante per lo spettacolo serale.
Di sera (buia e tempestosa) l'hotel Dante è leggermente meno brutto da fuori grazie all'oscurità. All'interno è un tono suffuso d'oro giallo e lampade preziose. Lo spettacolo organizzato dai disperati animatori (dopo la nostra partenza hanno deciso di cambiare le loro vite facendosi chi frate trappista, chi monaca di clausura e chi cercando sé stesso in un monastero tibetano) è un po' meno ambizioso di quello dell'anno scorso. Hanno cercato di avvantaggiarsi di quello che i bambini e i ragazzi già sapevano fare improvvisando una sorta di circo acrobatico.
Ma la serata non è finita, un'attrice prova a raccontare una storia ai bambini. La storia è bella e poetica, parla di un bambino che scopre che la luna in realtà è un buco nel cielo che lui può attraversare e dall'altra parte trova altri bambini. Purtroppo sarà per l'ora che inizia ad essere tarda o sarà che l'attrice, per quanto brava non riesce molto a coinvolgere i bambini, ma l'attenzione dura poco e la maggior parte dei diavoletti preferisce rincorrersi nel salone anziché ascoltare la storia.
Tutto questo movimento, unito al vociare necessario al gioco, alle urla di incoraggiamento e di richiamo, non contribuisce certo a creare un ambiente rilassato.
Con le orecchie ovattate, come se fossimo usciti da una discoteca, ritorniamo al Jazz Country Club.
Al nostro rientro troviamo una gradita sorpresa: la sig.a Gabriella ci ha preparato la ricetta del rotolo. Ci addormentiamo pregustando prelibatezze di pasticceria.

Finalmente domenica mattina troviamo … il sole!
Il sole asciuga i ricordi della pioggia dei giorni scorsi e conferisce un aspetto allegro e spensierato al mare (d'inverno o meno). Oggi non ci sono particolari conferenze, c'è un lavoro sulle emozioni e sul corpo, ma decidiamo di bigiare (o marinare, o far filone o salina a seconda della cultura locale) e andare a vedere la casa delle farfalle.
La casa delle farfalle è un tri-parco che contiene un giardino botanico ai minimi termini una serra con millanta e più farfalle e una mostra-terrario sugli insetti.
Il giardino botanico illustra una decina di alberi con le loro proprietà e il loro uso nella storia dell'umanità. Interessante, ma niente di particolare.
La serra delle farfalle invece è molto interessante, ci sono i vari stadi di vita delle farfalle illustrati con tabelloni grandi e chiari, ma soprattutto ci sono tantissime farfalle enormi e coloratissime. Ci sono anche un paio di gruppi con la guida. C'è il sole, è primavera, la mia felpa è calda, siamo in Romagna (dove qualche anno fa il “poeta” cantava: “facciamo fiki-fiki insieme”), così un farfallo e una farfalla decidono di scambiarsi effusioni amorose sulla mia pancia.
Faccio finta di niente sperando che se ne vadano, ma non c'è nulla da fare... finchè una guida se ne accorge e mi salva dall'imbarazzo prendendo i due passionali amanti li sposta su una foglia lì vicino.
Il museo degli insetti è interessante, ma un po' meno affascinante di quello dei lepidotteri. Però, posto di avere abbastanza pazienza, può essere anche divertente, ad esempio i bambini possono entrare in un formicaio a loro misura e vedere cosa fanno le formiche (all'interno del formicaio vero). Ci sono vari esemplari di insetti nei loro terrari, e la mostra si chiude con una sala dedicata alle api e agli alveari, con tanto di vero alveare.
Usciamo soddisfatti e ci dirigiamo di nuovo verso Cervia alla volta del Dante e alla ricerca di un posto accogliente che ci possa sfamare (dietro equo compenso s'intende). Giusto vicino all'hotel, in una stradina troviamo un chiosco che vende piadine, ci sono anche sedie e tavolini anche se, ci tengono a precisarlo, loro non possono avvicinarsi al tavolo, né per prendere le ordinazioni, né per portarci da mangiare.
Riproviamo con la piadina e questa volta, complice probabilmente il bel tempo, è veramente uno spettacolo. Spiace di averla finita così rapidamente.
La nostra mini-vacanza sta per volgere al termine. Entriamo al Dante per salutare soci e amici che rivedremo, se va bene, tra un anno.
È un peccato andare via così presto... con questo sole. Decidiamo allora di fare una camminata sulla spiaggia, anche perchè, in questi giorni c'è una manifestazione di aquiloni. La spiaggia è camminata intensamente da molte persone. Ci sono aquiloni di tutte le fogge e dimensioni, ma, sfortunatamente non c'è vento, e quindi sono quasi tutti a terra.

La nostra Scenic ci attende per portarci via dalle vacanze e tornare alla città più bella del mondo (forse in qualche universo parallelo) Castellanza.

È difficile trarre delle conclusioni su questa assemblea soci. Da una parte il fatto di aver pernottato al Jazz Country Club e non al Dante ci ha impedito di vivere e condividere pienamente con le altre famiglie; dall'altra la confusione che abbiamo vissuto al Dante non ci ha fatto rimpiangere questa scelta. Senza contare che il Dante è veramente un hotel di lusso in cui è difficile, almeno per noi, sentirsi a proprio agio. Resta il ricordo di due giorni passati in quasi vacanza con tanti amici che non vedevamo da tanto.
Juan al Jazz Country Club. Sulla tavola si intravvedono delle gustosissime crostatine.
Marian al Jazz Country Club, nel salotto.
Una perplessa famiglia Pagani legge le didascalie al parco botanico della casa delle farfalle.
Una delle più grandi farfalle del mondo (probabilmente la più grande)
Primo piano, dica "FarfallAAA" *click*
Pranzo di domenica con piadina... *slurp*
Festa degli aquiloni con bonaccia

Digitale Terricolo

2010-May-26 Wednesday 14:10 CEST

(English follows)
Ho deciso di iniziare una nuova sezione del blog dove commentare quello che succede in Italia. Pensavo di non scrivere in inglese per due motivi - il primo è che malgrado la mia "fluenza" in inglese riesco comunque a scrivere più velocemente e meglio in italiano; il secondo è che difficilmente quello che scrivo può interessare a qualcuno che non parli italiano. Naturalmente se ci fosse qualche anglofono all'ascolto interessato ai miei deliri sarò felice di aggiungere le traduzioni "on demand".

Fine dell'introduzione. Spinto dal martellare incessante delle ultime settimana sulla necessità di approvvigionarsi di un decoder per il digitale terrestre (o DVB-T per gli addetti ai lavori) volevo scrivere qualche riflessione in merito.
Sul DVB-T e sulla sua utilità sono già stati spesi fiumi di inchiostro, distrutte foreste e riciclati gazillioni di pixel. In sintesi sono d'accordo: che tutti i soldi bruciati in questa operazione potevano essere più proficuamente investiti per ridurre il digital divide (ma forse era comunque necessario adeguare la tecnologia TV in Italia al resto del mondo); che sicuramente il DVB-T non è la tecnologia del futuro (ma posto il futuro abbastanza in là nel tempo, nessuna tecnologia odierna lo è); che col fischio che non si devono fare lavori all'antenna ecc. ecc.
Sicuramente ci sono almeno due fattori positivi: 1) adesso (dopo che è passato l'antennista) riesco a vedere sul mio anzianotto TV (analogico doc) circa 140 canali si cui più o meno la metà in chiaro e 2) dal 18/5/2010 l'informazione TV è migliorata dal momento che il TG4 è sparito dalla sintonia analogica.
Ma parliamo dei contributi. Non quelli passati (ormai sono andati) che hanno avuto come effetto principale quello di tenere alti i prezzi dei decoder, ma l'ultimo, quello attualmente in vigore. La normativa recita che tutte le persone di 65 anni o più, (a) in regola con il pagamento del canone RAI e che (b) abbiano dichiarato meno di 10k€ nel 2009 hanno diritto a un buono di 50€.
Senza voler istigare nessuno alla diserzione del canone, penso che se qualcuno rientra nella categoria (b) abbia spese molto più urgenti e vitali che non quella per rientrare nella categoria (a).
Non solo, ma il contributo è valido solo per il decoder interattivo (MHP) che è più costoso del decoder semplice (circa un 4x sui prezzi minimi: 80€ contro 20€) con 400€ di soldi gabellati ai contribuenti si potevano aiutare 20 famiglie anzichè 5. Che poi a ben vedere non le aiuti nemmeno tanto, visto che il contributo è di 50€ e che per arrivare a 80€ ne devi spendere ancora 30€ che più di quanto costa un decoder semplice.
Aggiungo anche che il decoder interattivo ha senso solo se lo colleghi al telefono per partecipare alle trasmissioni interattive e quindi sono potenzialmente altri soldi da spedere per chi probabilmente (visto (b)) non arriva a fine mese con le spese essenziali.
C'è da chiedersi se bisogna ricorrere, ancora una volta, al rasoio di Hanlon oppure se questi incentivi sono fatti per favorire qualcuno in particolare.
Ora se solo trovassi una guida tv semplice per stabilire quale dei 70+ canali posso guardare senza passare un'ora a fare zapping....

(English)
I decided to start a new blog section where I am going to comment what is currently happening in Italy. My intention is to write in Italian (and not in English) for two reasons - first, despite my "fluent" English, I am faster and better at writing in Italian; next it is unlikely that what I'll write here could be of any interest for those who can't read Italian. Should this not be the case and one or more English speaking people be interested in my rants, I'll be happy to add translations "on demand".

PHP In Action

2010-May-06 Thursday 13:54 CEST

Being a fair programmer may not always be enough to be a fair web programmer. Web programming has some peculiarities on its own. Defining a sound architecture for a web site is all but a straightforward task. This may explain why the software I wrote for this blog has grown a bit out of control O:-) (and, put it in this way, allows my ego to be safe).
That's why I looked for a book to improve my PHP web programming and found "PHP in Action".
The book is packed with pleasant surpises. First of all it is a darn good book on web programming. Author spends a good time in explaining scenarios and examining programming patterns in easy-to-complex order able to solve the related problems.
But the book is a really good book on design in general. Several patterns are described in a hands-on, no-nonsense approach. More are introduced when dealing with specific aspects of web programming. A brief introduction to object oriented programming is included as well.
I found very valuable the presentation on Unit Test and the arguments for Test Driven Design, so much that I promptly searched a unit test library suitable for C and C++, so that I could use the same approach on my daily job.
If you are interested in PHP programming for Web I highly recommend this book.

Managing Project

2010-May-03 Monday 22:51 CEST

The current project I am working on could be considered a medium size. It involves 5 software engineers and 1 hardware engineer for about 8 months. I contributed to the planning of the software components, but I am quite critical about my skill in predicting future. Considering the pressure from top and middle management to complete the project on a given date I would take my own planning prediction with great care. So I dared to ask the project manager if he was doing some sort of risk assessment. His answer - "What the heck! If I had to do _even_ risk assessment then I would have no time at all for anything".

Shuttle is leaving

2010-Apr-29 Thursday 13:47 CEST

Space Shuttle program will cease this year. Since 2011 no more Space Shuttle launches will occur and currently there is no new spacecraft as a replacement. Maybe Space Shuttle failed to reach the cost per launch or payload goals, but it was somewhat an icon of a future space era - the first real vehicle, nota rudimentary rocket, capable of taking off into space and then landing ready to be reused, much as a standard airplane.
I wonder what NASA will do while waiting for new rocket vectors (ready in 2014), what kind of shuttle bus will provide ISS astronauts rotation.
So long Space Shuttle, you will be missed.

Harmful + Evil = RAII for C

2010-Mar-19 Friday 15:09 CET

Some days ago I read an article about goto heresy that triggered me to write about my personal experience with the infamous goto instruction in C. The only reason I found for employing goto in C was error handling.
Valentino provided me with a good idea on which I elaborate a bit. Thanks to this idea you can achieve a passable approximation of RAII in C.
It is not free (beer sense) as it is in C++ or other languages that support automatic object destruction, but if you stick to a set of IMHO acceptable conventions you should be happy with it. Shouldn't these conventions fit for you, you may easily bend the solution to satisfy your taste.
Before dwelving into the technical description of the idea I am going to list the conventions that are requested for the idea to work.
First class names have to be defined with the typedef instruction. E.g.

typedef struct
{
    int x;
}
Foo;

Then each class needs a constructor named as the class name with a trailing "_ctor". In the same way the destructor has a trailing "_dtor".
The first argument of the constructor is a pointer to the object to construct. Moreover the constructor returns true if the operation has been successful or false in case of construction failure.
It is up to the constructor to clean up in case of failure and not to leak any resources.
In the same way the destructor has a single argument - the pointer to the object to destruct.
By the way, by constructing I mean to receive a chunk of raw memory and turn it into a well formed, invariant-ready, usable and valid object. It has nothing to do with memory allocation - memory is provided by the code that calls the constructor.
The destructor does the opposite - takes a valid object and by freeing the associated resources makes it a useless bunch of raw bytes, ready to be recycled by someone else.
Now the idea is simple (as most of them after you know) - you need a way to keep track of what you construct so that when an error occurs you can go back and call destructors for each object already built.
Since you don't know how many objects are going to be constructed the data structure that fit best is the linked list. And, if you are clever enough you may avoid the dynamic allocation at all by employing cleverly crafted node names.
When an object is successfully built a node of the list is created. Inside the node the pointer to the built object is stored along with the pointer to the destructor.
You know which is the destructor because you have the object type.
When a constructor fails the execution jumps (via a goto) to the error handling trap. The trap simply sweeps the linked list and processes each node by calling the destructor on the object.
Thanks to the C preprocessor the implementation is not so convoluted.
#define RAII_INIT   typedef void DtorFn( void* );   \
                    struct DtorNode                 \
                    {                               \
                        DtorFn* dtor;               \
                        void* object;               \
                        struct DtorNode* next;      \
                    }                               \
                    * dtorHead__ = NULL

#define RAII_CTOR( x__, T__, ... )      \
    RAII_CTOR_WITH_LINE( __LINE__, x__, T__, __VA_ARGS__ )


#define RAII_CTOR_WITH_LINE( L__, x__, T__, ... )   \
    struct DtorNode dtor_##T__##_##L__;             \
    if( T__##_ctor( x__, __VA_ARGS__ ) )            \
    {                                               \
        dtor_##T__##_##L__.dtor = (DtorFn*)T__##_dtor;       \
        dtor_##T__##_##L__.object = x__;            \
        dtor_##T__##_##L__.next = dtorHead__;       \
        dtorHead__ = &dtor_##T__##_##L__;           \
    }                                               \
    else                                            \
    {                                               \
        goto failureTrap__;                         \
    }

#define RAII_TRAP                                   \
    failureTrap__:                                  \
        while( dtorHead__ != NULL )                 \
        {                                           \
            dtorHead__->dtor( dtorHead__->object ); \
            dtorHead__ = dtorHead__->next;          \
        }


RAII_INIT the mechanism by defining the type of the linked list node and the pointer to the head of the list. Note that a single link list is enough since I want to have FIFO behaviour (the first constructed object is the last to be destroyed). Also the name of the type will be local to the function where this macro will be instanciated, therefore it there won't be collision in the global namespace.
RAII_CTOR macro is used to invoke an object constructor. The real work is done by the RAII_CTOR_WITH_LINE, that accepts the same arguments as RAII_CTOR plus the line where the macro is expanded. The line is needed to create unique node identifiers within the same function.
RAII_CTOR needs the name of the object type in order to be able to build the name of the constructor and the name of the destructor. From these information the macro is able to call the constructor and add a node to the destruction list if successful or jump to the destructor trap if the constructor fails.
RAII_TRAP is the trap, to be located at the end of the function. It intercepts a constructor failure and performs the required destruction by scanning the list.
In order to use the macros you lay out the function according to the following canvas:
bool f( /* whatever */ )
{
    RAII_INIT;
    // some code
    RAII_CTOR( ... );  // one or more ctor(s)
    return true;    // everything was fine

    RAII_TRAP;      // code below is executed only in case of error.
    return false;
}

As you see the trap performs the destruction, but leaves you the space to add your own code (in the example the "return false;" statement).
So far so good, but you may argue that memory allocation and file open/close already have their conventions set in the standard library that don't fit my macro requirements.
Don't worry, it is quite straightforward to hammer malloc/free and fopen/fclose in the _ctor/_dtor schema. It is as simple as:
#define malloc_ctor(X__,Y__) (((X__) = malloc( Y__ )) != NULL)
#define malloc_dtor free

#define fopen_ctor(X__,NAME__,MODE__)   (((X__) = fopen( NAME__, MODE__ ))!= NULL )
#define fopen_dtor fclose

Here is an example of how the code that employs my RAII macros could look:
bool
f( void )
{
    RAII_INIT;

    Foo foo;
    FILE* file;
    void* memory;

    RAII_CTOR( memory, malloc, 100 );
    RAII_CTOR( file, fopen, "zippo", "w" );
    RAII_CTOR( &foo, Foo, 0 );

    return true;

    RAII_TRAP;
    return false;
}

This code has some great advantages over the solutions I presented in my old post. First it has no explicit goto (the goto is hidden, as much as it is in any other structured statement). Then you don't have to care about the construction order and to explicit write the destructor calls.
Though there are some drawbacks. First the linked list has an overhead that I don't think the optimizer will be able to avoid. The space overhead is 1 function pointer and 2 data pointers (plus alignment padding) for each constructed object. This space is taken from the stack, but it is completely released when the function returns.
The code requires a C99 compliant, or, at least a compiler that allows you to declare variables anywhere in the code (and not just at the block begin). I think that the function pointer and argument pointer juggling are a bit on (or maybe beyond) the edge of the standard compliancy. I tested the code on a PC, but maybe that it fails on more exotic architectures.
So, what do you think?

Considering Goto Harmful, but...

2010-Mar-16 Tuesday 14:17 CET

Since I started programming in C until a few months ago I religiously practiced the rule "Don't use goto" (totaling for about 23 years of abstinence). I remember I was puzzled at first - coming from BASIC programming, I hardly believed you could get along without the infamous instruction.
To change my habits I took this as a challenge, and in a short time I was able to get rid of the evil statement.
In practice I was helped by a bunch of C statement that are basically disguised goto instructions: break, continue and return.
Break and continue allows you to jump out of a loop or at the next iteration; while return is a jump out of the current function.
Single exit point (i.e. just one return per function) is often preached as a Right Thing, but when programming in C, single exit fights madly with error management, forcing you either to deeply nest conditionals or to add boolean variables with the sole purpose of skipping code in case of error.
Amiga was the first computer I programmed in C, it was an advanced machine for those time, but experimental in many ways. For example Amiga operating system provided you with full multitasking capabilities, but the hardware lacked of an MMU therefore no protected memory was in place. This forced the programmer to be very careful about error conditions - one unhandled error and the entire system could be nuked by a single failing program.
That's probably why I have been always attentive to error handling and graceful exit.
It was back then that I start using the idiom:

bool ok1;
bool ok2;
bool ok3;

ok1 = f1();
ok2 = f2();
ok3 = f3();

if( ok1 && ok2 && ok3 )
{
    // f1(), f2() and f3() returned ok.
}

if( ok1 ) free1();
if( ok2 ) free2();
if( ok3 ) free3();

This helps to avoid some nesting, but fails in tracking which function succeeded and which didn't. That could be fine in some situation, but not in others. For example if you have to free some resources allocated in f2(), you have to know if f2() succeeded or not.
Conversely, the idiom below:
bool ok1;
bool ok2;
bool ok3;

ok1 = f1();
ok2 = f2();
ok3 = f3();

if( ok1 && ok2 && ok3 )
{
    // f1(), f2() and f3() returned ok.
}

if( ok1 ) free1();
if( ok2 ) free2();
if( ok3 ) free3();

Performs proper cleanup, but fails to capture that f2() has to be executed if, and only if, f1() succeeded.
Then I went the C++ way for several years and gained a markedly object oriented approach.
Using C++ you don't have to worry much about these details if you happen to use the RAII idiom. That is, automatic object (i.e. local instances) gets automatically destroyed when the scope is left regardless of the reason that causes the execution to leave the scope.
In other words, if a function fails, be it with an exception or by reporting a specific error and triggering a return, objects that were built are destroyed, leaving the system in a good, non-leaking state.
Fast forward some years I am back to C programming with a heavy legacy of object oriented approach. This means that I try to design modules in an Object Oriented way - modules define classes, each class has one constructor that prepare the instance for usage. Each class also has one destructor (that may be empty, but this is an implementation detail, so if it changes in the future you don't have to change the calling code).
This is the setting were the C error management issue arose again. I want to mimic a C++-like behavior so that when in the constructor there are 3 "sub-objects" to construct I want that proper clean up (i.e. destructor calls) are invoked in case of error.
If you follow a strictly structured approach (without exception support), you get a very convoluted code:
if( f1_ctor() )
{
    if( f2_ctor() )
    {
        if( f3_ctor() )
        {
            // succesfull
            return true;
        }
        else
        {
            f2_dtor();
            f1_dtor();
        }
    }
    else
    {
        f1_dtor();
    }
}
return false;

The lack of "fall through" semantic forces you to duplicate code and therefore makes the coding and the maintenance more error prone. In fact, suppose you have to add a third call f0_ctor() that must be called before f1_ctor(). Then you have to change nearly everything, indentation included.
Time to reconsider my mind framework. I would need something that selects a portion of "destructor" sequence. Something like a switch with fall through:
progress = 1;
if( f1_ctor() )
{
    progress = 2;
    if( f2_ctor() )
    {
        progress = 3;
        if( f3_ctor() )
        {
            progress = 0
        }
    }
}
switch( progress )
{
    case 0:
        return true;
    case 3:
        f2_dtor();
        // fall through
    case 2:
        f1_dtor();
        // fall through
    case 1:
        return false;
}



This can do, it is somewhat error prone when writing and/or changing the code. If you duplicate one of the progress codes you get a wrong cleanup that can go undetected.
Moreover it doesn't seem to add much to the goto-based error management:
if( !f1_ctor() )
{
    goto error1;
}
if( !f2_ctor() )
{
    goto error2;
}
if( !f3_ctor() )
{
    goto error3;
}
return true;

error3:
    f2_dtor();
error2:
    f1_dtor();
error1:
    return false;

This notation is more terse (thus more readable) and appears to be more robust than the previous ones.
So why should I refrain from the goto statement in this case? There isn't any good motivation.
I don't want to provide any sort of "free for all" authorization in the wild usage of goto instruction. On the contrary my claim is that first you have to become of age without using goto (i.e. write programs for at least 18 years), practice Object Oriented Programming, carefully deal with error handling, then if you find yourself in a language lacking of a suitable error management, you may use goto... only if everything else is worse.

The Plan and Caprica

2010-Mar-12 Friday 17:28 CET

As I mentioned some time ago, Battlestar Galactica is one of my favourite sci-fi shows, I watched the entire series and enjoyed it a lot. So I was eagerly waiting for the side story "The Plan", with Ed Olmos' words resounding in my mind - "then you'll have to watch again the series". If you imagine that my expectations were high, you are underestimating them.
The Plan, basically is the Cylon backstage, what you don't see directly in the show, but you put together from evidences, tips and untold parts of the story.
Caprica, instead is the pilot episode the prequel series, set some 50 years before the beginning of BSG and, my thumb estimation, 20 years before the first Cylon wars. The goal of the show is to tell the ... well the prequel, why things got so screwed up with robots and what is all that fuss with the single god vs. the BSG-universe pantheon.
I liked Caprica, although I won't buy the show - it is not enough "space-opera" for my taste. I found characters believable and promising. "The Plan" left me quite disappointed with the bitter feelings I wasted my money. That's mainly because "The Plan" doesn't add anything to the story, don't expect twists or mighty revelations... the backstage is very similar to what you can imagine. Or, put in another way the story is what BSG show is telling, you may consider "The Plan" a sort of deleted scene collection, glued together to make a plot.
Now, the anti-spoil warning, if you want to watch the shows, go and watch them, then return here to read below. If you swap the order you are going to ruin an amount of entertainment.
The Plan, the story is strictly tied to the first season of BSG, starting with the moments before the Cylon attacks up to when two preacher Cylons (can't remind Cylon model numbers... apart from six, can't see why O:-)) are discovered and thrown through the airlock.
The story browse the motivation of cylons in the attack and the evolution of the feelings of human form Cylons toward humans. Apparently there is just one evil toaster (one of the Preachers) that is able to fast talk the others convincing they are doing the right thing in wiping out the entire human race.
"The Plan" provides some behind the scenes explanation to some mysteries. You'll know who let the paper with the cue of 12 cylon models in Cmd. Adama quarters, as well as where the Six who accused Baltar disappeared. Other misteries are left unanswered (how did Baltar survived the nuclear blast? Just by taking cover behind Caprica Six?!)
"Caprica" is a different show, it is about virtual realities, teen agers, families. At least, this is what I can say after having watched the pilot. There is this robot industry tycon whose daughter dies in a terrorist attack. He suffer immensely from the loss, so when he finds that a virtual reality contains a nearly perfect copy of his daughter, he decides to transfer that identity in a robot (guess what kind of robot).
On the other hand another father lost his daughter in the same accident, and suffers the loss in much the same way, but, after having experienced the virtual reality, decides to let go her daughter giving up the idea to have a surrogate experience. This man last name is... Adama and his little son name is William.
The plot also involves the unique god, in the sense that the girls and the boy who caused the bomb attack were believers of the unique god.
So why if I liked the pilot I won't go watching the entire series? Because I feel this kind of sci-fi, too little "sci". This is something more about family drama, mysteries (strange things turns out to happen in the virtual reality), quest for power... something that doesn't really need the distant future or space opera setting. At least the show is not enough motivating for me to afford the expenses, of course your mileage may vary.


created with vim   Valid HTML 4.01! This page has been visited times
This site and its content is (C) by Massimiliano Pagani