A few weeks ago I was in the Telerik cafeteria at our world headquarters in Sofia, Bulgaria, and a colleague walked up to me and asked: "Is Silverlight dead?" I replied: "No, but it has seen better days."

Since Silverlight's absence from last year's Professional Developers Conference (PDC) in Redmond, WA, the infamous "our strategy has shifted" comment made by Microsoft Server and Tools Division President Bob Muglia, Scott Guthrie's move out of DevDiv, and the recent reorg of the XAML team, the community has been in an uproar assuming that Silverlight is dead. So the community has voted, Silverlight is dead and HTML5+JavaScript is the future.

First a few words on HTML5 + JavaScript

Many people in the IT industry assume that HTML5+JS is the future of software development. While it would be easy to say HTML5+JS is the absolute future of software development, HTML5+JS still has its limits coming from its roots as a rendering platform with some scripting, communication attached. While I feel HTML5/JS will be huge and have a place in every developer’s toolkit (just as HTML4+JS (AJAX) does), to build true LOB applications, you will need more power, just as you do today.

HTML5+JS is finding its sweet spot with media, interactive content apps on the web (think Google Maps) and cross platform apps for mobile devices. While Microsoft is fully embracing HTML5+JS, I can never see them making it their main development strategy; Microsoft would never cede its development strategy to a standards body or a 3rd party. Realizing this, Microsoft is going to have a development platform that embraces and extends HTML5+JS, just like .NET/ASP embraced and extended HTML5+AJAX.

I think that all of the recent focus on HTML5+JS by Microsoft is to hook the non-Microsoft developers who know nothing about Silverlight or .NET on the Windows 8 Tablet and get them building apps to compete against Android and iOS. I believe that what will evolve is that for the developer ecosystem is that HTML5+JS will primarily be used for building "apps" on the Tablet, but not for "real" line of business applications on the Web, “native” Windows, and XBox.

Is Silverlight Dead?

I will admit, when Steven Sinofsky and Co were showing off the new Windows 8 operating system and all of the HTML5+JavaScript developer hooks, I was tempted to join in the "Silverlight is dead" chorus. After some deep thought, I realized that rather than killing off Silverlight, Microsoft may have something else in store for us. If you read in-between the lines and take with a grain of salt what the blogs say, it is possible to draw some conclusions about the future of XAML and Silverlight.

One popular blog talks about a new native user interface library, DirectUI, that builds on top of the native Direct2D and DirectWrite APIs that were introduced with Windows 7. According to the blog, a new platform code named "Jupiter" is part of Windows 8 and is a "Native XAML" runtime that runs on top of DirectUI.

If the blog about the Native XAML and DirectUI/Jupiter project is true, then re-org of the XAML team makes complete sense. In case you missed the leaked news, the XAML runtime team at Microsoft is moving to join the Windows team, the XAML runtime team for Windows Phone 7, Xbox, and browser plug-ins is moving to the Windows Phone 7 team, and the XAML tools team will remain in the Microsoft developer tools division.

To me, this looks like Microsoft doubling down on its XAML strategy, not abandoning it. By putting the XAML runtime team under Windows, Microsoft is making XAML part of the core operating system. This is huge. Anything included as part of the Core OS is treated as royalty inside of Microsoft. It also means that any XAML based application (either in WPF or Silverlight) will run natively as part of Windows, opening up the door to even faster performance. (History buffs may recall that this was the original vision of XAML, aka Project Avalon, that was presented at PDC 2003. Better late than never? ;))

The Future: Native XAML

I see XAML as a native part of Windows 8, Internet Explorer 10, Windows Phone 7, and Xbox- the common thread that unifies development for the Microsoft stack, even more so than .NET (which does not fully run on all of these platforms) If HTML5 gets fragmented, as it surely will, I can one day even see a native, hardware accelerated runtime of XAML being released for the Mac (there already sort of is one), Android, iOS, and maybe even Linux sometime in the future.

Notice that I have not been saying "Silverlight" or "WPF,” but instead “XAML.” It is more than possible that WPF and Silverlight will merge into "Silverlight+" or something like that, but XAML is the star. Since the XAML runtime has moved to Windows core and is no longer part of .NET, a "Silverlight" app that is deployed on the web, can run natively on Windows and take advantage of the local system and hardware, blurring the difference between WPF and Silverlight. It’s a natural evolution since the WPF and Silverlight teams at Microsoft were really one big team at this point.

Since the Silverlight brand is popular and has a cool name (something Microsoft never seems to do), I have a feeling that Microsoft will leverage the Silverlight brand when releasing "Jupiter". I expect to see one native XAML runtime and development environment ship as part of Windows 8, effectively merging WPF and Silverlight.

I don't see Silverlight as being dead, but rather reborn bigger and better. Instead of being its funeral, the Build Conference will be Silverlight and XAML's graduation party.

At Telerik, we are also going to double down on our XAML strategy. Since the beginning, we have always had only one XAML team with one XAML code base, so our WPF and Silverlight share the exact same codebase and our Windows Phone 7 tools are a subset of that codebase. We see Native XAML as a massive opportunity and will continue to support our XAML tools now and in the future. We’ve recently released a beta of our XAML controls that features a Persistence Framework and DataServiceDataSource as well as some spectacular Data Visualization controls. Our XAML tools, including Windows Phone 7, will ship the Q2 release later this month. We have our Q3 release scheduled later this year which should include some great new charting capabilities, new DataSource controls, and a ZIP compression library.

We will continue to make improvements to our XAML tools, including our Windows Phone 7 controls and our Facebook application, telerik fdeck, built on top of WPF and look forward to Native XAML’s long future.

Next week I will be headed to Atlanta, Georgia, for my 10th TechEd North America, and my 21st TechEd of my career worldwide. I will be doing three breakout sessions this week, all on the agile methodologies.

There are over 200 sessions at TechEd, however, my Agile Estimation session, so popular last year at TechEd Berlin, will be live streamed, so if you can’t join me in Atlanta, join me on the live stream, it will be fun. Here are all of my sessions.

When I was at TechEd Europe in Berlin last November, I sat down with my old friends from DotnetMania in Spain and chatted about Telerik, the cloud (I pimp SQL Azure besides Windows Azure!), developer tools, and also what it means to be a writer (first magazine articles then blogs) and speaking at conferences. I also explain what a Chief Strategy Officer is (I get that a lot) and have a great conversation about R&D and entrepreneurship.

Pay attention, I tell how and when I made the move from VB to C#. It is a bit geeky. I also touch on the HTML5 v Silverlight debate (which was a hot topic back last November.) We finish up with a walk down memory lane to dispel the hype that we will “write once, run many” with HTML5.

Windows 7 and Silverlight make for a fantastic platform to build and deploy applications. Together, you have the power to build smart, visually stunning applications that truly light up. Want to learn how to take advantage of your desktop OS using Silverlight? Want to learn some Silverlight programming techniques? Want to dialog about some Silverlight Futures? Join us for a full day of Silverlight with a special emphasis on out-of-the-browser applications.

Session One – Silverlight on Windows Fundamentals - Get an introduction to the basics of working with Silverlight. We’ll cover how to create and lay out a user interface using XAML, and examine the rich control set for building applications. Then we’ll look at coding with C# and Visual Basic, as well as the cool things you can do without writing code using features like behaviors and data binding. Finally we’ll look at how to continue your learning with an orientation to the numerous resources available today for learning more Silverlight.

Session Two – Empowering Line of Business (LOB) Applications on Windows - Line of Business Applications (LOB) are all about adding value to the business and helping it run at full capacity. In this session you will learn how to take LOBs to the next level. We will discuss full trust, out of browser scenarios, SharePoint integration, RIA Services and more. We will also discuss the basics of the MVVM pattern that will simplify the way you develop applications today. After this session you will have all the tools you need to make your Line of business applications stand out on Windows.

Session Three – Creating Interactive Windows applications using Media and Touch - You’re a developer, not a designer, but in recent years the media side of development is getting more intense. How can you keep up? A basic understanding of Expression Blend, Silverlight 4 and Microsoft Pivot, which you’ll have by the end of this session, will get you farther along this path than you thought possible. Start leveraging the power of Multi-Touch, Video and Data Visualization to create engaging experiences that will light up on Windows.

Session Four - Building RAD Silverlight Applications using LightSwitch - Visual Studio LightSwitch is a new development tool (currently in beta) for building business applications. LightSwitch simplifies the development process, letting you concentrate on the business logic and doing much of the remaining work for you. By using LightSwitch, an application can be designed, built, tested, and in your user’s hands quickly. Come explore LightSwitch for forms-over-data applications in a rapid application development fashion.

Session Five - Light up your Silverlight Apps for Win7 using Native Extensions - Learn about a new toolkit called Native Extensions for Silverlight (NESL) , which provides Silverlight friendly hooks to a number of native Windows 7 features you can use in your Silverlight applications. The libraries make it significantly easier to leverage Windows 7 from Silverlight. The libs also help with lighting up a Silverlight application with a minimum of effort for Windows 7 with items like jumplists and icon overlays. Learn “how-to” with special rigging-it-up sessions on video capture, speech, and Win7 features like jump lists, icon overlays, taskbar progress and more!

Session Six – Silverlight Futures - This session will highlight the compelling features coming in Silverlight 5. With tighter integration with Windows APIs, full trust operations, XAML debugging, and support for a 64 bit browsers, you’ll see how Silverlight continues to be the dominating platform for building rich Internet and Windows applications.

At the end of each year we have time to look back and reflect on the year before and think about the year ahead. 2010 was once again a challenging year for Telerik as well as our customers. The economy continues to be stubborn in many parts of the world. Microsoft released new versions of .NET and Visual Studio that we had to be ready for. Silverlight 4 was released, then pronounced dead, then alive again, then Silverlight 5 previews were shown. Even Mother Nature in April gave us trouble; the eruption of Mt. Eyjafjallajökull in Iceland stranded over a dozen of our employees, including our CEO, on three continents. (Don’t feel too bad, some of them were stranded in Las Vegas!)

Looking back, 2010 was also a year of growth for Telerik. Our team grew very rapidly with lots of great new hires-we are already outgrowing our new office building in Sofia. We added two divisions (Testing and Team Productivity) and two offices (Austin, Texas and Winnipeg, Canada.) We added many new products including: Windows 7 Phone Toolkit, JustCode, JustMock, TeamPulse, and had major upgrades of some existing products such as our Web Testing Framework, OpenAccess’ LINQ implementation, and the SiteFinity 4.0 release candidate. In partnership with Microsoft, at the Silverlight Firestarter a few weeks ago, Scott Guthrie announced our release of a great reference application for Silverlight: f!acedeck. (We are proud of the work we did on f!acedeck, so give it a try!)

In 2010, Telerik reached more customers at events this year. Our team traveled to all four corners of the globe to visit customers. For example we had speakers and booths at five TechEds in the USA, Europe, Australia, India, and Brazil. We sponsored major events in North America, South America, Europe, Africa, Asia, and Australia, visiting customers in some familiar places (such as Las Vegas) and some new ones (Brazil and Hong Kong). Besides the big events, we also sponsored and spoke at several CodeCamps, user groups, and other events around the world, including DevReach in our own backyard. Our evangelists and marketing teams would even travel to Antarctica to visit customers!

Looking forward to 2011, we hope that the world economy and the general business climate improve. We have some great releases of our products planned, such as SiteFinity 4.0 in January and our Q1 2011 release in March. We have a brand new product that is currently top secret, but you’ll get a preview of it soon. We also plan to open some more offices worldwide as well as attend and sponsor even more events. We are hitting the ground running in 2011, we are putting on an event in Pune, India in January.

We hope to see you in person in 2011 since we do this all for you. I want to close by thanking all of you, our customers, for your dedication and support. Happy New Year!

