Remarks by Satya Nadella, President, Server & Tools Business; Jason Zander, Corporate Vice President, Visual Studio; Scott Guthrie, Corporate Vice President, Server & Tools Business; and Steve Ballmer, CEO
Sept. 14, 2011
ANNOUNCER: Ladies and gentlemen, please welcome president, Server & Tools business, Microsoft, Satya Nadella. (Cheers, applause.)
SATYA NADELLA: Good morning, everyone. Welcome to day two of BUILD. I hope you had a fantastic time yesterday. What do you guys think of those devices with “Windows 8” preview? (Cheers, applause.) I hear last night the most visited website in the world was the blog on how to boot from VHD. (Laughter.) So, we had some fun with that.
So, today, this morning, we're going to switch gears. We're going to talk about the back-end Windows platform. Specifically we're going to talk about “Windows Server 8,” Windows Azure, and Visual Studio. And we're going to talk about this in the context of the great, tremendous opportunity that you as developers have to lead the transformation of applications from client-server to the world of connected devices and continuous services. This is a massive transformation and a massive opportunity for all of you.
Yesterday, Steven and team talked a lot about connected devices, the new hardware, the new form factors, the new interaction models and user experience, the fact that these devices are always connected, and the fact that the applications that are deployed on those devices are constantly getting enhanced because of the services they connect to.
The continuous services that are powering those devices have many key attributes. One of them is the fact that they need to be able to scale with elastic infrastructure. You don't need to be bound by the limits of infrastructure.
You want to be able to compose these services with code running in a very distributed sense. So, this is really where distributed computing comes to fruition in its full form.
You want to be able to take the richness that's there in your applications and expose it as data. So, the data models that you have inside of your applications, it's something that you want to expose as a first class namespace for other developers to use, and you yourself will use data as a namespace while you're building these continuous services and composing these services.
You also need to be able to handle the multitude of identities that your application needs to support. Some of them will be consumer identities, some of them will be organizational identities. And having done that, and made it very accessible to all devices, you also want to have secure control; that means great access control that is secure.
And lastly, you need to run a continuous service, and that means you want to be able to build continuously, deploy continuously, monitor continuously. There's going to be a sea change for us as developers in terms of how we triage, for example, the operational metrics of your code performance, the bug database, as well as the build that you have from either IT or a service provider. This world of dev ops is something that's going to really change how we think about application architecture.
This design point is the core motivation that has led to us building our deep and broad platform across Windows Server 8 and Windows Azure.
We've also grounded our platform on the realities of hybrid infrastructure. We know that the infrastructure on which these continuous services run will be distributed geographically, will span organizational boundaries, will span security boundaries.
So, therefore we've stressed the commonalities between Windows Server 8 and Azure when it comes to identity, virtualization, management, and the application platform. That way you as application developers can make sure that your application or your continuous services gets most optimally matched to the infrastructure that is really running across this hybrid distributed computing fabric.
We want to illustrate all of this to you through a series of demos throughout today's keynote. These are all grounded in what we see as the application patterns many of you are already building.
The first demonstration will be of building a new Metro style application, connecting to a cloud service. We will then take that cloud service and have it reach multiple devices. We will have that cloud service run on Windows Server 8. And then lastly, we will take that cloud service and make it a composed service where you have data running inside a private cloud datacenter and some code in Windows Azure, and reaching multiple devices.
Throughout this presentation we'll talk a lot about our Visual Studio tools, because that's what makes all of this possible. We'll also talk about Windows Server 8 infrastructure and we'll talk about Windows Azure services.
So, we're going to let the product speak for itself. So, it's going to be lots and lots of demos. And so let's get started with the first demo.
The scenario here is about building a Metro style application, but giving it great capability through a service that we build on Windows Azure. And to help me show you that, let's welcome onstage Jason Zander. (Applause.)
JASON ZANDER: All right, thank you, Satya.
So, as Satya just mentioned, we want to do a really great job pairing up services so we can run in the cloud to all sorts of devices.
Now, the example that we're going to use for the next couple of demos to demonstrate this is we built a little game here, a turn-based game. It has a game engine that runs inside of the cloud. We're going to have multiple devices hooked up to that. And throughout all of that we're going to use your core programming skills, Visual Studio, and all of the other frameworks and languages that we have. Let's go ahead and dig in.
I'm going to start off first of all right over here with my Windows developer preview device. Let me flip that back in here. And we've got two different things here, if we can switch over to the machines.
I've got my developer preview device. I've also got a Mango Windows Phone running up here on top.
So, I'm going to launch the application here, and I'm going to invite friends. The first thing we're doing is going to connect up into the Azure service, and go ahead and grab who's logged in. It looks like Nate is logged in, go ahead and click "send invitation."
Over here on our phone it looks like I've got a notification. I'm also logged in. I'm going to go ahead and click "join" to join this particular game.
So, we're signing in and going. OK, great. And I'm going to go ahead and click "start game" over here, so we can go kick this off.
So, we've already been connecting up into our Azure service. Let me grab a few kind of weapons on here and that kind of stuff and get really set up for the game play.
So, we're ready to go. I'm going to grab this tank. OK, I'm evidently, I don't know, shooting into San Diego or something. I'm not a very good aim, but you can see that you saw it on both devices. Again, we're communicating through Azure between both these devices live.
So, let's see if we can do a little better job from the phone device, and we'll go grab this here and shoot that.
Did I mention I write code for a living? I'm really not a very good aim. But you can see that we're going back and forth. I can see I need some more firepower here. Let's go grab the nuke and see if that can do something a little bit more different. Dangerously close to home there, isn't it? OK, boom. So, all right, you get the idea.
We're basically going to go back and forth between these two again with Azure connecting everything up between the devices.
Now let's jump in and look at some code and see how exactly did we build this.
So, I want to switch over here to this machine right here. I'm running Visual Studio 2010 and the latest version of the Azure Developer SDK, which we've just released. And there's several cool new features in here. Everything I'm showing is available right now, you can go do this.
First, this is my service running up in the cloud. So, I've got some worker roles, web roles, things like that in here.
One of the things that you asked for, for feedback, is I want more support for going through my testing cycles and staging, things like that. So, if I click service configuration, you see we have a managed option now. And say I wanted to add a staging version in here, I can just copy from production, so it's one step before. Let's call this one staging, hit enter on that. And if I were to go ahead and now pick staging out of the list, I can now configure it. So, if I want different connection strings in here, I probably don't need 10 instances, maybe we'll make this two, and we'll push that in there. So, very easy, simple way for you to connect up your services, definitions, to make sure that those are correct and ready to go.
Now, in our scenario the thing I want to do is go add a leaderboard, because we've got some great gameplay, but I need to actually have the ability to track our high scores, because I think I'm going to get better at that game. So, let's go ahead and look at some code for that. And let me go find leaderboard.
And rather than have you watch me type a bunch of code here, let's just look at the code really quick. All we're doing, we're using a robotic, story-based model to pull the data back out, you know, turning it into a response, and then sending it back. So, I can now make a call up, go grab the data, and pull it back, really straightforward, kind of makes sense.
Now, with the code in place, the next thing I want to do is go up and actually publish. So, I'm going to go up and click to publish. With that I can go back and load my application, and then I have this service right here, here's my staging.
Now, when my service is up there, I'm going to be using the normal support for monitoring: is my system up, is it running the way that I want to, anything I need to adjust or anything else like that. But in addition to that, we want to enable some advanced diagnostics. So, when you get past the kind of top-level monitoring things, and really maybe I've got some bottlenecks in my code, we have IntelliTracing here, one of the things we've enabled is profiling.
So, if I click settings, I can switch over to instrumentation, and we're going to do all the heavy lifting of getting your application deployed and hooking up to profiling and grabbing that data back for you, so now you can actually go in and take a look at it.
In the interest of time let's go right over and take a look at a profiling example that we have. And you can see this is just my service. Here's my new leaderboard that I've cranked up and run. I can look at my hotspots. I have association with code, everything in there and ready to go. (Applause.) Yeah, thanks!
So, all that is available today, Azure SDK, advanced diagnostics and ready to go.
So, with the leaderboard service now enabled, we need to go back into Satya's picture and go start grabbing the devices and connecting those up.
So, the next thing we want to do, let's switch over to this development machine, and I have the new version of Visual Studio 11. This is the ultimate version that I have here, and this has got the game that came from my developer preview machine.
So, I have the leaderboard all mocked up, ready to go, I've got some kind of dummy data in there, and it's ready to hook up to the service.
So, if we go over here, a couple different things, let's go to leaderboard. One of the things you'll notice right off the bat, we passed 1 million downloads in the productivity power tools for Visual Studio 2010, and I'm happy to say we've integrated them right into Visual Studio 11. So, you can see it there. (Applause.) Yeah, they're very cool. I don't even code anymore without these. So, you can see it's built right in.
So, I've got leaderboard sitting right there, very happy.
Now, this particular chunk of code, we're just going to go grab it, pull the data back down, parse it and bind it and then go display it. So, that's all pretty straightforward.
The one thing I kind of notice is that this code and this code kind of sitting up here off the top, that looks awfully kind of familiar. You know, it turns out that one of the most popular ways to write code is called copy and paste. I don't know if you've ever hit that yourself. But, you know, I'm looking at this code and I'm thinking to myself it doesn't look very robust. There's no exception handling, you know, there's some stuff we want to do.
So, another new feature of Visual Studio 11, I'm going to right-click, I'm going to say find matching clones. (Cheers, applause.) Yeah, that is really cool.
Now, just so you know, what that did, that wasn't just kind of a grep kind of thing, we actually do a parse, we're ignoring the constants, we're ignoring the names, we're actually looking at the syntax tree across your project. And you'll also notice that I didn't actually use the entire source method; it's just a block of code, and I can find matches, we can even find strong matches or weak matches and that sort of thing. So, a very cool sort of feature so you can look for all that, you know, un-robust code that someone else on your team wrote. (Laughter.)
OK, so we've got this basically ready to go. Let me go ahead and launch the application here.
You can see I'm running on Windows 8. I'll click the ranking, and there we go. It looks like I'm doing pretty good. Steve is catching up to Scott and I, so we'd better practice a little more.
So, we've got the app up and it's all connected and ready to go, happy with that. Let's flip back over here.
So, this game is kind of cool. What I do want to do next, though, is these are really nice devices, aren't they? I mean, I want to take advantage of this machine and do some really cool stuff. So, we had kind of like a 2-D sort of game. I'm going to switch over now, and we've been working on a version of the game that's written in C++, and directly using DirectX.
So, let's go ahead and use the power of C++, DirectX on the machine. Let me just go ahead and launch this app so you can see what it kind of looks like.
All right, so we've got first class tanks up and running, and I can kind of pan around and kind of take a look at various sorts of things. (Laughter.) Oops, I don't think that's supposed to be in there.
To be fair to Scott, he didn't put that in there. I'm having a little fun at his expense. He'll be up next, so he'll be able to see that. But we're going to have to fix that before we ship; I've got to take out my practical joke there.
So, I'm going to go back and do a stop debugging. And we have a couple of teams, the digit and ticks teams, in the Win C++ group, and they've been working on some cool new tools to help us with DX.
So, if I open this up, this is what the billboard should have said, "Welcome to Tankster" and the population. You can see we have alpha blending.
This is another new feature of Visual Studio 11. We actually have a new image editor. It supports alpha blend and a whole bunch of other new monitoring kind of things. (Applause.) Yeah, I think frankly the last time we touched the image editor in Visual Studio, Debbie Gibson was on the charts. So, it's about time, we needed to do that. So, it's in there and it's pretty cool.
We've added some other support for developers. So, here's my tank model, and I'm sitting here, of course, right inside of Visual Studio. It's pretty cool. I can actually connect, look at the wireframes, pick individual pieces out of the entire system; pretty cool.
We're not really expecting you to go into Visual Studio and design your game from there, there's obviously really great tools for doing that, but when you think about what you're doing as a developer, you may have, you know, paint issues like we just had before, and tools kind of help you out with that.
I'm going to go look at billboard here, and sure enough this is the component that looks like is showing up. So, I'm going to put that into view. Let me go ahead and select this actual pane, go over to properties and take a look at that. You can see here I have the texture. So, that's going to be the thing that winds up on top of the bulletin board.
Let me click the dot-dot-dot here, and I think that should be this other thing that we've got. OK, great, that one makes sense. I'm going to hit F5, we'll go ahead and build it. So, now we've applied the right kind of surface on top of that. And if I scroll back over, we're getting pretty close. OK, so we now have the sign up and running, but you can see where we had alpha blending is not quite right. So, I want to go in and debug that.
If you look up here in the corner, you're going to see in the upper left-hand corner some diagnostic information that's being run. I'm going to do a print screen of this, maybe rotate a couple times around and take a look. OK, makes sense.
Let's flip back over into VS and let's go ahead and do a stop debugging.
And what you see here is we've actually now captured frames as they were rendered, and I took the print screen. So, again we want to put the diagnostics for this right in your hands as a developer.
So, I know my problem is over here where this black text is. Let me double-click it.
Now, the first thing this is doing, it's actually capturing for that pixel how did it get to be that color, well, how did that happen? And if I go back over here, I can look at the pixel history, and we start off with a blank screen, OK, then we added the mountains, then we added the kind of background and surface area, and then we added the billboard. OK, that seems to be wrong. So, this is great diagnostics information. It was pixel 893,252. But if I expand this out, now you can kind of see, well, how is that coming together? My frame buffer was right, my pixel shader, but our result was not. So, we're getting very, very close to where exactly this problem is.
Now, if I go back over here and take a look at this, I can click the object table, the object table is going to give me the ability to talk about and look at all the objects that are used.
In this case it looks like a blending problem, OK, because I'm blending transparency over and it's not coming through. And blend is set to false. That certainly seems like a problem. Now let me go back over into the call stack here.
And this is the cool thing here, because now I can combine DX and the graphics pieces, and the fact that you're in your developer environment. So, I've got my code here, and I've got these two together. So, I went all the way from pixel, and I can go all the way back here directly into the code. (Applause.) Yeah, that's pretty cool, being pixels all the way back.
Now, I've got some code here, and this is my code, so I know it's got to do with blending. Sure enough, it looks like we've got a debug setting that was checked in. I need to be able to blend that successfully. We'll go ahead and build it, launch this other piece back up, and now I rotate back over and everything is good. (Applause.) Thank you.
So, a very quick peek at Visual Studio 11, some of the new features, both the ability to use Azure up in the cloud, add my services, connect it up with all sorts of devices, my same skillsets kind of applied across the board. I've literally just scratched the surface of some of the new Visual Studio features, and we've got a lot more coming.
So, with that, I'm going to hand it back to Satya and tell you thank you very much.
SATYA NADELLA: Thanks, Jason. (Applause.)
So, that gave you a great feel for the new tools. So, Visual Studio 2011 Developer Preview is going to be available for all of you, so the tools, the great languages support built in, the great productivity enhancements, everything from code review to code analysis, project management, all of that I think is going to make development fun, the Windows Azure SDK 1.5 and the Visual Studio tools for Windows Azure development, as well as the Windows Azure toolkit for Windows 8 so that you can get started today to build these cloud back-ends for your Metro style applications.
The next major consideration for developers is the application platform and the application lifecycle management.
One of the top questions for all of us to make sure that the app platform is robust enough to be able to really support the sophistication of your back-end. You also want to be able to make sure that the back-ends that you build can reach all of the devices.
And in that context we are making significant investments in .NET with .NET 4.5. We have enhancements to our messaging, workflow, async support, web, and data parts of .NET, as well as ASP.NET.
When it comes to ALM, it becomes a very important service and toolset for you to be able to manage the complexity of your development projects. You want to have the efficiency of the team come through, and yet take the complexity of the project with code for multiple devices, the back-end code.
And what we're doing is we're taking Visual Studio Team Foundation Services and making it available on Azure as a service to help you get started with managing your projects much more efficiently. (Applause.)
And to show you both the next generation application platform for Windows Server 8 and Windows Azure, let me introduce up on stage Scott Guthrie, and then later Jason Zander will show you the new Visual Studio for tools services on Windows Azure. So, Scott? (Applause.)
SCOTT GUTHRIE: Well, good morning. Jason just showed you how you can build a Metro style application that integrates with back-end Windows Azure services. I'm now going to go ahead and walk through how you can build a web application using ASP.NET that integrates to those same back-end services, and enables you to build a web experience that can be viewed by any browser and any mobile device. And I'm going to be using the new Visual Studio 11 Developer Preview, which is available this week, to do it.
So, we're going to get started here by doing File, New Project, and I'm going to choose the ASN MVC 4 template, and we're going to name this project Tankster. And we're just going to use the default Internet application project template.
So, those of you that are new to MVC, one of the things that we do with our project templates is kind of scaffold the default site for you that has a bunch of functionality built in. So, I'm just going to run it here so you can see what it looks like. So, it has things like logon, registration, and security kind of already wired up.
One of the things we've done with our new MVC 4 release is kind of stylized up our template a little bit, made it look a little bit more modern. We've also kind of made some nice adaptations to it, so it adapts to different screen real estate sizes, takes good use of CSS and HTML5, while still working with older browsers.
What you're seeing up here on the top is actually a real rendering of the page running inside Visual Studio. You can click around it. On the bottom here as I click on different things you can see how we've gone ahead and shown different kind of UIs and kind of the view for that.
And one of the things that's pretty neat is this new feature that we've added for the server, which allows me to kind of inspect where my HTML is coming from, and you can see on the right-hand side here we're mapping the client rendering code that was rendered back to the server code that actually caused it to be displayed. (Applause.)
And what's cool is this is not just for your views and your layout but even, for example, let's say I click on the logon link up here, you'll notice we automatically opened up the logon partial template here on the right-hand side. We're even smart enough to tell you this is the line that caused this even in the L-statement within that view template. So, it makes it really easy for you to kind of see what's causing different things to render, and you can explore CSS, the full DOM explorer as well.
And what's great is it's not only useful for displaying information, you can also click on things. So, say, for example, I want to click on this little copyright thing at the bottom right. I can go ahead here and just change the copyright here to have my name, save, hit refresh over here. Notice it takes effect as well. So, it's really easy for you to kind of work back and forth between design view, the DOM explorer, CSS, in source mode, have a really seamless experience. And because this is actually a separate tool window, if you had a dual-screen system, you can just drag it off to one different screen, have your source on the other screen, it's going to enable kind of a much faster and more productive dev experience. (Applause.)
So, we have a kind of default site here. I'm going to build this Tankster app, and I wanted to have the same look and feel as the game that Jason showed you a little bit earlier.
And so one of the things I'm going to do to kind of enable that is I'm going to get rid of the default site.CSS file that comes with the project, and I'm going to replace it with a couple of CSS files that already match kind of that look and feel.
So, I'm just going to go ahead here and I'm going to import reset.CSS and Tankster.CSS, so a fairly standard technique to have the reset to kind of clear out your styles across browsers, and then Tankster has our specific style information. And then I'm just going to rerun this application, and you'll see that my site now has a style that matches the game that Jason just created.
Now, you might be wondering, well, how did that actually work, because you didn't actually -- it used to be called site.CSS, and I've just deleted it, and I've added two new CSS style sheets; how did the page know to pick this up?
And so, for example, if I did content/CSS here, that is the minified, bundled version of those two CSS files that I'm referencing on the site. (Applause.)
It's also a big performance win, because you have fewer HTTP requests going back to the server, and the files that are being downloaded are much smaller in size, so your pages are going to load a lot faster.
So, we've got a kind of default site look and feel here now. Let's actually write some code to call Jason's Web Services, retrieve the data and display it.
So, to do that I'm going to start off by adding a couple classes into my project to represent the data. So, I'm going to add them into the models folder, and I'm going to call this leaderboard.
And just so you don't have to watch me type it, I'm just going to add these two classes. One just represents properties about users in the game, and then a leaderboard class that just will maintain a list of the top leaders in terms of boat skills within our game here.
And then I'm going to go into my home controller, and I'm going to replace the home action with this method here. And all this is doing here is just writing a little bit of code that's going to call Jason's services running inside Azure, retrieve some data. This is using REST. I'm going to basically map the data onto those two classes that we've created, and then I pass it off to a view template.
What's nice about this you can see here is I'm taking advantage of some of the new async language capabilities that we're introducing with C# and VB. And so you can see I'm using the async keyword here and the await keyword here.
The benefit is it allows me to write very, very clean asynchronous code, and so it's a lot cleaner from a coding perspective. And the big dramatic win here is on a performance perspective this now allows my server to handle thousands or even tens of thousands of concurrent network connections, and scale super, super efficiently. And you'll find with both .NET 4.5, as well as with Windows Server 8 just some really great performance wins in these types of scenarios.
So, I'm just going to change this VB async controller, and then the last stuff I just need to do is I'm going to get rid of the default homepage that we have today and replace it with one that's going to display our leaderboard information.
So, I'm just going to create a new one here, we're going to pass in that leaderboard class, and generate this file. So, we'll just give it a title "leaderboard." To display this information I'm just going to go ahead and do some standard UL LI looping technique, and I'll say "for each leader in the model.leaders." Notice we get full IntelliSense obviously. And then I'm just going to say "this is what each item will look like," just sort of standard UL LI technique where I'm displaying that information.
And now when I rerun this project, calling Jason's Web Service in Azure, I'm asynchronously pulling that data in, I'm mapping it to those two classes, sending it off to a view, and now I have a nice rendering of the leaderboard of the top leaders within Jason's team. I don't know why he's beating me; we have to fix that.
So, this works great, and because I'm just using standard HTML CSS it's going to work across any browser, including sort of phone factors and smaller kind of screen real estate devices.
Now, the only downside, though, on a really small device like a phone, though, is that it's still going to be kind of a little pain, because I'm using a lot of horizontal space on the page. So, it's not going to be super optimized. The user might have to pinch and pan a little bit in order to actually see all the data across that wide horizon.
So, what I want to do instead here is just spend a little bit of time mobile optimizing it, so that it feels a little bit better on a small form factor.
There's a couple ways I could do that. So, when you create a new MVC 4 project, you'll notice that there's actually now a mobile application project template that you can use, so that if you want to build a standalone app specifically for mobile devices, it's really easy to get started and do that.
What we're also doing though is making it possible so that you can start with a project like I have here, which is built for desktop browsers, and easily mobile-extend it. So, I'm going to actually take advantage of that technique.
So, to that I'm just going to import a NuGet package called jQuery.mobile.MVC. This is going to import a couple files into my project here, and let's take a look at those.
Even better though is some of the server support that we're adding to ASP.NET to allow you to easily take advantage of that.
And so one of the things that we've done here if you look inside our project again is you'll notice that there's a new file that's also been added by that NuGet package called layout.mobile. And what we're doing is we're -- in the model view controller world, you can have clean separation between your controllers, your models, and your views. With MVC 4 we're making it possible so that you can easily override any of the views inside your project to have device-specific optimizations within it.
So, for example, this layout.mobile will basically override when a phone hits the site, and actually has a layout that's kind of optimized for a smaller screen real estate. And the cool thing is you can do that on any individual view, partial, or layout.
So, if I wanted to, I could, for example, override the index.CSS HTML to have a mobile-specific view, but I don't need to do that. So, I can choose which files I want to. In this case I'm just going to use the standard HTML app here, but I am going to go ahead and annotate it with a few jQuery Mobile annotations. So, I'm going to basically say I want this thing to be a list view style rendering, I want to enable filtering on it, and I want to inset it slightly so it looks a little better on a really small screen real estate.
And then I'm going to rerun this application. On my desktop browser it's going to look exactly the same because I'm using the standard desktop layout, and those annotations are just going to be ignored, and they're perfectly valid HTML5 annotations.
But if we switch gears here and hit it with a phone, and so I'm going to show here an iPhone emulator. We're going to hit that exact same app, and one of the things you'll notice now is we're taking advantage of that new mobile layout, and we're taking advantage of those data annotations to have a much smoother look and feel across that experience that's optimized for a small form factor.
I could go ahead and do filtering. This is all client side. So, I can filter to see just the JAs or the SCs. Again you'll notice full logon registration capabilities built into the template, and again I can click on say the about link and go back and forward within my site. And with only a few lines of code it's super easy for me now to mobile optimize my site, and have it work across any phone, whether it's a Windows Phone, an iPhone, Android, or any other type of device. (Applause.)
The last thing I want to do with this application is integrate chat support. So, we want to have it so that anyone in the game can quickly -- whether it's on your phone or whether it's on a desktop browser -- engage in chat and talk back and forth with other people. I want to use WebSocket to do that.
And one of the things we're doing with both Windows Server 8, as well as with .NET 4.5 and Windows 8 as well, obviously, is to support WebSocket in a pretty deep way. And I can take full advantage of that within .NET.
So, rather than have me write a bunch of code here, I'm just going to import a few classes and walk you through it. And so I'm just going to install this little chat sample that I've already written and just walk you through some of this code.
So, what you're seeing here is a simple chat handler that I've added into my project. I'm just importing it -- driving it from the WebSocket handler base class, and I'm basically overriding three methods, on open and on close they're going to be used to allow people to join and leave the chat, and then this on message method is basically just going to broadcast whatever message someone sends over a WebSocket to this chat server to all of the listeners that are currently in the chat room.
And now when I run this app, I can click on this little chat, go into the chat room -- be a chat with just ourselves, so let's actually have two versions of ourselves up. So, two separate browsers, two separate connections in the chat room. And I can say, "Hello everyone."
Notice that sent the message to the WebSocket handler on the server, it rebroadcasted all the other clients, immediately got it reflected in real time. Say hello back. And, again, it goes back and forth here in a pretty seamless way. Because we're using async on the server, we can support thousands of concurrent users connecting to this chat room.
And what's cool is in addition to kind of supporting WebSockets within a browser and a client as well as within ASP.NET and WCF, we actually have a WebSocket API that's new in .NET 4.5 that allows you to connect to a WebSocket channel anywhere. So, for example, here I could go ahead and run this little command line called pinkster, this is written in C#, it's a console app, it's going to connect to my ASP.NET WebSocket listener, and it's just simulating game chat and game play information to it.
If we had a little bit more time, we'd integrate it with Jason's other back-end services, and now every time that something happens within the game, we could basically broadcast it to thousands of listeners. (Applause.)
So, it's really easy to build this app, to add mobile capabilities, take advantage of async, take advantage and integrate WebSockets within the system.
The last thing I want to do here is I want to talk a little bit about deploying. So, obviously I can go ahead now and deploy this to any Windows Server 8 server. I can also go ahead and deploy this app to Windows Azure. And one of the things that's new this week as part of the Azure tooling update is that we're enabling a new option on every server project inside .NET where I can just say add Windows Azure deployment project. When you do that, that'll automatically add into your solution the appropriate Azure deployment project, pre-wired up with your ASP.NET app or your WCF app, and I can then just go in and change connection strings for the cloud-specific stuff, I can go in and say, “hey, I want to run it on a quad core system and I want 55 instances of this thing running.”
And then it's deployed elastically to the cloud, I can just go ahead and hit publish, enter my credentials, hit publish, and now that server app can be available to any type of client out there, can now handle millions of concurrent users around the world and I can take full advantage of that kind of elastic cloud capability. So, it makes it really easy to build that, really easy to deploy them, and you can run them to any scale. (Applause.)
So, we finished building our app here. I've got some code on my machine. Jason earlier built a whole bunch of code on his machine. The last thing we want to go ahead and do is talk about, you know, how, from a project management perspective, can we actually put all that code together, manage it as a project, and kind of do some basic project management?
And I invite Jason back on stage to show off some of the great things we're doing with Team Foundation Services to make that really easy to add. Thanks a bunch. (Applause.)
JASON ZANDER: Thanks, Scott. That was awesome. So, Scott mentioned we've actually pulled together a lot of assets now. We've got our service, our new leaderboard, our chat service, everything else, plus all those cool form factors. And, you know, Scott and I and three or four other people are building this, we kind of need to pull this together as a team.
So, let's switch over here. And one of the things I want to do is pull up the TFS preview. So, Team Foundation Service, and one of the things we've been doing is taking Team Foundation Server and building it as a software as a service on top of Azure. We're using SQL Azure, we've got worker roles, Web roles, storage, the whole thing. Great platform for that, makes it really easy for me. I can just walk up, you know, right here inside of the browser.
So, let's go off and sign up a new account. And I'm going to put in my account code to make that match our case. Click OK on this and then go ahead and click sign-up.
Now, we're creating an account right now. The cool thing is because I'm using software as a service, I'm not going off and provisioning a bunch of machines and pulling it together. Instead, we can let TFS go ahead and create all the project collections and everything else that we need to get the applications together, start doing the developer story, build, deployments, all the rest of that kind of stuff.
Now, I'm not going to make you watch me create teams and pull that stuff up. Let's go ahead, instead, and go right into a project that is already created so we can look at that.
Here you'll see, I'm just jumping into source view. We've added the game services in here so I can explore around -- my entire team has now been added, so we're together working on this project. I can pull down, grab the source code, start doing edits, updates, builds, that kind of thing.
One of the things we've done with Visual Studio 11 and for our ALM support is we've done a significant amount of agile work. I'm actually using Scrum across Visual Studio, our own team when we do this work, so we've actually been using this ourselves internally, it's been awesome.
One of the things I may want to do now is go back to my back log and look at, well, what in my product do I want to be able to go off and enable? So easy planning. I'm all inside of the browser, so it's very low friction to get ahold of. Let's see -- as a CBC, I want -- all right, that might help me do my aim a little bit better. So, you see it's very easy to go ahead and add a user story into the system. I can move these around in order, figure out where it's going to land.
I'm just going to drag it over to my current sprint so we can do our sprint planning. If I now click on the sprint itself, a few things, one, I've got my new user story here. I'm going to go ahead and click plus and go add a new task down here. Whatever that looks like. Like the way I type on glass.
So, now I've got my user story, I've got my task in here. You can see I can see how my team is kind of lining up, Tony and Drew have got a lot of work. I don't have a ton.
Let me switch back over into the taskforce. We can go off and start doing our stand-ups and we can figure out who's assigned to what. So, everything off to the cloud. Click this. I'm going to pull down to me. OK, this looks pretty good, so I've got some work that I'm kind of doing. I see the new stories here. I'm going to drag that over to in progress and have that automatically assigned to me.
So, now I can actually start tracking each piece that we're doing, doing our stand-ups, implementing all the new functionality and all the new features there, and pull it all back together.
Now, the cool thing with the service is it works directly on Visual Studio 2010, so we have a fix that goes in on top of that, allows you to send that up to the cloud. Also works with Visual Studio 11 as Scott just mentioned. Visual Studio 11 is now available for download for MSDN subscribers. You can go for the next couple of days, and then everyone right after that, you'll be able to pick it up and connect those things together and I encourage you to go take a look at that.
With that, I'm going to hand it right back to Satya and say thanks again. (Applause.)
SATYA NADELLA: Thanks, Jason. All right. So, hopefully you got a great feel for all of the cool work that's going on. One of the things that I wanted to highlight, if I can find the packet, is when last night you picked up your case with the device, you also got this nice little package with an invite code in it, and probably you were wondering what that invite code was all about, it is the invite code to activate your Team Foundation Service on Windows Azure. So, please go ahead, take that. (Applause.)
And all the things that we talked about and showed Visual Studio 2011 Developer Preview .NET 4.5 Developer Preview, as well as ASP.NET MVC 4 Developer Preview, all available for download and hopefully you'll all get a chance to download that and start playing with that.
The underpinning of all the applications that you saw is the core Windows platform, Windows Server and Windows Azure. And we're extremely excited to unveil the developer preview of Windows Server 8. This is a major release for us. It is the most cloud-optimized operating system. We have learned from all of the services that we have been running at Internet scale, including Windows Azure. And all of that learning is making it into the next release of Windows Server.
So, let's talk about some of the key features. The first is the application platform. We've already shown you a lot of the capabilities of the application platform, the richness of .NET 4.5, ASP.NET. But one of the key features of our application platform is the symmetry between what we do in Windows Server 8 and Windows Azure.
In addition to that, we have done things to our app container and the app host and made it truly multi-tenant. We worked on the scalability of IIS, especially in a multi-tenant environment with quality of service guarantees for service providers. So, significant progress on the application platform.
And then once you build your applications, you want the infrastructure, in which most cases it's the cloud or the virtualized infrastructure. And we have done a major revamp of how you can, in a multi-tenant way, provision your compute, your storage, and your network in support of your variety of different application workloads.
The entire virtualization and cloud is built on top of our high-availability infrastructure. We've taken, in fact, a lot of the learning from especially the scale-out architectures we have in Windows Azure and elsewhere and democratized it in the sense that we can now have small-sized clusters with high availability. So, we don't have to be a large-scale provider to have high availability.
We've continued to invest in scale-up features because we know what workloads like SQL Server require for mission-critical tier one, great scale-up, and we're pushing the environmental on scale-up.
We also made sure that Windows Server 8 is fantastic in terms of the access capabilities it has for all of the modern devices and these connected devices. You can share sessions, share apps, share desktops, share virtual machines. So, we made all of that fantastic in terms of access.
We've also done great protocol work to make all of that possible. But having made access easy and seamless, we've also taken or made sure that there is great control for the IT administrators, especially with claims-based authorization and centralized audit control, we can ensure that there's compliance built into the system and enforced both for user access as well as application.
These are just a few of the features. This is one of the broadest, deepest releases of Windows Server, and you will get to hear about many of these features in all of the breakout sessions throughout this conference.
But to give you a feel for how you can use some of these capabilities together to provision the infrastructure for applications that you're building, I wanted to invite up on stage Bryon Surace from our Windows team to show you some of the capabilities of Windows Server 8. (Applause.)
BRYON SURACE: Good morning, thank you. Good morning. It's a real pleasure to be here today to demonstrate some of the new features and scenarios coming with Windows Server 8. Specifically, we're going to be taking a look how these scenarios help improve performance, continuous availability, and also help reduce price and cost, which is critical regardless if you're an IT pro or a developer.
So, the three areas we're going to focus on are storage, networking, and virtualization. So, to start, let's talk about storage. Now, traditionally, it's required a very specialized skillset to be able to deploy and manage external storage arrays. But now with Windows Server 8, we're providing a new alternative built directly into Windows called Storage Spaces.
So, let's take a look at Storage Spaces in action. So, here, you can see we have the desktop for the developer preview of Windows Server 8. And if we bring up the new and improved server manager, you can see that we have the file services role enabled. So, this computer is running as a file server.
And if we go ahead and drill a little deeper, over here in the bottom right, you can see that we have 16 SSD hard drives directly attached to this server. Now, the important thing to understand here is we're not using any external storage array or any specialized storage controller. This is simply just a bunch of disks, or JBOD, directly connected to our server and being managed by Windows.
So, at the top, you can see we've created a single pool, which contains all 16 of these disks, and at the bottom, we carved out a space from this pool that shows up as a drive on our server.
And then lastly, if we move over to shares, you can see that we've created a couple different file shares, which are available to all the servers on our network over the improved SMB 2.2 protocol.
So, the key here is you don't need a PhD in storage. You can simply attach just a bunch of disks to Windows and have it all managed and deployed right there.
So, now that we have a couple of these file shares, it's critical that they perform very, very well. So, let's talk about networking and our performance improvements connecting to these file shares.
So, now I'm going to switch over to a second computer. This is also running the developer preview of Windows Server 8. And here you can see we're running Hyper-V, and we have a couple virtual machines.
Now, if I go into the settings of my first virtual machine, the first thing you'll notice is that the system drive is actually running from a remote file share. This will be fully supported in Windows Server 8. And then down here, you can see we also have attached two data disks to our virtual machine. They're also both running on a remote file share.
Now, there is a key difference between these two disks. One of them we're connecting to the file share using a one-gigabit Ethernet connection. Very typical, very commonplace in today's environment.
The other, however, we're connecting using multiple high-speed NICs that are leveraging SMB 2.2 multi channel and RDMA. With Windows Server 8, we can use multiple NICs simultaneously to help improve throughput and fault tolerance. So, now let's go inside the virtual machines and see how well these networks really perform.
So, here's our virtual machine. And I'm going to go ahead and bring up performance monitor. And what I'm going to do is kick off the SQL load generator, which will put a tremendous amount of SQL traffic across our network. So, we'll go ahead and kick it off. Now, pay attention to the red bar here. This is monitoring the network throughput of our one-gigabit Ethernet card.
As you can see, and as can be expected, we're getting less than 100 megabytes per second, which is pretty typical. But now take a look at the green bar. The green bar is indicating the network throughput that we're getting on our multi high-speed NICs. And if we click on it, you can see we're getting over two gigabytes worth of data transfer. (Applause.)
Now, previously, these technologies were only available in high-performance computing, but now with Windows Server 8, we're building them for one of the most common roles in Windows. Now, a lot of people see this network throughput and assume we must be saturating our NIC.
But let's go back to our file server. Let's go ahead and bring up some perf information. And here you can see we're only using about 15 percent of the throughput available on our NICs. This is a clear indication that we haven't even scratched the surface of what's possible with Windows Server 8. And as we move over and take a look at the performance, we're only using about 1 percent of the CPU on the server to be able to push this throughput.
So, with Windows Server 8, we work closely with our networking partners to be able to include, in box, new technologies such as RDMA, which allows us to basically get better throughput, but also with very low latency and very low CPU utilization.
So, now I want to tie it all together and let's talk about virtualization. So, we're going to go ahead and move back to our Hyper-V host. I'm going to go ahead and stop our SQL workload generator. Let's close that out.
Now, if you recall with Windows Server 2008 R2, we included a technology called live migration which allows us to move a running virtual machine from one physical computer to another with no service interruptions, assuming that the virtual hard disk always remains consistent on shared storage.
But now with Windows Server 8, we can actually move that virtual hard disk from one storage device to another, again, without any service interruption and any downtime. So, let's take a look. (Applause.)
So, if I go into the settings for our second virtual machine, we'll take a look at the hard disk and you can see it's currently running on local storage. It's on the C drive of the Hyper-V host. All I'm going to do is simply right click and say move, which brings up a wizard. I'll select move virtual machine storage. We'll click "next" and again, we're going to move all the virtual machine's data to a single location.
And what we're going to do is remove or move it to the remote file share. It's the file share that we were looking at earlier that actually is getting its disks from Storage Spaces. So, I'm going to go ahead and paste in the path of the file share. We'll click next and finish. And just like that, we're moving the virtual machine hard disk from local storage to remote file share.
And if we go into the virtual machine, you can see it's still responsive, I can launch PowerShell, open up folders, move things around, it's all still very responsive. We'll close it out, it looks like it's done. If we go back into the settings of the virtual machine and take a look at the disk, you can see now it's sitting on the remote file share. (Applause.)
So, really in summary, we've seen just a few of the literally hundreds and hundreds of new scenarios and technologies enabled in Windows Server 8 that really help improve performance, continuous availability, and are also focused on reducing cost. If you're interested in Windows Server, the Hyper-V technologies, I highly encourage you to go to the session by Bill Lang immediately after this keynote. It's the Windows Server 8 session, and they're going to go much deeper into additional technologies, and they'll also show you another live migration technology, the ability to move a running virtual machine without the need for any shared cluster technology or any specialized hardware.
So, if you're interested in that, I highly encourage you to go to that session. With that, I'll say thank you very much. (Applause.)
SATYA NADELLA: So that was a quick sneak preview of Windows Server 8. It's a great opportunity for developers, but it's a great opportunity for all of our IHV partners across the entire stack from the OEMs building servers to networking and storage. So, we expect to really change the foundational economics of the virtualization and infrastructure with this next release of Windows Server.
The next thing I want to talk about is Windows Azure. We have a variety of services in Windows Azure today. We have a fast-paced cadence where we are launching new services constantly on Windows Azure. We have compute with storage, we have networking, we have content delivery, we have application services for caching, message passing and service bus.
But the thing that I want to focus on is three key services, which are very critical for building out continuous services. The first is the data platform, second is the data marketplace, and lastly I want to talk about our access control service.
The data platform is a very critical consideration for anyone building a continuous service. You need a rich portfolio of storage across blobs, tables, and full relational capabilities for you to be able to handle the complexity and the depth and breadth of data.
In Windows Azure today with the combination of Windows Azure storage and SQL Azure has that rich portfolio storage.
Since SQL Azure is built with SQL Server symmetry, any ISV that has built for SQL Server can migrate their service to Windows Azure and SQL Azure and basically benefit from multi-tenant SQL Server in the cloud.
The other service that we have which is very interesting and very pertinent in the context of especially hybrid IT applications is data sync. It's like CDN for structured data. You can have data across datacenters be synchronized in support of the continuous applications and continuous services that you're building.
One of the things that you do as you build out these very rich data-centric applications is create rich data models inside of your app. And one of the great opportunities and new opportunities for all developers is to be able to monetize the data that's there in your application, independent of your applications through our Windows Azure marketplace and the data marketplace capabilities.
So, you can take the data that you have and expose it to a variety of business models, subscription, transactions, and what have you in Windows Azure Marketplace.
You can also consume data. So, if you're a developer wanting to build one of these rich data applications, you can even consume data feeds inside of the data marketplace effectively as a data name space.
To give you some examples, eBay builds a Windows Phone application, and they wanted to be able to translate all of the listings across all languages. They use the Bing Translator that's available as an API set and a dataset inside of Windows Azure data marketplace. This is just one first example of how Bing data will become a critical name space for developers as you build your application, and we'll continue to add to that.
Ford, for their next-generation hybrid and electric vehicles is building an application for consumers to use so that they can make sure that their total cost of ownership is optimized by getting at the time of day energy information because, after all, your electric bill is very sensitive to when you're going to charge your car, and so that information of what is the electronic utility charging for electricity depending on the time of day is all available in the data marketplace, so they use that as a name space in their application.
Esri is a premier GIS ISV and vendor. And they have taken the geospatial data that's there inside of their applications and made it available for other developers to use, and they're seeing a variety of different use cases in terms of how their data itself is being utilized in the context of other apps.
So, these are some examples and new opportunities for developers that I would encourage each of you to take a look at as you build your applications to tap into the marketplace itself.
The other service that is very relevant in the context of a lot of the app development that we're doing today in the cloud is active control. For example, when you build these rich, composed services, one thing that you want to be able to handle is multiple end user identity, organizational identity. You also, as an application, are consuming services and data from other applications and services. So, you want to be able to figure out how to manage the access control tokens for all of those services.
So, you look at the complexity you're faced with, every application developer will end up writing lots and lots of code to handle that complexity. And to tame that, we've introduced Windows Azure Access Control Service to really help you not have to write all of that code again and again, and yet have fantastic access control and multiple identity federation.
To show you a great example of building a new Metro style application with support for multiple identities, as well as an application that's subscribing to data from multiple data providers on the back end of it, I wanted to invite up on stage John Shewchuck to give you a feel for Access Control Data Market, as well as the Metro style applications that it powers. John? (Music, applause.)
JOHN SHEWCHUCK: Thanks, Satya. So, we've seen a lot of really great stuff being brought together here. And we wanted to spend a couple of minutes talking about the special role that identity, that data marketplace and other pieces have in fitting all of this stuff together.
So, let's get started. Like many of you, as I was coming down here, I used a travel application to help pull it together. And what we've done is we've put together Margie's Travel to illustrate some of the kinds of challenges that we face.
Margie's Travel is a pretty sophisticated application. Got a website, it's got integration with back-end services like Bing data, like the National Weather Service information, ticketing agencies. And there's also a whole bunch of mobile apps. They've got mobile apps out on iPhones and on Windows Phones and they want to have a great Windows 8 application.
So, as they think about stitching all of this together, they're going to use an account to help the users move through all these things. I can go create an account. I could have a new username and password for Margie's Travel, but guess what? I'm going to forget that. It's just one of hundreds that I have out on the Internet.
So, wouldn't it be great if I could use my Live ID or my Google ID or my Facebook identity with this? But as I think about what it would take to do all that on the website, and then on IOS, and on the Windows Phone and on and on, there's a lot of complexity, especially with a proprietary protocol and a lot of work that I'd have to go do.
Well, fortunately, Margie's Travel is built on Windows Azure and it's taking advantage of the Access Control Service that Satya just talked about.
So, if I logged in here, one of the things that I see is I see a list of identity providers that this app will accept. That list actually came down from the cloud where the Windows Azure Access Control Service had been configured to support these identity providers.
This represents a great opportunity for Margie's Travel. They can add, they can dynamically adjust the collection of identity providers that they want to use by just going up to Azure and configuring the project without touching all of those websites and all of those different applications.
I'm going to actually use Facebook to login here. And as you can see, I'm using the new Windows 8 broker that allows me to manage my interactions. And I'm going to login with my Facebook identity. And here we go. I'm now logged in. And what I've got is the information that I went out to the website, connected in, and now I brought that back down to my application.
It was actually pretty easy to build this. So, let's take a look behind the scenes and see how all this was put together.
So, I'm going to open up Visual Studio here. As you can see, the very first thing that I do is I use a new Windows 8 capability called the Windows Credential Password Vault. This is going to enable single sign-on across applications on Windows 8, and in particular, you'll notice on this line of code, I open up the password vault, I check to see if I already have a credential, and if I do, I'm done. I just login. I don't have to type any usernames and passwords.
Now, if I don't have one of those, we're going to go through the sign-on experience. The first thing I'm going to do is I'm going to go up to Windows Azure and I'm going to say, “hey, Windows Azure, for this particular project, what are my identity providers?” That's what you see going on here. We're doing just a straightforward HTTP get to the Windows Access Control Project, and we're getting back a list of the identity providers.
I then go and bind that to the UI and once the user has selected one of those items, here's where the interesting work's going to go on. We're using that new Windows 8 Web Authentication Broker to provide a consistent base experience for users to login. It's the combination of this Windows 8 capability plus the Windows Azure Access Control Service that's doing all the heavy lifting to support all of these different identity providers.
Notice, I don't have a lot of complex code here. There's no crypto that I'm having to manage or anything. Once I get this back, I get the information back, I go and grab the tokens, and then I use that token on the request to the server. That's kind of it. That's the code to go support multiple identity providers. And there's one more part, which is when I'm done, I put that back in the credential vault.
That credential vault is going to be pretty cool. It's going to enable this single sign-on across apps on Windows 8, but where it gets really interesting is when I get into some other situations. Well, suppose I've logged into Margie's Travel, as I've done, and now I'm running to the airport. I've got my tablet with me. And I'm loaded up with baggage, and I want to go see what's going on on that application.
So, here's another machine. Do I really want to type in with one hand on there? Watch what happens. I simply go over here, and because the Windows Credential Vault, that password vault, has synchronized between all my machines, my credential has flowed from my work machine over to my tablet and I simply logged into the application without having to enter any information. (Applause.)
Now, the other thing that this Access Control Service does is it represents the key way that we're going to get to this integrated experience across applications, services, and rich collections of data, the data that Satya was talking about.
So, as you can see here, when I've looked at my flight information, I'm taking information from the National Weather Service, from Bing, from analytics from Wolfram Alpha, and all of that information is coming out of that data mart. We're using the same identity service that we're using for our users, we're now using it on the back end between our application services so that these things can be enabled safely and securely.
So, this is a pretty great thing that this enables. Now, the other great thing that this enables -- oh, you'll notice I've just been upgraded. I actually got a notification back from Margie's Travel up on the server. So, think about the flow of credentials that enabled that. I went to a website, I used my Facebook identity to login, I entered my travel information, I then went to my work PC, I used Windows 8, I logged in, my credential then flowed across to my tablet. Once it was on my tablet, it enabled the secure connection back from Margie's Travel to the tablet so that notification could be done.
This is a great of what we're seeing, Windows 8 plus Windows Azure working together to enable new kinds of experiences that your users are going to love.
So, all of this code is available. The technology, we're releasing as part of the Windows Azure Toolkit for Windows 8. You'll have that tonight, we're making it available, thank you very much. (Applause.)
SATYA NADELLA: Thanks, John. So, hopefully that gives you a great feel for some of the new services in Windows Azure. We also have some new announcements today with respect to Windows Azure, the first thing is the service bus, the September release of service bus available today.
We also are making Windows Azure storage available with geo replication today. And this is a major deal for any one of you who cares about high availability across datacenters, this is going to be a fantastic feature for you that you get automatically using Windows Azure Storage.
Windows Azure Marketplace expansion, we're taking the marketplace to 25 additional countries and also as part of that, we are making Bing data feeds available. I talked about the translator feed that's available in the Windows Azure Data Marketplace, and we're going to expand very rapidly a lot of the great first-party data that we have in Bing and make it available to developers as a name space.
So, lots of things coming in Azure. Stay tuned because we have a pace which is pretty much every month you will see us get new stuff out there for you to be using and previewing.
Now, let's tie it all up. Let's close out with a very real-world example of a continuous service. A real-world example of a continuous service is going to have all of the things that we talked about as the implications of hybrid IT. That means there will be code running in your datacenter, you will deploy some parts of your application in a public cloud, you want to reach a variety of different devices, but you want to make sure that this entire application has high availability characteristics, great management characteristics.
So, to really give you a flavor for how such a real-world application can get built on top of Windows Server 8, SQL Server, Windows Azure, as well as connect to a variety of devices, I wanted to invite up on stage Jeff Sandquist and Dan Fernandez to walk you through some demos. Jeff? (Music, applause.)
JEFF SANDQUIST: Thank you.
Directed Electronics is a worldwide leader in automotive accessories. Viper, Protect, Remote Start, more vehicles than anyone on this planet. This is the Viper Smart Start. It connects your car to the cloud. It allows you to locate, unlock, lock, and remote start your car, all from the cloud.
Today, I'm excited to show you how Viper is looking to take the next step in cloud-enabling your car, giving you easy access to vehicle diagnostics, telemetry data, and key notifications all from your Windows Phone.
Let's show you some code, and the app.
DAN FERNANDEZ: All right, so what I'm going to do is just open up the Viper site. And you want to talk about what we're seeing here. So, here we have the Viper Smart Start again. I've taken this and installed this on a few cars in my family. And what you've got up here is actually a website running on Windows Azure that allows you to do the things that you can do on the Viper Smart Start phone, smart phone app, and you can actually do things like start, unlock and lock your car, but we can do a few more things here on this site.
Yes, so I think the real takeaway is we can actually have on-board diagnostic information and that information is the telemetry data of what's going on in your car and if we just zoom in here we see Jeff, this is your daughter Brin, see real-time data of our location and telemetry data that we've decided to share in the cloud. So, what's happening here is the car is sending, think of it as a heartbeat to the cloud, the data is processed, written into Azure table storage and then what our page is doing is using a REST call and HTML 5 to give you a real-time display of that car while she's driving in Seattle on Highway 520.
JEFF SANDQUIST: It's really fun to be able to see where my daughter is, those locations all on the Web, and just actually see how fast she's going and I can give her a call and say, “slow down sweetie.”
DAN FERNANDEZ: The dream of the protective father. So, we see your wife here, in addition to the diagnostics, that telemetry data, we also get troubleshooting information. The things that mechanics have access to today when they plug into your car, we can now make that available and you can be able to see that rich data. And we actually see your wife's check engine light is on and she's been driving with 300 miles so far with it on.
JEFF SANDQUIST: Really nice, and the good news is looking at the map here she's stopped, and maybe she's fixing it. Well, actually no, she's at Nordstrom. So, I don't think she's actually fixing it.
DAN FERNANDEZ: But, OK, we'll move on here. So, let's actually go into your car page and
JEFF SANDQUIST: Nice.
DAN FERNANDEZ: I think you have more pictures of your car than your children.
JEFF SANDQUIST: I love all my children the same, even my car.
DAN FERNANDEZ: What's really interesting is with the cloud, since we have this heartbeat of data we have tons of big data, we can actually aggregate that data and show you real-world data from all three of your cars compared. So, Jeff, you're the orange line. We have average miles per hour, miles per gallon, and top speed there, Mr. 89 miles per hour.
JEFF SANDQUIST: This was a track day, I go to Pacific Raceways. I do lapping up there. Let's move on quickly.
DAN FERNANDEZ: I'm sure it was in a school zone.
JEFF SANDQUIST: This is actually really a fun view.
DAN FERNANDEZ: Yes, so what we're seeing here is aggregate data. So, for people our team has been using this for the last couple of weeks and what we did is aggregate that data so we can see, this is a map of Seattle for us actually recording average speed, miles per hour, and throttle. And we'll actually go in here, because this is we all work in Building 24 and in the key here you can see anybody going greater in green, that's 25 miles per hour. But, we're going over 30 here.
JEFF SANDQUIST: Zoom in here, it's really neat, because you can see the paths that all of us take in. Go in with it, we take the GPS data and we actually go in and you go into the parking garage underneath our building. This is really fun to see.
DAN FERNANDEZ: And you think about the ability, for example, to be able to see real-world miles per gallon data for your car.
JEFF SANDQUIST: Yes, and power of data to the people. You can imagine like being able to see what other cars are doing, if people opt-in to this, and actually it's just so much fun when you have access to data like this.
DAN FERNANDEZ: So, you being the overprotective father, let's go into Brin's profile and we've talked about cloud services, really what we're talking about is how do we build a system, a rich alert notification system that needs to talk to both public and private cloud systems. What we're using here is service plus messaging. That's available on the Azure SDK 1.5. I think there's one fan, all right.
JEFF SANDQUIST: 1,000 fans, 2,000 fans, many fans, let's hear it. There we go.
DAN FERNANDEZ: You're working the crowd, that's great. OK. So, we have a number of alerts and you being an overprotective father can say when a car can be driven. You can get alerts on your smartphone if it exceeds a certain miles per hour, or set a geo-fence, meaning get alerts if your car exceeds a certain area, and using that same Smart Start system you can add a vehicle tilt sensor and actually know if your car is being towed, and get that notification.
JEFF SANDQUIST: But, again, the things I love here is setting a geo-fence for my daughter. I know when she's gone out of the little area. We keep this around a three-block radius around our house. She enjoys driving her car around that. When she goes out of that I get a notification on my Windows Phone and it's just a great thing, or we can send notifications to her if she's still driving and curfew is coming in 20 minutes she can get a notification to say,” honey, it's time to come home, it's 6:00 p.m.”
DAN FERNANDEZ: I love it when we can use technology to micromanage our families.
JEFF SANDQUIST: Yes, that's great. We've got to get this in code here, though.
DAN FERNANDEZ: Yes, so what's actually going on behind the scenes, and we're using service plus messaging.
JEFF SANDQUIST: Let me say something, one thing about Viper is like any enterprise, they have many different systems. They have cloud applications. They have on-premise servers that are hosting high business impact data. They have these partner externants. The solution that we're building works across all of these different systems, and that's just a really powerful thing.
DAN FERNANDEZ: Yes. And with service plus messaging, this device can publish, we use a publish/subscribe mechanism, so that device writes to the cloud. It doesn't need to wait for all the different systems that need to listen and act on this alert to wait. Those different systems, some of them can be within the firewall, and only run, say, after 5:00 p.m., some of them are going to be cloud services that act immediately, so a customer database, an auditing system, and so forth.
What we're going to do, though, is build a system that listens to a subscription of those alerts. So, we have Visual Studio up here, and I'm in a worker role. And what we're going to do is, within this worker role, I just have a quick snippet to expand some code. And let's say it's Shift-Alt-Enter to full screen this. So, we are going to create a subscription client to our phone notification subscription.
Each of the different systems get a copy of the message, and the device doesn't need to worry about it. It just writes it, and it's in a reliable store in Azure. Each of the different back-end systems can read from it. And what we're going to do is use try/receive to read a message. So, it will return true if there's a message. And what we'll do is say Vehicle Alert, Alert equals and this is a brokered message. And a brokered message has metadata about our message, as well as the actual content.
So, what I want to do is actually GetBody and say Vehicle Alert. And so now we have our actual alert, and just to see what's going on here, I'm going to do a trace that right line, and say, Alert.ToString. Now, we're building a notification system for a Windows Phone, so I'm just going to call a message, and I'll show that in just one second, and I'll patch in our alert. And then, when we're done handling this message, to remove it from our queue, we just call message.complete, and end it. For whatever reason if this doesn't get to our service bus, the message is still there. So, it's only removed when we actually it complete.
So, let's jump into our send notifications. So, we're patching in a notification, and the way Windows Phone alerts work is, each device has its own URL. So, we need to be able to get the URL for the specific hardware device, the ID, and we do that. We create a Toast Push Notification passing in the message, and letting the phone know what page to load. And the Get Notifications Channel, what that does is pulled into the systems and said, all the Windows Phones in Just Family which have registered for alerts, and that means every member of your family has a Windows Phone, right?
JEFF SANDQUIST: Exactly. Every single person in my family, even my 11-year-old daughter.
DAN FERNANDEZ: Awesome. OK. So, we looped through and send the message.
So, what I'm going to do is just start running the service. I'm going to click F5, and with any luck this will actually work. We are going to do some side-by-side stay on target, rebuild, try one more time. So, I'm going to open a page. On our left side on the screen, we have a diagnostic application that lets us write data. And on our right side is the Azure Compute Emulator. So, this let's us know what Azure, that background worker is just waiting for messages. I'm going to clear this log. And on that side I'm going to send a message, OMG car towed!
So, I'm going to send an alert. That alert is going to go into our Azure process. So, the message has been sent, and what it's doing is it's writing to a service bus. Our worker role here, yay, it worked. (Applause.) It's written here.
JEFF SANDQUIST: Here we go down on the phone, you can see that we've got it. And we've got that on the big screen there. And if I click on the notification as we come to our Windows Phone, it brings up a really nice page from the Viper Smart Start App, and you can actually see where the car is located, and it says, “oh my god the car has been towed.” And you can go deal with that and run like crazy.
You know, this actually was just a really, really fun thing to be able to get this. And I would like to thank Viper for partnering with us. You're going to be able to go into your local car electronics store, get the Viper Smart Start, pair it with your Windows Phone, and it's just a wonderful, wonderful product. And we really appreciate their partnership.
Thanks, Dan. (Applause.)
So, you know, when you think about this, you've seen thank you. You've seen what happens when you take one little bit of technology and you connected your car to the cloud with that, and that's a powerful thing. But, you know what, we can do so much more. We have to take all of Microsoft and bring it to your car. I can imagine if you take Windows, Windows Phone, Windows Azure, Xbox, Bing, you name it, and we go and we bring this all to a car. That could be an amazing thing. I think about things like imagine if you had a heads-up display on your windshield using augmented reality, and using Bing to be able to look off in your periphery and see businesses off in your distance and decide where you're going to go for gas, or things like that. Wouldn't that be awesome? (Cheers and applause.)
So, I am absolutely confident that me and my team, that with our tools, and the tools that all of you use, that we can go build the apps to go do that. And, you know what, the thing is we need somebody to build us a car. We need somebody that is like the best of the best that we can work with and that we can build a car. And you know what, we found the team.
ANNOUNCER: Ladies and gentlemen, please welcome CEO and Founder, West Coast Customs, Ryan Freildinghaus.
JEFF SANDQUIST: Thanks for coming out here.
RYAN FRIELDINGHAUS: Thank you.
JEFF SANDQUIST: Hey, this is a great. Why don't you tell us just a little bit about what you and your team do, tell us how you got started, or what do you guys do?
RYAN FRIELDINGHAUS: We build cool cars. At the end of the day, I mean, I started this company with a dream of, I want to build the best cars out there, and I think we're doing a pretty good job at it.
JEFF SANDQUIST: Now, you build cars for a lot of unique individuals. Who have you built cars for?
RYAN FRIELDINGHAUS: I mean, the list is crazy. From Paris Hilton to Shaq to Mark Wahlberg. We just built a car for Justin Bieber. So, we're out there doing some pretty crazy stuff.
JEFF SANDQUIST: A lot of Justin Bieber fans out here, I can tell. So, you know, this is really cool. And so, we're going to build a car together, right?
RYAN FRIELDINGHAUS: Yes, sir.
JEFF SANDQUIST: And the thing that's actually really cool about it is, we're going to do it for your TV show. And we're going to take all the tools that you do, all the Microsoft products and technologies, Visual Studio, you name it, and we're going to show the world what happens when you pair software development and awesome cars. What do you think about this?
RYAN FRIELDINGHAUS: I mean, for us, it's an honor. Obviously, we're the best in the business, you guys are the best in the business, and joining the two forces together is going to be unstoppable.
JEFF SANDQUIST: That's awesome. (Applause.)
So, you're going to see me, Dan, Clint, Dan Fernandez, Clint Rutkas, we're all going to be part of the show. We're actually going to be setting up camp down at your facility there, and we're going to go build this car together. What kind of car are we going to go build?
RYAN FRIELDINGHAUS: We're going to build a new Mustang. We're going to take a 2012 Mustang. We're going to put a 1967 Mustang body on top of it, and give it the blacked out, just low-key looking super powerful, super technology car.
JEFF SANDQUIST: That's awesome.
And the things we're going to be doing is, we're going to be doing heads-up displays with augmented reality, alter your windshield. We're going to be doing a Kinect on the front, Kinect in the rear, skeletal tracking, just a bunch of amazing things with Windows, and we're going to tie it back into the cloud, and you're going to be able to see all of this on Discovery Channel, Discovery Networks, and it's going to be a really, really cool thing.
I'm excited about it. I think this is going to be a really fun thing to go see. Tune in to Discovery this December, and let's go build a car together, man.
RYAN FRIELDINGHAUS: Let's do it. (Cheers and applause.)
JEFF SANDQUIST: Thank you.
RYAN FRIELDINGHAUS: Thank you.
SATYA NADELLA: So, that was a fun demo, and throughout all of the demos that you saw today, I'm hoping that you got a great feel for how to build these new applications that bring to life the world of connected devices and continuous services.
Make no mistake, this is a huge opportunity for all of you developers to lead the way of this transformation. You have all of the platform capabilities and tools in Windows Azure, Windows Server 8, and Visual Studio to be able to do that. So, I look forward to seeing a lot of your innovation in the coming weeks, and coming months, and thank you very much for attending today's keynote and the rest of BUILD.
Thank you. (Applause.)
ANNOUNCER: Ladies and gentlemen, please welcome Chief Executive Officer, Microsoft, Steve Ballmer. (Applause.)
STEVE BALLMER: I thought I should come on down and check in with you folks and see how things were going. Any reactions to what you saw yesterday and today? (Cheers and applause.)
Well, it's sure a pleasure and an honor for me to have a chance to spend a few minutes with you. We had a chance to lay out a lot of what we wanted to talk about today in terms of news with Windows, with Windows Server, and with Windows Azure.
What I would like to do is just give you a little bit of a broader context, if I might, and talk a little bit about how we see the opportunity for all of you as developers going forward. I sure hope the show has been interesting. I know it's been fun. I went and checked how quickly you activated the machines that you got yesterday, and I guess I could tell you what you were all doing last night. I'm sure that was a lot of fun. And while it's clear we have a long way to go still with Windows 8, we've been gratified, certainly, by the reactions and the interest, in addition to the machines that we distributed here, there have already been 500,000 downloads off the website of Windows 8, which we were very gratified to see.
Some of the reactions that we have heard, either in the press, or through the blogosphere and through Twitter, from VentureBeat: Windows 8 re-imagines user experience and adds major performance gains. From Tom Warren: I've never witnessed this much excitement in a Microsoft audience at a keynote before, it's electric. Thanks, Tom, and thanks to all of you.
From Silicon Republic: Microsoft reveals its new Windows 8 OS, plenty of secret weapons. And perhaps my favorite from Good Coffee Code: I'm struggling to think of anything that would make Microsoft devs happier, stunning news from BUILD.
It's really gratifying, really, really gratifying to see and to hear, but we've got a lot of work to do. We have to complete Windows 8, obviously. We had a chance to give you the code for Intel systems. We've got a lot of work to do also on the ARM systems, which are very, very important to us. You'll get a chance to play with much of the product, but not a lot of the live services. And, of course, just finishing with the kind of quality and performance that we will require and that you want to see is a big, big deal for us.
So, a great start. We're happy to be here, and we're happy that you came and spent this time with us.
As I take a look and think about kind of what we've announced here in the context of a broader set of themes that we've locked onto as a company. In a sense, you could say that if Windows 8 is Windows re-imagined, we're also in the process, and Windows 8 is an important step of that, of re-imagining Microsoft, and really re-imagining around four big themes.
No. 1 is new hardware form factors, and I'm going to talk about that; cloud services; new application scenarios; and a new class and new forms of developer opportunities. Each and every one of these things is shifting our direction, what we're doing, what we're trying to accomplish, and each and every one of them, I think, have incredible opportunities not just for us, but for every developer in the world.
The cloud services one we and others have been talking about now for a while, and yet I would tell you we are still very, very much early in the shift to cloud services. I was reminded about that in a customer meeting the other day, and still, while everybody is willing to say now, we're all in, the cloud, it's all about the cloud, the speed with which people really think that applications will move to be these continuous services that get delivered through these connected devices that Satya was talking about, whether it's through the browser, or through more application-oriented forms like Metro-style apps, we are still very much in the early days of that phenomenon.
Even as Microsoft, with our own applications, we're 100 percent committed to supporting these platforms and the cloud with our applications and yet we feel like we've just begun to scratch the surface. So, each and every one of these things creates an opportunity that I want to talk about. Our approach to these new opportunities is centered in Windows. It's not about doing something else. It's about broadly, as Steven Sinofsky talked about yesterday, it's about broadly re-imagining Windows. Windows 8 is a form of that.
Windows Live, Windows Phone, Windows Azure, in a sense it's all about pivoting, building on the technology foundation of Windows and taking it in new and unexpected directions, to reach new hardware, to reach the cloud, to create new developer opportunities. All of those things for us pivot around the changes that we're making in Windows.
I was gratified certainly to see the response on Windows 8, as I said. I was also gratified to see some of the early feedback just this morning about Windows Server, because we do need to re-imagine it for this world. There was a quote here, Windows Server 8, the ultimate cloud OS, nothing from Microsoft and I mean literally nothing has ever been this ambitious or tried to achieve so much in a single server product release since Windows 2000.
Another quote, Server 8 will unleash a massive tsunami of new features, especially targeted at building and managing infrastructure for large, multitenant clouds. And it goes on. So, in every sense, every member of this family of products, the core platform on which we built our company, we're pivoting them all with Windows at the center for a new class of hardware and services that get built by all of the developers around the world.
We didn't talk here about Windows Phone, because we did this launch of our Mango system, Windows Phone 7.5 a number of months ago. But, I want to kind of emphasize and put a bit of a point on that. I think with Windows Phone 7, which we launched just less than 12 months ago, we delivered a really great product with our 7.5 release we've got a great update, and we've got an engineering cadence that has great agility, in terms of delivering new capabilities.
Certainly you can see the kind of family approach between Windows Phone and Windows 8 itself. We're certainly sharing technologies, IE is shared, DirectX is shared, XAML is shared between the two systems. The application momentum behind Windows Phone has really been gratifying, considering we're still early and relatively lower than the other guys in terms of volume, and we really appreciate your support.
With the new release, we've doubled down on this concept of revolving life on the phone around the people who are important to you in your life. There's new phones, there's over 500 new features. We had the announcement over the last few weeks of phones from HTC and Samsung to be available in the U.S. and Europe, and other countries. And we're still all anticipating the great work that Nokia will do on its phone as they come to market and, frankly, help lead Windows Phone into new geographies and price points and form factors in ways that I think will be very important.
And you'll see us just continue to invest in improving on what is really a very fine product, but still a product that's important for us to get, if you will, fully appreciated by consumers around the world. Great quotes on this one. Windows Phone, the operating system is a mix of elegant and whimsy that's a treat to use. From Gizmodo, it's striking how much more connected to people Windows Phone now feels than any other phone, even Android.
So, a great start, thank you. (Applause.) A great start, a lot of work to do, but in no quarter, as we move to re-imagine Windows for new hardware types, in no sense is the phone anything other than one of our most important targets. X-86 and ARM will both be important chip families as we move forward.
I think that's important for me to stress for this audience. It's not going to be Intel or ARM. It's going to be Intel and ARM for various usage scenarios and the like, PCs, tablet form factors, phones, new UI and input paradigms, like the Kinect paradigm that we've brought to the Xbox platform. New highly virtualized servers, and really over time completely reconfigured datacenters where the relationship between storage and compute and networking pivots dramatically from what it is today.
It's that target, that vision of what we can do that's cheaper and more efficient, and more functional for users, IT people and developers alike that is propelling our ambition and interest in really working with hardware vendors much more closely to define what the future of these devices looks like as you marry our software with devices from a number of manufacturers around the world.
Cloud services, if you kind of scan and think about it, I told you I think we're very early, extremely early. Yes, consumers use the cloud a lot, yes there are a lot of websites, and yet the notion of really re-instrumenting mission-critical applications, smaller applications, doing more interesting things in the cloud I think is very early days. The kind of platform support, and the kinds of innovation and new platform element that will exist out there are broad. Satya talked to you about compute and storage, access control and identity. Chris Jones talked yesterday about people, essentially NID as a platform in Windows Live, notifications. It's certainly an important thing, as John Shewchuk had a chance to show you today.
Big data, data as a business, business intelligence, and massive analytics as new services in the cloud, all of these need to be invented, put in market, made available both as applications and developers, as we move forward. And certainly, when I look at the list of things that we're doing in Azure and Windows Live, the list of new services to support exciting application development, it is a very, very long list that will come at a very, very fast pace. So, while this is a point in time we share with you what you have, as Satya said, it's important, because this is an area where I think a lot of new opportunity will be created for developers, and certainly a lot of value.
The other thing that's important to us is we're taking a look at every one of our cloud applications and asking what aspect of this application might also be interesting to developers. In Office 365, how do we make SharePoint a general-purpose platform that you can extend through Azure? Bing, how do we take Bing data and put it in a form where it is an extensible element that can be used by developers in your own applications.
What else is there in Bing for which we should provide extensibility? And the list goes on and on. It's CRM, how do we help you build general-purpose applications that live off of our cloud service dynamic CRM product. So, this push on cloud services through our applications, through Azure and through Windows Live is a fundamental part of rethinking, rebuilding, and re-imagining Microsoft.
In terms of new scenarios we essentially, we essentially as a company, are in seven businesses, seven application areas: Phone, PCs and tablets, and TV devices, through Xbox, and then a cloud platform, productivity and communications applications, search, and ERP and CRM. As I said earlier, each and every one of these groups, not just the ones you heard from today, are redesigning their systems around the platforms that we talk about here today.
Each one of these are moving to the cloud as their fundamental business model, each one of these, as I'm sure each one of you is asking what kinds of new application scenarios can I build, given that I have these new cloud services, not just how do I change the deployment model, but how do I change the user model, how do I change my business model, how do I change the capability of my application.
So, I want it to be clear, we're all in. We're retooling all of what we do around the platforms that we talked to you about over the course of the last two days. To me this all adds up to a time of unprecedented opportunity for developers. Some great number of years ago we got started evangelizing software developers. It's in our blood. It's kind of where we're programmed and what we think about. And if you stop and reflect you'd say there's never been a better time to have software development as a core skill.
We talked on the first day about how the number of developers is literally multiplying from the hardcore professional developers that might be 10 million to probably as many as 100 million people around the planet who are now writing applications. And the chance to do even more and have a chance to profit if you want to from that economically is growing.
As you take a look at the work we've had a chance to talk about here today I'd encourage you to consider a few things that I think will tell you that betting on us and the work we're doing will be an essential and valuable part of everything you do. This year there will be 350 million Windows devices sold. There is no phone, there is no tablet, there is nothing on the planet. There's no operating system on the planet that will ship 350 million units of anything, other than Windows. And that creates opportunity for developers.
When we ship Windows 8 here will be an installed base of at least 500 million Windows PCs that can be upgraded to Windows 8. If you take that whole pool of opportunity literally, many, many hundreds of millions of people will be the target for your innovation on day one, let alone the ability through the popularity of Windows Servers, and enterprises, and the increasing footprint and visibility of Windows Azure for you to use those same skills to build applications from the service all the way out to the device, and then monetize with a range of new commercial models.
Satya talked about the data marketplace, Steven talked about the Windows Store. We want you to be able to sell apps, and services, and content, and data. We want you to be able to sell for a single transaction, or a subscription. We want you to be able to sell to consumers, and to enterprises. And we want you to be able to make money from the work that you've done.
And so, taking the cost and complexity out of deployment, and putting the opportunity into much more simply, put your applications and services in front of your customers, and charge for them correctly is super important to us. And you can bet on that.
We talked about the level of investment we're putting in to helping you target HTML with or without Windows, how you can target Windows 8, and Windows Phone, and Windows Azure, Microsoft applications. And, of course, we live in a world where we need to let you build services that also target and integrate with non-Microsoft platforms. And I hope through the demonstrations and discussions our openness on that point was absolutely clear.
Compatibility remains the hallmark of what we do, which is important to you as developers. If you really want to make maximum return on your investment, it's got to keep with us as we move forward. Windows 8 runs Windows applications that go back now, I guess I can fairly say, decades ago. Windows Phone 7.5 will run Windows 7 apps, whatever the successor to Windows Phone 7.5 is, it is going to run Windows Phone 7 applications.
The work we're doing in Azure to make it much more seamless to bring a Windows Server to the Azure platform is all part of Microsoft's compatibility promise to create opportunity for you.
We want you all, individual developers, 14-year-olds in their home, and people who are cutting code who have a full-time job, but cutting code on the side, small development companies, websites, applications, custom development, large websites, large application developers, people who work for enterprises, come one, come all. It's the day and age of the developer. It's the day and age of the Windows developer. (Applause.)
And in the day and age of the Windows developer, I'm going to leave you with one last thought, let's move forward together, and let's seize the opportunity for developers, developers, developers.
Thank you all very much. (Cheers and applause.)