Friday 24 April 2009

E se domani ereditassi qualche milione di Euro, che farei?


Dipenderebbe da quanto eredito.

Qualche bella idea l'avrei, ad esempio iscrivermi nel miglior corso universitario di genetica sperimentale (quanto mi piacerebbe respirare sott'acqua, vedere a chilometri di distanza, fare backup periodici del mio cervello, sostituire periodicamente i miei organi o anche tutto il corpo, "montare" organi supplementari o ridondanti, ..).

L'evoluzione benedica il giorno in cui su ILI pubblicheranno annunci come il seguente:

"AAA Cercasi su Cernusco sullo Speislift brain-dumping specialist, ambiente
Paleomicrosoft Windows 20yz, contratto di collaborazione ad attività unitaria,
pagamento 25% a fine attività 75% al primo restore, possibili occasionali
escursioni extratmosferiche, no interplanetarie, astenersi osidiani"
E giù tutti gli osidiani a rispondere che il contratto non va bene, il compenso dov'è, non hanno specificato l'ambiente, il sistema, la versione, che la località è malsana, che potevano usare Neolinux core a.b.c.d, che non hanno specificato che in quella zona vigono ancora leggi incivili del XXI secolo che ti impediscono di leccare un gelato per strada, falan filan, ma fortunatamente a quel punto già da qualche anno Google Phoenix III avrà incorporato nei suoi motori di ricerca un autoplonker involontario, ed io non leggero' nessuna delle loro risposte :)))))

Fiat e Chrysler, nozze con la lupara puntata contro?

Se la storia della FIAT insegna qualcosa, se Marchionne prende la direzione della Chrysler, di manager, quadri ed impiegati licenziati ce ne saranno a bizzeffe.
Operai probabilmente pure, sia ben chiaro, ma così ad occhio dovrebbero soffrire più i colletti bianchi che le tute blu.
Queste ultime, dovranno fare qualche sacrificio, anche perchè fino a qualche mese fa la media per gli operai Canadesi delle tre di Detroit era di circa c$76 orari, contro per esempio per gli operai di Toyota a c$56 orari (se Vi sembra piu' facile in USD, sono $62 vs $45).
Se non erro, GM si è accordata con i sindacati canadesi (CAW) per scendere a c$71 (ma immagino si dovrà rinegoziare a breve, dopo il fallimento pilotato), mentre Chrysler vuole avvicinarsi di più a Toyota.
Questo non è vero solo in Canada, ma anche negli USA, anzi, gli operai in USA costano di più e guadagnano meno, perchè in Canada buona parte della social security degli operai che lavorano nelle fabbriche di auto è a carico della collettività (e non è un beneficio a cui accedono tutti gli altri lavoratori, anzi).
Hanno benefit come le scuole private per i figli (che in Nordamerica costano cifre incredibili) e casa di riposo pagata per quando sono anziani, tutto perlopiù a carico degli altri altri contribuenti.
Quelli del Michigan prendevano anche di più.

A raccontarlo ad un operaio Italiano, ma anche ad un impiegato o ad un professionista non affermato, che gli operai Statunitensi arrivano a guadagnare $500 al giorno, non ci crederebbero.

In Italia siamo messi male per altre questioni, ma per quanto riguarda la questione delle retribuzioni (ovviamente non solo degli operai, ma anche del management) in USA e Canada, per GM e Chrysler (probabilmente anche per Ford, anche se conosco meno la situazione) la situazione era (ed è) insostenibile (BTW, provate a leggere quello che dicono a proposito il senatore della Toyota/Alabama), Dick Shelby, oppure il senatore della Nissan/Tennessee, Bob Corker.
Anche ad alzare barriere doganali, nel loro stesso mercato di riferimento, ci sono molti altri altri produttori che pagano i proprio operai (ed impiegati) molto meno (e di solito sempre un multiplo di quanto guadagnano gli operai di altre parti del mondo, Italia compresa).

Questo differenziale retributivo non è scusabile, quella in atto era (e fino ad oggi è) una vera e propria rapina nei confronti di molti altri cointeressati (ad esempio tutta la gente del pianeta che ha investito in fondi pensione che negli anni hanno investito a loro volta nei titoli GM e Chrysler).

Il management GM/Chrysler ed i sindacati Nordamericani si sono in pratica messi d'accordo/trovati in sintonia, nel trasferire valore dalle società in questione verso le proprie tasche o quelle dei loro rappresentati (conoscendo la natura umana, non si fa fatica tra l'altro ad immaginare chi si sia arricchito di più), con il risultato che alla fine hanno in pratica distrutto il mezzo che permetteva loro di produrre ricchezza, distruggendo valore per milioni di persone.

