Technology Experience
Community

Calcolare il numero di iscritti di una community

Secondo me, una delle cose su cui bisognerebbe riflettere e pensare meglio è un metodo per calcolare il numero effettivo degli iscritti di una community. Questo post pubblica il numero di iscritti per le più grandi community italiane, tra cui la nostra UGIdotNET. E’ una cosa a cui ho sempre pensato, avevo persino bloggato all’inizio di quest’anno qui.

Vedere banalmente il numero dei record in una tabella secondo me non è del tutto corretto. Io stesso sono iscritto, come molti di noi credo, ad una quantità infinita di siti Web dei più svariati argomenti, da Tom’s Hardware Guide ad un altro sito (di cui non ricordo nemmeno l’url) che parla di audio & video digitale. Siti sui quali ti iscrivi una volta giusto perchè ti serve qualche informazione e poi non torni più a vedere. Sebbene sia registrato, non mi sento parte di quella community: non seguo i loro forum, nè i blog, non conosco le persone. Se qualcuno mi chiede se faccio parte di quella community, rispondo di no. Risulterò nei numeri, nel super-totalone, ma fisicamente non ci sono, per cui preferisco non essere contato.

C’è qualcuno che pensa che il numero dei membri di una community sia pari al numero di persone che partecipa attivamente alla community stessa. Bisognerebbe dare una definizione a “partecipa attivamente”, ma secondo me siamo già su una strada migliore rispetto a quella di prima. Perlomeno, negli intenti, in quanto si cerca di calcolare il numero effettivo di partecipanti. E’ come se io vi dicessi che il mio FeedBurner mi segnala che ho più di 100 subscriber al mio blog: non è un numero inventato, ma salta fuori da qualcosa di concreto. Poi, non chiedetemi in base a che logica FeedBurner mi dice ‘sto numero, io ve lo giro esattamente come me lo dice lui. 🙂

Credo che quando si parla di community non bisognerebbe fare una gara, dire cioè che una community è meglio di un’altra solo perchè ha più iscritti. Anzi. Credo ci siano responsabilità diverse, perchè un conto è gestire una piccola community, ed un altro è governarne un’altra con migliaia e migliaia di iscritti sparsi su tutto il territorio nazionale. Mi rendo conto che una community più grande dispone di quello che io chiamo potere politico: questo vale non solo per i leader della community, ma anche per ciascun singolo socio. Non ho voglia di dirvi cosa intendo per potere politico, qualsiasi cosa mi verrebbe in mente di dirvi sarebbe comunque subissata di critiche ed oggi non ho veramente voglia: ho troppo sonno.

Concludo riportando una frase di un certo Gianluca, che in un commento a questo post dice: “le community sono fondate sul principio di condividere la propria passione, esperienza o conoscenza (a prescindere dal livello di preparazione dei membri) su un particolare prodotto o tecnologia“. Tutto il resto, come si dice, è storia.

Send to Kindle
My daily work

Silverlight fa al caso mio? Ci farò un pensierino!

Non so, è un pochino che ci penso. Ho studiato per i cavoli miei Windows Presentation Foundation, mi piace e mi appassiona, mi dà delle possibilità che prima, da sviluppatore con scarse capacità artistiche, non avevo. Credo che WPF sia di gran lunga il framework per smart-client più completo che mi sia mai capitato sotto mano: ha reso eternamente più accattivanti le interfacce grafiche, ma si spinge molto più in là, come ho già avuto modo di dire in passato. Animazioni, trigger, template.

Poi ho cominciato a leggere, qualche settimana fa, del famigerato WPF/E, oggi conosciuto come Silverlight. Praticamente, si legge da tutte le parti, è un framework basato su WPF ma dedicato al mondo Web. C’è un po’ di javascript lato client che si occupa di renderizzare il codice XAML sul server: questo XAML è lo stesso di WPF per smart-client. Quindi, StackPanel e roba del genere. Effettivamente, mi sono accorto che da quando studio WPF il mio modo di pensare le interfacce è molto più vicino a come le pensavo a quando lavoravo sul Web anni fa. Basta coordinate, tutto è posizionato relativamente in base al container, per esempio. Oggi pensavo fra me e me che probabilmente ci metterei un nanosecondo a riprogettare parte del mio sito usando Silverlight, ammesso e non concesso che poi lo XAML che andrei a scrivere sia veramente uguale tra WPF e Sliverlight. Perchè poi si sa, il Diavolo si annida nei dettagli. Va a finire che uno si mette lì con Blend a buttare giù una sorta di pagina Web per il proprio sito che poi non viene renderizzata come si deve sul browser di turno.