I recently wrote a piece in DevProConnections on the recent advances in ORM technologies. While I am still not a complete convert to ORMs, I think that they can play an important role in your application development toolkit. As time progresses and we abstract the database even more, ORMs will become more and more common. You can read the piece here.

Microsoft has made two interesting announcements this summer: one is the WebMatrix initiative and other, made yesterday, is Visual Studio LightSwitch. Both have driven developers to the point of dogma over the role of these tools.

WebMatix, along with IIS Express and SQL Server Compact Edition, is a tool aimed at the geeky hobbyist or college kid in their dorm wanting to make a web application, or dad wanting to build a web site for the youth soccer team. As part of WebMatrix there is ASP.NET Razor, a new streamlined ASP.net view engine, making it easier to mesh C#/VB and HTML. Let’s be clear, WebMatrix is not targeting the professional developer. To quote from Scott Gu’s blog:

If you are a professional developer who uses VS today then WebMatrix is not really aimed at you - at least not for your "day job". You might find WebMatrix useful for quickly putting a blog on the web or doing lightweight scripting on the side. But it isn't intended or focused on hard-core professional or enterprise development. It is instead aimed more for people looking to learn how to program and/or who want to get a site up and running on the web without having to write much code.

Ok, glad that we cleared that up. ;) Well, the story goes on. As part of the WebMatrix stack Microsoft made some updates to the Microsoft.Data namespace. It was announced on this blog here and started a debate. One group on the blogs and Twitter, lead by Oren Eini, was very critical of the new Microsoft.Data. I can sum up the online debate like this:

Developers: Wow, are you crazy! SQL is dead, ORMs will inherit the earth. These changes should have come in .NET 2.0, not in 2010!

Microsoft: Yes we get the ORM thing. The changes to Microsoft.Data are for WebMatrix and beginning developers. If you have already used ORMs and implement best practices and patterns, great, keep going, these changes are for a different audience.

On top of all of this, yesterday, Microsoft released Visual Studio LightSwitch, beta1. LightSwitch, formally known as Kitty Hawk, is a RAD tool targeted at the non-professional developer who wants to build line of business applications.

Professional developers are like: Why do I need WebMatrix? Or LightSwitch? Some debates have even gotten downright nasty. The answer is, WebMatrix and LightSwitch are not for professional developers! (Or the changes to Microsoft.Data.) A newbie at home or a college dorm would use WebMatrix to build a web site. A geeky guy in a corporate job would use LightSwitch to build a business application. This is a good thing.

What Microsoft is doing is building a bridge to .NET and professional development. Without any formal computer science training, I was once this target market. For example back about 18 years or so ago, I was a hobbyist hacker in my dorm room discovering PCs. (If that were me today, WebMatrix would target me, however, 18 years ago there was no web. <g>) About 16 years ago when I graduated university, I was that geeky guy in corporate who needed to build a line of business application. (If that was me today, LightSwitch would target me.) I used Lotus Script and 1-2-3, FileMaker Pro, and Excel and Access. Eventually I taught myself some VBA and not to long after I “graduated” to VB, when VB 3.0 shipped the database compatibility layer (ok I am now dating myself!) Fast forward a few years later to VB 4.0 and 5.0 and I made the jump from a hacker geek to a professional developer. A few years later when .NET came out I was well into my professional developer career.

The problem is that there is no bridge today to .NET. Back in the mid-1990s, there was a bridge from hacker/corporate geek to professional developer: VBA. If you built some advanced formulas in Excel or some forms, reports, and database logic in Access, you would usually hit a wall and have to learn some VBA. This is in addition to your day job, you know, as financial analyst or credit adjuster. Along the way, you may realize that the coding thing is really your game, not your day job. That happened to me. Today there is no bridge and there hasn’t been for years. WebMatrix and LightSwitch are an attempt to build that bridge. I just hope that the professional developers today realize that.

Just as BMW has entry level cars, even completely different brands like Mini for one market segment, and the turbo charged hand made engine M series for another, Microsoft is segmenting the market, trying to build a bridge to .NET. I hope they succeed.

Want to learn about TFS 2010 by doing nine application lifecycle (ALM) labs? You can download a Virtual Machine from Microsoft that has a full version of Windows and Visual Studio 2010 Team Foundation Server including nine labs. You can download it as Hyber-V, Windows 7 VPC or regular “old school” VPC. The VPC will not expire until Dec 31, 2010, but Microsoft promises to release another one before then.

Tuesday Microsoft released WebMatrix. WebMatrix and its supporting technologies (IIS Express, SQL CE and the new ASP.NET “Razor”) is a new free tool from Microsoft for web development. It is a lightweight IDE (not Visual Studio) that provides coding and database support. You can use WebMatrix to select from an open source web application gallery (WordPress, CRM, e-Commerce platforms, etc) to start your application template from. Lastly, WebMatrix makes it easy to publish web sites to web hosting providers (or even help you find one if you don’t have one).

Microsoft is not targeting me, or most of you (professional developers) with this new product. Clearly Microsoft is targeting the students, hackers, hobbyists, and Facebook application developers. The issue is that today most of these developers are using the LAMP (Linux, Apache, MySQL, and PhP) stack. WebMatrix is an attempt to lower that price barrier (all of WebMatrix is free) and level the playing field. The question is will it work?

Ten years or so ago, I would say no, this would not work, Microsoft was the bad guy. Today the perception has changed and Microsoft is perceived as “big corporate” but not the bad guy. Developers look for cost and innovation when deciding what platform to use. LAMP has a huge head start, but Razor makes coding .NET for WebMatrix pretty easy and the template engine allows you to base your application off another’s API, a huge head start when building something custom.

Will Microsoft succeed in winning over mindshare from the LAMP stack? I don’t know, but now they have a fighting chance.

This is a book about the fundamentals and advanced features of the C# language. Mark does a great job laying out the concepts in a clear and concise way, with great examples and engaging prose. If you are new to C# you should make this the first book you read and read it cover to cover. If you are an advanced programmer, or even an old timer like me who has been using C# for 10 years since the beta, reading it will make you a better programmer.

The book is not just a rehash of the user manuals and new features of C# 4.0, rather is it a well thought out guide to using the language. That said, I learned much more about the new features of C# 4.0 here than anywhere else. By reading this book I now understand the underlying structure of dynamic typing and parallel programming much better. I highly recommend it to both beginner and experienced developers.

I’ll be speaking at the Office 2010, SQL Server 2008 R2, SharePoint 2010, and PowerPivot launch event next Thursday at the Conrad Hotel in Central, Hong Kong. This will be a unique event, we have a special skit planned revolving around the World Cup and located at: Starbucks, a florist, a local Hong Kong pub, and the airport. All of the cool technology will be on display!

I’ll be demoing mostly PowerPivot and SharePoint and my role is a New Yorker, so no need for me to act. :)

If you would have asked me 5 years ago which company, Apple or Microsoft, would have released a mobile phone that was super popular and got most of its success from a great developer ecosystem of 3rd party applications, I would have said Microsoft in a heartbeat. The reason is that traditionally Apple has been pretty “closed” and Microsoft always relied on 3rd party software developers, like myself, to build compelling applications for its platforms.

The Mac was a “superior” operating system than the early versions of Windows, however, Windows won the battle for supremacy (and still is winning with well over 90% market share). The reason why is that Apple was outright hostile to 3rd party software developers and Microsoft courted them. Building a developer ecosystem is in Microsoft’s DNA and clearly not in Apple’s.

When the iPhone SDK shipped, the tables were turned. Apple is now depending on 3rd party developers for continued success of its iPhone (and iPad). With the most applications, the iPhone is well ahead of the pack. Google’s Android market, with 30,000 apps, is far behind in second and Microsoft Windows Mobile is an also ran.

This week at the Mix conference, Microsoft announced the development platform for Windows Phone 7. Building apps for the new Windows Mobile 7 phone is super easy: Silverlight + Visual Studio is the primary way to do so. Last time I googled, there were about 5 million .NET developers worldwide, so Microsoft gained 5 million developers in the mobile phone wars.

So the question is: Can Microsoft out Microsoft Apple? Being a Microsoft watcher, I know that this is in Microsoft’s DNA and that Apple is a recent convert, so I would say that Microsoft does have a good shot. I would much rather code in Silverlight than Objective-C, the (painful to use) development platform for the iPhone. Let’s take a look:

Pros for Apple:

Best selling Smartphone on the planet

Apple “coolness”

Cons for Apple:

Developer outreach is new to Apple

Objective-C is not a developer friendly platform

Pros for Microsoft:

Developer Outreach is in their DNA for 30 years

Silverlight is an easy to use, modern developer platform that is already popular with 5 million developers

Cons for Microsoft:

New to the “cool” Smartphone game

Lack of “cool” credibility with consumers

Where will this all go? Apple certainly has a *huge* head start. Microsoft has its work cut out for it, however, over the last 15 years I have watched Microsoft be counted out before and succeed-they work best when they have their backs against the wall. Let the battle begin!

Prediction #1 for 2009: Windows 7 will ship and it will not be a flop.

Not the boldest prediction, but hey have to start off with an easy one to build credibility. :)

Prediction #2 for 2009:C# innovation along the lines of the DLR

I said that Microsoft has the “second mover advantage” where they innovate based on what is already going on in the marketplace. Last year I predicted that C# will continue to evolve based on what is going on in Ruby. I think that when you look at C# 4.0 and the support for the DLR you will see this as being true and will continue moving forward.

Prediction #3 for 2009: MVC will have low adoption

I have no way to gauge how popular MVC is, but it is more popular than I thought, so I clearly got this prediction wrong. I think that MVC is good technology, however, overkill for some classes of application.

Prediction #4 for 2009: Marketing Hype around Azure

I thought that the Windows and SQL Azure marketing engine would go into full swing in 2009. I was wrong, but we will see it go into full swing in 2010.

Prediction #5 for 2009:The LINQ to SQL users will feel betrayed

I thought that the LINQ to SQL users would reject the Entity Framework and start a movement for Microsoft to support LINQ to SQL. Back when I wrote this prediction, Microsoft recently announced that LINQ to SQL was being passed over in favor of EF. Wrong again, no petition.

Prediction #6 for 2009:I poked some fun at Alt.net

I would say that while this one prediction was meant to provoke (and provoke it did!) it also had the theme that alt.net would evolve into a mature voice for their way of thinking. This is true since alt.net has been engaging in dialog and contributing to the community.

In summary I did not do all that bad. We’ll see how well I did in 2010 next year at this time.

A few days ago I started to made some predictions on the future of .NET for 2010. I said 2010 will be remembered as a “tipping point” year for three things in the Microsoft space. I am not saying that on December 31st, 2010 you will sit back and say I am right on all of these, but I am saying that by December 31st, 2011 or 2012 you will. That said, 2010 will be the tipping point for:

Moving beyond .NET

Business Intelligence for the masses

The Cloud

Earlier this week I spoke about Silverlight and the future of .NET. Today I will talk about BI.

Business Intelligence for the Masses

There is an insatiable demand for BI in the marketplace, yet few developers “get” BI. When I talk to CIOs of large companies about their software needs, they always say to me “do you know anyone who does BI?” BI is seen today as something that end users want more and more of, but IT departments are having a harder and harder time actually delivering. BI is considered complex and expensive.

Later this year (I suspect at TechEd US in June), Microsoft will launch SQL Server 2008 R2. This version of SQL Server is focused mostly on BI and along with PowerPivot will deliver “Self-Service Business Intelligence.” I have written about PowerPivot before on this blog, but in short it allows users (or developers) to connect to a data source (or data sources) and download data, take it offline in their Excel spreadsheet, slice, dice, and manipulate the data how they see fit, as well as create very powerful Pivot Tables and Charts in seconds. PowerPivot ships with a data engine as part of your workbook, so you can have a self contained OLAP cube inside of your XLSx file. It compresses super well, but you don’t have to email it, PowerPivot also integrates nicely with SharePoint for collaboration with your co-workers.

