Remarks by Eric Rudder, Senior Vice President, Developer and Platform Evangelism
VSLive! Visual Studio Developer Conference
San Francisco, California
Feb. 11, 2003
ERIC RUDDER: Well, good morning. Everybody awake? Everybody using Visual Studio .NET? By show of hands, just I like to know who I'm talking to and especially since I come from a VBITS tradition, I'm kind of curious on language, how many of you use VisualBasic.NET as your primary language in Visual Studio? That's a good chunk. How many use Visual C# as their primary language? That's pretty good. How many use C++? Smaller. J#? COBOL? Fortran? OK. This language independence thing, we can go on for 27 questions.
It's great to actually get a chance to talk at this conference. This conference has been going on for 10 years. I feel like I've been talking at VBITS and VSLive! for a long, long time.
We always start the talk with kind of a roadmap slide. It's kind of our gratuitous slide here. I thought about taking it out just for time but the graphics were so pretty that I decided to actually leave this one in.
And we talk about how the shift in computing and tools really drives the phenomenon in each computing shift that we've seen. You know, whether we moved off of mainframe and minis onto the PC, really driven by Basic and Turbo Pascal, when we made the shift to GUI, when we made the shift to the Web and really what Visual Studio .NET is about in many ways is taking the best of Windows, the best of the Web and harnessing the power of XML Web services and bringing that together into a single environment so you can build rich client applications, great applications for reach using ASP .NET and Web technologies and take advantage of Web services architecture to integrate existing assets rather than having to rip and replace and kind of putting one head on top of multiple presentation clients, be it Windows or PDAs or phones or what have you.
Web services have really taken the industry by storm, especially over the past year or so, and I think one of the reasons for this is that we've really kind of stood upon the shoulders of Internet giants. The Internet taught us really for the first time that we could really build large-scale distributed systems that were multi-vendor and they'd work. You could really have an IIS server, an Apache server or a Netscape server or an IE front end or an Opera front end or an AOL browser and really kind of the different clients really kind of didn't care what servers they were talking to, the servers didn't care what clients they were talking to.
And things weren't perfect, you know, nodes went up and down but the Web as a distributed system and as a distributed app worked. It was resilient to failures and one of the reasons that it did so well was because of key roles that standards bodies played in making sure that the distributed system was based on open standards, it wasn't bound to any single platform, it was protocol based, it was loosely coupled rather than tightly bound, it worked on what people had, they could take their existing system and just add a Web server or add a Web client, and the whole industry really got behind the phenomenon because the end user benefits were co compelling.
And really what we've tried to do with XML Web services is leverage these same set of characteristics to solve the same set of business problems of integration, tying things together and getting users the best experience.
So really at the time we launched our Web services initiative it was a tough time in the industry. Everybody was talking about Java. Everybody was talking about EJB and container models and it was a hard sell really to get people excited about Web services and to really see the potential.
But we did a lot of the work. We had the guts to stick with our Visual Studio .NET development schedule. It took 40 months to build Visual Studio .NET, which is a long time being out of the market without an update. But we strongly believe that when we wanted people to write a Visual Studio solution, we wanted them to be able to write a Web services solution without doing any extra work, you know, bracket, Web method, bracket and away you go.
And so I think we made some progress, and folks like Gartner in late 2001 understood that Microsoft was kind of an upper right-hand quadrant guy, but then a lot happened, right? Web services kind of took on a momentum of their own. We sort of built this base infrastructure where we can get a message from point A to point B and customers came back and said, "No, that's really not enough. We really want the runtime to be able to help us build secure, reliable, transacted messages," and so we worked with IBM and others and put out the WS Security roadmap and the transaction roadmap, reliable messaging.
And so time passed, things changed and in October of 2002 Gartner put out its report and still Microsoft is in the upper right-hand quadrant, really leading the Web services revolution, and in some ways Visual Studio .NET really is our anchor tenet for that.
We've put a lot of work into Visual Studio .NET 2003, and we're going to spend a bunch of time demoing some of the features in that product and showing a little bit of future looking stuff as well.
And the key themes for Visual Studio .NET complement the key themes for Windows Server 2003, and that's not by accident. We wanted to make sure that we really delivered the next wave of technology with the best platform support.
And if you look at the tools roadmap in general, our tools releases align very nicely with the key advances in the platforms. So you'll see Visual Studio .NET 2003 complement Windows Server 2003. You'll see the next version of Visual Studio complement the next version of SQL Server, which we codenamed "Yukon." And then the version after that, you'll see the next version of Visual Studio complement our "Longhorn" release. We want to make sure that you have the right tools available at the right time to really take advantage of the platform.
Well, as I said, Visual Studio and Windows share these anchor tenets, and the first one is "connected" -- and that's really making sure that we have support for the latest XML Web services standards, things like WS Security, making sure that we connect even beyond the world of Web services. I know that not every app is a Web services app, even though sometimes it seems like that's all we're building these days. We know that connecting to a variety of data sources is important so we upped the performance of the data providers, not just SQL Server, but we worked with Oracle to increase the performance. Oracle is actually working on a driver of their own as well. And DB2, we have a notice ODBC driver and Chris will show you some of that as well.
I think "connected" also looks at extending beyond just getting the data sources but also connecting to the range of devices and clients that you want to talk to as well, and we'll show you some of that later as well.
Of course, building an app doesn't mean anything unless the app itself is dependable, deployable, secure by design, secure by default, secured in deployment and we worked very hard as part of our Trustworthy Computing initiative to actually go again, take a look at the code, take a look a the default settings that are in the product, take a look at the default settings that are in the other configurations as well and really make sure that we upped the reliability for people counting on ASP .NET. We worked very hard on ASP .NET, actually hosting multiple configurations as well.
And this is key for us not only because it's key for our customers but because we run our business on .NET. One of the things that I do as part of my job is actually I'm responsible for Microsoft.com, which is currently the number four Web site in the world. It's run entirely on ASP .NET technologies. It's running Windows Server 2003. We'd like to finally call it eating our own dogfood, but we're truly committed to running our business on our products.
And the same goes beyond Microsoft.com. If you look at MSN, for example, their home page is driven by ASP .NET, and many of our other Internet properties that have huge dimensions of reach. Things like GotDotNet or MSDN are all built on the latest technologies, and so we know that it's dependable and we know we can run it at scale.
And we know, since I'm driven by the bottom line working for Bill and Steve, running Microsoft.com, that the platform provides the best economics. And it's not just the cost of the platform itself, it's that we leverage our mature partner ecosystem, developers that can be trained, developers that have skills in multiple languages, partners that provide key components, and if you look at some of the work I'll show you later that we've done with price performance with hardware manufacturers and Windows Server itself, I'm confident that our platform delivers the best economics over many others.
And finally we care a tremendous amount about developer productivity, you know, can we save you time. It's why we invested so much in the .NET Framework, making sure that we wrote code once, people could leverage it for multiple environments, multiple scenarios.
What we've done with Visual Studio .NET 2003 is extend that productivity out for devices, for example, with the .NET Compact Framework and with mobile controls for devices that have better connectivity and we'll show you some of that work later on as well.
Well, sometimes it's fun to actually talk about the different set of clients that we support. I think one thing that really differentiates Microsoft from some of our competitors is that really we believe in leveraging the power of the device. We believe in rich clients. There's a CPU there. There's great graphics power there. The best applications in this industry win, not the lowest common denominator applications, and this has been true for years and years and years. There have been cross-platform toolkits for years and years and years. There have been applications written for cross-platform things.
And overall people really want the best application, they want the quickest response time. There's line of business applications like call center where sub-second response time is critical. There are upcoming features in hardware like Jim mentioned we're giving away a Tablet, leveraging handwriting or leveraging speech or leveraging the graphics power that's coming in the future. We want to make sure that developers can maximize all that the device has to give it, whether it's a PC, whether it's a mobile device or whether it's a browser taking advantage of the highest end capabilities that the browser has to offer. And Visual Studio .NET does a great job in delivering productivity for all application types while letting you have a common back end exposed by Web services.
Well, I think enough talking about some of these features. We're here to see Visual Studio .NET 2003. And so I'd like to invite Chris Flores up to come and show us a quick demo of Visual Studio .NET 2003. Morning, Chris. (Applause.)
CHRIS FLORES: Thanks, Eric.
All right. Well, Visual Studio .NET launched almost one year ago today right here in San Francisco. Since then, developers all across the world have been realizing the many benefits of this multi-language, integrated, end-to-end development environment.
Visual Studio .NET 2003 builds upon this great development environment by providing additional productivity aids for developers in just about every language. It also provides a new and improved .NET Framework, a much faster framework, and it also, as Eric mentioned earlier, it provides many new capabilities for the mobile device developer.
Here we are inside Visual Studio .NET 2003. Those of you that are already used to looking at and using the current version or Visual Studio .NET will be right at home. This is an incremental upgrade, so everything that you already know today is directly applicable to Visual Studio .NET 2003.
There are a couple applications that I'm going to build here today for a fictitious company knows as the Adatum Corporation. And the Adatum Corporation provides both telephone service as well as high-speed Internet access capabilities to their customers.
The application that we're looking at here is a cal- center application that lets customers call in with particular problems. The phone operators use this application to log all those calls and ultimately assign a technician to respond to those calls as well.
This application actually communicates with a Web service and the Web service ultimately communicates with a SQL Server backend.
But as Eric mentioned earlier, one of the new capabilities inside of Visual Studio .NET 2003 is the addition of two new data providers, both for Oracle 7i and Oracle 8i, as well as ODBC. So we have a very well connected product.
Now, there are a couple things that we want to do to complete this application. The first thing we want to do is leverage some of our existing VB 6 code. And we've done a few things to further improve the upgrade experience that you might face when you go from VB 6 to VB .NET. The first and most significant of those new capabilities is the ability to migrate both user controls as well as Web classes, and we have a user control in VB 6 that we want to import into this application to give our phone operators an easy way to navigate to the different components within this application.
So let's go back to VB 6 and show you the control in question. Here is the custom navigation control that we want to import into VB .NET.
So let's go back to VB .NET. We'll right-click on our Solution Explorer, and we'll go ahead and add our existing project. We'll simply navigate to the VB 6 user control, do an Open, and this will invoke the Upgrade Wizard, and here I just have to answer a few questions about the nature of the thing that I'm importing, specify a destination directory, and VB .NET will go ahead and perform the necessary migration.
Now, the new control will be placed in a separate directory so that your original control will be untouched. Let's go ahead and open that control. Here is the control that was imported. So all we need to do to use this control at this point is to right-click and choose Build and once I do that the imported user control will appear on my My User control tab.
So all I have to do is take this control, drag it on my form and now I can go ahead and use this control as normal. I can go to the properties window, set properties, write some event-driven code, et cetera. So that's what we want to do now.
So let's double-click on that control and that control has a custom event associated with it called the Item Clicked Event. And all I need to do is go ahead and drag in my user control code and I can go ahead and proceed as normal.
All right. Well, there's one additional piece of upgrade technology that we've added to VB .NET as well. In addition to being able to import user controls and Web classes, you can also import pieces of code. So it's quite often that you're looking for how to perform a particular task, you go to a Web site or you go to some existing code that you have in a previous project. Rather than having to import entire projects as once this Snippet Converter allows you to copy some code from the Web or some other location, you can paste it directly into this window and then click the Upgrade button and that code will be upgraded in place and dropped directly into your code editor.
So let's finish off the rest of this application. Currently there's really no way for our phone operators to actually assign a given service request to a particular technician, and that's what we need to do right now.
So let's go ahead and grab a button, throw it down on our form. We need to go ahead and give this thing a name. We'll call this "schedule," and we'll go ahead and set the style. Where did that thing go? We'll set this pop-up to match the rest.
Now, you notice that when I put the button on the form, as I resized this form in design mode the button really doesn't move, unlike some of the other buttons here. Some of these other buttons and controls are taking advantage of the automatic-anchoring capabilities that exist within Visual Studio .NET.
So let's go ahead and select the schedule button. We'll slide down here and we'll anchor this thing not to the top and to the left but to the bottom and the right. Once we do that, select a form, you can see that the button automatically moves with the form.
Cool stuff, huh?
ERIC RUDDER: Is it actually OK for them to applaud if they see stuff that's cool?
CHRIS FLORES: I don't think so. (Applause.) If we crash at some point in the demo we fully expect thunderous applause. (Laughter.)
All right, well, now that the button has been added, let's go ahead and write a little bit of code here.
So to actually do the scheduling of the request we want to communicate with a Web service but we also want to make sure that we handle any particular errors that might occur at the time.
So we're going to go ahead and use the structured exception handling that's built into VB .NET using this try-catch method. Now you'll notice that when I enter try and hit enter VB .NET automatically completes that sub-for saving us a bit of time. (Applause.)
Thank you. We're about done here.
So you notice that any code that I enter between the try and the catch will attempt to be executed, and if any errors occur, any code between the catch and the end try will automatically catch that error. So let's go ahead and drag in some of our existing code here in between the try and the catch, and if there is such an error we want to go ahead and write something to the debug window.
Now, one of the enhancements that we've made to Intellisense is that we've applied a most recently used algorithm. So instead of simply taking you to the top of the list in Intellisense, Intellisense will automatically default to the most likely and most recently used property method or event.
So let's go ahead and choose Write Line, and we'll say "error in scheduling," and we'll come up here and set a break point somewhere, and then we'll go ahead and run our application.
Here's the application so now our phone operators have an easy way to navigate amongst the different capabilities within our app. If a phone operator wants to go ahead and assign a technician to this they can go ahead and click the schedule button and here we are inside of the debug mode.
Now, one of the other enhancements that we've added is that we now have Intellisense in the immediate window. (Applause.) This is an easy crowd this morning. (Laughter.)
So here I can go ahead and type in something like "Request ID," hit Adopt. There, of course, is our Intellisense. Hit Enter, and we can interrogate any variables, modify the execution order, that sort of thing.
So let's go ahead and continue running the app and we can go ahead and assign that technician, click okay. We communicate with our Web service and the back-end is updated.
All right, so that's the first half of the application. Now that the call center application is done we want to sort of switch gears. Now we want to take care of the application that our mobile technicians will use when they're out there in the field responding to some of these service requests.
So let's go ahead and switch over to our mobile application. Here we are inside of another instance of Visual Studio .NET 2003. And new to 2003 are two additional project types that are available both to Visual Basic and C#. You'll notice that we have the ability to create a smart device application and this is the kind of application that would sit resident on a Pocket PC using all of the capabilities of the CPU and the graphics capabilities that Eric mentioned earlier.
Or if we want to create a very broad reach application, an application that will satisfy a cell phone, a wireless Pocket PC, a wireless Palm Pilot, pretty much any type of wireless device you might have you can build an ASP .NET mobile Web application alternatively. And the beauty of this kind of application is that this kind of application will automatically sense the kind of device that's making the request and render the correct UI to that device, depending on the capabilities of that device.
But since our mobile technicians are highly mobile, they're in the field, they don't always necessarily have connectivity, we're going to go ahead and create a smart device application that will work whether or not our technicians have an Internet connection.
In the interest of time and in the interest of old-style cooking shows, we've already completed part of this application. It's here on the screen. If you're a VB or C# developer, you'll feel right at home here. It's the exact same development environment. On the left hand side of the screen you have many of the controls that you're used to including buttons and text boxes. We even have a very powerful data grid as well.
And you'll notice that this is very much a WYSIWYG environment. You'll notice that the in-place menu editor for these forms appears actually at the bottom of this screen, the same place that the menus would appear on your Pocket PC device, giving you a very "what you see is what you get" environment.
I have the two forms loaded and actually what I want to do is the application is almost complete. We need to go ahead and add a button here so that the technicians have a way of indicating "I've satisfied this service request, I need to move on to the next appointment, tell me when that appointment is."
So let me go ahead and name this button. We'll call this Service Complete.
Now, because this mobile application is using the .NET Compact Framework, which is a full subset of the desktop framework we have the same great support to Web services on the device that we have on the desktop. So, of course, you've all worked with Web services before. All we need to do is go ahead and add a Web reference. Here we are taken to the newly enhanced Add Web Reference dialogue. We've added the ability to easily examine any Web references that you might have on your local machine. Or you might even have a network of Windows Servers, formerly Windows .NET Servers, and you can browse those Web services as well.
So let me go ahead and choose the technician's Web service that we want to work with, and I can even name it right here within the environment, call this Technicians Service. We'll add that to our application and now we can go ahead and program this Web service as if it were any other local piece of code that we might have on our desktop.
So let's go ahead and double-click on this button. And we first need to declare the Web service, so we'll enter the declare. So this is what we need to get our arms around the Web service that we want to talk to. And then we'll drag in the code that actually does the hard work of communicating with that Web service.
So at this point now that our application is complete we have a couple options. We can either deploy the application directly to a device if we have a device here but not every developer has a device, but many developers want to start experimenting with mobile development. Visual Studio .NET 2003 includes a full emulator for the Pocket PC so that you can easily test your applications without actually having a device.
So we'll choose the emulator, we'll go ahead and start our application. Here we are inside of the Pocket PC emulation. And in just a few moments -- in just a few moments -- in just a few moments -- woo, I mean, there's the application. (Applause.)
So here we can go exercise the application. We can click on View Next Appointments and now the technician knows exactly where to go. They know that they have to be with Bob Henderson at 9:00 a.m. After they visit with Bob and completely satisfy Bob, click on the service request button. Again, the back-end is updated, the next appointment is loaded and we're off to the races.
Now, one question that we get a lot with Visual Studio .NET is whether or not we can actually obfuscate our code. A lot of you are out there creating commercial applications and you want to protect your IP so you don't want to release an application into the wild that might be able to be reverse engineered so people can figure out how you've done all of your clever work.
ERIC RUDDER: I don't know, even if they saw your source code I think your code is pretty obfuscated as it is today. (Laughter.)
CHRIS FLORES: Thanks for that, Eric.
ERIC RUDDER: No problem.
CHRIS FLORES: But let's make it even more obfuscated. Do I owe you a dollar?
ERIC RUDDER: I think so, but that's okay.
CHRIS FLORES: All right.
So we actually shipped an obfuscator with Visual Studio .NET from one of our partners. (Scattered applause.) (Laughter.) I see we have some of the PreEmptive folks in the audience here today. (Laughter.)
So once our application is complete we can go ahead and choose the Dotfuscator Community Edition and this will go ahead and load the Dotfuscator provided by PreEmptive Solutions. By the way, PreEmptive has a booth here so if you want any further information on how to scramble your code or how to obfuscate your code please visit their booth.
And so essentially after you've told the obfuscator a little bit of information about your application all you need to do is go ahead and click on the Play button and that will go ahead and rebuild your application and encrypt it in such a way that it's impervious to code breaking technologies.
This obfuscation, of course, has the added benefit of not only scrambling your code but in the case of mobile applications where you want your applications to be absolutely as small as possible to take full advantage of the resources on that device, the obfuscation technology will shrink your code as well, providing you with a number of benefits.
So as you've seen, Visual Studio .NET 2003 builds upon all the great capabilities that we originally launched last year, providing productivity aids for developers using just about every language. We provide a new and improved .NET Framework and a whole series of new mobile capabilities.
That's it. Thanks, Eric.
ERIC RUDDER: Thanks, Chris. (Applause.)
Well, Chris did a great job of showing off many of the features of Visual Studio .NET 2003, and in some senses it was designed to be a small update, but as we started listening to the community and really realizing some of the nice polish that we can put on the product to really complete it, I think we really got quite a bit done.
Chris talked about the improved data connectivity. For C++ users in some ways this is the most dramatic upgrade. We didn't actually demo the features here. We spent a lot of time at Bill Gates keynote at OOPSLA talking about the improved C++ features in terms of ISA compliance, the ability to use the standard template library, the ability to put C++ code behind Win forms and designer and stuff like that.
We do have an improved Java language conversion assistant. That's something we'll continue to develop over time, even to the point of offering when we launch the ability to take a J2EE app and convert it into a .NET app.
We continue to build community into the product. I think this is a trend that not just the Visual Studio products but Microsoft products overall, we'll continue to embrace community right in the products so the shell kind of understands, yeah, I'm working on this product and it uses Oracle connectivity and can you please take me to the newsgroups that talk about Oracle 188.8.131.52.6.7 and all its driver issues.
We added the ability to add custom build steps for C#. That's a very common feature. The ability to distribute the framework a little bit more. Chris showed us some of the nice features in terms of VB and the immediate window. There are some lists in VB that weren't alphabetized before that are alphabetized, makes it easy to search. (Applause.) We did a nice piece of work in the enterprise instrumentation framework. That's something that really helps you for large-scale distributed apps collect metrics and really do a better job instrumenting your app over all.
Great support for side-by-side support so people have applications today, there's great compatibility between the RTM, the Visual Studio framework and Visual Studio .NET 2003, but you as the developer have the choice. You can take your application and say, hey, this app should always use version one of the framework or you can say, hey, my app, I tested it, it can use the latest version of the framework that's installed on the machine. You have that control. So we're gone from the days of DLL Hell, installing a new runtime and messing up your app. You have control with your app over which versions of the runtime that you use. You still have some of the name Web references, some nice and tactical sugar in VB for doing variable initialization. The smart device applications on the mobile Web experiences is something that's very exciting as well.
So overall I think it's a nice polished release to the product and I think it really sets the stage for people to continue to enjoy the success that they've had with Visual Studio .NET to date.
Of course, we're not done yet. We do continue to focus and somewhat obsess about developer productivity. We want to make sure that the best line of code, the most bug-free line of code is the line of code that you never have to write, and we want to make sure that we continue to evolve the framework, continue to evolve the tools to enhance developer productivity.
It's hard to really benchmark developer productivity in terms of you can measure it in terms of how many lines of code the developer writes per hour or the size of the solutions. It's always tricky because lines of code written per hour in some ways the better score is the lower number lines of code written per hour because you wrote less and got your job done.
And so something we look at is when we take solutions and we write it in our platform, in our environment compared to solutions created in other environments as well. And here we were fortunate to have a study done by an independent company called the Middleware Company. Some of you might have been familiar with this. There's a J2EE app called Pet Store. They've recently run the specs for that. And we implemented the same exact functional application in .NET. We called it Pet Shop.
And I think the great thing here is that there's no vendor benchmark stuff that's opaque. You can actually go online and download the two code samples, or in this case three code samples, and you can compare the code side-by-side. You can look overall at the amount of code you need to write to do a J2EE solution and the amount of code you need to do a .NET solution. You can look and watch at all the configuration files you need to get a J2EE server to understand XML and understand Web services and compare that to the Windows platform and everything that's built in there.
It took the Middleware Company about 10 staff weeks to complete their J2EE solution. It took about two weeks to do the .NET solution. And so if you think about less time, less code, we remain incredibly committed to developer productivity and I think we have a few good ideas for "Whidbey," which is our next release up our sleeve, to take this lead and expand it even further.
Well, one of the things that people want to be productive at is writing solutions that leverage Office, and I'm pleased to announce today that we'll be doing Visual Studio Tools for Office, which really brings the power of Visual Studio to Office solutions. We'll be ready at the same time Office 11 is and we will let you use Visual Studio .NET and Visual C# .NET to automate and extend Word and Excel and build solutions to really leverage the Office software that your customers have on their desktops. It's in limited beta now. (Applause.) Don't applaud yet. Save some for the demo. And it will be probably available in March.
I'm incredibly excited by this product because it not only leverages the great power of Visual Studio .NET and all the work that we've done since VB was integrated into Office but it takes advantage of the work that Office has done to embrace XML and the two really play very, very nicely. So Office now in some ways is the ultimate client to XML Web services and, of course, Visual Studio .NET is the ultimate client in marrying them together and really the solutions that people are creating now are incredibly compelling.
So again rather than talking about it I'd like to invite Bev Sobelman up here and give us a quick demo of empowering Office solution development. Go morning, Bev. (Applause.)
BEV SOBELMAN: Great. Morning, Eric.
ERIC RUDDER: What number are you?
BEV SOBELMAN: I'm seven, thank you.
OK, so how many of you out there are building applications using Office right now? Not so many. How many of you would if you could do it in managed code? Well, a few more. Maybe we'll get some more hands up later when you see what we can do with these new Visual Studio Tools for Office.
So Eric gave me a great lead-in and I'm going to shut up and just start doing the demo now.
So our scenario here is I'm a developer in some midsize organization and one of our salespeople came to me and said, "I've got this spreadsheet that we use for doing our revenue reporting and currently we have to fill it out by hand putting in the person and the year and type in all these numbers. Well, there's this Web service we know that provides that data. Could you modify this spreadsheet so that it automatically pulls the data from that service so we don't have to do it by hand anymore?" Well, I have Visual Studio .NET 2003 with the Visual Studio Tools for Office so I say, "Sure, I can do that."
I'm going to jump over into Visual Studio where in the interest of smooth demoing I've already got my project in progress, but I'm going to back up a step and just show you how I got here so you can see the new project system edition we've got. So if I just hop into the new project aisle you can see I now have a new entry for Office projects where, as Eric mentioned, we've now got the choice between Visual Basic .NET and Visual C# so you're no longer restricted to VBA when you're writing Office applications.
And you can see right now I've got three different document types. I can work in Excel or Windows documents or templates.
So that's how I got where I am. I've obviously chosen an Excel project. I've got my report here and if I poke into my references I can see that when I created the project I automatically got the primary interop assemblies for Excel and for Microsoft Office and the core functionalities brought in for me. So I'm ready to start programming against these Office object models.
Now, manually I went in and added a reference to my revenue service. Chris showed you earlier how that was done. I did it in the exact same way so I've got my Web service ready to program against. And you can notice in the code window that there was a little bit of code generated for me for handling the open and close events right away.
So I'm pretty sure I'm ready to just start writing code here. And again I'm going to take advantage of one of these nice features of Visual Basic .NET and turn on my try-catch block. And the first thing I want to do, let's think about this, when I open the document I want to grab that Web service, get my active sheet and start pulling data from the Web service and filling in those named ranges on my worksheet. So I'll just start doing that. I have to get my revenue service. I've gotten Intellisense off my Web service, which is great. And I need to grab my active sheet, Excel.worksheet, taking advantage of that most recently used feature as well, which I love. And I can initialize that variable in place, again another nice feature of VB .NET.
And now all I have to do is start filling in ranges. Let's fill in the user name: .value equals Web service .get username.
Now, I could keep going like this and I could actually just keep filling in those named ranges and I'd have a perfectly correct and valid application, but I noticed when I was backing up there's also this get XML data method off my Web service, and I realized I can actually do this in a slightly slicker way by using the new XML features in Office 11. So I'm going to pop back over to Excel and do a little bit of setup that will let me do that.
So all I have to do here is go into some of this new XML functionality. I'm going to bring up the XML source pane where I've already got an XML schema mapped to this document. This is really just an XSE schema file. In this case it was already associated with this document and it is, in fact, the schema that that Web service produces.
So all I have to do now to take advantage of this is to do a little bit of dragging and dropping to associate chunks of my schema with cells and ranges on my workbook. I'm going to grab my region data, just drop that as one chunk on my range there and now I'm ready to go. Now Excel has some information about the structure of this document and it will actually import and export data automatically that's produced in that schema format.
So now I'm going to go back in Visual Studio. I don't need this code anymore. Let's get rid of that. I'm actually just going to grab my new code.
So here you can see instead of getting the sheet I'm actually just programmatically grabbing that XML map from the workbook and I'm just going to call it import XML method on that get XML data method off the Web service.
I'm not really sure what that does though, so I'd kind of like to be able to debug into it. I'm going to set a breakpoint there and I guess just for completeness I should make sure I do something in that error handling.
So I'm ready to go. I'm going to hit F5 and just like in any other Visual Studio project it's going to boot up my application. In this case it happens to be Excel. It's going to see that there's a managed assembly associated with the document in question. So it's going to load up the CLR for me. It's going to load that assembly and it's going to stop at my breakpoint. (Scattered applause.) Thank you, thank you.
We're going to take a little leap of faith here because I've never actually been able to do multilevel or multi-tier debugging before. I've always had to have separate environments to debug my VBA applications and then my middle tier Web services. But in this case I'm actually going to hit F11, cross my fingers and here I am debugging into my Web service. So this is a new kind of power I've never had before doing this application. (Applause.)
So I'll just hit F5 and there you can see in one call I've now populated the data in my Web service and making my salespeople happy. All I have to do now when I'm happy with this is hand it off to one of my IT people. They can find that assembly, deploy it to a server so that all the people in my organization can get to it.
And there you have it, a small but powerful first step for being able to combine the power and flexibility of XML Web services with the richness of Office on the front end. Thanks. (Applause.)
ERIC RUDDER: Thanks, Bev.
Well, I think that's pretty cool. And, of course, customers' existing investments in VBA are fully protected with Office 11 and all this is complementary and in addition to, but I think I've hinted about how much further we can take Office development by really leveraging the power of the .NET technologies, really being able to step into Web services or step into client/server development and take that development experience kind of up one more notch.
And if you combined kind of the nice features that Office 11 is adding with XML and in new products like InfoPath, formerly known as Xdocs, and the features that Excel and Word are adding or XML, I think literally the solutions that you can create are limited only by your imagination in some ways.
Well, Visual Studio Tools for Office isn't the only thing we're announcing today. We're also making it easier to get started using ASP .NET. We're announcing five new starter kits for ASP .NET around community, time tracking and kind of project management, reporting, commerce and portal, based off our "IBuySpy Store" prototypes, kind of taken to another level. These are fully documented application samples. There's limited beta, again available today. We'll be making these widespread available quite soon. I think we'll actually post them on ASP.NET for you all to take advantage of.
And these are the same sets of controls again that we use to run our business. So you'll see today we'll show things like threaded discussion control. This isn't some toy control; this is the threaded discussion control that we use on our Xbox.com site when people talk about how to get the maximum frag performance out of your Halo game play experience.
So I'd like to actually invite Shawn Nandi to come up and show us how people can really get started quickly building community with some of the starter work. Morning, Shawn. (Applause.)
SHAWN NANDI: Thanks, Eric.
Number six. Thanks a lot.
So when we released ASP .NET 1.0, developers told us that it was the most productive Web development technology that they had ever worked with. We were ecstatic at that feedback but we wanted to see what we could do to really make people even more productive. So we spoke with a ton of developers and we found that more often than not they were looking for that little bit of code that would help them move that much further in their application development process. That's what we've delivered today with the ASP .NET starter kits.
Now, the starter kits are five free sample applications that are available in beta today on www.asp.net. The starter kids implement commonly used Web application development scenarios like portals, Community Starter Kits, commerce sites and data reporting applications. Today I'm going to show you one of those starter kits called the Community Starter Kit.
Now, I built this site called the Seattle Ski and Film Club based off the Community Starter Kit. You can imagine that your scenario might be building a site for your child's sports team or maybe the local Parent Teachers Association.
For the starter kit for this site, I didn't actually have to write any code. The way I built it was to download the Community Starter Kit, open up the code in Visual Studio .NET -- it ships complete with the source code project -- and actually create a new theme. Now, a theme in this Community Starter Kit actually dictates the look and feel of the site but doesn't touch any of the underlying functional code. So I didn't actually have to write any VB .NET or C#. All I did was copy an existing theme -- in this case, the default theme -- created a new theme called Sean and then modified some of the cascading style sheets, which affect the font, the colors and so on, on the site. After that I hit F5 and I was ready to go.
So the next thing I needed to do was simply to change the content of the site. Now, the content is completely data driven and I'll show you how I did that now.
So I'm going to go in as the owner of this site, click on the Events tab and while we give it a sec to load up there you'll notice that the Community Starter Kit provides a couple of pre-built components that you can use. We have a discussion component, a photo gallery, a downloads component. We also have other components like favorite links, books and so on.
So here we go in the events component and as you can see we have a Mount Hood ski trip planned. I want to add a new event for our annual trip to Whistler. It will ask me to log in. I can do that. And this will be our Whistler trip. I'll specify a URL and I'll specify a bit more about the trip here. And we'll say price 200. And we'll make it a little more compelling for people.
And to make it a bit more attractive I'm going to actually associate an image with it from last year's trip. This is our nice photo of Whistler there. And the event is going to take place next weekend. Let's go ahead and add that up. And there's our trip that appears there.
Now, one of the key components of the Community Starter Kit is the ability to actually rate and provide comments on any type of content. I'll jump to the photo gallery right now to show you that. Here we have our photo gallery. Now, I could view the photos either as thumbnails or in a filmstrip if I want. I can also drill down on any given photo.
Here we have a photo posted by one of our members named Aaron and Aaron says, "Check out this sweet air! I rock." Well, I feel it's kind of my position as a community owner to put him in his place a bit. So I've got to give him a lower rating on that, submit that, and it will tally up the average ratings that everybody on the site gives him.
Now, to give him a bit more constructive feedback I can add a comment here and say, "Not bad; jump higher." And I can expand on that a bit and say, "Jump higher next time." And to temper my comment with a little sarcasm I'll put a little smiley face in there and submit that.
So Aaron can come by, browse his photo and be "Oh, I rock" and then he can go ahead and see, okay, well "Jump higher next time." And then notice how my smiley face was actually converted to a Mr. Smiley emoticon. (Laughter.) This is one of the features on this site called transformation. It allows you to transform any type of text into any other type of text or into an image, as you see here. It's a very useful feature if you have members of your community who like to use some of the more colorful four-letter words in the English vocabulary. You can actually tone that down a bit.
So now that we've created all this great based content I want to let other members of my community know about it. And a great way to do that is by sending out a newsletter to my community.
So I'll go into the administration interface here, I'll go the Send Newsletter command I'll click Create Newsletter. So instead of having to build this from HTML from scratch the Community Starter Kit offers this Send Newsletter feature. I can use this template that I've predefined, and we do provide predefined templates for you to build off. And I want to add an event section to promote that new Whistler trip, which we created.
So I copy the volunteer section, I'll rename it. Now, I don't want to type in all those details about the events that are upcoming all over again, so I can type in this tag, New Events, and the Community Starter Kit will automatically insert all the events that I have in my events section.
Go down here, Preview Newsletter, and here's what that newsletter will look like. It's personalized according to each user and as you can see we have that event strip in there.
Now, when I click Send Newsletter at the bottom of the page it will actually go ahead and send that newsletter out to all the registered members on my community site who have specified that they want to receive that newsletter. And when they get it they can go ahead and click on the Whistler trip and dive right back to the original content that we created about that Whistler trip.
So there are some awesome features in this Community Starter Kit. Unfortunately we don't have time to get to them all today. But I encourage you to check it out on www.asp.net, along with the other four starter kits, which we've offered today, and let us know what you think. We're always looking at ways that we can make you more productive.
Thank you very much. (Applause.)
ERIC RUDDER: Thanks, Shawn.
Well, I think Shawn gave us a glimpse of some of the cool technology we can deliver actually in between big releases of Visual Studio .NET so you guys don't have to wait for the latest samples, downloads and the way that we can share information between each other using schema-like code wise and make it much easier to take that and integrate it into the environment and kind of get going quickly on your projects.
Well, the other thing we care deeply about in addition to productivity is really performance. And when you think about some of these sites, you know, I mentioned that we use some of this technology on our Xbox site, we're super, super keenly aware of performance and scale and taking advantage of existing hardware.
This is a Web application benchmark that's called Nile. Some of you may have seen it in PC Magazine. It's kind an industry standard benchmark. We did very well with the .NET 1.0 framework on top of Win 2K, but as you can see here we've taken the performance with .NET 1.1, which is the version that ships in Visual Studio .NET 2003, and really you can see some of the work that we've done on 1.1 with the latest Windows Server 2003 to take it even to another level of scalability, again staying highly within the response window.
We were actually able on Microsoft.com, as we upgraded to Windows Server 2003 and the .NET framework 1.1, to actually do some server consolidation and take advantage of the increased performance, and we were able to service more users with less hardware and I expect similar results from some of your projects as well.
We're excited to deliver not just performance features but functionality features as well. And as much as we do at Microsoft to make Visual Studio .NET and the .NET platform great, we absolutely can't do it alone. It's really the ecosystem that's key to the success of .NET. And it's our partners and the community that we together at events like these, talking online, with vendors really are key to our success overall.
There's now more than 160 VS IP program vendors and component vendors shipping more than 300 tools. I really encourage you to check out the show floor. Tomorrow there's a partner breakfast that's going to highlight some of the key component vendors. I encourage you to check that out as well.
The .NET code-wise community has really started to take off. These are some of the most influential folks in the .NET community, some of the MVPs actually run some of the top five most popular sites. These authors and publishers and just people who generously give of their time teaching people how to use Visual Studio .NET are now reaching more than 4.5 million user sessions per month, so we're really getting great leverage out of the community and I encourage you to think of how we can expand this even more, because I know what it's like to learn a new platform and kind of be overwhelmed. And you see a problem and you know it's been solved before and you don't really want to solve it again if someone's already invented the wheel and really taking advantage of this community that's out there I think is something that is going to be key to our success going forward.
INETA is something that we actually announced at the previous VSLive! In San Francisco. That's our International .NET Association. If you think about it, just a little over a year ago we announced the formation of it. There's now more than 200 user groups that are members of INETA. That's worldwide in many countries actually representing more than 66,000 members. They have a common speaker bureau registration service, so there's one way that you can get speakers from Microsoft to come out, visit a user group, talk about the latest technology, talk about our roadmap and I encourage you if you have a user group that's not a member of INETA to think about joining, and if you are a member of INETA to think about how we can make that user group even stronger.
There's also 700 user groups that have been spawned on MSDN around discussion. So the community really has gained in momentum, really is thriving. It's nice to see the community scale as our users scale. You know, we've had more than 2.5 million people using Visual Studio .NET and the frameworks as well, so it's great to see these resources continue to scale as the usage of the platform continues to go up.
You know, as I mentioned, the .NET ecosystem has tremendous support from component vendors, from partners, from system integrators. It's really nice to see these people compliment the platform and help migrate their existing assets from VB 6 to the new world.
I'm actually pleased today to announce two new members to the .NET ecosystem. The first is AmberPoint, who announced this week that they're actually going to be taking their products over, their management framework for Web service, into the .NET world. I'm very excited to have AmberPoint come over and deliver their management expertise to help people build, monitor and deploy a Web service application.
And the second is Borland, who this week is also announcing a new product called Optimizeit Profiler, which is a nice profiler for .NET technologies as well.
So you can see these two points. I expect us to be announcing lots of other partners at the Windows Server 2003 launch as well. And we have nothing but praise for the ecosystem growing overall.
I think we'll be talking, too, about how we can do a better job getting the message out there that there are these components available, growing the industry and encourage those folks that are in the audience that are members of VSIP or component vendors to come and seek me out as I walk the show floor and talk about how we can really make the community continue to thrive.
We're doing our part to grow the community as well, not just through products and components but also through training and certification to make sure there's a scaled base of developers out there that know what they're doing with .NET and really make sure that corporations have a way to evaluate their employees and their progress.
I'm pleased to announce today that we actually have the MCSE exams for Microsoft .NET certification. These are for advanced developers who build advanced solutions. There is broad industry recognition for advanced skills. It's not a simple test. Trust me, I've looked at it. I think I might be able to pass it some day if I study hard. And we're pleased to actually work in conjunction with Fawcette to actually put a special offer out at VSLive! for actually 50 percent off the price of MCSE exams for attendees. It's something I encourage you to take a look at. The training material is really great and the certification is something that should be nice to add to your resume.
We do surveys from time to time looking at the salary differences between the certified developers and non-certified developers to make sure the value proposition remains in effect, and obviously those developers that are better skilled take home more money.
What can you do with your training once you've taken the MCSE test, passed? Well, you might become an Iron Developer. And I'm actually pleased to welcome, if you guys remember from last year, John Rauschenberger was last year's Iron Developer and he is going to share some of his projects that he's been doing with us today.
JOHN RAUSCHENBERGER: It's good to see you, Eric.
ERIC RUDDER: I'm not worthy. So what have you been up to, John?
JOHN RAUSCHENBERGER: Well, today actually is a day of mixed emotions for me. Today is the final day of my one-year reign as Iron Developer, and in all honesty I have to admit that the last year has far exceeded all of my expectations of all I could possibly hope to get out of this very auspicious award. But tomorrow night at Midnight Madness we'll actually be crowning a new Iron Developer. So for those of you that are attending the show feel free to come by tomorrow night. We'll be awarding this lovely belt to this year's winner of the Iron Developer contest. (Laughter, applause.)
ERIC RUDDER: I believe these are genuine plastic rhinestones.
JOHN RAUSCHENBERGER: Genuine imitation rhinestones, yeah, absolutely. No expense was spared in this award. (Laughter.)
So tomorrow night we're taking a look at the application that was built to win this year's award.
Over the last year though in addition to the multiple personal appearances and answering fan mail, I've been helping a number of companies migrate existing applications of Visual Studio .NET. And what we've seen are really two interesting things. First of all, developers have been very easily able to leverage existing code bases as well as their skills to move those applications into Visual Studio .NET and they get a great deal of advantage by doing that.
What's been more interesting though is Visual Studio .NET has really opened up to developers coming from primarily Visual Basic or an ASP background the ability to build a new breed of applications, so applications that in the past they either couldn't build or were difficult to build because of limitations in the tools, all of those limitations are removed now and for some of our larger customers, companies like, for example, Bear Stearns that we're going to take a look at in a minute, they're able to build mission-critical applications now running really the systems that are core to their business using Visual Studio .NET.
In the past there were some limitations with some of the tools that prevented them from doing that. Today none of that is true and we're able to help them build applications like this one to really run their business on those systems.
So we have a video to take a look at here that just talks a little bit about what we've been doing with Bear Stearns
ERIC RUDDER: It sounds like a pretty cool project with a lot of cool technology and lots of different choices amongst vendors.
Are they any other key learnings you want to highlight for the group?
JOHN RAUSCHENBERGER: Yeah, the biggest thing Bear Stearns came away with was they are leveraging Web services as an internal interoperability technology and what they've found is that Visual Studio .NET was able to plug very easily into that architecture, interoperate nicely with developers doing development on other platforms and allow them to really use the right tool for the right problem and build applications in less time with lower cost.
ERIC RUDDER: Thanks, John. Thanks for sharing, too. (Applause.) And good luck to those out there who dared to take on the Iron Developer contest tonight and go for that new belt. You might have to be up here next year talking about your projects as well.
Well, John's not the only customer that's found success, nor is Bear Stearns, and I'm pleased to announce a few other customer examples that we made public over the last few weeks with large customers that have found success with the .NET framework running huge enterprise applications.
The first we actually announced quite recently was Allstate. Allstate had a system for policy management that was in place but didn't quite have all the features that they wanted and they wanted to make sure that they could expand the system out geographically across desktops without having to rip and replace what they had in place today. And they chose .NET for this integration and integrated a variety of back-end tasks, some Java as well, using Web services to connect and they were able to upgrade some of the Microsoft components in place as well. And not only did they meet their functional requirements, they also saw a 200 percent increase in performance over ASP.
So when you remember that graph I talked about in benchmarks and I showed some of the increased performance overall, we're actually seeing this in real world applications as people upgrade from ASP to the new .NET technologies as well.
Verizon took their Superpages.com application -- many of you have used that; that's actually affiliated to over 2,500 Web sites so you might have actually seen it at Super Pages or at various other places. They also migrated to .NET. They have over nine million unique users each month, so again tremendous scalability, tremendous transaction rate, really taxing .NET but they're also a happy customer willing to share details of their experience.
And finally Danske Bank has done a Web service and they're actually using this for some key calculations. They're actually taking functionality that previously was on the mainframe and bringing it off the mainframe onto the PC ecosystem. They expect to save over $10 million a year in IT costs just on this one project and that's a trend that I think will accelerate. We'll see people continuing to take functionality out, leave transaction systems in place but move loads off the host onto the PC and take advantage of Web services to really do that.
I'd like to share another customer success story. This one kind of has a special place in our heart because it's the Annie E. Casey Foundation. And Henry Dennig is here and he's going to share some of the details of the project that he did to really help kids overall. So, Henry, why don't you come out and tell us a little bit about the project and then we have a clip, too, as well. (Applause.) Thanks for joining us.
HENRY DENNIG: Thank you, Eric.
The Annie E. Casey Foundation is a non-profit organization devoted to helping disadvantaged children. Many of you probably have never heard of us. If you listen to NPR or public broadcasting, you may have seen us underwriting some of their projects, but that's really where most people know us from. We were founded by Jim Casey, the founder of UPS. So we've got a pretty large endowment. Again, our main focus is helping children. We are about the 18th-largest foundation in the country. We make approximately US$180 million in grants every year. Our endowment is about $2.6 billion, depending on where the stock market happens to be.
The bottom line is what we focus to do is helping children. We give money to other organizations who are directly helping children generally. We do have a small part of our organization that does foster care work.
With the current stock market environment we are seeing our endowment shrink. It probably dropped something about $900 million in the last year. That's also caused us to do flat-line budgeting. My management staff has told me we've got to keep our projects under control. We also have to find ways to better serve our users with what we have.
Our current system is a legacy client/server type application, Visual Basic front end, SQL back end. The provider who had created this system for us pretty much has locked our hands with what we can do with it. We are not allowed to directly interface to the database itself. If we do, our service and support from them is null and void. So what we've done is we've built a front end to that database to allow us to make our grant-making activity.
The front end that we originally created just didn't scale. We created it about two years ago. It didn't work. It functionally does the processing we need but what we discovered is a lot of new functions that we really wanted. We needed to be able to have it Web enabled. Our staff travels the country making grants and working with our grantees every single day. As part of that they wanted to be able to access the data from a Web environment.
They also needed something that could be done fairly quickly, fairly cost effective because of the budget environment and as we talked with our users on what we could do they came up with a whole slough of new things that they really wanted.
Our current environment is also Microsoft-centric but we do have a Java portal that is our corporate intranet so we had to interface with that. We also wanted to interface with an ASP financial application so that we tied our financial data directly out of our accounting system into our grant-making process.
We talked with several developers on what we could do to solve this issue. We talked with our Java developer who created out intranet and they gave us a proposal back. We evaluated what that proposal looked like. It was about a year's worth of development time. It also wouldn't interface as cleanly with our existing applications and what our users are used to using as far as the client/server type front end. And our technical staff in house is very small. The MIS department is only six people. We didn't have the Java skills to push forward with that.
So we turned to Ajilon, a consulting company that we've worked with in the past for other projects, and actually one smaller .NET project. Ajilon looked at what we needed, ran through some different thoughts and proposed that we went with the Visual Studio .NET and the .NET Framework as a solution.
The big plus to us also was the fact that they proposed they could do it in approximately five months with one developer. Now, this in contrast to doing it with a Java-based environment would have likely been three developers for the five months and saved us approximately 10 to 12 man months.
They also proposed an iterative type development environment where they would work with our users and step through the process, show them bits and pieces as it developed and change it as necessary so the users ended up with a really vibrant and efficient solution that they were happy with. I mean, that really comes down to where it's got to be. They've got to ultimately work with it.
Also by going to the .NET Framework and Visual Studio .NET environment we were able to use other technologies. We used the Net Advantage toolset and that allowed us to bring a lot of new controls directly into the application without having to recreate them, data bound grids, menuing and multi-level tree structures that we would have had to create in a Java type environment.
I guess the final piece that really excited us was the fact that it would tie directly into Office XP and our SharePoint environment that we're already supporting. This allowed our users to have spell check and grammar checking, et cetera right in the application in a Web environment, which to them was a big plus. We probably could have done some of that in the Java environment but I know it would have taken us a lot longer.
So overall the big thing was that it was a win for us. It was faster. We could do it in five months and save us ten to 12 months of development time. And the overall goal of the application from a user's point of view was pushing our grants out on the street. I mean, that's what we do. We have to put money in our grantees' hands to help the children. And this application with the improved business process and the new business rules that we were able to implement gained us approximately 20 to 40 percent speed in different areas of our grant-making process and that was just a real huge plus for us.
ERIC RUDDER: Why don't we take a look at the finished solution then and some of the characteristics of it?
ERIC RUDDER: Thank you, Henry. Inspiring story.
HENRY DENNIG: Thank you. (Applause.)
ERIC RUDDER: You know, one of the reasons why that story is worth spending time on, you know, obviously the less money spent on IT development means more money to give to grantees and to help children overall, but I think it also proves a couple nice things. Once, you don't have to be one of these huge reference case studies to take advantage of .NET. You can have a much smaller shop and still be successful. And, two, I think it proves the importance of the ecosystem to delivering solutions overall. Ajilon was a key partner, Infragistics was a key component vendor, really coming together and really building .NET solutions. And I think we see those characteristics in large IT shops, small IT shops, medium IT shops working with partners and working with the industry at large is something that's incredibly important to us.
Well, that was nice talking about Visual Studio 2003, talking a little bit about what we're doing for Office but I think a lot of folks are also interested in our roadmap for the future.
The next version of Visual Studio .NET is codenamed Whidbey and we're going to show some features shortly. As I said, it's timed to come out at the same time as the next version of SQL Server, which is codenamed Yukon. One of the key features in the next version of SQL Server is the ability to write stored procedures in the language of your choice. So previously you needed to know T-SQL to write a stored proc; we're actually going to take the common language runtime and integrate it right into the server so if you want to write a stored procedure using Visual Basic .NET or using C# or using Java via J# or using managed C++ you can write stored procedures in the language of your choice, and I think that will be quite a boon for our developers moving forward into the database world and really making the world come together. A pl
Of course we'll be providing better database tools, design tools, debug tools as well. We'll continue to improve the IDE overall. We'll show you some productivity features in a few minutes. And again integrate community into everything we do right in the IDE. We'll have the next generation of XML Web services, again the security, transactions, reliability built right into the framework. We'll extend what we're doing with Office programming and a whole host of other improvements in Whidbey as well. We can't give away the whole story today but I think we can show some interesting things that we're doing in the future.
After Whidbey the next version really is coincident with Longhorn. We sometimes call this version internally "Orcas." Whidbey and Orcas are islands kind of near Seattle. The key for us is again we'll capture the "Longhorn" platform wave. You'll see new UI tools and designers to take advantage of the new presentation system of "Longhorn." We'll leverage some new storage features of "Longhorn." And really if you think about where we're going with "Longhorn" it's really the next evolution of the Windows platform API. So you can think about Win 16 to Win 32 to really a managed platform where all the interfaces in Windows are managed. So we'll take advantage of everybody's skill sets that they're learning now with Visual Studio .NET, with Visual Studio .NET 2003, with Whidbey and Longhorn will kind of be the ultimate destination for where we're going there.
Well, again, seeing is believing, so I'd like to invite Ari Bixhorn up and we'll give a little demo of what we're doing for Whidbey. Again, feel free to interrupt him at any time with applause for cool features. (Applause.)
ARI BIXHORN: Hey, Eric.
ERIC RUDDER: How you doing, Ari?
ARI BIXHORN: All right.
All right, well it is great to be here today to give you a very early look at the "Whidbey" release of Visual Basic. And in "Whidbey" we have a renewed focus on ensuring that VB developers are the most productive developers in the world while at the same time not sacrificing all the great power features that we received in Visual Basic .NET.
So last Friday night I sat down to do what I do pretty much every Friday night and that is, of course, write VB code. (Laughter.) It's said, I know, but it's true.
ERIC RUDDER: At least you were sitting.
ARI BIXHORN: Yeah, you know.
So this time, of course, I was writing my code in VB Whidbey and that's what we're looking at here. I wrote a straightforward music management application similar to Windows Media Player but extended with some additional functionality provided by Web services and we'll take a look at those in just a few minutes.
The first thing that I wanted to point out is an area of "Whidbey" that we're focusing on for VB developers and that is making sure that the resources that we most frequently use are very easily accessible. These are things like audio and printing.
Now, of course, we've always had APIs to put audio or sound into our applications but wouldn't it be great if I could just go to my toolbox, say, and grab a sound control and drag and drop that onto my application? Well, in VB "Whidbey" you can. This is just one of many new controls that we're providing as part of "Whidbey" to enhance your development experience, so that if I want to play any song within my music collection I just drag and drop that sound onto my form, I'll go ahead and double click on the play button to wire up some code and then with two lines of code here I associate the sound with the location of the file on my hard disk and then I simply play the file. Pretty straightforward.
So audio is great; what about printing? Well, any of you who have ever done printing in Visual Basic you know what a joy it can be, right? (Laughter.) Yeah, a lot of fun. We've all been there. I feel your pain.
So in "Whidbey" we make printing a lot easier and, in fact, if I want to print out some information all I need to do is dim up a new instance of a printer and then I can begin coding against that. So, for example, I can set the output type equal to a print preview and from here I can begin printing really anything that I want from text to an image to an entire data set of information to the current form.
So in this case I'm going to go ahead and delete that line of code and what we want to do is print out a custom CD sleeve for any of the CDs in my collection. And we can see I'm printing out a couple of rectangles here. I'm going to print an image for the front of that CD sleeve and then I'll print out the song information for the back of that.
So printing and audio are much easier to do.
What else have we been working on? Well, since the launch of Visual Basic .NET VB developers have been asking us when will we get the capability to document our code using XML based comments. In VB "Whidbey," you can, and that's what we see here.
The special comments that we have here are XML based and what they do is they describe information about the method that I'm about to call. They also describe information about the parameters that are being passed into the method so that if I want to go ahead and call that method from anywhere in my code or for any other developer who's going to be leveraging this method I not only get Intellisense statement completion but I also get a tool tip that provides me with information about how that method works and then how each of the parameters work.
All right, so we've got XML comments, we have simplified audio, we have simplified printing. I'm going to go up here and set a break point in my printer code and let's go ahead and run this application.
Now, just prior to the keynote Eric was kind enough to give me access to his personal music collection, which we'll be taking a look at now, and I'll go ahead and minimize my instance of Visual Studio .NET, drill down into Eric's taste in music and just like in Media Player we can go ahead and we'll drill down by musical genre. We've got some blues, we've got some classical.
ERIC RUDDER: Got any Brittany?
ARI BIXHORN: I don't know if we have Brittany in here but we do have some really, really cool easy listening music. Let's see what we have here. John Tesh, my personal favorite, yeah. (Laughter.)
ERIC RUDDER: He's no Brittany but he's good.
ARI BIXHORN: He's really good. In fact, I actually have that David Hasselhof CD, the Live from Germany; that's a really good one. (Laughter.)
Tell you what, let's go ahead and move out to another area in the music. Let's go ahead and check out hip-hop. And I mentioned that we've extended this application with some XML Web services and one of the things that I wanted to do is be able to go out and query other CDs for any particular artist that I might have to find out what other CDs they have. So I can simply right-click on the Eminem CD. I'll call the Web service to find out what other CDs are available and hopefully in just a second we will see those.
Now, check out the list view control that we have here. Not only do we have a nice thumbnail view of all the CDs but they're also categorized. They're categorized by the CDs that I currently own versus the CDs that I don't currently own. And this is a new feature in the list view control that we're planning to ship with Whidbey, so that we not only have the ability to do list view or detail view but we can also do tile view and we can also do grouping as well.
Let's go ahead and test out that sound control through. I'll scroll on down here. Ah, the VB rapper, not very well know but definitely an up and comer. (Laughter.)
ERIC RUDDER: I think he's here.
ARI BIXHORN: He might even be here. I'm not sure.
Anyway, let me go ahead and select the VB rap song.
ERIC RUDDER: I hope we have the sound connected.
ARI BIXHORN: I hope we do as well. Let me go ahead and hit play and in just a second -- (music segment.) All right, you get the idea. (Laughter, applause.)
ERIC RUDDER: Yeah, we struggled with the audience response forms on whether we should give a trial copy of Visual Studio .NET or the VB rap version and in the end we went for the trial edition.
ARI BIXHORN: I think we're going to have to fulfill those CDs maybe after the conference.
So we've got easy audio. Let's go ahead and check out that printing. I'll go ahead and click Print and we hit our break point.
Now, I notice, oh, you know what, the rectangle that I've defined here is not exactly where I want it to be. So in VB Whidbey without stopping the debugger I'm going to go ahead, make a change -- (applause) -- (laughter) -- your experience may vary.
ERIC RUDDER: Now you know why we didn't ship this till '03.
ARI BIXHORN: There we go. All right. (Applause.) Easy printing with a nice little print preview dialog box there.
Okay, so we've got XML doc comments, we've got some new controls, we've got easier access to the resources that we use on a daily basis, but what is something that is really core to the Visual Basic development experience? Data access, right?
Let's go ahead and jump back into our code and let's say I want to extend my application to not only manage my personal music collection but to also manage my personal video collection. And what I need to do here is go into my database and pull some information from some tables that provide video based information.
So I'll go ahead and switch over to my server explorer. I'll drill down into my database here that contains all of my music and video information, find the table that we're looking for. All right, video genre.
Now, I'm going to go ahead and drag and drop this onto my form. Now, what Visual Basic "Whidbey" is going to do is not only create the connection to that database for us but it's also going to generate default UI that is automatically bound to that data, which we see here. No lines of code; I simply drag and drop a table and we've got a data grid. Pretty cool, right? (Applause.)
Ah, but wait, there's more. You'll notice that I've got a Smart Tag up here. And If I click on that Smart Tag I get a few options. I can actually change the look and feel of the UI. In this case I'll change it to a data bound form rather than a data grid.
So we've got a data bound form here for our video genre but we actually need access to the videos themselves. Once again I'll click on that Smart Tag and I'll select Add Child Table. And this is because Visual Basic Whidbey maintains information about the tables and the database and understands that the video table is a child table of the video genre. So again we haven't written a single line of code, we have two data-bound controls on our form. I'm going to go ahead and drop into code here real quickly and just wire up our play button so that we can actually play a video or two; drop that in. Now let's go ahead and run this application and check out our video collection.
We'll bring back up the VB DJ. I'll go ahead and click on video to bring up our video manager. And as we can see here automatically we've bound to the data, no code. I can scroll through the data. Let's go ahead and move over to our instructional videos here. And I'll go ahead and close that down a bit, scroll down and see what we have, some VB TV episodes, a Night at Home with Visual Basic. That's my personal favorite. We've got the Sarge here. For any of you who have ever seen the movie Full Metal Jacket you might recognize this gentleman. I think he has a message for us.
ERIC RUDDER: Let's see what he's got to say.
ERIC RUDDER: All right! (Laughter, applause.) Way to finish strong.
ARI BIXHORN: I tell you what. (Laughter.) So the Sarge shares my enthusiasm with the future of Visual Basic.
What did we see here today? Well, we saw a very early look at just a few of the features that we have planned for the Whidbey release of VB. Now, in addition to new power features like XML documentation, which we saw, as well as other power features like generic, VB "Whidbey" takes productivity to new heights: easier access to commonly used resources, rad data access, a slough of new controls and, of course, our good old friend, edit and continue, are just a few of the many new features in VB Whidbey that will absolutely blow you away.
Thank you. Thanks, Eric. (Applause.)
ERIC RUDDER: Doesn't Ari kind of look like that VB TV guy? It's kind of weird.
I'm glad the team I think got it right this. When we were designing Visual Basic .NET the first time I think people kind of thought it was edit or continue and we got edit and continue back in the product.
We've got a lot of cool features up our sleeves for VB "Whidbey." We couldn't show them all today, but I think the future is so bright.
But more importantly than what we're doing is what the community is doing at large. I wanted to take a minute as I closed and thank you for your help in driving the .NET ecosystem to recognize some people who have been incredible participants in the .NET ecosystem over the last ten years.
As Jim mentioned here, we've been doing VBITS and VSLive! for t10en years and the first person was Bob Trudeau, who has actually been at a VBITS or VSLive! event every year for the past ten years, if you can believe it. Is Bob here? Can Bob stand up? Hey, Bob. (Applause.) And the other three folks are Michael, Dan and David who haven't managed quite to capture an event every year for ten years but they were actually at the first VBITS ten years ago and we'd like to recognize them as well.
In addition to thanking them for their participation we'll actually be sharing an Xbox. Cool community members get cool prizes and cool gifts and it just our way of thanking you for helping the community overall.
I want to thank Fawcette for giving me the opportunity to speak today. There's a lot of great sessions. I encourage you really to see the partners, see the training that Microsoft and other speakers are putting on. I'll be walking the show floor after I finish some press interviews, and I encourage you to come up and say hi.
Again, thank you and have a great day.