It's Saturday Night and I'm in still in Seattle organizing my files and doing more research about all the amazing technical info I received this week. Fortunately, there's a lot of info that I can share and write about in this blog, but the most fun part is NDA (Non-Disclosure Agreement) which is a contract of confidentiality where I accepted to keep Microsoft's top secrets to myself. So everything I will write in this post and the future ones is public information. This is my introduction to the blogging world, and as you have already guessed I am a software developer who loves Oshyn, Microsoft, Seattle, Ecuador and my ex-girlfriend (still, but it will be covered in a another blog).
What is a Microsoft MVP anyway?
Microsoft Most Valuable Professionals, or MVPs, are customers who are awarded by Microsoft for their deep technical expertise, product knowledge, continuous feedback and consistent representation of the "voice of the customer". Their contributions help Microsoft to evolve its programs and products. MVPs are thought leaders and are committed to helping others get the most out of their experience with Microsoft products and technologies". If you are interested about how to become an MVP or who is MVP in your country please visit www.microsoft.com/mvp.
What is the MVP Global Summit?
The MVP Global Summit is a multi-day event that is hosted in Seattle and at Microsoft headquarters, in Redmond, Washington. With a large catalog of deep dive sessions and a variety of social networking opportunities, the MVP Global Summit enables MVPs to connect with other MVPs, build relationships with Microsoft product managers, and provide feedback on Microsoft products and technologies.
I've been invited to attend MVP Global Summit two times before (2007 & 2008) but the last one has been the best of all. This time there were over 1500 MVPs representing 97 countries, speaking 37 different languages and covering more than 90 Microsoft technologies. This year the product and engineering groups hosted 700 sessions across 70 Microsoft technology areas. Keynotes were given by:
- Rich Kaplan, Corporate Vice President - Customer & Partner Advocacy
- Mike Nash, Corporate Vice President - Windows Product Management
- Steve Ballmer, Chief Executive Officer
- Soma Somasegar, Senior Vice President - Developer Division & Technical Leadership Panel
- Bob Kelly, Customer Vice President - Server and Tools Division
Even though I am an ASP.NET MVP I'm interested in more development topics than Web Development. It's impossible to attend all the technical sessions but this time I scored 14 technical sessions, 5 keynotes, 1 Product Group dinner, 1 Welcome Party and 1 MVP Party at the Experience Music Project and Science Fiction Museum which was awesome by the way. I really appreciate this effort and thank to the team at Microsoft that made it possible, starting with our Master Chief Fernando Garcia Loera (Latin American Region MVP Lead) and our Super Master Chief Nestor Portillo (Worldwide Director of Microsoft Community Support Services).
And you know what they say... What happens in MVP Summit, stays in MVP Summit :-) but this is my list of the top 10 coolest things I'll be following and writing about during 2009 (not ordered by relevance):
One: Windows Azure
The most recent version of Windows Azure Development Kit is January 2009 CTP, and provides developers with the tools and APIs needed to develop, deploy and manage scalable services in Windows Azure. Cloud Computing is not for everyone since there are scenarios where is not applicable, but I see an emerging market of customers delegating infrastructure operation to a third party partner because of its multiple advantages such as low costs, reliability, scalability, security and many others.
This technology is just amazing. My favorite one. Last year the Beijing Olympics was streamed using Silverlight via NBC giving live and on-demand coverage to more than 60 million unique visitors. A couple of months ago, Presidential Inauguration was streamed using Silverlight too.
During the first 4 weeks after Silverlight 2 was released, the runtime was downloaded for more than 100 million consumer machines, easily translated to one in four computers in the Internet.
The adoption of Silverlight is incredibly fast, and the next version is going to be even better. In two weeks, during the MIX there will be sessions about Silverlight 3. I'm going to Las Vegas to attend this public (non-NDA) event, so I can post everything about What's New in Silverlight 3.
If you are interested in Silverlight please visit the main site www.silverlight.net which is full of tutorials, quickstarts, whitepapers, screencasts, showcases and community forums. Also I strongly recommend to check this sample applications by Nikhil and Tess, both personal heroes of mine:
- Silverlight.FX and Silverlight Store Sample App by Nikhil Kothari
- Silverlight 2.0 Walkthrough - Creating a "Traffic Jam" game by Tess Ferrandez
Three: Microsoft Project Code Named “Velocity”
I worked for banking industry for several years. The last sentence made me feel older... and wiser. In all the banks I worked for the questions were always the same ones, and the most of them were related to our Web Applications' performance. How do I support optimistic and pessimistic concurrency models? How can I improve my quality metrics (availability, transaction response time, etc)? How can I manage the complexity of my load balancing? Always our team finished implementing our own components and mechanisms for doing this. Even though the implementation was Ok for the current scenario when business changed, the complexity of our solution increased and maintenance became a real nightmare. Also, this consumes a lot of development time and it is very hard to make the client to pay for hundreds of hours for developing a complex component to support ASP.NET high scalable applications. And so Velocity showed up.
For early adoption purposes it is available the Microsoft Project Code Named “Velocity” Community Technology Preview 2 and the Velocity Samples for this CTP.
Finally, the Velocity Team made an announcement a week ago: Velocity CTP3 is coming out soon (around MIX09).
Four: ADO.NET Data Services aka "Astoria"
A simple but a very cool idea: To create a simple REST-based framework for exposing data centric services. Data can be addressed with URIs, represented in JSON or XML formats, and you can interact with these services using the usual HTTP verbs such as GET, POST or DELETE. Also in the future it will be possible to use features like LINQ to ADO.NET Data Services to translate LINQ query statements to URIs. Awesome!
The last week has been very interesting for this project since two new releases were announced:
- Announcing ADO.NET Data Services v1.5 CTP1
- Announcing Project Codename "Astoria Offline" Alpha Preview
Even though this is a cutting-edge-I-want-to-try-this-right-now technology, please follow my advice “Don't try this at home” which means, don't use early Alpha Previews or CTPs in production environment.
Five: .Net Framework 4.0 & Visual Studio 2010
Did you say 2010 and 4.0? Yes Sir I did. So, forget 2008 it is now part of the old good times. I know that the next comment is going to make the Eclipse guys revolve in their graves but Visual Studio is by far the best development tool ever created IMHO
Right now it is available the
Visual Studio 2010 and .NET Framework 4.0 Community Technology Preview (CTP), but I suggest you to read the following considerations first:
Make space in your hard disk before download. This is a virtual machine that is 7GB compressed and about 25GB uncompressed. That's why Microsoft suggest to have at least 40GB free space in your disk and 1GB Memory for the virtual machine, and
This is an old CTP (September 2008) configured to expire on December 31st, 2008. If you want to use it now, please do these modifications (aka hack) to your .vmc file before opening the virtual machine.
That's it. Easy right? Now to start playing with the CTP I recommend you to:
- Download the Visual Studio 2010 and .NET Framework 4.0 Training Kit - November Preview
- Watch the episodes of Visual Studio in Channel 9.
- Watch the episodes of 10-4 in Channel 9.
Six: Managed Extensibility Framework (MEF)
The Managed Extensibility Framework (MEF) is a new library in .NET that enables greater reuse of applications and components. Using MEF, .NET applications can make the shift from being statically compiled to dynamically composed. If you are building extensible applications, extensible frameworks and application extensions, then MEF is for you. Official definition. It couldn't have said it any better.
I've seen a few MEF demos and I liked what I've seen so far. MEF is an Alpha release, and Preview 4 is available for download in the MEF site in CodePlex.
If you want to know more about this project you can visit the following blogs:
- Krysztof Cwalina's Blog. He is one of the authors of Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries (2nd Edition).
- Brad Abrams' Blog. Brad is also the author of Framework Design Guidelines book, and I'll be attending his Session at MIX09 "Building Amazing Business Centric Applications with Microsoft Silverlight 3" next March 18th.
- Glenn Block's Blog. I went to a presentation on MEF by Glenn and he knows a lot on this topic, although he was kind of dying because of a cold. I hope you are ok man.
Seven: ASP.NET Model-View-Controller (MVC) Framework
Wow. I don't even know where to start talking about ASP.NET MVC Framework. There's too much to say about it. Something I have noticed while looking at forums is that there's a discussion about which one is better ASP.NET MVC or ASP.NET WebForms... and this resembles me when I'm presenting a demo and ask the audience if they like it to be written in Visual Basic or C#. And people start fighting of course.
Well, here are some ramblings regarding MVC vs WebForms deathmatch:
- I don't see MVC replacing WebForms. It's just another way to develop my web applications. At the end the final product will be a Web application doesn't matter if I decided to do it either with MVC or WebForms. There's an old saying in Ecuador: "All roads lead to Rome" which is false of course, but you got the point.
- MVC is awesome, as well as WebForms. You just have to learn to appreciate the beauty of the Art in all its forms.
- Watching people discussing if I should use C# or Visual Basic for a demo is fun. I always ask, but I end up doing the demo in the two languages to satisfy the audience.
- Why does the C# vs Visual Basic discussion still exist? I mean, if I am a multilingual code-writer, I use the one I consider appropriate for the challenge.
Ok, focus. MVC right? There are a lot of complete an useful resources about ASP.NET MVC Framework all over the Internet. This is a well covered topic. But if you are starting I recommend you to go through this sites first:
- ASP.NET MVC Official Site. Downloads, Tutorials, Videos, Design Gallery, Sample Applications, Starter Kits, Blogs... all the tools of the trade.
- Phil Haack's Blog. You've been haacked, and you like it. Phil is Senior Program Manager at Microsoft focused on the ASP.NET MVC Framework. I'll be at MIX09 attending his two presentations:
- Microsoft ASP.NET Model View Controller (MVC) : Ninja on Fire Black Belt Tips.
- ASP.NET MVC: America's Next Top Model View Controller Framework
Those are the real presentation titles, I'm not kidding.
- Rob Conery's MVC StoreFront Starter Kit. Learn how to build an ASP.NET MVC application in 23 steps (video).
- Building a Contact Management ASP.NET MVC Application by Stephen Walther.
Eight: ASP.NET Dynamic Data
Had you ever thought that there must be an easier way to build applications or modules that performs CRUD operations over a data model? We have been dealing with CRUD operations since... let's say many years. In my High School I was the only geek. You can probably say it's kind of sad but it wasn't. In fact, I was probably the happier and richer guy in my class. Every month in the programming class they sent a project that was basically to develop some CRUD application. Sometimes it was an invoicing system, another times it was a customer maintenance system, but it was always the same thing: a system that allows you to create, read, update and delete a database model. There were about 20 project groups in my class and I charge everyone 50000 sucres to complete the mission. After a weekend of writing code I delivered 20 floppy disks and made one million sucres, every month. (At those times a dollar was worth about 5000 sucres, so I made 200 dollars a month for working a weekend).
At College it things were different. The projects were more challenging and the University I selected had plenty of geeks. This is how the story ends. Dynamic Data allow you to build up a fully functional Web site based on a data model. The data model by default was LINQ To SQL but you can also use Entity Framework. There's also a discussion between LINQ To SQL and Entity Framework fans, but in this case I prefer Entity Framework for some reasons that I explain in future posts.
The main concept here is that there are some kind of Web applications and modules that can be built automatically because in those cases the Model is the application. Features such as filtering and smart validation are taken from the model and can be customized in the Dynamic Data templates. You can build an application in a matter of minutes.
Nine: Parallel Extensions to LINQ (PLINQ)
PLINQ is one of the many initiatives in concurrent programming, and it's applicable by now to LINQ To Objects. Also is black box, and is extremely simple to use. The complexity is not in its use but in trying to understand what happens when running queries in multiple processors.
This is a powerful addition to boosting performance in .NET programming by taking advantage of multi-core processing. If you want to try PLINQ it is available in Visual Studio 2010 CTP and there are also a hands on lab in the Visual Studio 2010 CTP Training Kit.
If you want to keep updated on LINQ I recommend to subscribe to Daniel Moth's Blog.
Ten: Entity Framework
ADO.NET Entity Framework is a framework for modeling data entities for the .NET Framework. ADO.NET Entity Framework is included with .NET Framework 3.5 Service Pack 1 and Visual Studio 2008 Service Pack 1.
The image is the front cover of Julia Lerman's book on Entity Framework that I bought and it's coming to my office next Wednesday. I went to her presentation on EF and I decided to move to EF as my official data model for future projects for reasons I will develop further in future posts. I also am technically revising "Professional ADO.NET 3.5 with LINQ and the Entity Framework" by Roger Jennings. I have a lot to check and write in this topic.
You can read more about Entity Framework in the following sources:
- Wikipedia on ADO.NET Entity Framework
- The ADO.NET Entity Framework Overview on MSDN
- Julia Lerman's Blog
Ok, now is Sunday's evening. I wrote this post in parts while I was in my hotel room, drinking coffee in a Starbucks, in the Pacific Center in Seattle Downtown, in the Shuttle to the airport, and now I'm waiting for my flight to L.A. and there's many people here waiting for their flights but many of them are sleeping either in the floor or in the seats. I have had too much coffee lately so I don't feel sleepy at all. I hope I can write more from L.A.