Let me be clear, this is game changing technology. Out of the box data visualization tools are complex and clunky (and expensive!), so we force ourselves into Excel for BI. Microsoft has done something brilliant, they have taken the world’s number one BI client (Excel) and taken off the training wheels.

While end users may not be able to build OLAP cubes or write TSQL queries like I did in this PowerPivot example, SQL Server R2 and PowerPivot drastically lower the barrier to entry for BI development. (Note, PowerPivot works for many databases, not just R2.) Developers will spend time building the Data Warehouse and ETL on the back end and setting up simple queries in PowerPivot on the front end and the users will then turn and build amazing drill downs and pivot tables and charts. A golden age of BI development will begin where BI apps are simple and plentiful, including “Self Service”. While 2010 will not be the year where we reach this, we will look back at 2010 as the starting point of the golden age of BI.

Happy New Year! Keeping with tradition, here are some predictions for 2010 in the Microsoft Software space.

2010 will be remembered as a “tipping point” year for three things in the Microsoft space. I am not saying that on December 31st, 2010 you will sit back and say I am right on all of these, but I am saying that by December 31st, 2011 or 2012 you will. That said, 2010 will be the tipping point for:

Moving beyond .NET

Business Intelligence for the masses

The Cloud

Today I will look at the first item and tomorrow I will talk about BI and the Cloud.

Moving beyond .NET

Here are some no brainer predictions. Visual Studio 2010 and .NET 4.0 will ship and a lot of developers will be happy. Microsoft will also be happy since adoption will be high. Here is the not so obvious prediction: 2010 will be the year where .NET begins its decline and its replacement starts to shine.

Huh?

Let’s face it, .NET is old. This summer will mark 10 years since its debut at the 2000 PDC. It’s been in production for 8 years. That is like a century in computer time and a millennium in Internet time. Billy Hollis put it in perspective for me a few weeks ago at dinner: more time has passed since .NET 1.0 to today than between VB 1.0 to VB 6.0. VB 1.0 was introduced in 1991. VB 6.0 was introduced in 1998. That is 7 years. .NET shipped officially 8 years ago in February 2002. (This also means that I have been coding longer in C# than VB, but I digress...)

Second .NET is “hard”. What I mean by hard is that the framework has bloated: there are too many namespaces, too much “legacy”, and too many ways to do the same thing and we have lots of conflicting advice on what “pattern” is the best. Developers are confused if they should use ASP + AJAX or MVC or something else. They are also scared that if they build an app they will be mocked on the latest “expert” blog saying that their implementation of the MVVP pattern is a newbie mistake and they should follow the MVVQXDP pattern. Java and LAMP are no better. PHP on the other hand, once left for dead, is back with a vengeance. Why? It is easy, just like ASP classic. At the end of the day developers just want to get apps written with ease.

While Silverlight looks and smells like .NET, in reality is not. Ever try to use ADO.NET in Silverlight? Do something with data access that is not asynchronous? Silverlight is its own framework that borrows a ton from .NET, but itself sits just outside the full framework.

Silverlight will continue to evolve into a rich media, cross platform web based application platform with the release of Silverlight 4.0. While 2010 may not be remembered as the year of great Silverlight adoption, SL 4.0 will be remembered as the tipping point, much like VB 3.0 was for the Visual Basic platform. Speaking of VB 3.0, VB 3.0 did not get popular until the “database compatibility layer” shipped. (Wow I am dating myself here!) With VB 3.0 + the “database compatibility layer” or in reality, the JET database engine and DAO, VB moved from being a “toy” to a full fledged programming platform for business. When the db compatibility layer shipped for VB 3.0, adoption was not immediate, but when you look back, it was the one thing that started the VB revolution of building line of business apps.

RIA Services is Silverlight’s database capability layer. Just like Jet and DAO made it easy for a developer to connect to databases, perform CRUD operations, data bind, validate, and do it fast without complicated libraries, RIA Services will allow you to do all of that easily in SIlverlight. Silverlight 4.0 and RIA Services will ship this year, most likely sometime before the summer. I don’t think that at the end of 2010 you will be saying “this was the year of Silverlight and RIA Services” but in a few years when all we do is Silverlight you will remember Silverlight 4.0 and RIA Services as what started the Silverlight revolution in building line of business apps. Purists will say that RIA Services is not elegant and continue to code things manually. That is ok, purists mocked VB too, but just remember that for most of the 90s, VB ruled LOB apps in the enterprise.

You maybe thinking, Silverlight to replace .NET? But it is too close to .NET and has lots of .NET interop, etc, in order to work. (For example, to have RIA Services work you need a .NET server with WCF and EF 4.0, etc.) That means that .NET will be around forever! Well yes and no. Remember back to .NET 1.0, we had to use COM Inerop a lot to get a lot of things done. Or .NET wrappers for Win32 stuff. Not until .NET 2.0 (its 3rd release) did we really develop “pure” .NET applications.

Silverlight will continue to evolve and due to the influence of Ruby (as well as Rails), you will see more dynamic language support and DSL capability built into Silverlight moving forward. In the not too distant future you will start to build your XAML with a DSL: “give me CRUD screen connected to the Customer entity.” Then you will start to use DSLs to build your application’s business rules, workflow and control flow. After that you will build you application’s own meta-language, the equivalent of an API, allowing others to hook right into your application’s logic. What will this DSL/dynamic language be? IronRuby? Something from Oslo? I am not sure. That will be in my predictions next year. :)

With long travel delays due to snowstorms and terrorism, I got to catch up on some of my reading. One book I read over the break that stood out was an unexpected one: Essential Silverlight3 by Ashraf Michail. I say it is an unexpected one since the book is not about building business applications with Silverlight so you won’t see a chapter on MVVM or using WCF and asynchronous services. What you will see is a discussion of the internals of Silverlight, the guts of a ZAP file, and how media, layout, text, input, data binding, and the like work.

You maybe thinking, “I am a developer, I don’t care about vector graphics!” I thought the same but read the book anyway and learned a lot about how Silverlight works and how to best debug and performance tune an application. Maybe I am biased since I work at a company that has to know all of the details of the .NET framework to make our products work, however, I think that every developer should take a look “under the hood” and see how Silverlight works.

Ashraf has a very engaging writing style and the book is a quick read, I read it over the course of two or three days (on airplanes and in airports!) He breaks down the chapters really nice and the last part of each chapter is called “under the hood” where you learn something about the internals of Silverlight. I must admit that I did skim some of the advanced material about animations and wrote a note to come back to it if I need to, but the chapters on vector graphics, GPU acceleration, the Silverlight application architecture, and data binding were truly fascinating and will help me with all of my business applications.

If you are new to Silverlight this is the first book you should read, then pick up a book on building applications with Silverlight. If you have been using Silverlight for a while and want to take your development to the next level, read this book as well-epically the “under the hood” sections.

Lastly, if you use Silverlight in a Virtual PC, you will care about vector graphics!

Microsoft has released a new .NET Stories site that features real developers and their stories about building .NET applications. Sure the site is a marketing site, however, it is pretty cool since the stories are true and very varied. There are stories that integrate SharePoint, SQL Server R2 and Win7.

I spent some time reading over the case studies and watching the videos and some of the apps blew me away. What is cool is that Microsoft is looking for more. You can submit your .NET app to a contest and get a chance to win a 12-day Galapagos Islands trip or a Smart Car! You can also get featured on their wall of fame.

Having been to the Galapagos, I can tell you, this is an amazing offer. If you are selected, Microsoft may even take your photos and dress you up as Dr. Efficiency, or something like that.

I have been using Microsoft “Oslo” for some time and have been pretty excited about the ability to model an application and store it in the repository. Other developers have also gotten very excited about the ability to create domain specific languages (DSLs). DSLs are cool, because if you build a DSL on top of your application, you can abstract away some of the hard to understand stuff. You can also put in a layer on top of your standard communication (DALs, web services, etc.) For example, let’s say you work at Expedia and you want to give your providers (the airlines) a way to enter flight data to your site. You will most likely have a data entry screen with lots of boxes and drop downs. An alternative of course is a Web Service as well as a CSV text import. But another alternative is to provide a DSL, so if someone wants to go in and make a quick change, they can type:

This is one area where you can use Oslo with .NET today-you can call the M DSL DLLs from .NET and perform the transformation in C# or VB. The problem is that the M Value format is difficult to work with in .NET; parsing the M values can be a challenge.

Mehfuz Hossain over at Telerik built a LINQ Extender available on codeplex. Building on top that, Telerik has released a LINQ to M implementation. It is pretty easy to use. After you download it and set a reference to it in your application, you then use standard LINQ statements against M Values.

For example, let’s say that your application has some M values that looks like this:

1: {

2: {Id=1,Name=""Stephen Forte"",Age=37},

3: {Id=2,Name=""Mehfuz Hossain"",Age=29},

4: {Id=3,Name=""Vassil Terziev"",Age=31},

5: {Id=4,Name=""Nadia Terziev"",Age=27},

6: {Id=5,Name=""Chris Sells"",Age=37},

7: {Id=6,Name=""Todd Anglin"",Age=27},

8: {Id=7,Name=""Joel Semeniuk"",Age=37},

9: {Id=8,Name=""Richard Campbell"",Age=42},

10: {Id=9,Name=""Kathleen Gurbisz"",Age=31}

11: }

You could have gotten this M code from the results of a DSL or some other process. For our purpose, we will just put it into a constant and query against it:

conststring MGraphCode = @"

{

{Id=1,Name=""Stephen Forte"",Age=37},

{Id=2,Name=""Mehfuz Hossain"",Age=29},

{Id=3,Name=""Vassil Terziev"",Age=31},

{Id=4,Name=""Nadia Terziev"",Age=27},

{Id=5,Name=""Chris Sells"",Age=37},

{Id=6,Name=""Todd Anglin"",Age=27},

{Id=7,Name=""Joel Semeniuk"",Age=37},

{Id=8,Name=""Richard Campbell"",Age=42},

{Id=9,Name=""Kathleen Gurbisz"",Age=31}

}";

Now you need to load the M code into a QueryContext object so you can work with it in LINQ:

1: var personM = QueryContext.Instance.Load(MGraphCode);

There is not a ton you can do with it just yet, but you can bind it to an ASP.NET data grid:

1: GridView1.DataSource = personM;

2: GridView1.DataBind();

This alone will save you some time, but if you want to do typed queries and have the cool IntelliSense experience, you have to strongly type your LINQ statement. To do this, create a class that has the same shape as your M data, so we will create a Person class:

1: publicclass Person

2: {

3: publicint Id { get; set; }

4: publicstring Name { get; set; }

5: publicint Age { get; set; }

6: }

Now it gets fun. Let’s create a simple LINQ statement that will query just the 37 year old people not named Joel Semeniuk:

1: var persons = QueryContext.Instance.Load<Person>(MGraphCode);

2:

3: var result = from person in persons

4: where person.Age == 37 && person.Name != "Joel Semeniuk"

5: orderby person.Name ascending

6: select person;

This will return just Chris and Stephen. You can see that we are using the standard LINQ statements FROM, WHERE, ORDERBY, and SELECT. (Hey wait a minute, aren’t those SQL operators, but I digress…. )

Let’s do some aggregation, this query will aggregate a list all of the ages and count how many people are that age, but we will exclude from our query any age that only has one person:

1: //Using a Group By and SUM

2: var result1 = from person in persons

3: group person by person.Age into g

4: where g.Count() > 1

5: orderby g.Count() descending

6: select new { Age = g.Key, Count = g.Count() };