Come molto spesso nel caso dell'Italia (ma anche del Regno Unito, a volte, come per quanto riguarda il sistema bancario), la classe politica non ha esercitato la propria funzione di controllo e guida, ma anzi, ci ha probabilmente sguazzato, e questi sono i risultati.

Riguardo al possibile matrimonio tra Fiat e Chrysler, chi ci guadagna?

Se va, molti dei cointeressati.
FIAT, come dice Marchionne, se non arriva a produrre 6 milioni di auto all'anno, è destinata o a scomparire o, se ancora profittabile, ad assere acquisita da un concorrente.
Chrysler senza FIAT, o chi per lei, sarebbe già sparita qualche mese fa.
Tutte e due assieme non arrivano ai fatidici 6 milioni, per cui hanno bisogno di comprare o fondersi con altri produttori, o di farsi a propria volta comprare, e questo nel breve periodo.

GM non sta peggio di Chrysler, e da sola ha (o almeno, ad oggi ha, senza Opel e Vauxhall non so) le dimensioni per sopravvivere. Purtroppo per lei, negli ultimi anni (decenni?) è stata (a volte molto) male amministrata (esiste una vasta letteratura in lingua inglese al riguardo), con i risultati che alla prima vera crisi economica globale post-1974 è crollata.

Ford, ripeto, non so, però non credo sia granchè meglio di GM, per cui probabilmente allo stato attuale un matrimonio tra americani non è la migliore delle strade praticabili.

A questo punto, perchè FIAT? A Chrysler non conveniva un matrimonio con i tedeschi o i giapponesi? Non hanno loro le tecnologie migliori?

In realtà FIAT ha da anni il parco auto meno inquinante (ed infatti quando Marchionne da presidente dei produttori Europei faceva lobbing contro i limiti all'inquinamento proposti dalla UE, ci si chiedeva chi glielo faceva fare, dato che FIAT era l'unico dei membri che aveva una flotta che poteva realisticamente rientrare nei limiti in tempi commercialmente umani), per non parlare poi dell'eccellenza nei motori diesel, il "common rail" usato da tutta l'industria automobilistica tedesca è una tecnologia "made in FIAT", i sistemi common rail sono costruiti, su licenza, da Bosch perchè all'epoca FIAT non aveva le risorse e le dimensioni per industrializzare il processo, ed a volte anche in quelli a benzina (il FIRE era ed e' uno dei capolavori dell'ingegneria umana).

In alcuni mercati (non in tutti) la FIAT non gode di molta stima, per tante concause, alcune di queste spesso derivanti da errori o mancanze dei governi Italiani.
Ci si ricorda tutti sempre degli interventi del governo a supporto della FIAT, ma non dei danni che il governo italiano ha negli anni provocato, ad esempio FIAT per lungo tempo fu costretta (in pratica dal governo italiano) ad usare acciaio sovietico scadente mentre molti suoi concorrenti potevano usare fornitori migliori (spesso acciaio di qualità italiano), oppure quando alla fine degli anni '60 FIAT avrebbe potuto comprare Citroen, le venne impedito dal governo francese (ed il governo italiano non mosse un dito, o comunque non sortì alcun effetto, come anni dopo per Pirelli quando fu bloccata l'acquisizione di Continental, o come per De Benedetti quella di SGB), tacendo di tanto altro.

