do more with less
news, esperienze, esempi da condividere e qualcosa su di me

venerdì 25 aprile 2008

.NET 3.5 Enhancements Training Kit: disponibile per il download

Qualche giorno fa Jonathan Carter (aka JC), nel suo blog ha annunciato la disponibilità del .NET 3.5 Enhancements Training Kit. Il download contiene sei labs relativi alle seguenti tecnologie:

  • ADO.NET Data Services
  • ADO.NET Entity Framework
  • ASP.NET AJAX History
  • ASP.NET Dynamic Data
  • ASP.NET MVC
  • ASP.NET Silverlight controls

Per chi volesse scaricarlo senza passare per il blog di JC, ecco il link: .NET 3.5 Enhancements Training Kit.

Frittelle di semolino: il mio dolce preferito

Ci sono ricordi che si portano con se fin dall'infanzia. Alcuni di questi sono così dolci da non sbiadirsi nel tempo e da tornare in modo riccorente alla mente nei momenti più impensati. Qualche giorno fa, mi sono svegliato con una voglia di frittelle di semolino, tipico dolce della tradizione romagnola che la mia bisnonna, la mia nonna e poi la mia mamma nel tempo mi hanno preparato con l'amore che si accompagna ad una ricetta così dolce.

Ho quindi chiamato la mamma per avere la ricetta e poterla preparare approffittando della festività del 25 aprile. Per chi volesse provarla ecco la ricetta oralmente tramandata tra le generazioni della parte romagnola della mia famiglia.

Ingredienti per l'impasto (dosi per 10 frittelle)
  • 100 grammi di semolino
  • 1/2 litro di latte
  • 1 pizzico di sale
  • 50 grammi di zucchero
  • 1 rosso d'uovo
  • 1 noce di burro
Ingredienti per l'impanatura
  • 2 uova o più
  • Pangrattato
Ingredienti per la cottura
  • Strutto o olio di semi (il primo è preferibile per gustarle al meglio)
Preparazione

In una pentola con bordo alto, versare il latte ed aggiungere la noce di burro. Accendere il fuoco e portare il latte ad ebolizione. Aggiungere quindi il semolino precedentemente mescolato con lo zucchero e il sale. Proseguire con la cottura mescolando continuamente fino ad addensamento del semolino. Quanto denso? Abbastanza da poterlo manipolare con le mani. Spegnere il fuoco ed aggiungere il rosso d'uovo amalgamandolo velocemente per evitare che si cucini.
Stendere l'impasto preparato su un tagliere appiatendolo con le mani fino a raggiungere uno spessore di circa 1 centimetro. Lasciate raffreddare l'impasto.
Non appena l'impasto si è raffreddato, tagliarlo in quadrati di circa 5 centimetri di lato (ovviamente potete scegliere la forma che preferite anche se il quadrato o il rettangolo vi aiutano a massimizzare l'uso dell'impasto). Ora avete tutto quello che serve per passare alla preparazione finale.

Passate ogni frittella nelle uova precedentemente sbattute e copritele con il pangrattato (la classica impanatura che fareste per una cotoletta). Dopo aver impanato tutte le frittelle, passate alla fase di cottura. Utilizzate una padella abbastanza profonda in cui metterete lo strutto o l'olio di semi in quantità sufficiente a permettere alle frittelle di galleggiare durante la cottura. Accendete il fuoco e raggiungete una corretta temperatura per una frittura. Quindi mettete le frittelle impanate in padella fino e fatele friggere fino a che l'impanatura prende un bel colore d'orato. Scolatele in un letto di carta assorbente e quindi spolveratele con abbondante zucchero. Servitele tiepide e buon appettito.

mercoledì 23 aprile 2008

.NET Developer Team: pochi ma buoni

In questo periodo sto seguendo un progetto per un importante cliente. Siamo tutti un pò sotto pressione per la fretta del cliente più che per reali problematiche tecniche. Comunque ecco una foto del team con cui sto collaborando.
Non è la prima volta che in Teorema ho il piacere di lavorare con valide risorse. La differenza di questo team è che dovrebbe, almeno nelle nostre intenzioni, diventare un team che collaborerà nei futuri progetti basati sul .NET Framework adottando metodologie agili.