Your results will look like this:

Age

Count

37

3

31

2

27

2

Lastly, just for the true geeks, here is how to use a LAMBDA expression:

Mehfuz and I are pretty excited about this. There are some limitations; the M Values that you pass in has to be shaped without a name as you can see above. (Don’t worry we will change that later on.) But what you can do so far is pretty darn cool. Enjoy and drop a comment to me or Mehfuz about what you want to see in the next release.

Happy New Year! Here are some predictions for 2009 in the Microsoft Software space.

Windows 7 will ship and not be a flop

Microsoft has to counter Apple and the Vista mess. We are expected to get the first and only beta of Windows 7 this week. I am going to go out and say that Windows 7 will ship in time for the holiday rush at the end of 2009. It will be successful and have an Obama effect, promising change and not being the other guy (Vista).

Microsoft will continue to innovate C# and the CLR based on what Ruby does

I gave up trying to predict what Microsoft will do by listening to them at the PDC (anyone remember Hailstorm? WinFX?) and playing with betas.It is far easier to predict what Microsoft is going to do based on the actions of others. Microsoft is a reactive company, not a proactive company. The joke in vendor community is “First Microsoft tries to steal it. If they can’t steal it they try to buy it. If they can’t buy it, then they try to copy it.” While this is a cheap shot (and also accurate), there are merits to Microsoft’s strategy. They are never the first mover to anything and therefore don’t suffer from the mistakes of the first mover and can build innovative technology that is responsive to the marketplace. In business school they call this the “second mover advantage.” It seems to fit Microsoft well, they are one of the most profitable companies on the planet and I don’t expect them to change this strategy. If you want accurate predictions on .NET 4.0, 4.5, and beyond, check out what is going on in the Ruby and RoR projects.

ASP .NET MVC Framework will ship and have a very low adoption rate

How low? Both guys will leave a comment on my blog.

The marketing hype around Azure will be equally annoying as the marketing hype around “.NET Web Services” in 2002

Enough said.

LINQ to SQL Fans will start a petition to bring it back from the dead

Anyone still think that Linq to SQL is not dead just because it is in the framework? The VB 6 runtime is part of the Operating System and it is dead. (PS-Don’t mistake my saying L2S as being dead as an endorsement for the EF. I will follow up with a blog post later on this topic)

The Alt.NET “movement” (have you ever seen developers move?) will kick out Scott Bellware

Most of the alt.neters are guys who just want to write code and want Microsoft to support their way of working (BDD, TDD, DDD, etc) with better tooling and support for non-MS stuff (nHibernate, etc). Scott Bellware, who recently called .NET developers “stupid” while admitting that he doesn’t even code in .NET anymore, is a bad face for this group of people. Expect to see an Alt.net Vote of No Confidence pop up this summer….

Yesterday I showed how there are some new language constructs in TSQL that will be very familiar to C# developers. I will be doing three talks on TSQL next week at TechED Developers in Barcelona and the talks are designed for application developers. (But database geeks will enjoy these sessions as well!) If you write any TSQL code in your applications today, or interact with it, these sessions will give you some advice and help change the way you approach particular problems.

Today I want to show a new feature about using Table Valued Parameters (TVP) in a stored procedure and then calling it from an ASP .NET page or any other .NET client using ADO.NET. A TVP is new in SQL Server 2008, so you can now declare a type of TABLE, insert data into it, and then pass it to a stored procedure. Have you ever passed in a CSV string to a DAL or stored procedure or even an XML data type, then parsed it and executed some SQL? TVP will eliminate that. Here is an example:

First create a new table for us to play with:

CreateTable TVP_TEST

(Field_ID intprimarykey, Field_DESC varchar(10))

Next create the TVP by declaring a new type. Notice that I have created the type to be exactly the same shape as the underlying table, this is not a requirement, however, it is important to do so if you are going to be doing inserts as we do below.

CREATETYPE TVP_TESTType ASTABLE(

Field_ID int,

Field_DESC varchar(10))

Next create a variable as type TVP_TESTType and insert some data into it, insert is done the same way we would add data to a normal table. Notice that this only puts data into the variable, NOT the underlying table:

--put data into the type

DECLARE @MyTable as TVP_TESTType

--put data into the type

INSERTINTO @MyTable VALUES

(1,'Test'),(2,'Next Test')

Now you can insert data into a table very easily (remember @MyTable has to be in scope):

INSERTINTO TVP_TEST

SELECT*FROM @Mytable

To get really useful, let’s create a stored procedure that will accept as a parameter the TVP_TESTType data type and insert data into the TVP_TEST table using the parameter, notice no parsing of CSV strings, etc:

CREATEPROCEDURE usp_ins_MyTable

(@MyTVP as TVP_TESTType READONLY)

As

INSERTINTO TVP_TEST

SELECT*FROM @MyTVP

You can call this stored procedure as so, as long as @MyTable is in scope and is filled with data:

exec usp_ins_MyTable@MyTVP=@MyTable

But what is really exciting is calling this data from a .NET client. If you have an ADO .NET dataset that is the same shape of the TVP you can pass it in from the client to the server, greatly enhancing data access and batch operations.You can pass in a dataset as a parameter using the SqlDbType.Structured as its data type.

Here is some code from C#, just remember that ds is our active dataset filled with data and shaped the same way as TVP_TESTType:

I am doing a talk next week at TechED Developers in Barcelona about new TSQL enhancements for developers. The session is:

DAT313 T-SQL Enhancements in SQL Server 2008 : Getting Down and Dirty. it is Wednesday at 1:30 in room 115.

The goal of this talk is to show you some cool new stuff in TSQL but also to show C# and VB developers that TSQL is not all that bad. I get the impression that developers hate TSQL. :)

So the TSQL designers decided to add a few “delighters” to the syntax to make C# and VB developers feel more at home.

The first is variable assignment at declaration time. For example:

DECLARE @MSFT char(4)='MSFT'

Print'Using: '+ @MSFT

The next is using shortcut syntax like += or –+, etc:

UPDATE Portfolio

SET Qty += 10

WHERE Symbol='MSFT'

The addition of Table Value Parameters (TVPs) allows you to pass in datasets via ADO.NET in C#/VB as a parameter to a stored procedure, etc, will really make C# developers life easier (demo soon on the blog). Also cool integration with Google Maps or Virtual Earth and the geospacial data types will make developing apps with location much easier.

There are lots of other cool new features in there for developers, I will post some more on the blog soon.

I have been a fan of the cloud since Amazon first released its first APIs. We have been waiting for Microsoft to enter in the cloud space and we have been seeing some stuff drip out over the last year, Astoria (while not cloud, it is a RESTful service that allows us to be cloud ready), Live Mesh (which people confuse as a consumer offering, but actually is a development platform), and SQL Server Data Services (SSDS).

Last week at PDC, Microsoft spoke abut Windows Azure, its cloud services platform. It will consist of web application and service hosting, .NET Services (basically the BizTalk services stack), storage, and data services (SSDS, or now just SDS). Some developers at the PDC were like “this is like the ASP model ten years ago, Azure is doomed to fail.” So the question is, will Azure succeed where the ASP model failed?

The ASP model was about a generic application hosted by an ISP and sold as a service to you. Picture instead of using ADP for your accounting software, you would log onto the ADP web site and use it as a service. This model did not completely fail, but it did not deliver on its mission. It was also a lot of .com hype and about 10-15 years ahead of its time with both the technology and the business acceptance.

While things like Live Services and hosted Exchange is part of Azure, Azure is not about ASP, but about Hosting your app, services, and data in the cloud. There is a need for this: Amazon EC2 and S3 are quite successful, even with the crowd that you think would never put their data in the cloud: Banks. It will take time, but companies will buy into this paradigm and make the shift. The first thing to go into the cloud in masse will be hosted Exchange, then file server capabilities, then applications, then data. Small businesses will go first. It may take years for the shift to be complete, but it will happen. It just makes sense to have your applications hosted in the cloud, why bother and worry about the infrastructure. Infrastructure will be a commodity by 2012. By then most new apps will be hosted in the cloud or using the cloud infrastructure for .NET Services or data.

Only 12 years too late! During the .com era, when I was a CTO of a large .com, I spent 65% of my time worrying about the infrastructure (bandwidth, RAID arrays, load balancing, switches, etc.) Years later at Corzen to support our spidering engines, I focused on infrastructure about 50% (only reason why it was lower than .com era was due to virtualization.) Now I need more bandwidth, more load balancing, it is just a click of a button. Sure it is not going to be this easy, but even if it delivers on 50% of its vision, it will reduce my focus on infrastructure by 95%.

.NET Services (formerly BizTalk Services) in the cloud will get adopted by developers as it matures and as apps get moved to the cloud. SQL Services will get adopted in version 2 when you can do more relational features just as tables, joins, views, etc, instead of the “flexible entities” approach of the first release.

Bottom line is that Azure will succeed, but it will take time for the world to catch up to Microsoft’s vision. Amazon (and to some degree Google) have paved the way.

Ok, ok it is not a Smackdown, but more of a review of Sp1 technology: EF, Dynamic Data, Astoria, LINQ to REST. I will be doing a session at TechED next week in Barcelona, however, you can see a shortened version of the talk from my DevReach keynote.

Here are some conclusions that I have drawn from four days at the PDC. Microsoft did not say any of this, but I have drawn these conclusions based on their messages and behaviors at PDC. Here they are and by no means is this an exhaustive list, it is just based on my personal experience this week:

The Influence of Dynamic Languages. From the DLR to the dynamic static type in C#, you can see the effect of Ruby (and Python) on Microsoft. Anders is not a language purist and said that C# will draw on benefits from functional programming, dynamic languages and statically typed languages. He also said that languages with a single focus are going doomed to fail and languages that are more flexible will succeed. To me this was the largest news from the PDC, it shows Microsoft’s reaction to “Web 2.0” and Ruby.

The Death of JavaScript. Microsoft never said this, however, two sessions showed me that it is to be true. The first main session at the PDC, Ander’s “Future of C#” showed how you can use the dynamic type to move your JavaScript to C# in the code behind and run on the client via SliverLight. The last session of the PDC, “ASP .NET AJAX Futures” was all about implementing client AJAX and with declarative programming you can pretty much eliminate most JavaScript.The AJAX talk was all about client side binding, the demos were even done in .HTM pages, not ASPx pages!

The Future of Web Development is SilverLight. ASP .NET 4.0 Futures talks were all about Dynamic Data and MVC, stuff we know already. Everything else was about SilverLight. See the addition of the dynamic type and the DLR, it is all about writing code behind SliverLight. There were also talks about line of business apps built in SilverLight.The writing is on the wall, learn SilverLight.

Windows is Sexy Again. From the keynote to the “I’m a PC” tee shirts to the gazillion of sessions about Win 7, Windows is sexy again to develop on. Forget about Vista, that never happened. Our bad.

Cloud, Cloud, Cloud. Developers were underwhelmed about the cloud. Yea we get it, hosting our services and apps in the cloud is great, but did we really need 36 sessions on that? We have been using the cloud (Amazon EC2, S3) for a while now, so we get it. Microsoft proves once again that when Microsoft is behind in the market, they know how to over do it. The offering is very mature and robust, however, it seems like the message was overkill.

Where was SQL Server? I thought this was PDC and about the future. Only 1 slide about the future of SQL Server. They said it was too “early” however we had a SQL Services Futures talk (v 2) when v 1 has not even shipped yet! I am not implying that SQL is getting less investment, but there should have been a “here is what we are thinking about v.next” talk.

Oslo is Way Cool-But What Do I use it for? There were 5 sessions on this new pre-alpha thing called Oslo. It looked cool, especially the ability to author a contextual DSL. There were cool tee shirts and a large booth with cool swag. But the buzz for developers was “what do I use this for.” Microsoft did a great job telling us about the cool things in Oslo, but did not present the use case. I expect next year’s PDC to do that and have a ton of Oslo content.

