image

Introduction.

In today’s .NET ecosystem you the customer are basically digesting a lot of our new wave of products, and the on ramping can be at times a bumpy ride. As typically the products are isolated in various pockets on Microsoft.com or other areas of the Internet and at times we don’t interlace the story from end to end as well as we should or could.

The tagline for our Rich Platform story is essentially “learn once, apply anywhere” (yes Adobe now have one similar). Yet what does this mean? How does this really apply to the average developer out there in the .NET ethos?

It simply means that with your current .NET skills you can take your knowledge, code and tools and reuse them throughout our many offerings ranging from PowerShell in Windows 2008 through to Silverlight on the web.

That’s all well in good to say out loud, especially from a marketing message, but how realistic is this? How likely is this to be true?

Well, I’m going to answer this and I’m not going to do it via lip service either. I’m going to write a complete end to end solution from scratch, in that I’m going to write code that I will be able to use throughout our entire Rich Platform. It will be a complete ACME style solution that is a living breathing application as well.

I’m also going to call upon internal experts within the company (here at corporate head quarters) to help me throughout this adventure (think “MTV Real world meets Code”).

The Contract.

Just like in the old day’s pre-Microsoft, all projects would start with a contract/charter of some sort. This contract essentially outlines what both you and your customer expect a solution to look like. How much is going to be paid and when you’re expected to deliver.

Well, I’m going to draft up a contract now to the blogosphere, and in this contract I’m going to outline what this beast will look like and what it will touch upon. You the readers can decide how this looks as well as I want to keep it 100% interactive via my blog!.

The Technology.

The idea for this crazy and maybe career limiting idea was that I wanted to highlight the entire ecosystem surrounding WPF and Silverlight but in a way that interlaces a complete story. In order to do this, it had to be a complete solution from end to end, each highlighting a scenario that’s relevant to today’s .NET developer & designer. The idea has to go beyond “hello world” and into deeper insights on how to orchestrate our pieces within Microsoft together.

The pieces I’m going to cover are the following (no particular order either):

  • ASP.NET MVC + AJAX. I’m going to make full use of the new toys here, and I’m not going to apologize for it. The idea is to put the code I write here into place, and then look at ways to extend it outwards to desktop reach.
  • Silverlight. I want to also make full use of Silverlight mixed with ASP.NET AJAX and highlight points where both technologies can be used either together or where Silverlight can take over from AJAX but in a way that makes sense.
  • WPF. We’ve made a lot of effort to keep Silverlight and WPF as close to parity as possible, and so I’m keen to highlight how the same code base can be re-used through both and again, above and beyond “hello world”.
  • WinForms. This is one of the foundation successes we have here at Microsoft, and you the WinForms developer aren’t forgotten. I’m planning on making full use of WinForms as well, highlighting how one can go from a WinForms application to WPF, Silverlight or ASP.NET AJAX through relevant scenarios.
  • Windows Communication Foundation (WCF). This is a great solution and has quite a lot of power, and I’ll look to expose how great this solution is from end to end with the previously mentioned Client & Browser based solutions.
  • SQL Server 2008. Why not get into a bit of SQL Diagrams etc, as let’s face it an average developer out there may want to know a few things about how to architect their SQL Database that makes sense. It won’t be perfect, but let’s see where this ends up.

The Developer.

It will be me, sure I’ll ask others to help me throughout (internal or external) but the overall objective here is to take an average developer like myself, and put me through the paces to see where I get stuck and how to navigate around the hurdles before me. The code won’t be perfect, the architecture won’t be the holy bible of code, but overall it will have a degree of cleanliness though.

It’s about proving a point that the code can be re-used and done in a way that at the very least holds up to basic design patterns in today’s object orientated world.

I will however make mistakes, but that’s ok, as I’ll be calling upon experts within Microsoft to point them out and say things “Scott, this is why your code sucks, as you’re not doing xyz right”. Humility is a virtue that I’m going to keep strong throughout this upcoming adventure.

The Designer.

I’ve always been proud of the fact that I can do both design and code at the same time with equal skill. It freaks most people out when they see how it comes together and ego aside, it should as I’ve worked very hard to keep both disciplines up to speed with one another. That being said, I’m the designer and developer on this project. As I want to unearth how one can attack the design of an application in all of the above client & browser technologies via Microsoft.

I will also call upon some of our User Experience experts internally to give me points and tips on how one should attack design with applications, and again expose this to the entire Microsoft ethos for critic and begin new conversations around Art & Science.

The End Goal.

Knowledge. It’s simply this, I want to just take a timeout from the usual Microsoft ecosystem and invite anyone whom is willing to watch over my shoulder as I head down the path of building a complete end to end solution from scratch. I want you all to share my hurdles, pain points, frustrations and successes. I also want to invite you into Microsoft Corporate Headquarters where I can introduce you to folks whom simply amaze me daily with their intelligence and talent.

I’ll introduce you to friends on the Windows Team whom design the next operating systems UI, through to Architects and developers on the Tools teams whose job is to make our lives easier and give me tips on how to keep productive and ship at the same time.

This isn’t a 2 or 3 blog post, this is going to be a yearlong blog series and this is all I’ll work on for the next year (obviously my day to day duties put aside).

Enough talk, time to launch MS Project Nexus (msprojectnexus.com).