In questo periodo non ho molto tempo per vedermi anche Sliverlight, onestamente. Il lavoro mi consuma le risorse al punto giusto e trovo a malapena il tempo per bloggare qualcosa. Però, non si sa mai, aspetto che Silverlight esca dalla beta, e poi magari quest’autunno proverò a dargli un’occhiata!

Send to Kindle
Software

Le mie idee sui gadgets di Vista

Non riesco a capire il perchè, ma i gadgets attualmente disponibili per Vista non mi piacciono. Hanno uno scopo, come dire, troppo commerciale. A casa ne ho scaricato qualcuno: uno mi fa ascoltare le radio italiane, l’altro mi dice le previsione del tempo. Però ne esiste uno per la Ducati, che secondo me esce completamente dallo scopo principale per il quale Microsoft ha deciso di introdurre i gadgets.

Lo spazio riservato ai gadgets, la famigerata Sidebar, è lì bella pronta sul desktop. Credo che la cosa più utile sia creare gadgets come se fossero utility che, quando ne abbiamo bisogno, sono lì a portata di mano. Trovo che sia scandaloso che nessuno abbia ancora creato un gadget per raccogliere gli shortcut delle applicazioni Windows che utilizziamo di più. Trovo invece un’ottima idea i gadget per TFS che ha segnalato Lorenzo questa mattina. Oppure, ancora, il gadget su cui sta lavorando il nostro Simone, ideale per chi lavora con CruiseControl .NET. O almeno, così parla la mia anima di sviluppatore, o di programmatore, che vuole avere sottomano tutte le utility che gli servono. Putroppo creare gadget per Vista ha troppo a che fare con CSS e HTML affinchè io possa creare qualcosa di davvero carino. So che c’è un metodo per hostare dentro una pagina HTML l’engine di WPF, magari da lì tirerò fuori qualcosa di buono. Però l’idea di caricare il FX3.0 all’avvio del PC non è che mi ispiri molto.

Penso che Vista possa avere davvero un valore aggiunto grazie ai gadget, ma oggi così non è. Basta cercare su Internet per trovare i soliti traduttori, giochini come il poker o il sudoku, news dalla Ducati (!) o da Ansa.it. Ma dove sono le cose utili sul serio? Sapete cosa penso? Che i gadget di Vista stiano facendo la stessa fine delle toolbar di Internet Explorer. Un’ottima idea tecnicamente, ma su cui pian piano si è abusato creando toolbat troppo invasive, piene di links pubblicitari e svariati siti di cui non ce ne può fregare di meno. Ragazzi, davvero, correggiamo questa direzione, perchè quella dei gadget per certi versi può essere una buona idea, ma non così come è stata sfruttata fino ad oggi.

Send to Kindle
My personal life

Milan Campione d’Europa!!!

Il mio Milan è Campione d’Europa. In una stagione balorda, cominciata l’estate scorsa mentre ero in campeggio in Puglia, come molti di voi si ricorderanno. Sotto gli alberi, allora, a vedere i preliminari di Champions, tutti convinti che ci saremmo fermati a metà strada. Ricordo come se fosse ieri i primi goal estivi di Pippo, che ci permisero di passare una partita dopo l’altra. Lo stesso Pippo che questa sera ha fatto tremare i Reds e che ha fatto conquistare l’ennesima Champions League ai rossoneri. Partita ostica, difficile, sofferta ma pian pian, con calma, siamo arrivati in fondo tagliando il traguardo per primi. Di sicuro non la miglior partita del Milan, ma questo Liverpool, ragazzi, è tosto sul serio. Ma i Campioni d’Europa siamo noi. Interisti, festeggiate pure il vostro scudettino, noi siamo sull’Olimpo.