My favorite technologies to come out of Microsoft this year is ADO.NET Data Services aka Project Astoria. Astoria is a new technology that puts a REST based data-service on top of your data. Very easily you can expose your application’s data as a service allow other applications, including non-Microsoft ones, to consume your service via HTTP and REST. Astoria has a rich extensibility model where you can hook directly into the service and take direct control over a request. This enables you to build very secure, flexible, and robust services.

The one thing that is a limitation of Astoria is that for the client, you have to be online to consume the service. If your client is offline or occasionally connected, working with Astoria is not really possible. That will change real soon. Yesterday at PDC I went to the session TL08 Offline-Enabled Data Services and Desktop Applications delivered by Pablo Castro. For those of you who don’t know Pablo, he is a great guy and a straight shooter. He believes in “transparent design” where the team is 100% open and debates design and features on its blog for the whole world to watch and contribute feedback.

I have been writing “disconnected” applications that rely on synchronization for almost 15 years. I have been involved in some great applications relying on replication like the NFL Scouting application I showed at TechEd 2003 that uses the Pocket PC (.NET Compact on Windows Mobile/CE) and laptops with SQL Express to connect to a back end SQL Server. The challenge of the disconnected user has been around ever since we have been able to do any form of replication of data. I know first hand. :)

Astoria Offline’s offering is very elegant. You can create an end to end solution very easily and the “piece of cake” scenario where you click on all the wizards provides a good solution out of the box where you only have to write a little bit of code to extend the application to fit your needs. There is also a robust API if you want to consume and do everything yourself or if you are not using the Microsoft tools on the client.

What I really like about Astoria is its conflict resolution. This has been a big challenge for some other replication systems. Astoria will sync all of the good records in the batch and do nothing to the conflicted records. You will then have an exception and an event to handle the conflicted records so you can write some code to handle it yourself. But Astoria will not change any data unless you tell it to, giving you full control. While this seems small, it is a very elegant design pattern.

There are also some great things in there to allow you to batch your sync and also do partial replication (allow only NY sales people to see NY data) with something called Scopes. There are nice hooks for Authentication and Authorization as well.

Look for a CTP by the end of the year. As Pablo said, it is not a CTP good enough to build applications on, but good enough to give the team feedback. More than most other teams at Microsoft, the Astoria team really listens. So look for the CTP and write some code and let them know what you think.

A few weeks ago the PDC people sent to the Regional Directors the goals and theme of today’s Keynote by Don and Chris. They said: “ It will be Don and Chris writing code in Notepad for an hour!”

I replied that I hate when Don codes in Notepad, I think it is a silly thing to do. It only confuses the audience and sends a message that this technology is just a hack since you have to use Notepad. Then the other Regional Directors chimed in with loads of reasons why Notepad is not good for a PDC keynote.

Don and Chris got the message and used Visual Studio in the keynote and the keynote was a lot of fun. Don starts the keynote with the goal to write a service that iterates through all of the processes running on the demo box. Chris then wrote a method that will delete a process (kill) via a service. Don then said “No presenter would ever use Notepad to deliver a session.” He then opened four instances of Notepad and wrote a call to the service to kill all four Notepad instances. Don then said “Regional Directors around the world are now applauding.” (We then did!) Don said if you read between the lines: “OK RDs I took your advice, but I am still Don Box!” I love that.

Don and Chris then took the same service and pointed it to a Live Mesh desktop (and it deleted a folder named notepad). They then took the service and hosted it in Windows Azure services. They had a service running in the cloud that manipulated processes running on their desktop. (Well in the real world you would not do this, but hey it is pretty cool.)

After being called out by Don Box in the keynote, I spent the rest looking at the Oslo stuff. Oslo is a new modeling platform for application development that revolves around a language (M), a tool (quadrant), and a repository (SQL Server).

M is a language where you can model your application and data as well as create your own contextual Domain Specific Languages (DSL). The DSL piece is the best part of M, but I will not write anything about it until later this week as not to steal the thunder of the M: DSL session on Thursday at PDC.

Here is a simple speak peek at M in general, I model a type called Employee (which will map to a SQL table) and insert data in a code specific way. (At the end of the day this code will produce TSQL.) While this may not appear all that sexy, it will be far more efficient for a team to develop, implement, and maintain applications and services (and just imagine putting a DSL on top of this!) You can use a DSL to map text to data so you can import data real easily or have end users write data for you.

Thousands of developers have flooded LA for the 2008 PDC. The first keynote yesterday has highlighted the Windows Cloud Services called Azure. Microsoft is finally getting serious about the cloud by offering storage, hosting, SQL, and .NET services in the cloud. This changes the economics of producing software as well as how we think about infrastructure. Hosting, bandwidth, storage, and management are not a commodity.

In addition to the cloud, Microsoft has show so far C# 4.0 and the .NET Framework 4.0. Included is the Dynamic Language Runtime (DLR). C# 4.0 is entering the world of dynamic languages by adding a static type called dynamic. (Pause for effect.) C# can now interoperate very easily with Ruby and Python and do things like COM interop much easier due to support for default parameters and optional parameters.

This actually seems like a small thing, however, along with generics, delegates and LINQ features (anonymous types, lamdba, etc) support in 2.0 and 3.0, you can now eliminate JavaScript in your SilverLight applications and use C# 4.0 in the code behind. This can change the way we program for the web in a big way.

C# is being influenced by the dynamic languages like JavaScript, Ruby, and Python. This is a good thing. We even got a sneak peek at C# 5.0 where C# looks extremely dynamic. C# is becoming the best of both worlds.

Microsoft today announced rich new features and performance improvements in WCF and WF 4.0 with code name “Dublin”. Part of Dublin is also an evolution of WAS via IIS so Windows Server will get better at hosting WCF and WF applications. Microsoft is focusing a lot on the server capabilities in its announcement, leading many to call Dublin an “application server.” Dublin is not really an application server, it is an upgrade of WCF, WF, WAS, and all of the application hosting capabilities built into Windows Server. This combination of enhancements will make it far easier to build composite applications.

As part of Dublin, WCF is getting a major upgrade. For starters, WCF is embracing REST in a major way by simplifying the way developers will build REST services via a WCF REST Starter kit. (That is rumored to be available on Codeplex soon.) On top of other messaging enhancement like UDP transports and SOAP over UDP and duplex durable messaging, WCF also will have complete integration with WF via a unified XAML model. This will allow an application to be built entirely in XAML, from the presentation layer (WPF/SilverLight) to the workflow (WF also supports XAML in Dublin) to the actual WCF services.

This is good news for developers and it is nice to see Microsoft take REST very seriously. The Web 2.0 and cloud universe is built with a lot of REST, now Microsoft is giving us a way to hook into that.

I am back safe and sound from Mt. Everest. You can catch some good photos here. I have to turn around and head to Seattle for meetings with the Connected Systems Division and an SDR. The Fall schedule looks like this:

You have heard a lot about the ADO.NET Entity Framework over the last few weeks. What you may not have heard about is just how easy the EF makes it to expose your data as a cloud service in ATOM format over the REST protocol. I'll show you just how easy it is to do here.

First open Visual Studio 2008 with SP 1 installed. The EF and "Astoria" (or ADO .NET Data Services) both ship with SP1.

Go ahead and delete the Default.aspx file and right click on the project and click on "Add->New Item". Highlight "ADO.NET Entity Data Model" and name your model Northwind (or something similar) and click ADD.

This brings you to the Entity Framework wizard. Choose to work from an existing database and put in the connection for Northwind (or create it if it does not exist already) and click through the wizard until it brings you to the Choose Your Database Objects dialog. Choose Customers, Orders, and OrderDetails and click finish.

OO experts will tell you to rename your objects (to be singular, not plural for starters), but let's leave them the same for now. Next step is to right click on the project and select Add->New Item and select "ADO .NET Data Service."

Give your service a name of NorthwindTestsercvice or something like that. Then Click ADD.

The NorthwindTestService.svc,cs file should be open and you have to make two modifications to get your data exposed. There are tons of modifications you can make around permissions and what data to expose, but for now let's just get up and running and expose everything. You need to name your DataService, give it the name of your Entity Diagram that you build in the wizard, in our case it is NorthwindEntities. (By default the wizard names it DatabasenameEntities.) Then add one line of code to set the access for everything in your model ("*") and giving it read access. (If you make this .All then users can read and write.)

This week is the meeting of the Data Programmability Group's Advisory Council. I'll be headed out to Seattle to participate in a conversation with the Data Programmability team on the next version of Microsoft's data access strategy, including the Entity Framework.

Roger Jennings today pointed out that my dismissal of ORM in general led him to wonder why I was chosen for the Data Programmability Group's Advisory Council. My pal Julie Lerman emailed me a few months ago asking "I did not know you were a DDD guy?"

I was glad that Danny Simmons asked me to be on the council since I have participated on several data access councils at Microsoft over the years (Including one with Roger Jennings about 11 years ago.) I've watched Microsoft move from ODBC, DAO, RDO, ODBCDirect, OLE DB, ADO.NET and now to a more conceptual model.

Sure I am not a true DDD guy and I do tend to dismiss ORM in general, so my views will insert a different view point into the conversation. Why have a council that is all the same? The whole point of this conversation is to have a dialog and listen to each other (and learn from each other.) By discussing our use cases with Microsoft, we can help them make better design decisions, and refine our own views. Anything else is just dogma.

The boys over at Desktop Alert are headed to Iraq on Wednesday to install their life saving mass communication software at US Military bases in Baghdad and Tikrit. Howard, the founder of Desktop Alert, was humbled when chosen for this assignment. I met Howard five years ago while teaching a class on .NET at CUNY in Manhattan-and he is as crazy as I am, so we hit it off. Since then I have acted as a business and technical advisor to Desktop alert and most recently architected the latest version of their software about six months ago. (Massively distributive application, right up my alley.)

To have played a small role in the success of Desktop Alert and to contribute in helping our brave men and women in uniform-and in the line of fire-is overwhelming. Having lost someone very dear in Iraq three years ago makes this even more special.

You may already know this but the beta of .NET 3.5 SP1 and Visual Studio 2008 SP1 are out today. You can download and install the beta from here. See ScottGu's blog for some release and install notes here.

It fixes a lot of bugs and rolls up a ton of service releases, etc, but this is not your ordinary service pack. SP1 of .NET Framework 3.5 actually adds brand new functionality to the .NET Framweork. For example the ADO .NET Entity Framework and ADO.NET Data Services (formerly code-named "Astoria") both ship new with the .net 3.5 SP1.

This changes the definition of a "service pack" since we have new functionality added. Since these are new features it will not break anything old and it is ok to install over your current 3.5 installation. But we really have .NET Framework 3.75. Download and enjoy.

Red Herring magazine, an influential .com survivor, compiles a list of the most important firms in the technology and bio-tech space. The companies that innovate and set trends and influence the market. This is like the Fortune 500 list but for tech. This is an important list, in the past Google and Amazon were at the top.

The List of the Top 100 European Companies is now out and Telerik is on that list. This great for Telerik of course but even better for the .NET community. First it shows that .NET is gaining more and more momentum when Red Herring awards a .NET component vendor as innovative, influential, and trend-setting. (They usually reserve those terms for open source.)

Second it show just how global our community is, Telerik is an Eastern European company with headquarters in Sofia, Bulgaria, and one of only three companies on the Red Herring 100 from the former Eastern Block. That a company's founders grew up under communism and then can be labeled by Red Herring as innovative and influential in our market is totally awesome. Shows you how technology (and .NET!) can change the world.