Ad ogni modo, FIAT prende il 20%-25% dei suoi profitti (attenzione, ovviamente non sto parlando dei ricavi) da Ferrari, che gode di ottima considerazione in tutti i mercati, o giù di lì.

Io non sono proprio nazionalista, se parliamo di Repubblica Italiana. Se proprio vogliamo estendere il discorso, a parte che dello stato che ha i confini sulla mia epidermide, che è una monarchia assoluta, provo un po' di sentimenti nazionalistici verso cinque entità: in ordine strettamente decrescente, la nazione Siciliana (l'etnia siculoparlante da Lecce a Malta), la Res Publica Romana (la Costitutio Antoniana mi ha dato la cittadinanza, e me la tengo), una certa idea di Unione Europea (laddove coincida geograficamente con la precedente, più tutto ciò che gli stava a nord, e laddove non sia conduttiva ad una monocultura dirigista, ma dove la competizione culturale intracontinentale venga favorita ove razionale), la Repubblica Italiana, e tutto il genere umano (il pool genetico umano sarebbe probabilmente una migliore definizione, ma tant'è). Incidentalmente, probabilmente se mi daranno la cittadinanza Britannica (o chissà, magari in futuro quella Australiana, Cilena, Groenlandese, quien sabe), aggiungerò anche il Regno Unito, probabilmente più su del genere umano, sicuramente allo stesso livello della Repubblica Italiana, ma non so ancora se più su o meno.

Dato che non sono per nulla acritico nei confronti di tutti i precedenti, di solito su questo genere di cose (se la creazione di una multinazionale globale a partire da un campione nazionale italiano sia una cosa strategicamente sensata o meno, e per chi) sono abbastanza obiettivo, e devo dire non capisco cosa porta a dubitare che questo eventuale matrimonio non sia sensato per Fiat e Chrysler, e per la Repubblica Italiana.

La Fiat ha una storia di innovazione, ricerca e sviluppo tecnologico, tarpata per decenni dalle scelte sbagliate di tanti governi italiani che uno sinceramente si domanda come abbia fatto a sopravvivere (ed infatti tanti altri promettenti campioni non ce l'hanno fatta). Basta uscire dai confini della Repubblica di qualche chilometro per trovarne a bizzeffe, in Francia, Svizzera, Germania, Austria, di gruppi che hanno mostrato anche meno della brillantezza della FIAT, e che oggi sono se non leader mondiali nel loro settore, almeno nei fatidici top 5. Leader mondiali, intendiamoci, non di cose che i Cinesi, gli Indiani o chi per loro possono imparare a fare meglio in un paio d'anni ..

Il patrimonio tecnico è quindi piuttosto rilevante, le rispettive penetrazioni geografiche calzano a pennello, per diventare un player globale gli serve un accordo in Cina e cementare l'accordo con Tata in India, e poi sono a
posto.

Quello che dovrebbe preoccupare è che il governo Italiano non faccia la sua parte, o che si faccia calpestare da altri governi. In un settore maturo come quello automobilistico, più di 5-6 gruppi globali non ci possono essere. Già i tedeschi iniziano a farsi sentire (perchè ovviamente vorrebbero che i loro siedessero tra quei 5-6, e se FIAT prenota un posto a tavola, sono problemi), il governo italiano dovrebbe chiedere (ed ottenere) la testa di Verheugen per le sue inopinate osservazioni.

Wednesday 8 April 2009

Intercepting xaml DataTemplate of a given DataType

Since a few months I am working on a project where we use integrate WPF with and IOC, Castle Windsor (through the extension of the Composite WPF Contrib).

One of our xaml file would look like this:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/
xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Presentation="clr-namespace:XXX.Modules.MyForm.Presentation"
xmlns:WinForms="clr-namespace:XXX.Modules.Common.WinForms"
xmlns:Converters="clr-namespace:XXX.Modules.Common.Converters"

<converters:booleanenumconverter key="YYYConverter">
[snipped other converters]
<DataTemplate DataType="{x:Type
Presentation:MyFormPresentationModel}">
[snipped template xaml]
</datatemplate>
</resourcedictionary>
I wrote a couple of interceptors (inheriting from IInterceptor and implementing Intercept), but when I try to use them resolving the presentation model, the xaml DataTemplate resolves to a string (the name of the generated proxy, something as IMyFormPresentationModelProxy1de831fc74a341249b67...), not to the instanced object (which stepping in in debug I can see it is registered and then created and then also proxied correctly, as far as I can understand). This is exactly the same behaviour we get if we try to use the interface (i.e. setting the DataType to "{x:Type Presentation:IMyFormPresentationModel}" we get a string as well instead of the object).

Using the .Net reference source symbols (and/or deblector) I have been trying to step in on the exact bit of code which is setting that string instead of the correct proxied object or even the underlying instanced object, but with no luck so far.

I do think the issue may be with the xaml engine being unable to match the proxied type with the DataType of the DataTemplate, and I found out the .Net framework may perform that using the TypeExtension/MarkupExtension/DataTemplateSelector classes and possibly some implementation of the IXamlTypeResolver interface. From a quick search, I found out nowadays people is using those mostly to provide some support for generics in xaml (see i.e. "How To Get ParserContext" or "Limited generics support in Xaml").

From a purely theoretical point of view, I don't like much the idea to have to modify the xaml files to be able to intercept them, so I am not absolutely sure I have been missing something.

Before trying to spend some time on that (i.e. writing our own TypeExtension), I thought it could be better asking around if there is someone with previous experience or also some insight on this kind of scenario, so I have been posting a similar text to various newsgroups and mailing lists.

Last but not least, although I don't guess this is a Windsor bug (or at last I cannot yet see why it should be :)), we are using Castle project assemblies built from the revision 5380 of the 19th October 2008 in the trunk.

Intercettare/Ereditare il DataType per un DataTemplate in xaml

Da qualche mese lavoro ad un progetto dove usiamo WPF integrato con un IOC container (Castle Windsor, tramite l'estensione fornita dal progetto Composite WPF Contrib).

Abbiamo un file xaml simile a questo pseudo-codice:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/
xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Presentation="clr-namespace:XXX.Modules.MyForm.Presentation"
xmlns:WinForms="clr-namespace:XXX.Modules.Common.WinForms"
xmlns:Converters="clr-namespace:XXX.Modules.Common.Converters"

<converters:booleanenumconverter key="YYYConverter">
[snipped other converters]
<DataTemplate DataType="{x:Type
Presentation:MyFormPresentationModel}">
[snipped template xaml]
</datatemplate>
</resourcedictionary>
Ho scritto un paio di intercettori (in pratica usando un componente chiamato Castle Dynamic Proxy, questi generano delle classi che ereditano i componenti registrati con Windsor e che poi si possono usare per intercettare i metodi prima e dopo la loro esecuzione, ad esempio per scrivere dei log o per fare altre cose), ma quando tento di usarli risolvendo i vari componenti intercettati, i DataTemplate definiti nei file xaml dei componenti non risolvono l'oggetto generato (che e' stato istanziato correttamente da Windsor, come posso ad esempio vedere mentre sono in debug), ma ritornano una stringa, che poi altro non e' che il nome del proxy generato (una cosa tipo IMyFormPresentationModelProxy1de831fc74a341249b67...).

