Mad about .NET A blog from Jose Fco Bonnin


It's almost a life I don't write a post and now I do it to test the Amazon Widgets :S

Anyway…I’ve just ordered my Kindle Graphite, you can also get yours at:





I have recently started to volunteer as UGSS Regional Lead for EMEA.

For those who know UGSS and the RL, you will know that this is a position covered by Microsoft personnel, my case is a bit different because I agreed to volunteer during this FY to help out Sanjay Shetty who is the official responsible for EMEA and APAC.

If you do not know the UGSS I highly suggest you visit http://ugss.codezone.com, where you will be able to find more information about what UGSS does for the community.

As our manager Graham Jones already mentioned in this post, the role of a regional lead is to help user group leaders to be as successful as possible independently to which organization, if any, their user groups belong. So, if you have any question or suggestion we all will be extremely glad to help you.

In this short period as RL, I have had the possibility to be amazed for the huge amount of projects, initiatives my colleagues are involved.

I'm still landing but I'm pretty sure the community will be also amazed about the good things that are coming out of the work the UGSS does.





These last weeks have been quite frenetic for me. I've moved to a new house and before notice I was sleeping in a different house I woke up in a plane going to LA for the PDC, 3 days after I was back from the PDC I went to Amsterdam for the quarterly meetings of my company. Again after 3 days, I was in Barcelona for the TechEd. I guess you imagine how has been coming back to the office.

I must confess I'm not used to travel that much in a short time, I normally do it once a month and is more than enough for me.

The thing is now that I'm back at home and up to date with the work, at least as much up to date as I can be, I start feeling the hangover of the PDC & TechEd. They look already very far away, but I have not been able yet to digest all the cool things I've seen at both events.

I hardly believe I was able to talk in person with people I usually follow like Anders Heljsberg, Maoni Stephens or Joe Duffy.

I really don't know where to start  Windows Azure, Windows 7, Windows 2008 R2, Visual Studio 2010, Oslo, Geneva, .NET Framework 4.0, C# 4.0 ...

I'm so excited about most of the things that were announced that I would like to have more hours to check all of them.





On Tuesday I did an online webcast about the CLR. I hope the people who joined us enjoyed the event and found the contents interesting.

The event was recorded and you can download it from the Microsoft Events website (Spanish).

During the presentation I did a demo in which I was showing how we can see with WinDBG when a method has been jitted or not. We saw it for the constructor but I stopped before show it for other methods to avoid wasting too much time on the same thing.

One of the attendees has asked me today why the method was shown as not jitted even after it was clearly executed. The problem was simply that I attached WinDGB to the release version of my demo application and the JIT optimized the method replacing it by an inlined version. If I had attached the debug version this would not happen and the method would be shown as jitted. If you want to have more information about it I widely explained in a previous post about Inline methods where I used the same demo application as in the webcast.





I was commenting with friends some mistakes I found while reviewing the book Pro LINQ Object Relational Mapping with C# 2008. Despite the error's importance, it would be better that they do not appear in the book, moreover when the book must pass a technical review before be printed. i.e.

There is a paragraph that says “...one of the new features in .NET 3.0: the var keyword....” This is incorrect, the var keyword (in the context is used) does not appear in .NET 3.0, but in .NET 3.5 with the implicitly typed local variables and has a different syntax in other languages like VB. Therefore a more accurate affirmation could be “...one of the new features in C# 3.0: the var keyword....”.

Or “...the CLR is doing the heavy lifting for you by translating your queries into method calls...”. This is also incorrect since the Common Language Runtime (CLR) does not translate the LINQ queries into methods; instead each language compiler is in charge of that conversion, something that you can easily see by checking the IL and metadata generated by the compiler. This error is a bit more serious, because the reader can think it is better to use the method syntax instead of the LINQ syntax to avoid the translation performance cost during runtime, when it is not the case.

Anyway, the controversy came out when I said the author talks in the Entity Framework chapter about "Single-Table Mapping", regardless if the term is correct or not, the expression used in EF is a different one: Table-per-hierarchy. I think the author should have utilized the same term as in EF documentation. Names are very important to recognize the concepts behind them and the best is that within a context everybody uses the same, in this case the context was Entity Framework.

In my business area, credit card processing, we are sick to see how acquiring banks and payment processors use the same term for different things. i.e. Void, Reversal, Cancellation can be exactly the same operation or a totally different one depending on the company using the term, which can cause lot of confusion until you do not agree a nomenclature. Tables, views, methods, variables, classes ... none of them are an exception when you need to decide a good term. But IT world is not the only place where having the right name can help you to success, just remind the Oscar Wilde's play "The Importance of Being Earnest".  

Therefore, next time you need to select a name try to invest time enough deciding a good one that is descriptive enough, it would be better than having to waste it later on checking the documentation to remember what the term intended to mean.