Send to Kindle
.NET World

[5] Il ritorno dello HockeyPlayer (data-binding con WPF)

Proseguo la mia serie di articoli con una piccola riflessione che ho fatto fra me e me ieri sera mentre stavo lavorando. Per spiegarla, riprendo un blocco XAML del post [3] Il ritorno dello HockeyPlayer (data-binding con WPF), nel punto in cui definisco la ListBox che contiene i vari HockeyPlayer:

<ListBox Name="lstPlayers" ItemsSource="{Binding Source={StaticResource players}, Path=HockeyPlayer}"> <ListBox.ItemTemplate> <DataTemplate> <StackPanel Margin="4" Orientation="Horizontal"> <TextBox Text="{Binding Path=Name}" Margin="4" Width="120" /> <TextBox Margin="4" Text="{Binding Path=Weight}" Background="LightCoral" Width="30" /> <TextBlock Margin="4" Text="{Binding ElementName=sldHeight, Path=Value}" Width="60" /> <Slider Name="sldHeight" Value="{Binding Path=Height}" Minimum="140" Maximum="230" Width="120" /> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> </ListBox>

Osserviamo come la definizione del template col quale deve essere disegnato ogni Item della ListBox è fatto in corrispondenza della definizione della ListBox stessa. All’interno del tag <ListBox></ListBox> si definisce il DataTemplate, che è composto da uno StackPanel e via dicendo. Questo è quello che sono sempre stato abituato a vedere.

La mia domanda è: posso spostare la definizione del template in uno XAML dedicato? In altre parole, posso creare uno UserControl separato e staccato e poi referenziarlo e riutilizzarlo nel template? La risposta è sì. I motivi possono essere molteplici: se creo uno UserControl, posso utilizzare la stesso oggetto in più punti della mia applicazione, per favorire ad esempio una certa omogeinità nell’interfaccia. Se creo uno UserControl, questo è più facilmente debuggabile. Se creo uno UserControl, il codice XAML è meno prolisso, più leggibile e più facilmente modificabile.

Per farlo, è sufficiente aggiungere al progetto un nuovo UserControl (WPF), dargli il nome che vogliamo (ad esempio, HockeyPlayerTemplate) e copiare all’interno del blocco <UserControl></UserControl> lo XAML che definisce i controlli:

<UserControl x:Class="MyItemTemplate.HockeyPlayerTemplate" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:a="clr-namespace:MyItemTemplate"> <StackPanel Margin="4" Orientation="Horizontal"> <TextBox Margin="4" Width="120" Style="{StaticResource mandatory}" Text="{Binding Path=Name}" /> <TextBox Margin="4" Text="{Binding Path=Weight}" Background="LightCoral" Width="30" /> <TextBlock Margin="4" Text="{Binding ElementName=sldHeight, Path=Value, Converter={StaticResource conv}}" Width="60" /> <Slider Name="sldHeight" Minimum="50" Maximum="200" Width="120" Value="{Binding Path=Height}" /> </StackPanel> </UserControl>

Da notare che il resto è rimasto invariato. Continuo a fare uso del binding, anche se in questo contesto WPF non sa bene a cosa bindare. Non ha importanza, perchè poi a runtime ha tutte le informazioni che gli servono: in particolare, siamo noi che diciamo che ogni elemento della ListBox appartiene alla classe HockeyPlayer. Di conseguenza, il binding sulle proprietà Weight, Height e via dicendo funziona senza alcun problema.

Detto questo, la ListBox può essere definita come segue:

<ListBox Name="lstPlayers" ItemsSource="{Binding Source={StaticResource players}, Path=HockeyPlayer}"> <ListBox.ItemTemplate> <DataTemplate> <a:HockeyPlayerTemplate /> </DataTemplate> </ListBox.ItemTemplate> </ListBox>

Il DataTemplate fa riferimento grazie al prefisso a alla classe HockeyPlayerTemplate, che è proprio lo UserControl che abbiamo appena creato. Questo UserControl, lo ripeto, non solo può essere utilizzato come template per la ListBox, ma in ogni altro punto della nostra applicazione, qualora ci servisse.