Questo e' un comportamento molto simile a quello che incontro quando tento di usare un'interfaccia come DataType del DataTemplate (ad esempio impostando il DataType ad una cosa come "{x:Type Presentation:IMyFormPresentationModel}"), per cui immagino che il DataType non supporti molto bene l'ereditarieta' (o comunque sia piuttosto conservativo nella risoluzione dei tipi).

Dato che non penso che il problema sia nell'IOC o nell'estensione tramite la quale lo integriamo con WPF, immagino che il problema sia quindi che lo "xaml engine" non sia capace di far corrispondere il tipo descritto nel file xaml con quello generato dall'intercettore.

Ho fatto un po di ricerche, ed ho trovato che c'e' gente che per fare cose probabilmente simili (perlopiu' collegate al fatto che il DataType non supporta pienamente i tipi generici, vedi ad esempio "How To Get ParserContext" oppure "Limited generics support in Xaml") usa classi come TypeExtension o MarkupExtension e possibilmente qualche implementazione dell'interfaccia IXamlTypeResolver. Ho anche trovato qualche accenno al possibile uso di un DataTemplateSelector.

Da un punto di vista puramente teorico, l'idea di dover modificare i file xaml per poter intercettare i DataTemplate non mi attrae particolarmente, quindi mi sto chiedendo se per caso non mi sono perso qualcosa.

Prima di investire altro tempo per risolvere il problema (ad esempio scrivendo una mia TypeExtension), sto cercando di chiedere in vari gruppi o mailing list se c'e' qualcuno che abbia esperienza di questo tipo scenario (o qualcuno simile, magari qualcosa che abbia a che fare con l'ereditarieta' ed i tipi definiti in DataType per DataTemplate).

Anche soltanto qualche suggerimento o qualche referenza sarebbe molto gradita :)