The dot com era was crazy. Companies that had no business plan, no revenue, no customers, but a great team, web site and investors would IPO for $100 million. Everyone had stock options and got rich on paper. Once all of these companies went bankrupt and were delisted in the crash of April 2000, everyone was poor again since their options were underwater and worthless. The common phrase is “I wallpapered my house with my useless stock options.”

I too wallpapered my apartment with Zagat Survey stock options. I was the Chief Technology Officer for two years during the .com era and saw it all. I got there as a consultant in 1998 when the company had just 30 employees and the server for the web site was under Sal’s desk. (Sal being the entire IT department at the time.) When I joined as CTO in late 1999, I helped with my colleagues secure $34 million in Venture funding from General Atlantic and Kleiner Perkins and build a great team.

The place became a true .com with 27 year old Harvard MBAs running around, employees bringing in their dogs to work, an air hockey table, and a web site that had one mission: drive traffic. The company swelled up to 200 people, but I build out an amazing web farm and an .NET application a year before .NET shipped. We filed for an IPO. Then the crash happened. I then had to preside over massive layoffs and the eventual loss of my own motivation and left in January 2002 to start Corzen.

Today it was announced that Zagat is up for sale and at a valuation of at least $200 million. When General Atlantic and KPCB invested in the height of the .com bubble, Zagat was valued at $96 million. That means that all the employees and former employees with vested stock options (including myself) now have .com options that are above water. Well above water. I am going to scrape down the wallpaper and deposit them into my brokerage account (I hope Fidelity Investments does not mind the glue.) I guess the .com era is not over if some companies are still paying out.

Why would Zagat sell? They do a nice little business of book sales (estimated 5.5 million books sold a year) and online paid subscriptions. The problem is that Zagat is so Web 1.0. While it is technically user generated content (the ratings are not by reviews, but surveys), Zagat is still stuck in the Web 1.0 mindset (no-one pays for content anymore! Wait that was Web 1.0 too!) and has to compete with Chowhound, Facebook applications, blogs, and scores of other user generated sites. Its business model is obsolete in a Web 2.0 world. It is adapt or die. Or adapt or sell to the highest bidder and let them figure out how to make Zagat 2.0.

The joke goes that whenever Microsoft says to you “Thanks for your feedback” you can usually translate that to “Go Fuck Yourself.” Not this time. We gave our feedback and Microsoft listened. Today they announced that they will be making Expression Web available starting today to all MSDN Premium subscribers. This is great for developers! (and great for Microsoft.)

Do you believe that software can change the world?How about the opportunity to work on an application that promises to help accelerate a cure for cancer?

We are embarking on Release II of the application.I have decided to include four developers from the community in the development team (working for Interknowlogy virtually).Here’s what we are looking for in a software development engineer.

Well-rounded skills in software application development.

One who has been working primarily with C# for at least the past two years, with an additional minimum three years of Microsoft .NET framework application development experience (and preferable some 2.0 and 3.0 experience).

Familiarity with Object Oriented design methodology.

A successful candidate will have experience with Windows client application development (.NET WinForms, preferably WPF) and web services.

Desirable to have experience with SharePoint, preferable Office SharePoint Server 2007, Office Document XML, or other custom Office applications. You should also have experience working withina distributed development team.

Does this sound like you?Tell me why we should consider you for this opportunity by replying to Calling all Developers with a one-page word document telling us what you are most proud of in your career and why you should be selected to work on this project as well as a link to your online presence (blog, home page, myspace profile, etc). You can work from home, as long as you have a reliable internet connection!

We are going to move quickly on this so tell me now why you would be the right person for the team.This is a paid position.And you might even get some publicity for participating!Thanks for considering being a part of this important project!

InterKnowlogy, experts in Microsoft .NET Tools, Servers and Platforms, is a Microsoft Gold Certified Partner. InterKnowlogy, is a professional services organization specializing in custom application development and network services focused on Microsoft® .NET. Having customers large and small around the world, InterKnowlogy is well known within the .NET ecosystem worldwide as one of the leaders in .NET application development.

The Scripps Research Institute in La Jolla, California, is one of the largest private, nonprofit biomedical research organizations in the US and a world leader in the structure of biological molecules. Scientists at Scripps Research wanted a better way to organize biological research information and share it with their colleagues. InterKnowlogy developed an application built on the Microsoft® .NET Framework 3.0 with Windows® Presentation Foundation, and Windows Vista™ giving scientists a powerful tool to visualize and annotate research results. This application allowed for faster scientific collaboration, easier access to data and a dynamic development process. You can read the full case study on Microsoft.com.

I've been tagged so I have to tell you 5 things you might not know about me.

1) I have suffered hearing loss as a child.

2) When I was a small boy my parents took me to the circus at Madison Square Garden. They bought the special seats so I would be chosen to ride around in the rings. I loved it, I was waving to everyone inside the world’s most famous arena-I remember it like it was yesterday. When I got back to my seat my mom asked me: “Did you like it?” Little 5 year old me replied: “It was ok. I am surprised they did not give me a speaking part.”

3) When I was 17, I was riding my bike and I was hit by a car and left for dead on the side of the road where I broke all my ribs. When I got up my first words were “where’s my bike?”

4) I do not have a daughter in Australia, nor did I ever date Britney Spears.

5) I actually get more pleasure when the Yankees lose then when the Mets win.

See Steve Ballmer open the NASDAQ today alongside fellow RD Tim Huckaby at 9:30AM EST. Then you can watch SteveB and Tim launch Vista, Office 2007 and Exchange 2007 at 4:30PM EST. Tim is doing the demo of the Scripps Cancer Research solution (the one he let me demo at the PDC). Watch the demo here.

Take your queries to the next level! This interactive session focuses solely on advanced querying techniques to get the most out of your SQL Server. See a series of real-world examples to extract data from your databases in ways you've never seen before. Techniques demonstrated include an ultra-fast way to do crosstab queries in SQL Server, running totals and ranking. Along the way you'll get some insight into how SQL Server works and the new capabilities in SQL Server 2005.

SQL Server 2005 provides deeply integrated native support of XML. Besides storing the data as XML, it provides XQuery support as the key to unlock the information stored inside the XML document. This session gives you an introduction to SQL Server's XML and XQuery support and it demonstrates how to write and optimize your XQuery expressions. In particular, it discusses the use of XML Indices and how to read XQuery generated query plans.

See how .NET takes SQL Server 2005 to a whole new level! In this Whiteboard Discussion learn how to build a query governor, a set of tools for evaluating whether or not a query should be run. Most query governors are simple limiters, automatically cancelling queries when they run too long or aborting queries with too high of a cost. The CLR makes it possible to programmatically evaluate the cost of a query without executing it! Combined with some techniques for determining the state of the server, you can build a governor is flexible and smart. This interactive Whiteboard Discussion makes it easy to explore different applications of this technology beyond the query governor.

Thursday, October 19, 2006 CAB and the Smart Client Software Factory

Starting with a general, theoretical overview of smart clients, we’ll quickly move into a deep examination of CAB centered on working code. We’ll dig into the anatomy of CAB/SCSF, uncovering some key design patterns used in the toolset: Model-View-Presenter, Publish-Subscribe, and Dependency Injection. Throughout the talk we’ll share best practices and consider design decisions for achieving modularity and extensibility in your own smart clients with the CAB/SCSF tools and guidance.

By the end of the tour, those new to CAB should find their learning curves greatly reduced. Intermediate-to-advanced CAB hackers will take away some hard fought tips-toward and tricks-to taking their composite smart clients and plug-in architectures to the next level.

Speaker:

David Laribee, President, Xclaim Software

David Laribee is President of Xclaim Software, an ISV offering document, claim, and policy management software for the commercial property and casualty insurance industry. He has 10+ years experience designing, developing, and architecting enterprise applications with Microsoft technologies. David has worked with the .NET Framework since the zero-day in internal IT, product development, and rapid prototyping contexts across a wide variety of industries. He writes about agile practices, software architecture, and the business of software on his blog at http://laribee.com/.

Join Rocky and Steve in a discussion about the present and future of Microsoft's client/server communication technologies, including Remoting and WCF. Learn whether client/server and n-tier will be replaced by SOA, or whether these architectures can co-exist. Find out how these technologies and concepts apply to you as you build web, Windows client/server and occasionally connected Windows smart client applications. You'll learn about today's options, tomorrow's options and how you can help position yourself to move forward over time.

Rockford Lhotka is the author of the Expert VB 2005 Business Objects and Expert C# 2005 Business Objects books from Apress. He is a contributing author for Visual Studio Magazine and he speaks at major conferences around the world. Rockford is the Principal Technology Evangelist for Magenic Technologies, one of the nation's premiere Microsoft Gold Certified Partners.

Steve Lasker is a Program Manager for Visual Studio at Microsoft. He is responsible for many of the data design time features in Visual Studio. Steve’s team owns the Typed DataSet designer, Data Wizards and the new Data Sources window. His background in broadcast engineering, e-commerce startups, and consulting has taken him through the cycles of client, browser, CE; and with .NET, returned to client-based apps that leverage the Internet as the transport.

Subject: Both ADO.NET 2.0 and ASP.NET 2.0 take advantage of SQL Server 2005's Service Broker. Although ADO.NET 2.0 is only able to receive query notification from SQL Server 2005, ASP.NET 2.0 has an implementation that will also know about database changes in SQL Server 2000 and SQL Server 7. This session will demonstrate how to receive notifications through both ADO.NET 2.0 and ASP.NET 2 as well as cover the pros and cons and the many rules surrounding Query Notification.

Speaker: Julia Lerman, The Data Farm

Julia Lerman is an independent consultant who has been designing and writing software applications for 20 years. She lives in Vermont where she runs the Vermont.NET User Group. Julia is well known in the .NET community as an INETA Board member, Microsoft MVP, ASPInsider and prolific blogger. She is a frequent presenter at DevConnections, DevTeach and other conferences as well as writing articles for MSDN Magazine, CoDe Magazine and other well known technical publications. You can read Julia's blog at thedatafarm.com/blog.

Today I saw one of the most amazing things in my life. So subtle yet so powerful. While on my way to speaking at the Gdansk .NET Users Group we passed the docks. The place where communism died.

Not everyday you can walk past something so historical and so important in the history of the world. What is funny is that my friend Michal Chaniewski just said very casually as we passed: “Oh here are the docks. You know we had strikes here in 1980 led by Lech Wałęsa.” I said “they were not just strikes man.” I studied the Solidarity movement in Poland very closely in university and Michal was being very modest. He said, “I guess. What happened here did change Europe.” I replied: “What happened here changed the entire world.” We went on to talk about Lech Wałęsa and communism and then of course .NET.

Just across the street we went to the offices of Computer Services Support, an old communist era building to have the first ever user group meeting of the Gdansk .NET Users Group. I was honored to be the first speaker. While talking about the Model-View-Controller design pattern, I was amazed that I was standing just meters away from a place that changed the world. You can see the docks from the classroom.

Do you want to speak directly to the team that has brought Visual Studio 2005 to market?

Prashant Sridharan, Group Product Manager, Developer Marketing, and the NY .net User Group are pleased to announce an in-depth look at Visual Studio 2005 and what it can do for Enterprise Customers. The session will feature a project room where you can get assistance on your projects from Microsoft and community experts.

And claims another one of us. Clemens Vasters is joining Microsoft. I have known this for a long time but he has finally made it public. Clemens you are a sellout but have fun! It was even front page news!

Have you ever been to a Microsoft conference and listened to them carefully? They make up words.

Now those who know me know that I also make up words all the time-my staff at Zagat use to keep a list on a whiteboard, and then hold contests to see who can figure out what my new words mean. The problem is that since I attend so many Microsoft conferences as a speaker, I start to pick up Microsoftese. What is even worse is that I now use these “words” in every day life. When I am in the hardware store and ask about the “functionality” of the new vacuum cleaner I want to buy. Or when I am buying a new electronic toothbrush I ask if one model is more performant than the other?