martedì 15 aprile 2008

SnippetManager: useful tool from Karen Corby

Se state cercando una semplice applicazione per gestire pezzi di codice da utilizzare durante una presentazione, ecco un tool creato in WPF che può tornare utile: SnippetManager.

Il suo funzionamento è molto semplice. Dopo aver lanciato l'applicazione si deve caricare il file con gli snippet preparati. Il file è un semplice file di testo composto come nell'esempio seguente:

/////////////////////////////// // First Snippet Title <Style x:Key="TitleStyle" TargetType="TextBlock"> <Setter Property="FontSize" Value="35"/> </Style> /////////////////////////////// // Second Snippet Title partial line:Style="{StaticResource TitleStyle}" /////////////////////////////// Snippet content (no title) /////////////////////////////// -------------------------- /////////////////////////////// // Second Snippet Section <ControlTemplate x:Key="SubmitButtonTemplate" TargetType="Button"> <Grid Width="70" Height="20" Background="DarkGray"> <TextBlock Foreground="White" VerticalAlignment="Center"HorizontalAlignment="Center" FontSize="12"FontFamily="/fonts/IngebretsenNeato.ttf#Ingebretsen Neato"Text="Submit"/> </Grid> </ControlTemplate>

Guardando il codice con Reflector si nota come sia un'applicazione che Karen ha fatto per se ed ha poi deciso di condividere con gli altri. Per esempio, il punto che identifica l'inserimento di uno snippet deve essere precisamente indicato con 31 slash (///////////////////////////////). Poco male visto il beneficio che porta.

lunedì 14 aprile 2008

Apple MacBook Pro: il mio prossimo notebook?

Sono sempre più affascinato dai prodotti creati da Apple. Oggi ho passato un pò di tempo all'Apple Store di Seattle (WA) ed ho subissato di domande il malcapitato commesso che si era offerto di seguirmi. Sono confortato dalle informazioni ricevute e se anche l'assistenza riesce a garantirmi copertura in stile Dell può essere che ad ottobre passi ad un MacBook Pro lasciando il mio Latitude D620 che termina il suo servizio (lo ho in renting operativo) e torna in casa madre.

Questa è la configurazione che mi piacerebbe prendere:

MACBook Pro 15': 2.6 GHz
  • 2.6GHz Processore Intel Core 2 Duo 
  • Risoluzione di 1440x900
  • 4GB di memoria
  • Disco rigido da 200GB a 7200 rpm
  • SuperDrive doppio strato 8x
  • Scheda grafica NVIDIA GeForce 8600M GT con 512MB di SDRAM

domenica 13 aprile 2008

MVP Summit 2008: sunrise in Seattle

Ieri pomeriggio sono arrivato qui a Seattle per il consueto MVP Summit. Il viaggio è andato tutto sommato bene e per il momento sono riuscito a non subire i problemi del Jet Lag forzandomi di andare a dormire solo quando ormai qui era notte inoltrata.
Il mio risveglio questa mattina è stato particolare grazie ad un caldo raggio di sole che ha fatto capolino nel letto e mi ha coccolato addolcendo il mio risveglio.
Ora sono pronto per andare a farmi una rigenerante doccia per poi raggiungere gli amici e sfruttare questa giornata libera per un pò di svago.

mercoledì 2 aprile 2008

LINQ to Sql: singolare no grazie. Occhio al nome delle vostre tabelle !

Incredibile. Non posso credere di aver perso ore e ore di debug cercando di risolvere un errore a cui non trovavo una spiegazione logica. Cerco di riassumere.

Sto facendo per un cliente un ASP.NET User Control (un .ascx per intenderci) che contiene una GridView e un LinqDataSource. L'obiettivo è quello di ottenere un controllo per la gestione delle tabelle di look up, riutilizzabile in situazioni diverse, e che non richieda oneri di amministrazione e configurazione troppo elevati. Quando mi è stato chiesto di farlo con tecnologie in RTM (altrimenti avrei usato altri controlli) ho pensato subito che LINQ To Sql potesse soddisfare brillantemente questa richiesta grazie anche all'editor visuale che permette di trascinare le tabelle direttamente sul ORM mapper che si apre creando un file di tipo LINQ to Sql Classes (.dbml).
Come previsto la facilità di creazione del controllo è stata inizialmente rispettata fino a quando non ho iniziato a testare il cambio di DataContext (necessario per soddisfare uno dei requisiti del progetto e cioè la riutilizzabilità del componente). Da quel momento è iniziato un calvario in debug. Ho riscritto il codice almeno una dozzina di volte pensando che fosse dovuto a qualche errata sequenza di impostazioni che stavo eseguendo. Macché, continuavo a ricevere questo errore:

Could not find a property or field called 'Supplier' on the data context type 'NorthwindDataContext' of LinqDataSource 'ldsMain'.

Ma il tipo Supplier esisteva nel NorthwindDataContext e quindi non capivo il perchè dell'eccezione. Sono tornato al precedente DataContext ed ho aggiunto una tabella e di nuovo, ma solo per la tabella nuova, ancora lo stesso errore:

Could not find a property or field called 'ProductModel' on the data context type 'AWLDataContext' of LinqDataSource 'ldsMain'.

Dopo aver cercato in lungo e in largo; in un momento di rara lucidità ho trovato l'arcano. Mi sono ricordato che da qualche parte avevo letto che LINQ To Sql pluralizza il nome delle tabelle. Tra me e me ho pensato ma va, vuoi che sia proprio quello? Io sono un patito della normalizzazione ma mai e poi mai mi sognerei di farlo in modo così subdolo. Ed invece era proprio quello: le tabelle con nome al singolare non generavano un entità utilizzabile a run-time. Mi è bastato plurarizzare il nome delle classi dal designer e tutto ha iniziato a funzionare come atteso. 

Non ho parole. O meglio le ho ma non è il caso che le scriva.

martedì 1 aprile 2008

MVP Award, many thanks

Congratulazioni! Siamo lieti di assegnarti il Microsoft® MVP Award 2008!...

Sono un 41enne che si emoziona ancora quando riceve notizie di questo tipo. E allora non potevo non scriverlo nel mio  blog. Inutile tentare di descrivere con le parole il valore che un riconoscimento di questo tipo ha per me. E' la sesta volta che ho il piacere e l'onore di essere premiato da Microsoft e questa volta voglio cogliere l'occasione per dire grazie io a chi per noi MVP fa di tutto e di più.

Grazie ad Alessandro Teglia, MVP Lead per l'Italia, che con la sua passione e l'amore che mette nel suo lavoro ha saputo creare tra noi MVP italiani un gruppo di "Gladiators" capaci di stare assieme divertendosi e collaborando anche al di fuori delle iniziative strettamente legate al mondo MVP. Senza dimenticare l'impagabile lavoro svolto da Alessandro nella promozione del programma nel nostro paese; cosa che ci garantisce una stima ed un riconoscimento nel mercato di riferimento difficilmente riscontrabile in altri paesi.

Grazie ai ragazzi del team DPE di Microsoft Italia per le opportunità che ci offrono in termini di collaborazione, formazione e supporto.

Grazie ai team di prodotto che sempre più spesso cercano con noi un'interazione fornendoci così la possibilità di dire la nostra su funzionalità e prodotti.

Grazie a Paulette, Colleen, Karen, Sean ed a tutto lo staff MVP di Microsoft Corp., che si adoperano per offrirci sempre nuove opportunità e ci coccolano con le loro attenzioni quando partecipiamo agli eventi in giro per il mondo.

Ed infine grazie a Microsoft per credere in questo programma e per continuare a supportarlo.

Be an MVP, a real pleasure !