Una precisazione. Nello UserControl va aggiunta una risorsa, il converter che abbiamo creato l’ultima volta. Questo converter viene utilizzato nel TextBlock per permettere di leggere il valore dello Slider senza decimali. Non è un problema, basta aprire lo XAML dello UserControl ed aggiungere tra le sue risorse la classe che fa da converter:

<UserControl.Resources> <a:SliderValueConverter x:Key="conv"/> </UserControl.Resources>

Domanda: perchè non dobbiamo inserire anche la risorsa denominata mandatory? Perchè, lo abbiamo visto precedentemente, questa risorsa è stata inserita fra quelle a livello di applicazione, e quindi è globale.

Send to Kindle
Community

Post con molti commenti

Di certo non ho inventato un bel niente, ma so che per attirare un po’ di gente basta scrivere un qualche post un po’ provocatorio, che possa essere frainteso, equivocato. State sicuri che riceverete visite, commenti e dovrete passare tutto il giorno a gestire la questione.

Vi ricordate il mio OT del Venerdì (65), quello sulle auto aziendali? Non ho volutamente pensato di scrivere qualcosa per fare casino nella community, ma alla fin fine mi sono ritrovato un post con quasi un centinaio di commenti, chi pro e chi contro. Oggi Andrea Moro di UGIdotNET ha raccontato alla comunity la sua vicenda che vede coinvolta l’AIIP (Associazione Italiana Internet Provider) e devo dire che il risultato è più che buono: i soliti anonimi, discussioni, polemiche e via discorrendo. Nel momento in cui scrivo i commenti sono 38, ma credo che da qui a fine giornata raddoppieranno. 🙂

Alla fine, cosa che ho sempre detto, più si scrive di “cose tecnologiche”, meno lettori si hanno. A maggior motivo se le “cose tecnologiche” sono un po’ di nicchia, come WPF o altre tecnologie emergenti. In post di questo tipo il grado di partecipazione della community è veramente un po’ più basso.

Send to Kindle
My personal life

Nove Colli in Fiat 500: è fatta!!!

Una granfondo per ciclisti da 130km, intitolata a Marco Pantani. 4 colli dell’appennino emiliano con pendenze importanti: il Polenta (salita da 8km, pendenza max 13%), il Pieve di Rovischio (salita da 8km, pendenza max 9%), il Ciola (salita da 6km, pendenza max 11%) ed il Barbotto (salita da 5.5km, pendenza max 18%). Tornanti, saliscendi, paesini, panorami spettacolari, piazze di paese, asfalto dissestato. 11.000 ciclisti da tutto il mondo, in partenza da Cesenatico alle 6:12 di domenica scorsa, 20 Maggio 2007.

Quella che vi ho descritto è la Nove Colli, una gran fondo alla quale partecipa da parecchi anni mio padre. Strade che io faticherei a fare anche solo a piedi – o in macchina – mio padre se li fa in bicicletta, ovviamente dopo essersi allenato tutto un anno per affrontare questa cicloturistica che, lo ricordo, non è agonistica e non è una gara.

Da 3 anni ne esiste anche una versione per Fiat 500. L’anno scorso ci abbiamo tentato, ma la nostra 500 ci aveva abbandonato al primo colle, il Polenta. Non ricordo bene quale fosse il problema: so solo che anche in pianura premendo sull’acceleratore la velocità diminuiva e tutti ci passavano. Motore scoppiato, insomma. Ricordo che per partecipare la nostra 500 si è dovuta smazzare un bel viaggio da Lodi a Cesenatico il giorno prima: 315km di autostrada fatti a 90-100km/h, alla guida mio fratello e di fianco il compagno di avventure Fabio. Loro due sono partiti venerdì 18, alle 15:30 circa. Io li ho raggiunti più tardi, dopo la giornata di lavoro, per cui non facevo parte dell’equipaggio del viaggio di andata. Quest’anno invece, con il motore nuovo e fiammante, ce l’abbiamo fatta e ci siamo ripresi la Nove Colli con gli interessi. Non c’è stata alcuna difficoltà, anzi. Le salite ce le siamo ingoiate. Ed eravamo l’unico equipaggio di 3 persone (81Kg io e 90Kg gli altri due, Omar e Fabio). Il momento più esaltante? Gli ultimi 150 metri del Barbotto, fatto in sorpasso su una pendenza del 18% nei confronti di altre due (tre?) Fiat 500 che procedevano più lente di noi.