Functionality is a word now, even if Microsoft made it up. I decided to start using performant in my new SQL Server book. I got this comment from the editor:

[LF] Steve: I don't think "performant" is a word.

And the tech editor replied:

[JFC] "performant" is one of those classic 'words' that Microsofties use in presentations; techies understand it, but it's not really a word. Please revise, and avoid its use in the future.

I decided to use it anyway. I then emailed Bill and Andrew on the topic hoping they would think it is funny, but got this reply from Andrew:

1290 Avenue of the Americas6th FloorNew York, New York10104United States

General Event Information

Products: .NET.

Recommended Audience: Developer.

That's right, America! Carl Franklin, Richard Campbell, Geoff the sound guy, and a makeshift podcasting crew are hitting the highway in an RV on a coast-to-coast road trip from Boston to San Francisco October 12th to November 7th, 2005!

In each city, a sneak peek at new and exciting things coming in Visual Basic 2005 and Mobility Development in Visual Studio 2005, and lots of giveaways including DNR swag, sponsor software, and even mobile devices!! AND post-event DNR interviews with local developers who are doing cool things with .NET 1.1 and the beta of 2.0!

There will be parties along the way! Of course, they'll be blogging and podcasting photos and video (for the next DNR Movie), and a new .NET Rocks! show online every day during the road trip! Ok, maybe not EVERY day, but they're producing a show in every city!

In October 2003, Microsoft released Visual Studio Tools for the Office (VSTO). This new group of class libraries brings .NET Framework-based development to Word and Excel 2003 by enabling developers to write managed code in C# or VB .NET that responds to events within the Word and Excel automation models. While not as integrated as Visual Basic for applications (VBA), building on the tradition of Visual VBA and COM-based automation, VSTO)provides developers with significant benefits for building Office solutions, including a familiar coding experience, improved deployment, and improved security.

The Visual Studio 2005 release of VSTO brings significant enhancements to the development of solutions based on Excel and Word 2003. Building on top of VSTO 2003, Visual Studio 2005 Tools for Office will address some of the biggest hurdles facing Office solution developers today, including separation of data and view elements, deployment of Office solution assemblies, server-side and offline scenarios, and seamless integration with the Visual Studio toolset.

One of the primary successes of VSTO 2005 is the separating of “data” from “view” in Office documents in order to simplify the creation of Office-based solutions. Today, Excel spreadsheets and Word documents consist of an amalgamation of either cell values or text (representing the data) and descriptive information about that data, such as the font (representing the view). Because Word and Excel have no built-in concept of programmatic data like Microsoft Access does, developers are limited in their ability to effectively develop solutions around the data stored within the documents.

VSTO 2005 will separate the data from the view in Office documents by enabling data to be embedded as an independent XML data island. This provides a well understood and easily addressable structure that developers can rely on when programming in addition to the benefit of offline support for views of the data. The developer is able to separate presentation (view) and data, and is thus able to update the data directly without concern of writing presentation code. Typed data sets will be used to provide a schema-oriented programming model for interacting with the data island, ensuring IntelliSense support for the managed code being written. Data binding will be used between the data island and the view to keep these two in sync. The developer will also be able to add validation code to the data that is independent from the document view components. Typed DataSets are now exposed as partial classes so you can add validation code very easily and encapsulate it as part of the DataSet itself.

Programming directly to data by way of an XML schema-based model provides improved productivity for developers over previous coding paradigms. Code that works with data does not need to address the Excel and Word object models at all. This simplifies much of the code involved in building Office solutions as well as shields your data code from changes in the document. The resulting code is loosely coupled because it does not rely on hard coded references to specific cells, ranges and tables that can be arbitrarily moved around by end users, rather, your code directly accesses XML data islands.

Working with XMLDataIslands enables new server-side opportunities. Most importantly, the data island embedded in the document can be manipulated without starting the individual Office application. This is a major shift from the current model, by which, in order for code to manipulate the contents of the document, Excel or Word must be installed and running. This limitation blocked many solutions from being created such as programmatically creating Office documents from within an ASP.NET application.

The VSTO 2005 runtime will support instantiation on a server without the need to instantiate and run Excel or Word. The data island in a document can then be manipulated from the server-side code as any XML data can. When the user opens the associated Office document the view would be re-synchronized with the data island and the user would be automatically presented with the updated data. In this scenario, Excel and Word are not needed to write to the data on the server, but rather only to view it on the client, limiting potential security holes. This updated model will also provide higher scalability and the ability to perform high performance batch processing of multiple documents (such as T&E documents) containing data islands on the server.

Storing the data in a data island also provides a way to enable rich offline scenarios. When a document is first requested from the server or first opened by the user, the data island will be filled with the most recent data. The data island can then be cached in the document and made available offline. The data could then be manipulated by the user and by code without a live connection. When the user reconnects, the changes to the data could be propagated back to a server data source by code that you provide.

In addition to improving the data programming model, VSTO 2005 introduces enhancements to the way developers programmatically access user interface, elements, such as ranges, lists, and bookmarks. Developers can write code today to manipulate these elements, but they are impacted by the extent to which the Office object models expose events, properties, and methods. For example, the Excel object model provides a WorkSheet_Change event, but does not provide similar events for individual cells or ranges, creating the need for additional code to handle the occurrence of a change to a specific element. VSTO 2005 introduces enhancements to the Excel and Word object models in the area of these user interface elements. Elements, such as cells, ranges, lists, and bookmarks will become first class controls that can be easily accessible in your code. Each control will be uniquely identified and will enable data binding and will provide a more complete event model, making it easier for the developer to manipulate Word and Excel.

VSTO 2005 will also makes it much easier to develop applications with Excel and Word with Visual Studio. With VSTO 2003, developers wrote managed code in Visual Studio .NET then they had to switch to Excel or Word in order to create the user interface. In VSTO 2005, Excel and Word will be hosted directly in the Visual Studio 2005 IDE as designers as live documents. Developers will be able to design Office documents within the Visual Studio environment using the full collection of Windows Forms controls in Excel and Word by simply dragging and dropping managed controls, including third-party controls, from the Toolbox. Just like in other Visual Studio environments, double-clicking on a managed control in Excel or Word will invoke the code view in which customizations can be written inside the auto generated event handler for that control.

Managed control hosting within Word and Excel documents, combined with Excel and Word integration within the Visual Studio IDE, will make Office just another target platform for Visual Studio developers in addition to Windows Forms, ASP .NET, Mobile and Web Services.

We are losing another great RD to the mother ship. The great and wonderful Malek (This doesn’t suck) Kemmou will be starting a new job in less than two weeks: he will be the Technology Architect – Application Platform for Microsoft Middle East and Africa based in Istanbul, Turkey. The Middle East and North Africa region is gaining a very talented architect with a background not only in MS but competitive technologies, so he will be able to provide the best solutions in an area desperate for some technological horsepower. Malek brings his tremendous experience to the role and will help revitalize a region of the world where technology is just starting to make an impact.

On Sunday afternoon, Goksin, Malek and I are going have an orange badge to blue ceremony and throw our orange badges into the Bosphorus as a sign of unity with our buddy. (I am not sure how we are going to explain how we need replacement badges to our local office, but that is a problem for Monday.)

The 2005 North Africa Developers Conference in Algiers, Algeria is over. Boy was it a smashing success. Over 2,200 developers attended and more had to be turned away due to space restrictions. I pushed hard for Microsoft to go into Algiers to make a statement, so I am glad it worked.

I had standing room only in all of my 4 sessions. I met several students, professionals and even lots of open source folks who wanted to see what Microsoft was all about.

While my French has improved since the first NDC, my sessions were still interpreted and all went well. I was the ONLY speaker from the United States, I hope I made a good impression (early feedback says so and I did have standing room only in my talks!)

After the conference we went to the roof of the convention center overlooking Algiers and the beautiful Mediterranean for a reception with government officials and the attendees. I used my limited French to talk with the mayor of Algiers about the tall building in New York and my running and biking in Central Park.

There were several RD there including the very reclusive Frecnh RDs, but some tequila got Pierre (aka ALL CAPS) Couzy to open up some more. We had a blast. All the RDs there were:

Back from India, boy was it hot. Sanjay (RD Bombay) and I had a blast. Off to speak at the North Africa Developers Conference in Algeria this weekend. Seven RDs (including the ones who speak French ) will be there in full force. I plan on making Clemens see the light while I am there. I am doing these 4 sessions:

Writing Secure Code for ASP .NET

Data Controls and Advanced Cache Techniques with ASP .NET

Ranking and Windowing Functions in SQL Server 2005

Using XQuery to Query and Manipulate Data in SQL Server 2005

And: The New York Mets and the New York Yankees have the exact same record. I am enjoying it while it lasts. It seems that the Mets are 1-5 when I am in the country and 3-0 when I am not.

A long time ago Microsoft said that it is orphaning Visual Basic 6.0 on March 31st, 2005. That is in 2 weeks. So basically you will no longer be able to buy it or get free technical support (as well as any bug fixes to the product.) In essence, the warranty is expired. Microsoft will continue to support VB 6 on a fee basis until March 31st, 2008.

This is ok since VB 6 RTMed in the summer of 1998 and has been superseded by its two predecessors: Visual Basic .NET 2002 and Visual Basic .NET 2003. It has been almost 7 years and two upgrades, so this should not be an issue, right?

Well, over 100 Microsoft MVPs (Most Valuable Professionals) have signed an online petition that demands Microsoft resume development and support VB6. The MVPs are calling for all VB developers and IT leaders to review and consider signing the petition.

Can 100 MVPs Be Wrong?

YES.

All good things come to an end. VB 6 is old technology and it is time to move on to the more powerful and flexible VB .NET or a more modern language like C# or Java. We always knew this day would come. Nobody uses WordStar for DOS anymore-for a reason.

I build tons of apps with VB6 back in the day. They will continue to run until the end of time, upgraded or not-MS has not dropped support for the VB6 runtime, which is actually part of Windows.

I do understand that some companies and government organizations are slow to upgrade and that upgrading can be expensive at times. But that said, the writing has been on the wall since the PDC in 2001. Microsoft made the orphan announcement almost a year ago.

VB6 developers say things like “VB .NET is too hard” or “it is difficult to upgrade.” Nonsense. I am by no means a genius and I was able to learn .NET when it shipped and was able to upgrade all of my stuff. In addition, I found that .NET was *easier* to work with and implement (epically ASP .NET)!!! My staff of 10 developers at Zagat.com was able to make the switch pretty fast.

I am still a VB MVP. I have, however, completely made the switch to C#. December 2002 was when I defected. That said, I still have a soft spot for VB and hope to see everyone migrate as soon as possible. You have four years, so get cracking. Maybe by March 31, 2008, VB .NET 2002 will be unsupported. J

Tonight I go live on .NET ROCKS (http://www.dotnetrocks.com/), my second interview and their 99th show! We are scheduled to talk about:
SQL Server 2000 Interop
SQL Server 2005 XQuery and other cool features
.NET Charity Auction on eBay
My upcoming marathon in Antarctica

So the last time our NYC .NET Developer User Group speaker Brad McCabe came to speak, there was a fire in the Microsoft building and we had to evacuate. (And I did the raffle on the street.) Last night he came back and there was massive flooding in New Jersey where he lives, so he could not make it. I had to pinch hit.

I had the most fun speaking at a user group in years. I did a session on the ASP .NET Cache engine and we spend almost 2 hours talking all about the cache and dependencies like files and databases. Code and slides downloadable soon.

My buddy Clemens Vasters wrote a few days ago that you don't need inheritance or full data encapsulation for business objects. Some other dude wrote a passionate response to him saying that he was all wrong.

You see out here in the real world, in the coding trenches, the “full data encapsulation” in your business objects just doesn’t hold any water. Who reuses a customer object between applications? At my company we don’t even have a customer object! But we do have customers. :) The data logic all should be handled by the database. Way too much effort, code and BS to deal with when you do it otherwise.