Ho gia' scritto un messaggio molto simile sulla mailing list di Castle, ma immagino che questo non sia un bug di Windsor, ma il risultato di una limitazione (o di una scelta progettuale) del DataType.

Thursday 2 April 2009

Etimologia di Türkiye

I Turchi chiamano il proprio paese "Türkiye".

Quello che non molti sanno, sia tra i Turchi che tra gli Italiani, e' che
"Türkiye" viene dall'Italiano "Turchia": quando Mustafa Kemal ed i suoi compagni cercarono di fondare uno stato Turco sulle ceneri dello stato Ottomano, lo chiamarono inizialmente "Türkiya", termine ottomano prestito linguistico dall'Italiano (vedi ad esempio [1], [2], [3], [4], [5], [6] o tante altre fonti facilmente reperibili).

La normalizzazione eufonica dell'ultima vocale avvenne poco prima della pubblicazione della prima costituzione qualche anno piu' tardi (dopo o durante il 1923).

Tra l'altro, nel suo significato originale (del XIX secolo), Turchia in Italiano indicava sia l'Anatolia che la fascia dei Balcani a sud e nord della via Egnatia (in pratica Albania, Grecia settentrionale, Macedonia, Rodopi e Tracia), tutti territori in cui fino al principio del XX secolo la maggioranza della popolazione era appunto di etnia Turca e/o religione musulmana.

Il neolatinismo "Turchia" usato in Italia nel XIX secolo, proveniva a sua volta dall'Italiano rinascimentale (probabilmente medievale), che pero' non era usato per definire quella che noi chiamiamo Turchia.

Infatti, veniva dall'Arabo "ad Dawlat at Turkiyyat" (molto affine al Turco odierno "Türkiye devleti", "Lo Stato Turco"), che altri non era che il nome ufficiale del Sultanato Mamelucco in Egitto.

In origine, quindi, la parola "Turchia" indicava l'Egitto!

Nell'Italiano contemporaneo e' rimasta qualche vestigia, come ad esempio il fatto che il mais si chiami "Grano Turco", esattamente come in Turco si chiama "Mısır" (che significa appunto "Egitto") perche' appunto dopo l'introduzione del mais nel bacino mediterraneo, l'Egitto era presto diventato il maggior esportatore.