Tutte le foto che ho scattato prima, durante e dopo la nostra Nove Colli sono pubblicate su Flickr in un set.

Sotto: il motore caldo della nostra Fiat 500.

Sotto: la partenza della Nove Colli in 500

Sotto: una 500 (non la nostra) con NOS ed un super-impianto audio

Sotto: alla fine, ci premiano per l’ “Equipaggio da più lontano“. Tutto merito di mio fratello che si è sparato 315Km di autostrada e che così si è guadagnato il titolo di “Pilota più temerario“.

Send to Kindle
My personal life

E’ tutta colpa della mia prof di inglese!

Alle superiori avevo una professoressa di inglese che una volta venne nella nostra classe per farci supplenza in un’ora che in realtà non le spettava. Sebbene fossimo tutti lì a farci i cavoli nostro, quando arrivò lei ci richiamò all’ordine e ci fece fare un esercizio di gruppo che ricordo ancora oggi con piacere. Ve lo racconto.

Eravamo in 5° superiore, e la classe completa era composta da 13 persone. Uno alla volta, ciascuno di noi doveva descrivere una scena in qualche modo collegata con quello che avevo detto la persone che aveva parlato prima di noi. Il tutto, ovviamente, in inglese. La scena iniziale la descrisse la professoressa.

Prof: “You are in a bar and you are drinking a good coffee…
Alunno 1: “…ehm….oohh…you begin to talc to barmman and asc for…ehm…another cofeee” (*)
Alunno 2: “In this moment, the door of the bar opens and enters a very strange man.
Alunno 3: “The man go near the phone and begin a phone-call.

Giusto per dare l’idea. 😀
La cosa divertente è che ciascuno di noi doveva portare avanti la storia un pezzettino alla volta, usando una lingua che a quell’età non è che padroneggi poi molto (anzi, tutt’altro!!!). Bisognava avere un po’ di improvvisazione ed inventiva, perchè bisognava continuare la storia partendo da quello che era stato detto da chi c’era prima di noi.

Tutto questo per dire che se vedete piccoli frammenti di racconti noir/gialli nei miei IV del Venerdì, è tutta colpa di quella supplenza di tanti, tanti, tanti anni fa. Per maggiori informazioni sulla professoressa di inglese, chiedete a mio fratello Omar oppure al mio amico Davide. O comunque a tutti quelli che hanno frequentato l’ITIS A.Volta di Lodi negli anni ’90. 🙂

(*) : Alunno 1 ha un bel 4 in inglese! :-)))

Send to Kindle
.NET World

Ma perchè alla fin fine è sempre Javascript???

Che io odi la programmazione Web ormai è risaputo. Ci riflettevo l’altro giorno: man mano che passa il tempo, per noi che sviluppiamo applicazioni Windows Forms, WPF, smart-client le cose evolvono davvero, la programmazione Web lato client rimane sempre la stessa. Non importa se viene creato AJAX o Silverlight, alla fin fine dall’altra parte del cavo c’è sempre il buon vecchio classico tradizionale e stupido browser e tutto gira semplicemente perchè c’è un runtime che interpreta un buon vecchio classico tradizionale e stupido Javascript.

L’altro giorno ho letto per caso il post di Alessandro Ghizzardi che parlava di Silverlight. Mi son detto: cavolo, Silverlight non è nient’altro che la trasposizione Web di WPF, magari ci capisco qualcosa e magari mi piace anche. Basta dare un’occhiata al pezzetto di codice per chiarirsi le idee e capire che sotto sotto il Javascript la fa ancora da padrone.

Il vero fascino dalla programmazione Web risiede ancora una volta (e oserei dire…sempre di più) sul lato server, con la nascita di linguaggi ed approcci sempre nuovi ed innovativi. Ma anche per quello ormai mi sono stufato!

Viva WPF, Viva gli smart-client, Viva le Windows Forms!!!

Send to Kindle