Academic conference speakers who don't write code in the real world always argue to over complex-ify the application. I'm sorry, anyone paid to write code in a production environment has no desire to throw all this logic into the objects and have lots of levels of inheritance so they are “reusing code”. Sure sure we all read the Gang of Four's book and spend a year using all the design patterns but then come back after that year only using the few that make sense to our application. Academic conference speakers who don't write production code should take a year off, write some production code and then come back and see what they have to say.

Lastly at the PDC Clemens said publicly that rows and columns suck and all you need in a database is a PK field and an XML field. Looks like he changed his tune, at least on storage, we all can learn buddy.

“What you end up with are elements and attributes (infoset) for the data that flows across, services that deal with the data that flows, and rows and columns that efficiently store data and let you retrieve it flexibly and quickly.”

Is what Richard Campbell just said to me on the phone. Our Windows client can now talk to our Linux Oracle Server. Our demos will work for Monday. We have some pretty hard core demos.

DATC02 From Interoperability to Migration: SQL Server and Linux Databases Working Together

Monday, May 24 1:30 PM- 2:45 PM, Cabana 08

Speaker(s): Richard Campbell, Stephen Forte

Track(s): Data Management

"They" say it can be done, now see it in action! This session demonstrates how SQL Server can acts as the gateway to interoperability with Linux databases such as DB2 and Oracle! You'll see a fully functioning Linux-based web application using Red Hat Linux, Apache, PHP and Oracle sharing data with an identically implemented ASP.NET application using SQL Server. This session shows not only how to interoperate, but to use these interoperate capabilities to facilitate a seamless migration from the Linux based system to SQL Server and Windows . This is how migration was meant to be!

About ¾ of the way through, the fire alarm went off. There was a fire on the first floor and we all had to evacuate the building via the stairs. (I inhaled a lot of smoke in the lobby, but am a-ok.) So Brad McCabe's smoking HOT tablet PC talk ended with a visit from NYFD engine 24 and ladder 19.

I decided that the show must go on and we did the raffle on the street while the firemen were running into the building.

Last year I was a judge in the final round of the Imagine Cup at TechEd in Barcalona, Spain. It was a great thrill to be involved. I am honored to be a judge in a regional round tomorrow at FordhamUniversity.

Under "Dell Dimension 4600 Series" section, change the selection to "Pentium® 4 Processor at 2.40GHz w/800MHz front side bus/ HT Technology [subtract $50]" Under "Mail-In Rebate Offer" section, check the box for "$100 MAIL-IN REBATE" Under "Memory" section, change the selection to "256MB Dual Channel DDR SDRAM at 400MHz (2x128M) [subtract $100]" Under "Keyboard" section, change the selection to "Dell® Quietkey® Keyboard [subtract $20]" Under "Bundled Software" section, change the selection to "SAVE $100!! Microsoft® Office Basic Edition 2003 [subtract $15]" Under "Hard Drive" section, change the selection to "40GB Value Hard Drive [subtract $70]" Under "CD or DVD Drive" section, change the selection to "48x CD-ROM Drive [subtract $200]" Under "Monitor" section, change the selection to "No Monitor [subtract $160]" Under "Video Card" section, change the selection to "64MB DDR NVIDIA GeForce4 MX™ Graphics Card with TV-Out and DVI [subtract $15]" Under "Modem" section, change the selection to "No Modem Requested [subtract $30]" Check each and every option to make sure you are getting everything that you need Scroll Down and click on "Update Price" Scroll Down and click on "Continue" On next page, Scroll Down and again Click on "Continue" On next page, Scroll Down and Click on "Add to Cart" There is a $100 Rebate on this system Dell Small Biz is offering Free Shipping on new system purchases Your Final Price: $239 - $100 = $139.00 + Free Shipping Note: Dell Small Business charges tax on ALL purchases!

That is the question before Adam Cogan and I at breakfast this morning. He loves them. I hate them. He likes to make an HTMLa report and then use query strings to save the parameters and then email the URL to other people so that they can see the same thing. I’d rather save a view (parameters, etc) and let someone click on that. Or use postbacks. I don’t like Query Strings for a two main reasons reasons:

The user can change the query string and possibly see data they are not allowed to see, or you have to write code to prevent that.

Query Strings leave you wide open to SQL Injection Attacks and Denial of Service attacks (especially when you use sloppy code by concatenation of a SQL statement-something that you should NEVER do.) So you will have to write some RegEx expressions to validate the query strings.

Adam says that since you can code the responses to #1 and #2 query strings are useful and worth it. I tend to disagree and only use Query Strings when absolutely necessary. Who is right? We both are. It all depends on how much time and energy you are willing to spend, Adam wants particular functionality and is willing to pay (write validation code) for it, I am willing to pay (write functionality code) in different ways.

Then later on, I get on a train to speak at the Philly.NET Users Group. Can't wait, user groups are so much fun.

I'll be doing a quick session about RegEx then the main session on Web Data Binding (samples are not all here, but this is a link to the DataGrid Tech*Ed Session). I leave for Tech*ED in KL tomorrow and do both of these sessions, so it should be lots of fun. See you all there.

Andy Grove, in his bestselling book, Only the Paranoid Survive, describes the nightmare moment every leader dreads--when massive change occurs and a company must, virtually overnight, adapt or fall by the wayside-- a “Strategic Inflection Point.” The arrival of the Internet was one such Strategic Inflection Point in the tech industry. I think that we are at another.

The Strategic Inflection Point is for consulting firms today and the issue is outsourcing off shore. Large companies are outsourcing almost their entire development work offshore. JPMorgan Chase just announced 50% of its IT will now be offshore (that is oh about 4,000 development jobs). I am not going to make the case for or against outsourcing, since it is happening anyway, apparently if you have a convincing argument against is, nobody is listening to it. So why fight it, it is happening and the jobs are not coming back (at least not to New York). This is why I left consulting in July 1999.

But wait, there is still money to be made in the contractor role. First let’s say that you are running a consulting shop today and are feeling the pinch of outsourcing. Let’s look at the notion that it takes 30% of the development effort to design the application, 30% to code, 30% to test and 10% to physically implement.

I always say that the strategic advantage you bring to the table in the 30/30/30/10 universe is the design. That is the MOST important phase of any project-period. (Don’t make me go Steve McConnell on you!) What if you set up shop to do the 30% design and 10% physically implement? You can make the case to do the design locally and then work with the outsourcers offshore to code and test. Set up a strategic partnership with several off shore players. Or better yet set up a JV. You can then take on a project management, relationship management and architecture guidance role. I have worked with overseas outsourcing and they tend to follow specs to the letter, so if your potential customer has made the decision to outsource overseas, they will be more inclined to do the design work very seriously.

The age old question. If you ever saw one of my TechEd sessions or WebCasts, you know that I am a big fan of using the DataReader, especially when you are doing Web DataBinding. I am all about the firehose, forward only cursor. Today I actually replaced a DataReader with a DataSet, so I think that I need to tell the world the story. J

So my app that runs each Sunday morning to get data over HTTP and regex out stuff was bogging down. What happens is that I have a DataReader on the client that grabs the URLs, RegEx patterns, etc from a table for the main application “loop” to process the URLs and save the data to the database. There are about 30,000 records stuffed into the datareader and the stored procedure that powers it has to do a join to the table I am adding data into on each iteration of the loop to make sure that if the process stops and restarts, I don’t reprocess any duplicate URLs.

So all of a sudden (this code has been in production for 15 months, and on .NET 1.1 for 4 months) I started to get timeouts when I read data from the DataReader. Randomly this would happen, maybe once ever few weeks. I never really tracked it down. So this week I would run the process and every 10th record would cause a timeout. It was a timeout when I tried to read data from the next row in the DataReader, on the 10 row. I start and stop and this happened a zillion times. I spent a few minutes playing with some settings, etc, but more of the same. Oddly enough, setting the command behavior of the command that filled the reader to SequentialAccess did not even let me read data from the first record, it returned an error saying that it can only look at data starting at the 10th row.

I have not discovered the problem here, but it must have something to do with the buffer, I must have been stuffing way too much data in there. So I said DUH, let’s use a DataSet. Well I never looped through a DataTable before, so here is how it goes:

Radio is completely off my machine. This is good since it was slow and clunky.

This is a day of liberation for Clemens and I. We are now using our Radio subscriptions just to upstream our RSS feeds to the Userland cloud dasBlog. Very cool. So now all the folks who have not resubscribed can still see the feeds at Radio, but please please please subscribe to the new feed.

What is funny is the Clemens said he did not have enough time to document everything, but his documentation is much better than Radio's! Besides my forthcoming cache code contribution to dasBlog, I have to say that Clemens rocks the house, so buddy, I owe you a few beers when we are in KL next week speaking at Tech·Ed Malaysia.

Is a great Editor. Just have to send some blog love to Melody Hendricks, my editor for the last 5 or 6 years. We have worked together on over a dozen conferences and maybe 50 magazine articles. Plus she puts up with all of my crap.

Today Microsoft unveiled to the world demos of the Alpha of Whidbey or the next version of Visual Studio .NET at VS Live in New York today. They say that this release of Visual Studio and the .NET Framework will offer innovations and enhancements to the class libraries, Common Language Runtime (CLR), programming languages and the integrated development environment (IDE).In addition, Whidbey will provide deep support for SQL Server Yukon by enabling developers to write stored procedures using Visual Basic and C#.

Visual Studio Orcas (another Island in the Pacific Northwest) was also talked about. You can find the roadmap here.

My drinking partner in Dallas and Barcelona, Ari Bixhorn (oh yea he is also the Lead PM on VS .NET) demoed some neat stuff in an alpha version of Visual Studio Whidbey along with Edit and Continue and cool productive VS UI enhancements like improved docking. The most compelling feature is the exception dialog, while also nice and pretty, has suggestions to fix the code and hot links to help, etc. VB .NET sported a smart-tag based right click syntax checker.

I just installed the alpha on my machine last week (as well as the latest Yukon bits), so if you dont see any blogs for a while, you know why! J

A good start to this trip with an uneventful trans-Atlantic flight. Even bumped into fellow NY RD Andrew Brust and his lovely wife Lauren in the Rome airport. Worked on converting my Using SQL Server CE & SDE to build Enterprise Solutions code from VB .NET to C# on the plane down to Tunis. After clearing customs, Malek picked Goksin, Selcuk and I up and drove us on down to the Hotel where Clemens was already waiting for us. What was great was that there were North African Developers Conference posters and signs all over the airport and highway! Tunisia really rolled out the red carpet.

Reunited from the Wallflowers in Dallas, Clemens, Goksin, Malek and I turned around and headed straight for the beach at Hammamet. Much to the delight of the German speakers in the group, Clemens and I (barely), we were at a resort that catered to Germans. We spend several hours on the beach smoking Goksin's Turkish cigars, drinking beer and talking about why .NET Remoting may or may not suck, DCOM, the bowls of COM+, Regular Expressions and gulp politics. Clemens and I had a disagreement over the difference between an 'Ocean' anda 'Sea' (eventually we got distracted by some girls topless sunbathing.) I got a great swim workout in, about 20-25minutes in open water. Triathlon training won't suffer (well the several beers I drank after my workout may have hurt a little.)

So, when you code, remember a bug is always your fault. This code in SQL Server CE may look harmless, but if you are pointing to the wrong database (ha!) it won't do a damn thing!