Remarks by Steven Sinofsky, president of Windows and Windows Live Division, Scott Guthrie, corporate vice president of Microsoft’s .NET Developer Platform, and Kurt DelBene, senior vice president of the Office Business Productivity Group
Professional Developers Conference 2009
Las Angeles, Calif.
November 18, 2009
ANNOUNCER: Ladies and gentlemen, please welcome President, Windows and Windows Live Division, Microsoft, Steven Sinofsky.
STEVEN SINOFSKY: All right, it is fantastic to be here today. And I’m really honored and privileged to have a chance to represent the Windows Development and Business team here today to talk about a few things related to Windows 7 and beyond.
You know, we’re about three or four weeks out from general availability, so I think it’s a really good time to take a step back and to look at the process of developing Windows 7. You know, it’s incredibly humbling experience and it’s certain a responsibility that we take very seriously in building Windows. One day you’re in college writing a checkers game, and then the next day your code is being checked in for a billion people. And it’s a huge responsibility and a really interesting development process and one that I wanted to share with you.
You know, we build Windows — we like to think of it that we’re building a movie theater. And our job is to have great seats and great sound, maybe a good concession stand, but it’s your software that’s the movie. And our job is to feature your software and feature your hardware and to feature the innovations that you bring to market, and just provide a great auditorium for people to experience those.
And so today we’ll have a hallway conversation, you know, in our hallways in Redmond and around the world, we’re talking about what it was like to build Windows 7, what are the things in Windows 7 that we’re excited about, and what are the things that we’re thinking about going forward? And we’ll wrap up today and just remind everybody of all the things you can learn here about Windows 7 and the applications and software and APIs.
So I want to focus first on learning and the kinds of things that we focus on as engineers about improving and iterating and getting better each time that we build a product. And so I started last year talking about the things we learned from the last product cycle. And so let me start this talk by talking about some of the things we’ve learned in the course of building Windows 7.
So as we were building Windows 7, we’re still learning along the way, and even at the end, we take a step back and look at what we think has gone well and what’s interesting to think about. One of the most interesting things is just when we started the project, everybody was like, OK, you just have to fix these three things or these four things, or just quickly get this stuff out there. And we knew that you have to solve existing problems that customers have with the product, but we also felt that it is important to deliver on some innovative new technologies, innovative new architectures, and to really have, in a way, a portfolio of investments and features in Windows 7.
And when you look at the reviews and the commentary, what I think you see is a broad set of features really resonating with all of you, and it’s not just the fundamentals or not just the basics, but it’s also the new and innovative things. So, it’s a real lesson for us to make sure that the product is balanced and that we have a combination of looking backwards, looking forwards.
Another super interesting element of developing Windows 7 was our blog, the Engineering 7 blog, or the E7 blog. You know, we actually started this blog about the problems you were facing and the design choices before we had given you any code to talk about. And it was an incredibly interesting experience and one that we learned a lot of lessons in the course of developing it. You know, we did over 60 or 70 posts and you gave us over 6,000 comments, at least 10,000 pieces of e-mail to me, and some of them with really good suggestions.
And I think that what we really learned was how to engage with you and how to dialogue about the subtleties and nuances of developing Windows. Another point that became really important was the notion of making sure that Windows is part of an overall PC ecosystem as incredibly ready for the product and ready for the marketplace, whether it’s drivers or whole PCs, software loads, APIs, and the whole spectrum of things that contribute. And just making sure that we do a good job in helping everybody have the information, have the actionable information, and be ready for the product when it’s released.
And the way that we went about doing that was by establishing this rhythm and committing to you that we’d be on this rhythm. The developer pre-beta, which we gave you last year at this time, and then we followed up with a beta and we followed up with an RC. And we think that this commitment is really important because it allows you to understand that the software that we give you is actionable. The developer pre-beta had all the APIs in it. The beta was feature complete, ready to go. The RC, we were done changing the code.
And each of those tells you what we’re ready to accept and work on, and it tells us how to act on the feedback that we get, and that loop is extremely important. And all of these together sort of are under the umbrella of being responsible of how we disclose the product and how we talk about what’s in it.
Now, we know everybody wants to know right away, what’s in the next release, what features are there? But we think that without the framework for how you can act on that information, how we can act on your feedback, that we really just are sort of being almost not even responsible in terms of developing something that’s so important to so many people. And so you should expect us to have learned that lesson about responsible disclosure and to continue as we move forward.
And then finally, you know, something that we talked quite a bit about in our Engineering 7 blog was this telemetry in the product. And this telemetry is a hugely important part of how we develop Windows 7. And so I thought what we would do is take a little bit of a look at the kinds of telemetry and the things that really went into building the product.
So some of the kinds of telemetry we have, the first one that everybody experiences the minute that you finish installing Windows 7 was the “send feedback” button. And the send feedback button is the one that as soon as you have a reaction, you type in some text and you send it off to us. And it’s an incredibly powerful way to have anecdotes about what people are experiencing and their visceral and emotional reaction.
Anytime you plug a device into Windows, we can have the opportunity to get diagnostics to learn what device is plugged in, what drivers were loaded, did the drivers come from you or from a local machine, 32- or 64-bit, was the installation of those successful? And as part of the ecosystem, this type of information is extremely important to the success of ecosystem readiness.
You know, reliability and analysis component within Windows, in fact, some great writers like Ed Bott have done extensive writing about these characteristics of these components, and it’s sort of like the flight recorder built into Windows. You know, if all of a sudden one day your machine’s a little flaky, well, you can look at the history of what’s been going on and what things might have happened leading up to that event.
Another element of telemetry is what we call the software quality monitor, or in our hallways we call it SQM. And SQM is our way of understanding what features of Windows or any software that Microsoft makes are you using. What are the buttons you’re clicking on, are you using keyboard accelerators or the sequence of events. Well, with all of these telemetry items, they’ll all respect your privacy, they’re all voluntary, and they’re all opt-in. But getting closer to pre-release, we opt you in automatically, then you can opt out. And I think that this is important as the contrast in terms of working on the pre-releases is to help us with this.
Now, a lot of people always wonder, like, this telemetry, you know, you don’t really get my telemetry because I turned it off, so therefore it might not be statistically significant or something. But it turns out that over 80 percent of our customers voluntarily opt-in to sending us this information. And so it borders on being almost a census of the PC user base. And since the installation is all private, it’s really valuable for us and there’s really very low risk to anybody sending and cooperating with that.
The last one of these is the one that I think everybody is most familiar with day in and day out of the product which is called the Windows Error Reporting. Internally, we call it Watson. And for those of you that have been around for a while, Watson actually comes from the Windows 3.X era when we used to have this thing called Dr. Watson, which was a little magnifying glass that would tell you when you crashed. And Dr. Watson was enormously helpful because when you would crash, it would put up a dialogue box with a big brick of hex numbers, and tell you, congratulations, or actually sorry, you’ve crashed. And then it would have that information sitting on your machine.
And of course what would happen would be you’d call up product support and they’d say, “Hey, did you get the Watson log?” And the person would be, “I did, I got the Watson log.” “Excellent. If you could put that on a floppy disk and overnight mail that to us, it would be great.” And then we would get that overnight disk, and then the developer in our office hallways, Kirk, he was an assembly language hacker. That’s all he did. And he got really tired of getting these dumps by overnight mail because basically there was nothing — even though he’s a total hacker, like there’s only a little bit you can do with a hex dump of memory without symbols.
And so one day Kirk coded up this notion of sending the stack dump and a bunch of debugging information in a mini dump to Microsoft over the interwebs. And all of a sudden was born this feature called Watson. And Watson allowed us in real time to see what software was having reliability problems, where were the crashes. And so all of a sudden these little discussions that we were having in the hallway over what bugs to fix. And this is what would happen at the end of a product cycle. Ten guys would show up in a conference room and say, “Hey, I’m crashing in 7F392.” And another one would say, “Really, I’ve got 6E97.” And then they would debate over which bug go fix. There was no data, no reason to fix any particular bug. And essentially whoever screamed the loudest or had the most endurance would get to check in their change. And we called that sort of testosterone-based bug fixing. (Laughter.) And Watson just completely changed how we decide what bugs to fix because it allowed us to generate a frequency distribution, or a Pareto curve.
So let’s take a look behind the scenes of what happens when a Watson report is sent, when you click on that “send Windows error report.” So let’s roll that video.
(Video segment.)
STEVEN SINOFSKY: Some of the innovations brought by the new Windows Management Team. (Applause.)
So with all that telemetry, let’s take a look at a few of the examples that we gathered through the course of pre-release leading up to general availability of Windows 7. So, let’s take a look at some numbers. So, 1.7 million. That’s how many times you clicked the “send feedback” button. So, that’s about one feedback report every 10 seconds for the first two weeks after the beta, just a phenomenal number that we aggregate and we group and we analyze.
We had 91,000 unique external devices plugged into Windows 7. That adds up to about 14,000 unique printers that were attached to Windows. So, to put that in perspective, that’s about 300 printers for each member of our printer test team. 883,000 unique applications were used during the course of developing the Windows 7 beta. Now, that is all the versions and languages, 32 and 64, but it’s still a phenomenal, phenomenal number.
8.1 million installations of pre-release software, including 4.3 million installations of the release candidate. We had 10.4 million aggregate Windows Error Reports sent to us. And so that means that, in a way, if everybody crashed in the same place, there were still a couple of crashes that were unique, but this is a big curve, and so some crashes that were extremely frequent would have many, many hundreds of thousands of them. So, that yielded 4,753 code changes driven directly by the Windows Error Report feature.
We had over 6,000 measurement points in the product for SQM. To put that in perspective, the recent new rocket that NASA launched had 750 unique telemetry elements that were recorded by the rocket. We had over 900 million sessions that were logged. And that’s basically log on, log off, hibernate or restart.
514 million times, the Start menu was clicked just in the past six months. Takes a lot to start 883,000 unique applications. So, just as interesting, 46 million times, Aero, Snap and Shake were used in the past six months. And that’s a brand new feature. So, if you start to do the math, you realize that that’s something like, boy, everybody’s using that five or six times just in the course of the pre-release usage of the product.
So just to give you a glimpse of just some of the incredible telemetry that we’re able to gather, which really feeds into how we develop and make choices about the product. Here’s one that we talked about on our Windows 7 E7 blog. And that was screen resolution. And I want to show this because it shows how the data really takes the arguments and the testosterone, if you will, out of the product development.
This is the screen resolution run by people during pre-release of the product. You see actually 55 percent of the people running pre-release Windows 7 were actually just running straight old VGA 1024 by 768. Wow. That’s probably not what we all are running, and it’s probably not what we would have thought intuitively was being used. In fact, less than half a percent of customers were using HD resolution that we probably all routinely run on our desktops.
And so it’s really important that we learn from the data about how people are really using the product. Now, of course that’s only part of the picture because that gives you a look at what things currently are, but it doesn’t tell you how to move forward and what to think about features that might not exist or ways that the ecosystem is moving forward.
So to do that, we rely on a great deal of research. And I mean research in the sense that we form a hypothesis, we test the hypothesis, and we have a lot of different techniques for learning how to move forward in innovative and unique ways in a product. And sometimes we do things like surveys. You know, we have a panel of people that we can do a Web survey and get thousands of responses that are statistically significant about questions and answers and screenshots and things like that.
Of course we look at all the reviews and blogs and commentary. You know, it’s important that we always put those in perspective and make sure that we understand the statistical relevance of those and where they come from and what the audience is that either is reading it or generating those.
There are studies such as we live with people. We don’t actually live with them, but we ask them to allow us to come back to their homes or their businesses every few weeks, see how things are going, or we can put monitoring software on their machines to see what’s going on. We also follow people home. We ask them, but we’ll go to the store we’ll say, “Hey, can we watch you unbox your PC and understand how that experience goes?” We have a broad set of these kind of tools.
One of the most famous of these tools are usability testing, which started way, way back. And it’s very interesting to think about how it started because when it did start early on, the whole point was how do we help the developer understand how their brilliant, cool, new feature is working. And of course the way we did that was we would put some person behind one-way glass, we’d go to the shopping mall and beg them to come to Microsoft, and they’d show up and we’d give them a free T-shirt by torturing them all day and stuff like that.
And then we do the test, then we’d go back to the developer’s office and say, you know what? All 10 people did the test and none of them could use their feature. And of course we all know what your response is: Well, you just found ten dumb people. (Laughter.)
And so then what we started to do was bring the developer to watch the test, which turns out to be a humbling or humiliating experience. And so what I want to do is let’s take a look at the tests and look at a couple of features and how that works. (Tone.) Sorry about that. Hang on. That’s the UAC feature that we all love. Last year at the PDC, I watched the whole speech that we gave and the presentation and the demos and the highest audio level was achieved when we showed the UAC slider control. That was your feedback about that feature, which is statistically significant.
So if I look at the UAC dialogue and think about what went into designing that and why did we do that, you know, it’s about putting customers in control of their PC, but we need to balance that with how do we make sure that we offer the protection that we wanted to do. So, I want to play three usability studies, one of them sort of before we did anything, and then one of them showing a person using the old way, and then a little bit of the improvements that we made, so let’s take a look at this.
(Video segment.)
STEVEN SINOFSKY: Another example of some of that kind of work are how we use the usability tests to help us develop a feature that sort of has that user interface and works sort of just intuitively, and that’s the Windows management or the Aero, Snap, and Aero features. I should point out, you know, these tests are not like super exciting. I mean, you kind of just sit there and the person kind of goes through the test. So, they’re pretty low key. So, let’s take a look at a couple of studies of people using the new Aero features.
(Video segments.)
STEVEN SINOFSKY: It’s great to see that kind of reaction. That emotional, visceral reaction. You know, if you’re the developer behind the glass, you know, having the person stand up out of their chair, boy, it could be really intense or super exciting.
I want to now transition and talk about a bunch of the opportunities that there are for developing on the new APIs in Windows 7. And this is our slide from last year. And that’s part of what we want to get the message across is that this is the same set of things that we talked about. And there are lots of sessions here this week to learn about all of these elements, whether it’s the Ribbon user interface or touch, integrating with the desktop, the new capabilities in VX and Direct X 11, the new hardware capabilities such as sensors, and all of these allow you to bring your application to a more modern state and to take advantage of the hardware that’s out there for people to use.
One of the coolest hallways that we have in Redmond is the hallway of the planning and the ecosystem team. And this is where all the new stuff shows up. And so there’s constantly new, cool machines, new, cool software. And helping to marshal that ecosystem is Michael Angiulo, and he leads the team that helps bring together all the folks that help make Windows and the ecosystem work together. So, I’d like to invite Mike up on stage and give you a little show of some of the things that are going on in the software and hardware ecosystem.
MICHAEL ANGIULO: Hey.
STEVEN SINOFSKY: Hey, Mike.
MICHAEL ANGIULO: Thanks, Steven. (Applause.) So I’m going to start with this example. This was kind of two years ago, almost to today, this is an example of how fast the PC ecosystem changes. Remember this? This was Computex of Taiwan, the first-generation EEPC. Seven-inch screen, a 4-gigabyte SSD, it only ran Linux. Despite all those limitations, customers were really excited by the concept. Two years later, not only have laptops taken over desktops in terms of sales, but netbooks are the fastest-growing category of all PCs.
This is a really important thing for us because you have to think differently about system requirements now.
STEVEN SINOFSKY: Yes.
MICHAEL ANGIULO: You know, Windows 7 being the first release of Windows to not raise system requirements was designed so that we could run well on these low-spec platforms. Let me give you a side-by-side example. These are identical PCs. This one is running a script that’s hogging the CPU. You can see 59, 58 percent. It’s hogging memory. This represents that kind of system that you see a lot from telemetry. There’s a lot of background software running. And it doesn’t matter if it’s OEM software or stuff that IT is pushing out in the enterprise, the result is the same.
Let me show you what happens when I try to load a really big PowerPoint file on both of these. They’re loaded at the same time, the system can perform well. 45-megabyte file, it’s going to load in about 10 seconds, but this one we’re pegged, we’re flashing, we’re getting a bunch of errors, it’s taking a long time, it’s still not loaded. And this is because even though Windows 7 is running faster, those background applications aren’t taking advantage of all the new engineering. We aren’t doing drivers loading in parallel, trigger starting services —
STEVEN SINOFSKY: All these things that we ask everybody out there to really look at. And so those are some things that you can do to make your software better in the fundamentals.
MICHAEL ANGIULO: And they’re all documented up on the on-off transition guide up on MSDN. Sony took these into account when they were designing their new Sony X. Check this out. This is a 1.6-pound netbook. It’s made with carbon fiber, it’s ultra-lightweight, it’s ultra thin, and in order to get the most out of the battery in this thing, Sony went and offloaded a lot of the software that used to start in the boot path and they put it in — and you can see here, device stage for PC — so they still have access to it, it’s still branded Sony, users can get to the software, but as a result, this little PC boots 30 percent faster and has almost 50 percent more battery life because all of that stuff is available but not running all the time.
STEVEN SINOFSKY: Right. And so that’s important for you not to put your software in the boot path, but to give customers control of when that software launches so they understand what’s going on.
MICHAEL ANGIULO: Exactly. Here’s another pretty interesting hardware prototype that creates new software opportunities. This is an entire PC. I don’t know if you can put it on a stand so it’s not moving around.
STEVEN SINOFSKY: Here’s the clicker for the slides.
MICHAEL ANGIULO: It’s smaller than the clicker for the slides. You have all of the ports here. What you’re seeing is the Intel Atom chip on the right, the Invidia graphics chip on the left, and what this was designed for was to create really high performance like video playback. So, over here you can see, I’m going to launch a 1080P video and go full screen. And you have HDMI output — I mean, this is still a netbook.
STEVEN SINOFSKY: Right.
MICHAEL ANGIULO: But that’s a pretty far transition. But what’s even more interesting than just the video playback is how you can use this hardware to accelerate other kinds of software opportunities. So, what I’m going to do is plug a device in here and take this video file and drag it over and this video file needs to be converted. That transcoding usually takes third-party software. But here we have Media Foundation offering to transcode from one format to the other.
Before I do that, I’m going to set up the same thing over on this PC. These two PCs have the same CPU, they have the same — let me shut all this down — they have the same CPU, they have the same RAM.
STEVEN SINOFSKY: The same memory, the same hard drive.
MICHAEL ANGIULO: Same platform, but the only difference is it doesn’t have the hardware acceleration. So, when I go to do this transcoding, which is a really common task, especially for Media, this is going to take minutes. It’s going to take a minute and a half —
STEVEN SINOFSKY: It’s almost just one for one in terms of the length of the stream.
MICHAEL ANGIULO: Yeah.
STEVEN SINOFSKY: And so over here we’re going to use hardware acceleration built into Media Foundation to enable you to do that.
MICHAEL ANGIULO: This one takes about 20 seconds. Another place where you can use the hardware acceleration to enable other kinds of software opportunities around DX 11. So, here I have a gaming PC that I put together. It’s liquid cooled, it’s got a core I7 processor from Intel, eight processors, it’s featuring this new ATI video card. This is a DX 11 video card, and it’s designed primarily for really cool graphics. So, here I’m zooming into a gaming engine that was just produced by Unigen. This is out on the Web earlier this month. If I toggle between DX 10 and DX 11, you can see some of the additional texture and contours. It’s a lot more visible when I turn on tessellation. Look at this. This is DX 10, with DX 11, you have more than ten times the number of polygons and the number of triangles and everything, and none of that is loading down the CPU. But that’s just for graphics.
STEVEN SINOFSKY: Right. So, that’s gaming, which we all love, but there’s also a real use for this in the business and software side that many of you work in too.
MICHAEL ANGIULO: This is an application that we have up. Microsoft has a sample application. This is a simulation of 20,000 stars. Every single one of those stars has gravity and mass and is interacting with all of the other stars. What makes this amazing, it’s hard to see this — I don’t know if you can see this on the screen — this is running at 702 gigaflops. 702 billion floating point calculations a second. That’s almost like three quarters of a teraflop of computing power on a $400 graphics card. It’s an incredible amount of processing. In order to show it best, see these — my CPUs are basically at idle. I’m running at 73 degrees in my water —
STEVEN SINOFSKY: So using DX’s direct compute API, which was also shown off here at PDC, it just offloads all of that processing to the GPU?
MICHAEL ANGIULO: Well, the GPU can do it in a massively parallel way. You load down the CPUs, look at this, I’m pegged at almost 100 percent across eight cores. My water is getting up to 100 degrees, and I can only get 17 gigaflops that way.
STEVEN SINOFSKY: And I’m starting to get hot, so —
MICHAEL ANGIULO: Well, if you’re developing high-power applications, high-performance applications, especially ones that need that parallelism, direct compute is the —
STEVEN SINOFSKY: Simulation and financials and meteorology, all of those are great examples of that kind of stuff.
MICHAEL ANGIULO: If you do develop high-performance computing applications, you’ll love a dev environment like this. This is basically a server-replacement laptop. This laptop has all of the same core specs as this entire PC. Core I7, 5 RAID drive, the thing’s got 12 gigs of RAM. In fact, I’m running Windows Server 2008 R2 with Hyper-V, I’ve got three virtual machines running here, I’ve got a client with my whole development environment, Visual Studio, I’m running SQL Server, I’m running Web Server, all on a laptop.
STEVEN SINOFSKY: And this is also locked to the table afterwards so nobody runs off with it.
(Crosstalk.)
STEVEN SINOFSKY: We showed this one because it actually shows a great machine that all of you could use professionally, so it’s a great development environment machine, not just a target machine.
MICHAEL ANGIULO: Yeah. And there are a lot of great development features in Windows 7 that make developing fun. In fact, all those performance demos I’m working on, those are all booting from VHD because it was the fastest way for me to try something new, blow away the file, load them up. There’s a lot more to living as a developer in Windows 7.
I’ve been showing a lot about power and high-performance computing. There’s some new software experiences you can develop in Windows 7 as well, some take advantage of hardware. Remember this board? We gave this out last year, they’ve got capacitive touch sensors on the back, they’ve got a 3D accelerometer, a digital light sensor, and we put this out along with an API so you could take all of that context into account in your apps, because we knew people were going to start shipping these on a lot of PCs.
When I walk over to this Dell, you see it lit up just because I walked in front of it. This is an infrared data center, using our platform, it detected my body heat and lit the PC up.
STEVEN SINOFSKY: And so it’s really important in building your software that you understand that these events are being sent to you whether it’s location-aware or the infrared, and those are things that you can build in your code to pick up on.
MICHAEL ANGIULO: There are a lot. Do you see this little pinhole right here next to the power button? That’s a digital ambient light sensor. And when I cover it up, you can see the luminosity of the picture changes, and it’s taking that into account. In fact, a PC like this — this is a PC you could run with — it’s a super-thin PC, the thinnest PC in the world, in fact — this is the kind of PC that you’re going to see people developing mobile applications for. So, this PC has the radios that light up the location platform, this has GPS, this has location awareness, and so all of those different sensors combined with that platform let you make some new kind of apps.
STEVEN SINOFSKY: Sure.
MICHAEL ANGIULO: Even in other kinds of — just taking a Windows 7 client UI, you can see some of the new features that you can integrate in your application like the Windows 7 ribbon.
STEVEN SINOFSKY: So the ribbon’s a great feature that started out with 2007, and we know that a lot of you picked up on the .NET implementations and other third parties, and there’s now the API and the technology built into Windows 7 for you to use across all of your applications.
MICHAEL ANGIULO: And using it not only makes your applications easy to use and kind of modern, it also makes it work really well on touch PCs. So, you don’t even have to do anything that’s touch-specific, the targets are designed to be easy to hit. We can see some of the other applications that are already using this kind of thing like WinZip for example. Here’s Jump List. This is the new WinZip. When I launch WinZip and I go to file open, it understands Windows 7 libraries, it defaults to the right place. It’s another new kind of user experience.
STEVEN SINOFSKY: And these are things that you can take advantage of that integrate your application with the desktop, which gives a really seamless experience for customers.
MICHAEL ANGIULO: Your application desktop preview here, like in IE. You can understand flicks for navigation.
STEVEN SINOFSKY: So I use that, anybody else?
MICHAEL ANGIULO: Well, it turns out everybody’s jumping on this bandwagon. You’ve got Mozilla here. They’ve got desktop preview, you’ve got Google Chrome, they do Jump Lists, they understand some of the flicks. Of course I’ve redirected it to Bing, that was an upgrade of my own. But, yeah, the developer features out there for making your application work well with Windows 7 UI are easy and, in fact, if you want to go to the next level with the touch API and you have an application that touches a primary part of the experience — here I am in Amazon Kindle, and I can flick through a bunch of pages here and read. Or I can go to this Corel Paint, I can drag pictures around.
STEVEN SINOFSKY: This is an opportunity for you to build touch into your application in a very deep way so that it becomes sort of a touch native application.
MICHAEL ANGIULO: And the neat thing is you only have to design once. You don’t know whether your application’s going to be run on a tiny five-inch screen like this or a giant screen like this.
STEVEN SINOFSKY: Actually, all of these use different touch technology, something that’s abstracted away. So, they have different radios and different sensors to enable multi-touch.
MICHAEL ANGIULO: Multi-touch resistance, single-touch resistance, capacitive — this is optical with cameras in the bezel. And the neat thing is all of these different platform technologies are abstracted through that API. That’s kind of the ecosystem story. New hardware trends, APIs that enable new development opportunities on them.
STEVEN SINOFSKY: Cool. This is a pretty neat machine too, I’m going to hang onto this one for a second and do the rest of the demo.
MICHAEL ANGIULO: Yeah. I bet.
STEVEN SINOFSKY: Thanks a lot.
MICHAEL ANGIULO: See you later. (Applause.)
STEVEN SINOFSKY: So that’s a quick look at some of the different hardware that we’ve got. I’m actually holding onto this machine for a second, and I’m going to talk holding it because I want to talk about the making of a laptop. And one of the things that we wanted to learn about in building Windows 7 was what’s it like to make some hardware. Now, we don’t do that a lot in the Windows group, and so we thought it would be really a good learning experience.
So what we did is we started to work with Acer and we wanted to make a custom laptop. Now, it wasn’t focused on industrial design or anything, we wanted to make a laptop that we could give to a developer, and that developer could understand how to use all the features of Windows 7 and the APIs in a pretty practical, low-price way to do it. And so we kitted it out. We put Windows 7 Ultimate, 64-bit, we put a Core 2 Duo with 11.6-inch screen, multi-touch, camera, you know, it’s only 3.79 pounds, it’s a convertible, as you saw, it has a sensor. It actually has HDMI outputs, 2 gig of RAM, all those kind of specs — it also has all the radios you can imagine.
And we actually learned a great deal about hardware. Like we talked about the different touch screens and we learned about how hard it is to mount the multi-touch screen depending on the technology. In fact, you know, just last week, one of the first ones was rolling off the assembly line, and we learned we had to x-ray them all and understand where we were getting the — people pushed the screen. Lots of really tricky, hard things. And it was great for us as members of the ecosystem to understand the ins and outs and ups and downs of building hardware.
And so we came up with the software image as well, because that’s an incredibly important part of it. So, we pre-loaded Office 2010, we made sure that XP mode and virtualization were all there. All of the core elements, but we wanted the software to also be representative of what we thought made a pretty good experience. In fact, for usability, we made sure that there was a really clean partition to restore, and also all the drivers, 32- and 64- were on Windows Update. And that, you know, is a big thing that all us want is just plug in a DVD and do a clean install.
And actually if you look on it, the fun thing for us is that the BIOS — and I’ve highlighted — it actually says MSFT on it. And so we felt like we really made this computer the way that we wanted. And we did that in the course of about three months. And it’s still a little bit of a kit, you know, it’s a little bit of a machine that’s really just for devs. And in fact, what I want to talk about is a little bit of this announcement about the Windows 7 PDC laptop.
And so what we’re going to do is we’re going to take this laptop and it’s going to be available to you for free. (Cheers.) OK, not this one, this one is mine. (Laughter.) But paid attendees, there are a few rules that you’ll find out at the materials distribution center, and I encourage you to stay here for the rest of the talk. (Laughter.) Little incident we had three or four years ago.
OK. Speaking of Internet Explorer — good transition there. I just want to make sure you’re all here. (Laughter.)
What I’d like to do is share a little bit of learning about building Internet Explorer and help you see where we’re heading with IE. So, in terms of learning from Internet Explorer 8 product cycle, I think I want to talk about four things that are really important to us. First, we definitely learned the importance of responsible engineering and whether it’s security, reliability, backward compatibility, these things really continue to be top of mind for us in how we build the product. Even if it means how we do our security patches and patch Tuesday, but making sure we’re a very reliable and responsible engineering partner in how we build the product, and taking very seriously the notion of putting software out on the Internet for people to download and use and making sure that that responsibility is something we all have a shared view of.
The trusthworthy experience is one where it’s very important to us that we have a browser that respects your privacy, your choice, and works super well in the way that you’re in control of your browsing experience. In fact, when we look at many positive reviews that we’ve had of Internet Explorer 8, quite often some of the most-highlighted features are those that we offer around privacy and trustworthy computing. And we’re proud to continue to deliver on those features.
We also think that we learned a great deal about real-world interoperability. So, we all think very highly of standards and we’re very supportive of standards, and we also know that there’s a balance between standards and real world and making sure that we get the things done that you want to use in building your Web site.
And so we made a lot of advances in standards, and I think it’s also fair to say that we have a lot of things that we want to do that you’ve asked us to do and that we need to do in building Internet Explorer.
We also learned that it’s important to balance the baseline with innovative technologies. And much like we talked about earlier, having a good balance between the things that we know we have to do and moving the whole notion of browsing forward. And all of these are really important to us because we intend to continue to make sure that Internet Explorer represents the very best browser for Windows and that it represents the most world-class browsing and modern browsing experience that we can develop, and we’re extremely committed to making sure that we deliver that to you in a responsible and trustworthy way as we continue to develop Internet Explorer 9.
And so let me talk about an update for developing Internet Explorer 9. So, we are about three weeks into the Internet Explorer 9 project, since we just shipped Windows 7. And so I have only a small update of things to give you, but I want to make sure you understand that we’re focused on these areas and that we’re going to go and deliver them the way that I think you believe that we should deliver them.
So the first is on standards. There has been a lot of talk about standards. We have a particular test that we’re not ahead on, and we need to do a better job there. There are new and emerging standards that are still in committee, still in draft, still very early — like HTML 5 — and we want to be responsible about how we support that, and also how we communicate what we’re doing so that we don’t generate a hype cycle for things that aren’t there yet across the board for developers to take advantage of.
We know that we have a lot of work to do on certain areas of performance. And I want to talk about JavaScript performance in particular. I’ll show some information about that. And then like I said, we want to balance innovation with looking at the things that we know we need to do. So, let’s first talk about this Acid score, because it’s something that we definitely have to go and improve. And three weeks into the project, I do want to share that we’ve made some improvements. We were at 20 with Internet Explorer 8, and we’re already up to 32 on Internet Explorer 9, and we continue to invest in that and make sure that we can deliver what you believe is important for us to deliver there in terms of interoperability.
On system performance, you know, there’s a lot of talk about script performance. But with the way that we look at performance, it’s a whole system-wide engineering challenge. So, I have a chart here of three different sites. The first two are the Excel Web apps, and then the second half are two different news sites.
And this is a chart showing the percentage of time spent in a variety of IE subsystems. And you can see that different sites have different ways that they exercise or stretch the Internet Explorer runtimes. And so, for example, the Excel Web app, has two very different profiles of using script, which is the gray bar at the bottom, the first one, whether you’re loading the spreadsheet or selecting it. And two news sites have almost a 50 percent difference in how much they use script.
So there are a wide variety of systems. And the rendering engine might be an important part. And we know that with four different rendering engines out there, at least, plus all the mobile ones, that there’s a lot of work that needs to go across all the subsystems to make sure that a browser is highly performing.
Let me show you a little bit about where we are on SunSpider, on WebKit’s SunSpider performance. So, you see IE7. IE8, we’re still an outlier on this particular benchmark, though almost all the reviews pointed out that in real-world browsing, actually Internet Explorer and the other browsers all were sort of on par.
And so here we are today with IE9 and you can see that these are all just about the same. And this is three weeks into the project. These are actually the pre-release browsers that are out there. So, it’s Firefox 3.6, Chrome 4.0, and WebKit nightly. And so we’re getting very close to basically being a wash because by the time you get down to this amount of performance, the other subsystems are really going to dominate in terms of where the best places to improve are.
And so that’s a quick update in slides, but what I think I want to do is show you a quick demonstration of some of these.
So what I’m going to do is I’m running a build that’s about from — I don’t know, yesterday. And this is using — we’re hosting our rendering engine, Trident, inside of a test frame. And so this is just our way of pushing our rendering engine during the course of developing a product.
So I have a few things I want to show you. And down here is the CPU meter. That’s going to become important down the road. But just really quick, I want to click on the Acid 3 test, and I’m just going to go ahead and run it so everybody can see, we have a big fail word up there, and we’re going to have to keep working on that. But I just wanted to make sure that I didn’t show you something that was just in slides, and here we are at 32. So, we’re going to keep working on that and keep pushing that work.
But there’s a lot of other things in HTML 5, CSS 3. So, here’s a CSS selector set. So, this is a third-party test that goes and runs using CSS selectors. And so here you are, we passed 573 out of 578 of these, and you can see which ones we passed and not. So, there’s more stuff that we’ve advanced quite a bit just in the past few weeks.
But I also want to talk about the role that hardware plays, and also doing a great job of making sure that the standards we push are real-world things that developers really want. I think everybody wants rounded borders. You know, they’re kind of a pain, they’re impossible to do today. So, here we are going to show you a couple of examples of borders.
So you see us animating the border. You’ll notice that a lot of these are done in percentage pixels or in fractional pixels, animated with radiuses, and here we can cycle the border styles — wee! (Laughter.) And so you too can have these on your site using the IE9 rendering engine.
So a great deal that Mike talked about is the hardware and graphics. So, one of the things that we’re going to do in Internet Explorer is make sure that when you build your site, that you pick up the performance gains and quality gains that come from rendering on modern hardware, without changing anything in your site. So, these pages that I’m going to show you are running regular, straight HTML, CSS on top of Internet Explorer 9’s rendering engine, which is itself rendering through the DX family of graphics. So, hardware started rendering across the rendering of Internet Explorer.
So here’s just some straight text. So, I think you’ll agree that just looking at this text, the text over on this side over here rendered through DirectWrite and V2Z is way, way clearer. And so browsers have a lot of text in them, and to be able to show this highly resolved text with much more clarity than with straight GDI is an incredibly important advance, and that just comes to your site without you having to do any extra work.
Here’s an example of using sub-pixel position text using DirectWrite. And so I’m going to go here, let me make the font large, I can animate the font, and you can see in GDI, it’s a little jittery. So, I’m moving it around and it’s jittery.
So what I’m going to do now is switch into Direct 2D, and you see how smooth that animation is. That animation carries forward with your site without doing any different work. And so here it is again, the old, jittery way.
This is another example of that. I’m in GDI now, so let me widen that box. And you see it kind of wiggles its way to get wider? Over here, I can increase the letter spacing, and so that’s all done through GDI. And that’s about the best you can do without using hardware acceleration and improved rendering.
So I’m going to switch to Direct 2D and show you how smooth that animation can be. I’ll show you how smooth this alignment and change can be. And now, again, just to reset it and show you what it’s like in GDI, remind you of just how chunky it can be. Again, these are changes that happen without you having to do anything different to your site, and that just comes from us being dedicated to building the best browser possible on Windows using Internet Explorer, building on top of standards.
One final example is just the ability to do a great job on rendering graphics. And so here you have just Bing Maps and just go ahead and pan and zoom. And you can see it’s the normal GDI kind of panning. You go backwards, you go forwards. And so I’m going to turn on acceleration. But before I do that, I actually want to turn on a frame counter. So, let me just show you that really quick again and here it is rendering. You can see we’re getting 14, 13 frames per second as we render this.
And so now I’m going to hardware accelerate that same graphic. Now Bing Maps, of course, is unchanged. And so here I am, hardware accelerating it, and you go woo. Smooth. Very smooth change, and you’re getting 60 frames a second. Again, that site didn’t change at all. All that happened was Internet Explorer by rendering on the DirectX family of APIs, through its standards-based rendering engine, picked up the advances in the underlying hardware because we think that the hardware that you run on should shine through in the browser, even when just using standards-based rendering.
So that’s a quick look at where we’re heading with Internet Explorer and our commitment to standards, to being responsible in terms of engineering, and to doing a great job bringing the ecosystem forward through your browsing experience for you, and to make sure your sites perform super, super well on Internet Explorer. (Applause.)
I’d like to wrap up by reminding you of what we think of as the call to action for Windows 7. So, we showed a lot of behind-the-scenes hallway talk about how we build the product and how we make sure it delivers the product that customers are asking for in a reliable way. Mike showed us some great ways that hardware and software come together, and there’s a lot of opportunity, a lot of things for you to do to do a great job. Integrating with the Windows 7 desktop for Jump Lists or for window management and things like that, library, for doing a great job by building 64-bit.
You know, the run rate for 64-bit machines is pretty significant. Almost all these machines up here are running 64-bit today. Please, please focus on the fundamentals in your code. Don’t get in the way of the boot path. Watch your timers. Handle all of these messages that are coming at you through the sensors. Work with the desktop and just do a great job on the fundamentals.
There’s a lot of new APIs in Windows 7. Last year we showed you, for example, DX 11 here, and we showed you the games, we showed you direct compute and things like that. And this year, we showed you how Internet Explorer is going to take advantage of some of those new APIs. But across the board, there are a lot of new things to show.
In a little bit, we’re also going to have videos of all the Internet Explorer things up on Channel 9, and those are more hallway conversations. We actually go into the developers’ offices and we’ll talk at length about JavaScript performance, standards-based approaches, and all the hardware acceleration work that we’re doing. Please be sure to watch those.
So I also want to remind you in case you forgot, I wasn’t sure, but there’s this laptop — (applause.) And that laptop is really for you to experience all of the kind of hardware innovations that we’ve seen and to really give you a test lab for your applications. We’re going to be pushing drivers out to you, we’re going to be learning together along the way. So, please read the fine print, please be calm, cool, and collected at the materials distribution center. Really, I’m going to be there watching. You’d be crazy to be there.
So building Windows is an incredible responsibility and it’s extremely humbling. And we’re really here to do a great job for you and here to make sure that Windows is a great platform for you to build great software on top of. And so I want to thank you for the chance to talk to you today and hope you enjoy the rest of your week at PDC. Thank you very much. (Applause.)
ANNOUNCER: Ladies and gentlemen, please welcome Corporate Vice President, Developer Division, Microsoft, Scott Guthrie. (Applause.)
SCOTT GUTHRIE: Well, thank you for coming here today. Today I’m going to be talking about Silverlight, both what we’ve done to date, and where we’re going in the future.
We shipped Silverlight 3 a little over three months ago and Silverlight 3, for us, was a major release that brought with it a ton of new capabilities and features. Silverlight 3 delivers the richest media experiences on the Web, and enables full 1080P video, both live and on-demand. With Silverlight 3, we enabled hardware graphic acceleration, and as you can see, a few other graphic features that you can use. We also introduced a simple way to deploy applications both inside and outside the browser.
With Silverlight 3, we also shipped Expressions Blend 3, which is a tool for creating rich, interactive experiences for both Silverlight and WPS. Blend 3 pioneered an innovative new approach to application prototyping that we call SketchFlow that makes it really easy to capture customer feedback and iterate on it to provide the optimal experience. If you haven’t checked out SketchFlow yet, I highly recommend you do, here’s, in fact, a quick video of it in action.
(SketchFlow video.)
SCOTT GUTHRIE: (Applause.) Silverlight delivered some of this summer’s largest online streaming events, including Wimbledon, French Open, Tour de France, both the pro beach volleyball, and the Ultimate Fighting Championships. And each week, you can now this fall see it in action with the Sunday Night Football site. This provides one of the most immersive and engaging sporting experiences on the Web, all the games are provided live in full HD, provide five camera angles that you can switch between in real time, provides full DVR support, so even though it’s a live event, you can pause, rewind, use instant replay and slow motion, and you can even actually interactively chat with the commentators.
This winter, you’ll see Silverlight power two of the largest online events of the year, the Victoria’s Secret fashion show, as well as the Winter Olympics. (Laughter.) A lot of sporting fans here. And on a daily basis, Silverlight’s now used on tens of thousands of sites around the world to deliver premium experiences.
In addition to consumer experiences, Silverlight’s also now being used in some of the most demanding enterprise environments. For example, Bloomberg is now installing Silverlight on all 300,000 of their Bloomberg terminals, and building and deploying mission-critical applications on them. The first Silverlight application is a commodity trading app that allows traders to predict the impact of severe weather on prices.
National Instrument Lab applications, the graphic reporting environment that’s used by millions of scientists and engineers around the world. Silverlight’s enabling National Instrument to take lab view into the browser and expose it to even more.
Siemens Healthcare is also using Silverlight now to deliver breakthrough medical imaging solutions. Specialists can now diagnose patients remotely, anywhere at any time, whether it’s at home or in a hospital.
And as we’re seeing more and more of these sites go live and as more and more applications get delivered, we’re seeing Silverlight deployment accelerate. This summer, the Silverlight 3 launch, Silverlight was installed on 33 percent of the world’s Internet-connected devices, today that number is now 45 percent and growing and accelerating rapidly. (Applause.)
So we’re really excited about Silverlight 3 and all the great work you’re doing with it. It’s been great this week actually getting a chance to meet a lot of you in person and actually check out the apps you’re building. But ultimately, this week at PDC is not going to be about Silverlight 3, it’s about Silverlight 4. (Applause.)
Silverlight 4 is going to be a major new release for us and within that release, we’re focusing on three core areas of investment. Continuing to redefine media on the Web, enabling great business applications, and going beyond the browser. I’m going to be talking for the rest of my keynote about all those different areas.
First, let’s talk a little bit about media. Silverlight 4 now allows you access to webcams and microphones on the machine. (Applause.) We’re enabling multicast streaming, which is particularly important for enterprise environments and now allows you to stream HD across tens of thousands of machines on a single network without clogging it up.
We’re also, with Silverlight 4, enabling full output protection as well as offline DRM support, which is great for anyone that has premium content, it opens up a variety of different business scenarios.
Enough slides, let’s actually show some demos of some of these things in action. So, the first demo I’m going to do, since it sounded like it was a popular request here is the new webcam microphone support that’s in Silverlight 4. And what I have here is a simple Photo Booth application that we’re going to be using.
As you can see, it’s using Silverlight 4 inside the research, and I have a live webcam going on right now. Hi, mom. I can look into it, wave, and you can see — (Laughter.) That was well timed. Hit Play, yep, and there we go. In addition to capturing video, obviously, we can also capture static pictures, also — well, that’s not so bad.
What’s nice about the Silverlight 4 webcam and microphone support is it gives you access to the actual input on the client. So, you have raw access to both the audio as well as the video input. That means that you can basically do any type of transformation, encoding, whatever you want on the client without having to engage a server in order to do it.
With Silverlight 3, we added a whole bunch of cool effects features, we call them pixel shaders. And so what I thought I’d do is actually bring up this little effects panel. And you’re going to see right now how I’m applying the pixel shader effect on the client, and able to do some fun stuff.
So, for example, let’s start with the Crayon effect, this nice little psychedelic view going on there. We can do chroma key effect, and what this does is it actually lets me pick a color — so conveniently I have a red shirt on. And now we get kind of a little Matrix-style effect going on here. My favorite, though, is the bulge effect. So, for example, let’s see if we can get close. Sometimes when I speak real loud, I go “ah” or something even better here — (Laughter.) Hello. (Applause.)
I’m not sure if this is a commercial for Rogaine or greetings earthlings. And just so that I can humiliate myself in front of as many people as possible, we’ve integrated Twitter into this app. So, please don’t tweet for the next four seconds. In theory, my Twitter profile now is updated and you can check it out too. (Applause.) Oh, boy.
So because you have raw access to the input on the client, not only can you do kind of fun pixel shader effects, you can also actually process the raw bits and do whatever kind of imaging analysis you want on it. Obviously because Silverlight uses .NET, you can actually take advantage of some of the open source libraries out there for bar code readings and actually use them within Silverlight. And so there’s actually a cool open source library for bar code reading, I think Code Project. The hardest part of the keynote is getting this to line up. And as you can see, I can have a book and — there we go. This is going to go out to a Web service and look up the pricing, all on the client. (Applause.)
So in addition to shipping Silverlight, we’re also shipping the IIS Media Services product, which is a free server product that builds on top of IIS. One of the things that we’ve pioneered with it is the capability that we call smooth streaming. And the way smooth streaming works is it basically analyzes the network conditions as well as the CPU conditions of the client and can adaptively change the bit rate on the fly to meet the optimal situation. That allows you to deliver super high-definition video, but also scale down when you’re on a slow network or there’s anything blocking your client from getting the network in HD.
We’ll see a quick demo of this in action. What I’m going to show here is the Vancouver Olympic site for the Winter Olympics. And you can actually check this out live. And this is actually using a nice Silverlight player. What’s nice about this player is it has full DVR support, so this actually works not just when you’re running on-demand video, but also if it’s live. So, if I unpause it, we can continue, even though this is a live stream.
I can actually click at any point and it’s instant seek. That’s one of the features of smooth streaming. I can even hover over events in the past and click on them in order to watch them. I can switch into slow motion mode. So, this is doing slow motion on the client. You get to control that. And there’s even this nice little doggle here that I can basically rewind or fast forward at any point and control it. And this works both on-demand as well as with live events. This is built by Vertigo and hosted with I-Stream Planet, and there are some great talks here at the event that you can learn more about it.
There’s even my favorite feature, the boss button, so that if your boss walks by you can quickly toggle in and out. (Laughter.)
The actual framework for building this application, something we called Silverlight Media Framework, we shipped it this week, it’s on codeplex now, and we’re shipping the source to it. So, if you want to build a rich player experience like this, you can download the source code, all the client logic in order to do that is now available.
So with Silverlight and IIS Media Services, we think we kind of deliver kind of the highest quality video experience out there. And as you can see, you can build really engaging player experiences around it.
Now, one of the things we also hear, though, from customers is the desire to publish their media to a broad variety of devices, including devices that don’t support browser plugins. And of course one of the most popular of those is the Apple iPhone. We’ll see how we’re going to enable that with IIS Media Services.
So we’re going to basically go into the IIS admin tools, and within IIS Media Services, there’s something called live smooth streaming. This basically controls all the streams that you publish from your Web server. Now, the iPhone doesn’t support smooth streaming directly today, but they do actually have an HTTP-based streaming format. And what we’re doing with the next release of IIS Media Services is supporting it. What that means is you can go in, you can edit the details for any stream. And one of the things you’ll notice here is there’s now an iPhone tab inside the admin tool, click it, and choose “Enable iPhone Output.”
You can then hit Save, open up an HTML page on your site. In this case right here, I have a simple HTML page. Using the video tag, which Safari supports, and which I can then point to the same streaming URL that Silverlight was accessing. And when an iPhone hits it now, instead of issuing standard smooth streaming, will actually encode it inside the iPhone format. What’s nice about that is you can just encode your video once using smooth streaming, you can use all of our back-end systems, fail over, load balancing, et cetera, and now target any number of clients.
And so we go over to this machine right here. We’ll hit the Safari button, I’ll pull up the Web site here. Refresh. Make sure the network comes back. Just in case, we have another machine. (Laughter.) I have a third machine. (Laughter, applause.) If someone is backstage and wants to kick the router, feel free to. Anyway, try one more time. This is the down side of putting machines on stage, they fall asleep sometimes. There we go.
We’re going to go to machine four. Anyway, what you’re seeing here is that HTML page with a video tag on it. I’m going to hit Refresh and hold my breath. And, drumroll — as the network router comes up — don’t let me down. Please. (Laughter.) Believe me, anyway — we’re going to go ahead. (Laughter, applause.)
Anyway, it looks wonderful. There is actually, just in case this happened, there is actually a public URL you can hit which don’t please all do it on the 3G network right now, but if you go to IIS.net/iPhone, you can actually go ahead and try out an online demo we have also using smooth streaming. Again, this will work for both live as well as on-demand and it’s as easy to enable as a simple checkbox in the admin tool.
So Silverlight 4 is about much more than just media. And one of the core focuses that we’re focusing on with this release is enabling great business applications. And one of the things we’ve done is tried to take a lot of the feedback you’ve had in terms of what the features you want with Silverlight 4 in order to enable that are, and I’m happy to announce a whole bunch of new features that are coming. (Applause.)
This includes programmatic printing support, rich text editing support, programmatic access to your clipboard, right-click support so you can implement context menus at any point within your application, as well as built-in mouse wheel support for all the standard Silverlight controls.
We’re also adding features like implicit styling support, so you can consistently style all the controls within your app. Drag and drop support, as well as drop target support so you can actually select files on the file system and drag them into the browser and be able to handle a stream of them automatically. (Applause.)
We’re implementing bi-di and RTL support so you can now enable globalized applications, RTL stands for right to left, all of our controls have built in RTL support, you can easily switch between them. We’re also enabling HTML hosting support so you can actually now host HTML as a control within your application. (Applause.)
Our input controls now support commanding so that you can more easily implement model view, view model, and test-driven development, and we’re also going to be including a bunch of new controls, as well as extending controls with a lot of commonly-asked features. With that, let’s go ahead and show some demos of this in action.
Now the iPhone works. Anyway. So, what I have here is a simple app that’s going to show off some of the new control features and text editing features coming as part of this release. This is called the Silverlight text editor app.
One of the things you’ll notice inside of this text editor is I’m using the rich text control that ships in Silverlight 4, and includes Western. I have Arabic, I have Hebrew, and I also have Kanji character sets, all within the text editor.
I have right-click context menu, so this is a custom context menu that’s being painted by the application. If I go somewhere else, notice I can actually do a different context menu, you have full control over all of that.
I can now copy text to the clipboard, and I can optionally copy to the system clipboard so I can actually use it across multiple applications, so I can paste that in. Not only can I paste text, I can also, for example, insert, say, a picture into the application. I could also go ahead and insert, let’s say a data group control. And I can either have this be read only, or if I want to, I can make it interactive.
Someone last week actually came up to my team and said, “Hey, I really need a way I can actually use my data grid and copy and paste back and forth between Excel.” And so whoever you are, hopefully you’re here, we actually worked this into the demo for you. You can now select text directly from the data grid and copy and paste out. (Applause.)
Let’s delete a couple things here. But, before I do that, one of the things you’ll notice is RTL support automatically. So, I can toggle back and forth between RTL mode. So, notice the scroll bar is now on the left-hand side and I can flip back and forth pretty easily between it. Drop target seemed like it was a popular that a couple people were excited about.
What I’m going to do here is I’m going to take a Hamlet play that’s in a Word document, drag it into the browser, and open it up within the application. (Applause.) And Hamlet is a big thing. You’ll notice I get scroll wheel support so I can actually scroll up and down within it. I can also go all the way to the end, it’s pretty fast.
I can then do print preview, so you can actually now create your own custom print preview dialogue, and then if I hit print, you can now write directly to the printer. (Applause.) What’s great about the printer is you have a print API and so you’re not just going to take a snapshot of the screen, you can custom format the output to look however you want.
So this is an example of using rich text. Let’s actually go ahead and take a look at another kind of format that we also now support, which is HTML. So, what I have here is a Silverlight app, so this is all Silverlight around the outside. And you’ll notice within it here I have Bing. And I could type in a term here. If I type it in correctly. Whatever. Hit search. And I can basically pull something up, thankfully it didn’t bring up my Twitter picture. But as you can see here, it’s a fully interactive control that’s being loaded inside the Silverlight app.
What’s nice is I can actually use this HTML control both as an interactive input control, like you’re seeing here, but I can also use it as a brush. So, I can convert this HTML image into a brush and use it to paint any standard Silverlight control I want with it. And I can paint it as a color or gradient.
So, for example, I could take this thing – I’m going to puzzle-fy it. You’ll notice we went to jigsaw puzzles here. I converted it into a brush and I now have a whole bunch of vector elements on the screen. I can then scramble it. And what you’re seeing now here is this HTML page being used as a brush, painting as a surface, all of these little jigsaw puzzle pieces. And I’m just using the multi-touch features that we actually shipped in Silverlight 3 to move things around. I can cheat and do a hint, or I can just solve it all in one go, convert it back into interactive mode, and I can type again. So, lots of interesting ways you can mix these things up. (Applause.)
What’s nice about the HTML control is it doesn’t just work with HTML. You can also host any plug-in control you want within it. So, you could host Silverlight content, you can host Flash content, you can host any standard plug-in out there.
So, let’s actually see this in action. I’m going to go to a site that a lot of you have probably seen over the last year. Yeah, whoops.
Anyway, for those of you who don’t know what Rick Rolling is, you were just Rick Rolled.
And what you’re seeing here is a YouTube, it’s hosting a Flash control, and those, again, are running inside Silverlight. So, this is also right around, I have HTML, and I have Flash controls within here.
You might ask, OK, so I’m using this as an interactive control within Silverlight. I also still use it as a brush. Let’s see that in action. Hit scramble. And what you’re seeing here – (applause) – anyway, you can see it’s still playing, the video is still playing. Anyway, we can install this, go into browser mode, and let’s pause that. Lots of new features you get in terms of the HTML controls. It brings up a whole bunch of possibilities in terms of what you can do.
I was going to talk a little about data and networking. With Silverlight 4 and .NET 4, it’s now possible to compile an assembly once, and run it in both places. (Applause.) With previous releases, you use the same code, but you actually had to compile twice. Now you can compile once and use it in both places. This is really great if you want to have, say, for example, common logic, or business logic that you want to share both across the client and the server. It’s also really good for uni-testing. You can now use a uni-test runner using .NET 4, and test Silverlight assemblies.
We include a whole bunch of new data binding improvements with Silverlight 4, like common apps like IDataErrorInfo. We’re also providing an async way to do that. You can hit the server for validation, and still have your nice UI validation occur on the client. Other common formats, like string format, AllowDBNull, a whole bunch of things that were in full WCF we’re now also bringing down into Silverlight.
On the networking front, we’re enabling UDP multicast support. This allows you to do peer-to-peer networking, as well as take advantage of UDP. We’re providing a whole bunch of REF protocol enhances with ADO.net Data Services. We’re also making a lot of improvements to WCF, and the support that’s included within the Silverlight client with that. One of the biggest improvements there is TCP channel support, which is particularly useful for enterprise scenarios. It actually allows you to transfer data up to 600 percent faster than you can using straight HTTP. That’s now just built in to WCF.
We’re also with Silverlight 4 going to be shipping a RIA Services 4 that we first previewed at MIX earlier this year. One of the things that we’ve done over the last couple of months, and for those of you who are familiar with RIA Services, it basically provides a really easy way for you to retrieve data from a server, work with it on a client, and then send the changes back to the server and apply them.
One of the things that we’ve worked on over the last couple of months is making sure that RIA Services layers very nicely on top of WCF, so that you get all the productivity enhancements of RIA Services, but you also get full access to the raw WCF power and extensibility below it. So, a RIA Service now is a WCF service, and you can use all the standard WCF features.
We’ve also been working to make sure that the RIA Services and WCF stack work well with OData, which is a new name for the Astoria wire protocol, which means that you can now access an even broader range of servers and data out there on the Web.
With Visual Studio 2010, we’re also making significant improvements to the Silverlight application development experience. We’re going to be shipping a full WYSIWYG design surface, which gives you access to data binding, layout styles, you can drag and drop controls, and completely customize it in an interactive way. We are also providing a bunch of XAML and intellisense improvements, including intellisense support for data binding expression. And then we’re also integrating the WCF RIA Services work as well as providing support for standard POCO objects, SharePoint, lists, and a whole bunch of other things inside our data sources window.
And rather than me just talk about it, what I would like to do is invite Scott Hanselman on stage to actually walk you through building an app with it.
So, Scott, come on out. (Applause.)
SCOTT HANSELMAN: Hey, everybody. I’m going to build a typical line of business application using Silverlight 4 and RIA Services, I’m going to do it inside of Visual Studio 2010. The general idea here, if we take a look at my solution explorer, is that I’ve got two projects. I’ve got my Silverlight project, which is my client, and then I’ve got my ASP.net application which is on the server side. This is going to be using an EDMX data model that I’ve got here. This is Entity Framework 4. You can see my data model has got a store, stores have contacts, contacts have some detailed information like sales targets and things like that. So, it’s a little more complicated than a typical master detail kind of a thing.
This data model I want to expose as a service from the ASP.net Web site, and have it consumed by the client. So, what I’ll do is, I’ll come over here to my Web application, and we’ll create a new class. The class we’ll create will be a contact service. And this contact service is going to enable that data to be consumed. Like all really good enterprise developers, I like to write all of my code ahead of time in Toolbox, and then drag it over so that I feel as productive as possible. I encourage you to use this technique to impress your bosses.
So, this service is running on the server side, and is a domain service. This is a RIA Service, but it’s also using, as Scott said, WCF at its core. We’ve got things like GetStores, SearchStores, UpdateContacts, all returning this iqueryable of store. This information can be used not only from Silverlight, but also from things like ASP.net. I can hit this with WCF service references, I can use this from an AJAX. So, this service is going to be used in a number of different places.
So, now I’ll hop over to my Silverlight application, and I’ll open up a blank view. And this will just be a XAML that I’ll bring some things into. You notice a data sources window in the lower left corner here. I actually promised my mom, and some people on Twitter, that I would come on live at PDC and drag a data grid onto a XAML, because all good Microsoft demos start with that.
I’m just going to pick up store here, select that I want it to show up as a data grid. You’ll notice in the data sources grid, I’ll just pick that up and drop it in my XAML. At least it wasn’t Northwind, right? Your data sources window in Visual Studio 2010 is really, really important. This is your one stop shopping center for all things data on the client. This isn’t just about Silverlight 4, but you may be familiar with this from WinForms from WPF. The sources in this data source window can be not only POCO objects, plain old CLR objects, but also SharePoint lists, OData, entity framework, even in hibernate. Whatever you want to put in there, you can.
In this case, I’ve dragged over a data grid, but I wouldn’t leave you with a demo like that. I’ll, in fact, open up a more sophisticated example here. This is something that a designer worked on for me. We’ve got three lists here to have that master detail example. I’m going to go over here and click on store, and bring up that I want it to be a list box. So, rather than a data grid, store is going to be a list box. And I’ll drag that into that first data cell here. I’ll right-click and just reset the layout for that.
You’ll notice that immediately it kind of looks nicer than a typical list box. That’s because this is using implicit styles. This is a style that the designer has said ahead of time that they want all list boxes to look like this. So, by dragging that over from the data grid, that actually generated some XAML for me. I’ll go ahead and just close this up.
I can click on store contacts, and say that I want it to be a list box, and drag it into the middle grid cell. And I notice that it doesn’t exactly look the way I want. It’s looking kind of like a store. Instead, I want to change that style from something implicit to something a little bit more explicit.
I’ll come over to my properties window here, and since there’s a lot of rich properties available, I’m going to filter them. And I’ll click on style, and I’ll pop up a new style ticker. There’s lots of styles available. I could group them, look at them by file name. But I’ll just type in contact list box. And now, I’ve applied an explicit style that’s located in another style. So that looks a little bit more the way I want it.
I can drag things over and create controls, but I can also bind to existing controls. Like, for example, here I drag onto the data pager and enable that. I can open up contacts, and you’ll notice that that service, that domain service on the server side is being kind of – the hierarchy is being parsed through, and you can see all the different information that’s being made available, including things like contact photo. I know this to be a URL, so I don’t want it to have a little gear. I think I want it to have these creepy little eyes here. This is indicating that it’s, in fact, an image.
So, now I say I want to have contacts be a details page, and I want the image. I’m just going to drag that over to that final data cell, and I’ll right click on that, and reset its layout as well, and then we’ll zoom in so we can see that a little bit better. There we go.
You see that it actually generated that form for me. It put all of that XAML together for me. I haven’t really thought about XAML at all. I’ll click on this contact photo text box, I don’t want that. I don’t want the photo to be bigger, and I’ll just drag that photo a little bit farther over to the side here.
And then sales target is interesting, because even though it’s a decimal, they made a text box for me. I’d rather that that text box be formatted as a currency. So, I’ll come back over to our properties box here, and we’ll look for the text property, and you can see that it’s got a little data binding set of information. I’m going to pop up a new data binding ticker. This is new tooling that’s got the nice supporting control, and it makes data binding a lot more fun. I can open up my string format, and let’s make that a currency.
We’ll zoom out of here, and the only thing that’s really left is to save this application. So, we’ll go into the code in the back here, and we’ll build that solution. And, remember that – there we go. Let’s say this SDDF, and I’m actually going to use the Camel Casing intellisense in Visual Studio 2010, so I don’t have to type all of that. And we’ll say submit changes, and bring that up.
So, let’s start up the browser, and see what our application looks like. All that data has now come over via that RIA Service into this application, our line of business application. I’ve got paging. I’ve got master, detail, detail – hey, I know that guy – it looks like this guy has got a sales target of about $384,000. I think I want to raise his expectations a little bit.
Remember back at the beginning, this contacts model, this is a C# class that maps to that entity model, and within that we’ve got data annotations. These are the same data annotations that you may have seen in ASP.net, ASP.net Dynamic data, and MBC. One of them that I’ve pointed out here is a range. The sales target has to be within a certain range. It looks like 10 to 1 million, and then there’s an error message. And, of course, that error message could be localized as well.
If I pop back over here and change his expectation to be like $20 billion. You see that I automatically get validation on the client side. I say it in one place. I describe it in my model. I design my model. The data sources picked up that model, helped generate my controls, the validation attributes automatically flowed into the Silverlight application, making a really, really nice line of business application with a minimal amount of effort. (Applause.) Thank you.
So, you can see how the new tools that are built into Visual Studio 2010 can really jump start your data center line of business applications using RIA Services and Silverlight 4. Thank you very much. (Applause.)
SCOTT GUTHRIE: So we talked about a lot of new application development features, and showing off kind of the tooling experience for how you can take advantage of them. What I want to do now is invite Samed Wahedi from SnapFlow on stage, and actually show how they’re using Silverlight in order to build a great software as a service application targeted at businesses.
So, I would like to invite Samed on stage. (Applause.)
SAMED WAHEDI: Thank you very much. I was a little slow getting up here.
Our goal is to let our partners build online applications without any programming based on amazing technologies for making it extremely simple. SnapFlow is a new way of thinking, an evolution of how you collaborate and do work. Until now, applications that automate business processes was only available to large organizations at a very high cost. But because of Silverlight, we can deliver a much more cost-effective solution to the mid-markets, and that’s exactly why Direct Buy, the leading home improvement and furnishing club in North America chose SnapFlow.
What you are seeing is their remarkably sophisticated application that is tightly integrated to their ELP system, delivering radical improvements to their order, service, and warehouse operations across 160 locations in U.S. and Canada. As you can see, the studio is incredibly intuitive, and the UI is smooth and responsive. We first considered AJAX, and we even spent time and money developing a prototype, and the build reflects. But at the end, Silverlight was the right tool for us because of how well it met our needs and our existing skill sets.
Silverlight allowed us to deliver an incredibly sophisticated application experience by making everything drag and drop. And working with our partner, Internology, we support many of the Silverlight 4 features that you have seen earlier today.
But this workflow is a little bit too complex, so let’s quickly illustrate something new here that we’ve recently built. With this application we have started building, everything is automated, from receiving resumes to sending out offer letters. But let’s go ahead and create some new logic to reject an applicant.
The first thing you would do is add a state for the rejected applicant, and connect it to the existing flow. We can even build sophisticated business logic to reject applicants who have insufficient experience, but just drag and drop the components right onto the canvas. Remember, this is all 100 percent Web-based, and with Silverlight the user experience is rich and intuitive.
Once you are done designing your workflow, all you have to do is click go live. And working with our partner Softsource, this action deploys the entire application to Windows Azure platform in seconds. Again, with absolutely no programming. For the end user the experience is seamless, because this application can be embedded in any Web site by just pasting this code snippet, and then the user can interact with a dynamic and interactive Silverlight form. We had to invent new ways of architecting SnapFlow to achieve our core ideas of providing a sophisticated capability to people who want to solve problems, but do it intuitively and without any programming.
So, if you want to see more visit us at the Exhibit Hall, or check out SnapFlow.com. Thank you very much for your time.
SCOTT GUTHRIE: Now let’s talk about taking Silverlight beyond the browser. With Silverlight 3 we added support for browser applications that can run outside the browser in a particular sandbox. All developers need to do is pull up the properties on a Silverlight App, and they can select the enable outside of browser checkbox. And then a user can basically install that application fairly easily. It’s a very consumer-friendly experience. And then basically run it, again, outside the browser, they can even pin it to the Windows 7 taskbar or dock it within the Mac tray.
With Silverlight 4 we’re adding even more capabilities for running applications outside the browser in a sandbox mode. Specifically we’re adding new windowing APIs so you can programmatically resize and position out of browser windows however you want. We’re adding notification popup support, so that even if your application is actually minimized, you can provide a hovering popup behavior. The user can click it. You can use the windowing APIs in order to position the browser frame whoever you want.
As you say earlier we’re adding HTML support. You can now host HTML within your application. We’re also adding drop target support, so you can drag and drop files within sand-boxed applications, as well. With Silverlight 4 we’re also adding a new capability, which enables you to build trusted applications that run outside the sandbox. (Applause.)
This mode works on both Windows and the Mac. All developers need to do is check an extra checkbox that says they want to run trusted. We’ll then also provide an appropriate user consent dialogue before they actually install it. But, once you do that, you as a developer now have a bunch of additional scenarios you can take advantage of.
Specifically, you can now customize the window chrome of the application. So you don’t have to have our default title bar, you can customize it to look however you want. You have local file system access. You can now read and write from the file system. We have full cross-site networking support. You can now access any site on the Internet through that. We have keyboard support and full-screen mode. You can take advantage of any keyboard keys when running full screen. We also give you much more hardware device access. We’ll demo some of that in a little bit.
Then, when you’re running on Windows, we’re also giving you access to any COM automation object installed on the system. The way this works, basically, is you can take advantage of the new dynamic keyword in C#, or the dynamic support that’s always existed in VB, in order to create any COM object using a Prog ID, you can then programmatically call any method on it.
This opens up a whole bunch of possibilities on a system, enabling you to light up when certain capabilities are there. For example, if you have Office installed you can now programmatically query the calendar, you can add new appointments, you can use pivot charts inside Excel, and a variety of other scenarios. On Windows you can access some of the Windows 7 APIs like location. So, for example, you can get the exact GPS coordinate location points within your application, and incorporate it within a map. It’s a lot of capabilities, a lot of new things that you can do, really hopefully it opens up a wide variety of scenarios.
Now, the other thing we focused on with Silverlight 4 is performance. This is something we’ve always focused on since the very beginning with Silverlight. With Silverlight 4 we’re trying to make things even faster. We’ve always taken advantage of the CLR and just in time compiler with Silverlight, which has given us a kind of screaming fast performance. What a lot of people didn’t realize is, for a variety of reasons we weren’t able to use the full JIT optimizations that’s in the full .NET with Silverlight. With Silverlight 4 we’re actually now enabling that. It now delivers about 2X of code generation performance, which makes your apps almost twice as fast when running processor-intensive things.
We’re improving startup on more than 30 percent for common scenarios, sometimes up to 80 percent. Were also enabling a new profiler API and within Visual 2010 going forward we also enable integrated profiling support. You can now precisely measure exactly how much time your application it taking, and in what method it is doing so. So, it’s much easier for you to go ahead and optimize your app. (Applause.)
Silverlight 4 will support all the same operating systems and browsers that we’ve supported in previous releases. We’re also, with Silverlight 4, extending official support for Google Chrome. So, Silverlight can run inside that, as well. Despite all these new features, all these new capabilities, all this new performance, Silverlight is still a 10-second install process, still in the five-meg range, in terms of the download.
So, I talked about a lot of features here today. And what I thought I’d do is actually close with one more demo, which actually shows a lot of them being used in action, and I think shows off some of the types of kind of next-generation experiences you’re going to be able to build with Silverlight 4. So, to do that, I’d like to invite Brian Goldfarb on stage to show off a cool Facebook application. (Applause.)
BRIAN GOLDFARB: Hey there. You’ve seen a lot of great features and functionality inside Silverlight 4 today. I’m going to pull them together into an end-to-end scenario to show you the potential of Silverlight and what you can do to change the way you think about a site many of you are familiar with, Facebook. Let’s go ahead and dive in and take a look.
What you’re seeing here is a Silverlight 4 trusted application running out of the browser. It’s using the new chrome-less UI feature, where I have complete control of the Window frame around it, the minimize button, the shape. I can maximize this, and I can also use the new windowing API that Scott talked about to programmatically resize and change the location of the Window. We’ve implemented this with mini-mode, a nice, bounded to the left side of the screen of my feed.
Let’s go ahead and jump back out and let’s explore the application a little bit. This is the home screen. I have my feed and some photos. I can jump across and see my friends. Now this is loaded to my live Facebook data, which is horrifying and I have over 1,100 friends, which is a lot of content. You can scroll down and just see the As here. We can filter this list to the Ls, the Js, a very real application.
Now, this application was built on top of public Facebook APIs, using our new Silverlight SDK for Facebook, which we shipped last week. I have a photos page, where I can see new photos that were uploaded by my friends. Now, as we talked about earlier, we could take advantage of features of the system that are installed, like Office. In this case I want to use the new COM automation to deal with my event tab. I have all kinds of birthdays and upcoming events, I can right click, add to Outlook calendar, and see all the metadata populated automatically directly using COM APIs to Outlook. It’s pretty amazing. (Applause.)
We’ll go ahead and save that out. I also have access to my inbox. I have my messages on my left, the content, and we’ve created a virtual wall on the right, so we can contextualize who I’m talking to. This is a very interesting way to add value to what you normally get on Facebook alone.
Let’s go ahead and go back to the home screen. Now, we talked a little bit about popup notifications. They look like Outlook, even if the application is minimized, I can get access to them. Now, with Facebook people like to popup notifications all the time on my feed. Thanks, it’s going pretty good so far. These give you the ability to direct access back to the applications.
I have access to the entire wall in my feed right here. We can filter status updates, Seattle, you see nice fluid animation walking through it, and the grid. I can also transform the way that we look at this feed data, not just the full feed, but I can look at a grid view that has status messages, and I can scroll across and get kind of a nice clean way to look at interesting information from Facebook. I also have a photo wall, so I can explore lots of interesting new photos, using the mouse-wheel, that are on my application.
OK. Now, that’s just an exploratory view. Let’s go drill in a little bit. One thing about Facebook is being able to update your status, to communicate with your friends. What should we say? Silverlight 4 rocks. But, really, a little bit more than just plain text, I want to leverage the camera and microphone functionality of Silverlight 4, take a photo, go ahead and give it access, I’m going to say cheese, snap a picture and share that right up, live to my feed. OK. There we go. Silverlight 4 rocks with a photo, it’s pretty cool. (Applause.)
One great thing about Facebook and Silverlight is video. All of the video uploaded to Facebook is encoded in H.264. And with the H.264 support in Silverlight, we can initiate a player automatically, right in line with my feed, to look at that native Silverlight video. But, many times people also link to YouTube videos, or Hulu. So, using the new HTML integration, we can hit play, instantiate the HTML required to view a YouTube video, and see that video pop up right in line, completely holding true to the experience you expect from the Web. (Applause.)
Now, it goes a little bit beyond just the feeds, and consuming the feeds. I often want to go and look at my photos. So, I have this dynamic photo wall here, I’m going to drill into my mobile uploads, and we see a nice clean view, comments on the right, pictures in the middle. I get nice animation, great pictures, and what we’ll see here is some pretty impressive performance as we fly through hundreds of photos on Facebook, comments updating, everything. It’s pretty incredible what you can do with Silverlight. (Applause.)
I also want to contribute photos, though. In the old model we click Add, get a file system dialogue box, and be able to add that photo directly to the screen. But, really I want a more natural interface. I’d like to use the file system. And now with the new drag and drop support we can select some photos, drag and drop those onto the screen, and have them automatically import into the application, very natural. (Applause.) I can rotate these photos. I can tag them. We can caption them, and we can even reorder them before we send them up to Facebook.
But, I want to go one step further. We talked a little bit about how we can access peripherals. If we could bring the house lights up for a second, we can get a photo of the audience, everyone say cheese. Cheese. Maybe you could have said Silverlight. All right. Now, I’m going to plug this back into the system here, going to detect the camera, we’re going to get a notification in the bottom right that a new peripheral has been detected. It’s going to ask us if we want to import the photos, click the button. It’s going to pull some photos I already had of us prepping yesterday, and the photo I just took of all of you just now on stage. (Applause.)
Last, but not least, we would be remiss not to take advantage of multi-touch capabilities of Windows 7. The photo wall is interesting. We can go ahead and convert this into a multi-touch scenario, using brushes to apply black and white features, activate some pictures, have some basic physics, use gestures to zoom in and zoom out, and even give things a little spin.
So, with that, we’ve seen an application. That’s right, we can clap. (Applause.) We pulled together all of the great features you’ve seen in Silverlight today into a great scenario, end-to-end, that will transform the way you think about your experience on the Web.
Thank you.
SCOTT GUTHRIE: One of the great things about that application is we’re also going to be shipping it as a reference sample so you can also check it out on your own. (Applause.)
So, as you’ve seen, Silverlight 4 includes a ton of new capabilities and features. And with this release, one of the things we’re always trying to focus on is making sure we’re adding the right capabilities and features. This summer, we invited everyone to suggest features online on a Web site, then you could actually vote for those features. So, for everyone in the audience who did vote for them, thank you very much for the feedback. It’s been a great help in terms of making sure we prioritize that we’re delivering the right set of features.
We had more than 12,000 votes that were submitted on the various feature. I’m pleased to announce that Silverlight 4 has 70 percent of those votes. Those features are incorporated as part of the release. They include nine of the top 10 requested features. So, hopefully you’ll find there’s a lot of power in there. We only showed a few of these features off in the keynote today, but there’s a lot of depth that you’ll be able to take advantage of.
So, I guess you’re probably wondering when, when can you start using this? We’ve been on a very fast release cadence with Silverlight. We delivered the first three releases of Silverlight I think in 22 months. Silverlight 4 will continue to ship on that fast cadence.
There are three steps in terms of how we’re going to ship this release. The first will be a beta, then there will be a release candidate, and then we’re going to ship the final release. The beta, the beta that will ship will include all the features that you saw today. It will also include the Visual Studio 2010 and Expression Studios tooling support for targeting them as well. I’m very excited to announce the Silverlight Beta is now available for download. (Applause.)
We’ll ship the final release of Silverlight 4 in the first half of next year. All of Silverlight content talks here at the PDC this week will now be focusing on Silverlight 4 using the bits that you can now download. We’ve also added three new sessions. So that just magically will show up on the schedule right now, which cover some specific new capabilities of Silverlight 4 in more depth.
And so, on behalf of all my team, I’m really glad to be able to be here and talk to you this week. Your feedback has been invaluable in terms of making sure we hope we develop the right set of products, and we’re really looking forward to seeing what you build with them.
And now we’re going to invite Kurt DelBene from the Office team to talk about SharePoint, and what you’ll see is how SharePoint is enabling on top of .NET, on top of Silverlight, a broad range of solutions, and really bringing it to life.
So, thank you very much. Have a great PDC. (Applause.)
ANNOUNCER: Ladies and gentlemen, please welcome Senior Vice President, Microsoft, Kurt DelBene.
KURT DELBENE: Thank you.
It’s a pleasure to be here today. How do you like the new face of Office, and the new face of SharePoint? Pretty impressive, isn’t it, I mean if you think about the breadth of what Office and SharePoint is all about, in particular for the developer now, versus several releases ago, it’s a very, very different story.
And so I’m excited to be here. We shipped the technical preview of Office, the Technical preview of SharePoint 2010 in July. I’m excited to be here to tell you how things have been going in the meantime. I have some announcements to walk through, and give you a great demo of some of the functionality that we’ve got available and that we’ll be shipping to you.
But I’ve got to get something off my chest first. I’ve got no hardware for you. So, you know, the guy that’s already been on eBay that sold, I’ve got nothing to add to that. So, just sorry about that.
But, seriously, I’m very excited to be here, I think we’ve got a lot to show you. I’ve got a very condensed period of time, so I really want to just get right to it. There’s a few things in the talks that you saw before, a few things that really kind of resonated at the top level that I wanted to reaffirm here, if I can get the slide to switch, somebody in the back? One moment, please. There we go.
Let me talk to you about three screens and a cloud. I really feel like what we’re doing overall in Office, and what we’ve been invested in for several years now is really making this come to life for the information worker, for that 500 million users of Office out that, for that 100 million and growing user base of SharePoint users today. We are all about delivering the vision for information worker productivity across the browser, across the rich clients, and across mobile devices, and we’re all about delivering that, not just on premise for our traditional customers, but we’re working very, very aggressively to deliver that into the cloud via Microsoft Business Productivity Online Services as rapidly as we can.
We’ve made very, very good progress so far. We gave you a technical preview of the Office Web Applications in July. Those have been making super-good progress. BPOS, Business Productivity Online Services, great progress there as well. We announced recently that we’ve got over a million paying users on BPOS today, and that includes large corporations like McDonald’s, GlaxoSmithKline, Aviva, Phillips, Coca-Cola, Aeon, it keeps growing every day. So we are really moving into this vision of delivering everything that we’ve got on premise, delivering it into the cloud.
It’s really about a connected ecosystem for information workers, if you get right down to it. We’ve really had people resonate with this notion that there should be a single infrastructure that you have in your organization that allows you to share information, collaborate with others, key business intelligence about what’s going on in your organization, search for every shred of information that exists regardless of where it is in the organization, and bring that together into a single user experience that’s easy for people to digest, that is familiar to them, that makes sense to them.
And as much as we’ve been focused around the end user experience in that regard, we’ve been just as focused on all of you as developers. And so I think you’ll see that the entire surface area functionality that we’ve delivered to you, there are APIs, there are Web Services, there are interfaces that you can use to build applications that go along with that.
And with the success we’ve had with the Office client deployments, the success we’ve had with SharePoint, it’s that perfect opportunity for you to build those rich application that not only take data that’s within the information worker’s space, whether that’s documents, calendar items, et cetera, but also taking data from back-end line of business systems, the most successful integration of line of business systems is into an environment where it’s familiar to the user, and that’s what our goal is, to create rich connectivity services, and deliver those to the users in a way that’s understandable.
It’s also a very successful approach from the developer point of view as well. We’ve had great pick up from developers. We estimate that there are over 100,000 SharePoint developers today, and we anticipate with the next release that that will cross over the million mark.
It’s a very profitable business to be in as well. We’ve done a calculation of what we think the whole ecosystem is generating, it’s somewhere around $5.6 billion in revenue that’s added on to the software sales directly, moving towards around $6.1 billion in Fiscal Year ’11. So, we’re talking about a very complete platform. We’re talking about an opportunity to create the best of breed experiences for information workers, and we’re talking about a very profitable enterprise for all of you as well.
Did you watch the new transition in PowerPoint 2010? They only get better, trust me. It’s a broad set of applications that you can deliver, too. Look at the set of applications that we just kind of brainstormed, what are the ones that we see people building today? And it is a super broad list. You’ve got things that are basic document processing, not just on the client, but on the server, taking that end to end workflow of how do you build a document, how do you disseminate it to the organization.
Lots of line of business front ends. The challenge that people have with line of business applications is that they tend to be very unintuitive and require a new user experience for the user. What we’ve done is created very rich experiences that you can deliver directly into the desktop, directly into the SharePoint portal, and into the SharePoint collaboration spaces, and make it super intuitive for people to use.
We’ve also done this in a way that it’s a very repeatable process, so that you can build it once, you can get those best practices in order, and then you can churn it out over and over again for that new application. It really gives you a toolkit, a toolkit that’s familiar to you, it’s built on top of .NET, and really is a super efficient way for you to roll out that next departmental portal, that next line of business application.
So, across the board, you see human workflow applications here, you see lots of business intelligence reporting, and analysis applications. We are very invested over the long period of time of taking business intelligence and making that available to every user in the organization, making that an intuitive experience, whether it’s on the SharePoint site with Excel Services, or on the desktop using the rich Excel desktop, which is the biggest BI client in the world today. And we’re unlocking that data for the user, making it searchable, making you be able to pivot that data in ways that make sense to you, et cetera. So, very, very rich business intelligence sites, as well.
Another thing people don’t often understand is we actually have thousands and thousands of sites on the Internet that are basically built on top of SharePoint. It is a growing application for SharePoint today, and one that we’re super-excited about. And so, you’ll see places like Kraft, Volvo, you saw a picture of the Ferrari Web site, all being driven by SharePoint today.
The beauty of that is the richness of the site itself, of course, but also, again, the patterns and practices that you use to create an Intranet site are exactly the same patterns and practices that you’ll use to create your Web point of presence. And, in fact, the workflows you do for approval of that document, start it within the organization, start it within Word, goes all the way through your organization, ends up on the Web site approved and ready for publishing. It’s this notion of thinking about the problem in a very end-to-end way that is the success of SharePoint, the success of Office, and what we hope that you’ll be very excited about.
Let’s spend just a few minutes kind of giving you the highlight of some of the applications that people have built. I’ll spend some time highlighting some of the services that we’re delivering to users in this next round, so hopefully all of you, and hopefully we’ll get you jazzed up to building applications.
The first one is E-Sponder. This is one that actually has gotten a lot of success in big events and monitoring response situations that have to come up in events like the Super Bowl, the World Series, Major Leagues All-Star Games, even the presidential debates that happened in the recent presidential campaign. So, it basically brings together InfoPath for forms automation, incident management, all of it in a single portal. It’s built on top of SQL, built on top of the Office client, because it does rich client integration, as well.
It basically gives you a heads-up display. You even – a bunch of people are even deploying it Surface. So, you can imagine all the police huddled around a single user experience and saying, what do we need to be looking at, at this time, giving maps from Bing, have that integrated in, et cetera. Again, the idea is a very rich set of services all being surfaced in a single way, and a very compelling user experience that’s familiar to the user.
Here’s an example of a PLM company called PTC, which has coined the notion of social networking with social product design. And what they’ve done is taken the social networking aspects of SharePoint, and of the Office client, and built those directly into their pro-engineer product line.
So that basically you can think about sharing specs with other people, seeing what people are working on, et cetera. And, again, it gets to that point that as much as it’s an out of the box solution in SharePoint, you can integrate the capabilities of it directly into your application and build the capabilities using out of the box functionality, as opposed to you having to build them from scratch. So, we’re seeing a lot of folks in the PLM space, a lot of adjacent spaces saying, we don’t want to build this stuff from scratch. We just want to take the capabilities that we know the customers are already rolling out across the organization, and we want to just integrate those into our applications.
INtex is a workflow company that basically said, great, we’ll work on top of the Workflow Foundation, we’ll work on top of the SharePoint workflow stuff, and we’ll just build our workflow into the rich Office client, we’ll build them directly into SharePoint, and we’ll use the whole stack that exists that Microsoft delivers. Very compelling workflow capabilities is the result.
I wanted to highlight Microsoft Dynamics CRM, as well, as a place that’s really intensively investing in SharePoint integration. They’re already the leaders in terms of Office client integration. If you fire up Outlook today you get a super-rich experience around content, or around customer relationship management directly inside of Outlook. They’re building functionality into the next version of CRM, around using SharePoint as a document repository. It makes no sense, given the richness of the document repository that SharePoint has, to rebuild that. It’s better to just integrate that functionality directly into CRM.
The other interesting thing is, as much as CRM is sold as a packaged customer relationship management product, it has just as much use as what we call XRM, or general relationship management, the interconnectedness of different entities, rich workflow, events that trigger when one item changes, parent-child relationships, et cetera.
So, they sell the product very much as an XRM system and they’re working on points of integration with SharePoint. So, the natural point you think about is, OK, if I’ve got an XRM application how do I bring that into my SharePoint portal? How do I bring that data into my SharePoint collaboration space? How do I take the data that’s in these entities and how do I expose them to SharePoint?
We have this rich thing called the Business Connectivity Services in the next version of SharePoint that lets you define entities in your line of business systems and they will light up in SharePoint. They will light up and be replicated down to the Office client. The Dynamics CRM team sees this as a conduit to be able to bring this rich data from these XRM applications directly into SharePoint and directly into the Office user base as a result.
So, here’s a slide, it’s kind of the eye test of all the different services that exist in the next version. They fall really into the whole stack of how you think about building applications. And I certainly don’t want to walk through all of these. The purpose of this chart is basically to say, it is a super, super rich surface area of applications, and we have thought bottom to top of all the services that you guys need to build applications. So, the slides are available on the Web. So, I really won’t spend too much time walking through them in detail, but I did want to highlight a few of them as I go down the stack.
In terms of user experience we have thought it through from both the server side of things, giving you a great way on the server to come up to speed and create a site super-quickly, very customizable. In this next version of SharePoint it gets the ribbon, and so you can think about an experience that on the client and the server very familiar to the user, and very consistent, and extensible in a similar fashion.
As I mentioned through the Business Connectivity Services we give you the ability to take data that’s on a server and bring it down into the client, and actually have it available offline, as well. We’ve also built a rich experience inside the Office client applications so that you can take advantage of that data, drag it into a Word document, drag it into an Excel spreadsheet. So, it really gives you server to client full experience, and full developer platforms for you to work on.
In fact, we even have a client-side object model that Silverlight can talk directly to, so you can think about building that cool Silverlight application, you can think about using the client-side object model to interact with that data, to replicate it back to the server, et cetera. All interacting directly with the line of business system in the back end in a way that respects the integrity of the data.
In terms of application services, this is really just a broad set of services with the goal being for you to focus on the business logic of your applications, and not rebuilding forms, not really rebuilding visualizations, et cetera. The goal here is let’s give you those out of the box, and you focus on what you need to do to really build a super-cool application.
A couple of them I’ve highlighted here, again, InfoPath for forms, workflow directly inside SharePoint that’s consistent with Windows Server Workflow. In this release a big investment around business intelligence, integrating the PerformancePoint Server capabilities directly into SharePoint, giving you rich visualizations via Excel services. Really, any place you want to show data, whether it’s a dashboard, a scorecard, a spreadsheet, a chart, et cetera, we’re going to give you the capabilities inside of SharePoint, and inside the Office client to do that in a rich way. We don’t think that you need to produce those.
Content and data management, the key here is most of the applications that information workers want to work on are a mixture of that line of business backend, and the data that they work on every day in their office. So, it’s that Word document, that PowerPoint presentation about a project, it’s all that data that goes around things, and what we provide you is rich content management capabilities to go with that.
So, now think about document libraries that are in the millions of items. Think about the ability to navigate on them and capture metadata around those documents, as well, super-rich capabilities in that regard. Also, we move very extensively into the social networking space with this version of SharePoint. So, the ability to see what’s hot, what’s going on in the organization at any point in time, just having that be an inherent part of SharePoint, an inherent part of the user experience, and having you be able to build that into your applications.
Interoperability with line of business systems, I basically talked about this, but the idea, again, is easily define your backend line of business entities, we’ll light them up in SharePoint lists, we’ll make them available for your SharePoint application, we’ll replicate them to the client, we’ll make them available offline on the client, as well. So, a super-rich set of capabilities there, as well.
The other thing is we have finally, we believe, gotten it right in terms of the integration with Microsoft development tools. And so, now we’ve got rich integration in with Visual Studio. So, you fire up Visual Studio, you will see a very rich set of different templates for the different kinds of things you can create on a SharePoint site. Best of all, when you’ve got your site going, you can hit a breakpoint, you can hit F5 and it’s going to go ahead and deploy that solution up onto the SharePoint site and run it for you up to that breakpoint.
That is a huge improvement over what we’ve provided to you guys in the past. If there’s one thing when Derek comes up and gives you a demo of the capabilities, I hope you will give him a nice warm round of applause for that capability. It wasn’t simple to come by. You’d think it should be. But, we really think we’ve finished things off this time around, and we’re very pleased about that and very proud.
All right, how was that one? (Cheers and applause.)
Best of all, I’m here to announce that as of today, as of the last few minutes, we have made available the public beta of Office 2010, SharePoint 2010, Project 2010, and Visio 2010. It is now available on the Web. I hope that you will all download it. We can all give you – you know what I’d like you to do, we’ve got a lot of the development team that are watching this be a Web cast, I’d appreciate it if you’d all give them a round of applause for all the hard work they did to make this possible. (Cheers and applause.)
I really do hope that this will signal the beginning of you guys looking at the product, figuring out what does it mean for your infrastructure, take a look at the Office Web Apps, you’ll see them available for business customers built into SharePoint. See what this means for your business.
The other thing I want to announce is that the Office Mobile Client for Windows Mobile 6.5 are also available in data as of today, and you can find them on the Windows Mobile marketplace. We really do believe in this notion of three screens having a consistent experience across all of them, and we’re delivering that through the 2010 set of products on client and server, and also through the Office Mobile Client that you can take a look at today. So, please, go to the Windows marketplace and take a look at that as well.
With that, I would like to bring Derek Burney, he’s the general Manager of SharePoint. He’s going to come online and he’s going to show us some of the cool Visual Studio integration, how you build a cool SharePoint application that takes advantage of back end business data, and some of the cool things you can do with it.
So, Derek. (Applause.)
DEREK BURNEY: Thanks, Kurt.
Good morning, everyone. So, the scenario for today’s demo is that Kurt and I are members of an amateur racecar team. And as the developer on that team, I’m on point to build a dashboard that tracks the health of the racecar. And by that, I mean the telemetry data, things like the shock absorber damper values, the brake temperature, and engine temperature, things like that. And we record this data on every race that we run. And because the races are run on tracks all around the world, we want to leverage the cloud, and so we store that telemetry data in SQL Azure. Also, because of the incredible out of the box capabilities of SharePoint, document libraries, enterprise content management, wikis, and blogs, and workflow, and things like that, I’ve decided to use SharePoint as the base for this dashboard.
So, with that context in mind, I’m going to show you three things. I’m going to show you the incredible integration between SharePoint and Visual Studio 2010. I’m going to show you how you can bring external data from backend systems like SQL and SAP and SQL Azure and bring that into SharePoint, and then surface it to the user in a rich interface like Silverlight, or the Office Client applications.
And then the third thing I’m going to show you is the flexible deployment models that we have so that you can run your SharePoint applications not only on premises, but you can also deploy them in the cloud, and specifically SharePoint Online.
All right, so let’s get going. Here I have the default team site out of SharePoint, and the first thing I want to do is actually change the look and feel because I want this to look a little bit more like a racecar site. And because it’s a .NET application, I can change the master page. But what I’ve done here instead is just swap out CSS. So I apply a different CSS file and I get a completely different look, and the NAV is hidden, and so on.
Now, another thing that you have in SharePoint by default is something called an announcements list. And in this case, it’s available for our team members to publish whatever announcements that come their way. And what I want to do is customize that experience. I want to intercept those announcements, and make some changes to it. And so for that I’m going to fire up Visual Studio.
Here’s Visual Studio, I’m going to click on new projects, and right away what you see is a huge difference between the last version. There’s just an incredible array of project template types that you can do for SharePoint starting with an empty SharePoint project itself, but then I can do Visual Web Parts, and work different types of workflows, list definitions, come all the way down, site definitions, more workflows, even the ability to import a SharePoint solution package.
And what that is, is you can think of it like a zip file that takes all the elements of SharePoint, you know, the code, and the libraries, and whatever else it is that you have in SharePoint, and it packages it into one file that you can then use to deploy elsewhere. So now, with Visual Studio, I can actually import that package and start the party on that SharePoint site directly, and then save it and deploy it again if I want to.
All right. So, for this particular demo, though, what I want to do, remember I was talking about the announcements list. I actually want to create an event receiver because SharePoint sends out events based on whatever the user happens to do, and I’m going to trap the one where they create a new announcement. Before I do that, though, I want to point out this little check box at the bottom. It says, add to source control. That’s right, SharePoint is now very much part of the application lifecycle management system in Visual Studio, so it’s really easy for me to take my SharePoint code and now add it into source control. (Applause.) Yes, I thought you might like this one.
All right. When I hit OK, I’m presented with a couple of options. What local site do you want to use for debugging? As many of you SharePoint developers know, you need to have Visual Studio running on the same box as SharePoint. And heretofore that meant that you needed to have Windows Server running. Well, I’m happy to say that for SharePoint 2010, for developers we’ve enabled SharePoint to run on client operating systems, so you can now do your development in Vista and in Win7. (Applause.)
Also new is something called a Sandbox Solution. This is where the code is actually run in an isolated process where we control security and performance. And in that way the IT folks are much more comfortable allowing these solutions to be deployed in their environment, and as it happens here for Sandbox Solutions, I don’t even need to be a box administrator to be able to deploy that solution.
All right. So, I’m going to hit Next now. And what’s happening is Visual Studio is now talking to the SharePoint site that I picked, and it’s getting all of the information about SharePoint and bringing it into the environment, which makes it much easier for me to create these projects.
So, the type of event receiver that I want is a list item event, because the announcement is a list, of course. And when I click on this, you can see these are all of the different artifacts in SharePoint that are actually capable of sending events. So, the one I pick is the announcement. And there are a variety of event types. The one that I’m interested in is the first one called, an item is being added. And why that is, is because I want to trap this event before the item actually gets added, so that I can then easily make whatever changes I want.
Now, there’s a lot of magic happening as soon as I hit that finish button, because what Visual Studio is doing is it’s creating all of the support files that I used to have to do by hand, like Elements.xml, and Features.xml, and manifest, and things like that. Plus, it’s opened on the page where I’m going to actually start writing code, and it’s added all of the boilerplate stuff that I no longer have to do by hand.
So, I’m just going to scroll down and right here is the method, the item adding method, I’m going to just write some code. Then as I type we should see that even without me having to do anything the Intellisense is already set up. And the code that I want to write is going to take whatever the user put as the title, and I’m going to change it to put the title that I want.
OK, this next part, for you SharePoint developers, this will slay you: F9, breakpoint; F5, no hands. What’s happening is, it’s all being done automatically. Yes, keep clapping. This is amazing. (Applause.) For the SharePoint developers you know that ordinarily what you have to do is about 15 manual steps. You built your solution, you had to add it into SharePoint, then you had to deploy it, you had to play around with the GAC, you had to fool around with a bunch of other things, then you had to find the right W3, WP process to attach to so that you could do your debugging. All of those steps you had to do by hand, and now I just have to use my magic finger and press F5. Phenomenal. (Applause.)
Now, we should probably hold that for a second, because we want to make sure that my code actually works, right? So, I’m going to add an announcement now. It doesn’t really matter what I put as the title, because I’ve written the code that will overwrite that. So, when I save this announcement what’s going to happen is that gets put into the SharePoint environment, and that’s going to send the event that I was trapping. So, the debugger should open, and there you go. I’m right at my breakpoint that I set. (Applause.)
So, there I just hit F10 to step through, and then F5 to continue, and there you go. There’s the announcement with VS Rocks sitting in there. It really doesn’t get better than this, folks. Actually, that’s not true. I’m nowhere near done. It gets way better, let me show you. First I’ll get rid of this guy.
So, I talked about the telemetry data, right, and I talked about how we’ve got the telemetry data in Azure, and I want to bring it into SharePoint, and then I want to put that in a Silverlight application so that we can use the really dynamic nature of Silverlight to present it to the user in a meaningful way.
So, when you build a BCS module – and you heard from Kurt actually that the Business Connectivity Services is now not just read only, but you can write back data to these back-end systems. I don’t know if you caught onto that, but that’s an impressive change. That means that you developers can now blow the doors off of whatever you thought you could build before, and you can write really interactive applications in SharePoint that talk to these systems. The way you do that is you just implement the CRUD operations. It’s pretty straightforward actually.
For the purposes of this demo though I’m only going to read the data from SQL Azure. So, we can see there are a couple of read methods that I need to implement.
The first one, and I’m just going to leverage one of the VS powers of adding snippets, so I don’t have to type this paragraph of code in front of you. But what this is doing is it’s using LINQ to get the data from Azure and bringing it into the SharePoint external content type.
And then over here another snippet; what this one does is it takes the data that’s now in SharePoint, and then pushes it to the Silverlight application.
And magic finger on F5 again – now, by the way, when I say magic finger, that’s not really true. The magic is actually being done by Visual Studio. It turns out that all of your fingers will work just as well on F5 as mine. Visual Studio is doing all of the work.
Now, this particular application came up super fast, but it’s a very complicated application, because it has a Silverlight part, there’s the Silverlight application. Also SharePoint out of the box has a Silverlight Web part, which allows you to in SharePoint connect to any XAP, any XAP file that you have, and it will render it in SharePoint.
What I’ve done in this application though is that I’ve created a custom Web part, and I invite you guys to do the same thing where you create the custom Web part that’s automatically associated to that XAP file. So, all you have to do then when you go to the page is insert that Web part and it already takes care of the connections to Silverlight.
So, VS again has done all the magic of making sure that the XAP file goes to the right place, that my event receiver goes to the right place, and all of that, and I’m sitting here in this window. So, what I’m going to do is split the page into edit mode, and then what you’ll see is the ribbon coming up, which is a new feature in SharePoint 2010. I’m going to insert – you might be surprised – a Web part. And here in this in this custom category I have the custom Web part that I was talking about, and this is what Visual Studio had done is already put it in the right spot.
So, I’m going to go ahead and add that to the page, and once it’s done that, I have to save the page in order for SharePoint to actually see that it’s there. So, I’ll go ahead and save the page. And then what you’ll see is the Silverlight application that I built running in SharePoint.
So, there it is, there’s our cool little race car application. Now, you can see that we’re leveraging the capabilities of the dynamic nature of Silverlight here, and I can do all kinds of views on the car. But I want to look in this particular case at the shock absorber, damper values.
So, I’m going to drill in and click on the damper, click on telemetry data, and then what you’ll see is as I click on the different sections of the track, the telemetry data shows up down there.
So, when I look at it in this view, I see that the dampers are actually behaving a little bit funny in that straightaway, so we’re going to have to as a team collaborate and figure out what to do with this particular thing.
But this gives you an idea of the richness of Silverlight working on SharePoint.
Now, it’s one thing to have a great interface like Silverlight running on SharePoint. What I would really like to do is – oh, actually I just killed the – I’m going to have to open a different project here. Actually I don’t. It’s right here. We’re good to go. So, I got confused there for a second.
What I want to do though is take that Silverlight application, and now let’s say that we want to actually run some analysis on the data. So, we want to be able to do analytics, maybe draft a report, do some pivot table. So, what I need to do is bring that data now into the Office client applications, and in particular Excel.
So, the way I go about doing that is I do three things. I want to take the Excel add-in environment, and I want to add a button to the Excel ribbon. Then I want to add some code to that button that tells SharePoint to go get the data, and then I want to take the data and push it into Excel.
So, what you’re looking at right now is the ribbon code, very straightforward to add a button to the ribbon, and then here’s this method, add data.
So, when I go here, now I’m in the add data part, I want to add some code. Now, what this is doing is it’s using the SharePoint client-side object model to get the data from SharePoint and bring it in – or get the data from SQL Azure and bring it into my world. And then when I come down here, see, what it’s doing is, it’s issuing a query to SharePoint and bringing the data in.
And then just down here I’m going to add just this little bit of code that takes that data and pushes it into Excel. It’s using the Excel client object model as well now. So, you can see, for instance, active sheet range. So, it’s going to push that data.
Now what I’m going to do is quickly build this, and then we’ll go back to our SharePoint site, and reload the page where our Silverlight application is.
On that page we have a couple of different entities, and in particular one of the SharePoint Web parts, which is the document library. Here I have an Excel spreadsheet. So, I’m going to open that, and put it in edit mode, because we want to put some data in it.
And what’s going to happen now is Excel is going to fire up with that new ribbon that we put in, so that it can run the code.
So, here you see this custom Excel application, and here’s my new ribbon button, and when I click on this, it’s going to call SharePoint, which will then turn around and call Azure to get the data, bringing it into SharePoint, and then it will take that data and using the Excel object model it’s going to push the data into the spreadsheet, as you can see here. Let me zoom in so you can get a better look at this guy.
So, this is leveraging the new capabilities of Excel like Sparklines and so on. (Applause.) Thank you.
One of the important things I want you to take note here is that in this case the code wasn’t just applying some cosmetic change to the data. It wasn’t just like some little script. It was actually generating the data for the spreadsheet. And you can imagine combining this with using the Open XML file format and developing and creating really rich client applications with data that’s coming in from a variety of sources.
All right, the last thing I want to show you now is the deployment options that we have.
So, I’ll come back to my site, and this one is modeling something like SharePoint Online. It isn’t, but you can assume for the purposes of today that that’s what it is. It’s a different site.
And what I can do is go into my site settings page, into the solution gallery. And remember at the beginning of this demo I talked about the solution package, this thing that packages up all of the elements of SharePoint. Well, I can take that WFP and I can simply upload it into a different site. And I happen to have a convenient WFP that’s sitting on my desktop.
And when I upload that, then we can activate it, and it basically turns it all on. We’ve made it easy to activate, because right in upload process we can just hit activate here.
What it will do is upload the solution, and it’s already there. You can see now that the status is activated. So, it’s taken all of the elements of that SharePoint application, like the XAP file and the event receiver and all of that stuff, and put it in the right place.
So, now all I need to do is go back to my main page. I want to add a new page, so I can put that part on it. It doesn’t matter what the page is called. And now I’m going to insert this custom Web part. And again, as before, once the part comes in, I just have to save the page. And now you see that similar Silverlight application on the telemetry modeling thing right here in this new page. So, that’s how easy it is to deploy out onto the cloud.
Now, there’s one aspect of this application that I didn’t show you, and I’m going to show it to you now, because it’s really cool, leverages some of the things that we heard from Scott earlier.
So, again I’m going to look at the telemetry data. You’ve seen this part before. But now we actually had a camera sitting on the front of the race car as the race was running. So, I can launch the driver’s view, and what’s going to happen is as the video plays, we’re going to see the telemetry data showing up in real time.
Plus I can click on this track, and it will advance the video and keep everything in synch, so I can go wherever I want and play back all of these things.
All right, so what did I show you? I showed you the incredible capabilities when you mix SharePoint and Visual Studio 2010. I showed you bringing in external data from the cloud, and pushing it into SharePoint and then rendering it in a really cool way with Silverlight and also with the rich client applications, in particular with Excel. And I showed you how easy it is to take this solution and deploy it online. Thanks. (Applause.)
KURT DELBENE: Well done.
So, what did you think? It’s a pretty different world in terms of the integration that we’ve done both with back-end business systems, the great experience that you have in Visual Studio, the ability to integrate Silverlight, the ability to do client-side programming, either within the applications themselves or using the object model and Silverlight on top of it; a very, very rich set of application services, again just going to beta now. I hope you’ll spend some time looking at it, downloading it, and giving us feedback, telling us what you think.
I’ve got a couple other things to talk about today. We’ve had a relationship with SAP for some time now, working together on a project called Duet. None of this stuff works very well unless you can connect in a rich way to data that really matters in the organization. The primary piece of data that people care about, if there is one to talk about, is the SAP data. It’s kind of for processes in the modern organization, they’ve done what we’ve done for information workers in terms of the ability to automate those processes, and really have people have control over that data that they run their organization by.
What people want and what they’ve told us is they want the ability to integrate into the user experience the work that they do in Office documents, in collaboration sites, et cetera, with that SAP data.
The next step in our journey together with SAP is called Duet Enterprise for Microsoft SharePoint and for SAP, and this really takes the capabilities that are in the SAP back-end, and delivers them through the Business Connectivity Services into SharePoint. It delivers to you guys a set of building blocks upon which you can build your solutions, coupled with a set of out of the box templates and out of the box experiences that attack some of the key demands that customers have, both in terms of on SharePoint and on the client as well.
As I mentioned, BCS is a holistic solution that looks at what’s going on in the client, as well as the server, and we’re delivering solutions in close partnership with SAP that’s both, as I said, a solution for you guys to build applications on top of, and a set of out of the box experiences as well.
What we see this hearkening is a new wave of productivity gains for users, a very intuitive experience for them, and just unlocking scenarios that were impossible before. Again just think about the power of getting all that collaboration data and that SAP data into a single experience on the desktop and in the cloud, and on servers as well.
We’re announcing this, and this will be available to users in the second half of next year; so very, very excited about that, and want to thank SAP for their close partnership with us.
Finally, we’re also announcing the Outlook Social Connector. We found that people spend a ton of their time in e-mail. They respond or author something like 93 e-mails a day, 1,800 e-mails are processed over a month. Tons and tons of time is spent in Outlook.
The question is, how do you bring your social connections into that experience?
So, what we’ve done is created a connector that allows you, as you click on items, to see everything going on about that particular person, the e-mails that you got with that person, the meetings that you’ve had with that person, the activity going on in Windows Live, the activity that’s going on in SharePoint.
So, what we’ve developed here is an out of the box experience that works with a set of partners and works with our own properties as well, as I said, SharePoint and Office Live. We’re also announcing that LinkedIn will have a connector available or a provider for our connector in the beginning part of next year. So, you click on that, and you’ll see all the activity that’s going on in your social network, you’ll see that directly in context within Outlook.
This is really an opportunity, along with the investments we’ve made in social networking in SharePoint, to bring social networking into the enterprise and make it relevant for customers there.
So, the final thing we’re announcing is that this is a general SDK. So, as you think about applications that you have in the organization that deal with people doing things, it’s time to think about how do you want to integrate that experience in context into Outlook and into Office.
So, with that, I’d like to bring Derek back onstage for a real quick demo of the Outlook Social Connector. Derek?
DEREK BURNEY: All right. (Applause.)
So, here we’ve got Outlook open. And if I know Kurt, and I actually know him very well, he’s already heard the earlier demo and looked at that damper data and thought that something needed to be done. So, he’s already on the case. And I can see here that there’s an e-mail where he’s already discussing this.
Now, if I look down here towards the lower right corner, I can look at the social connector pane, and in this mail tab I’m seeing all of the e-mails that Kurt has sent me. It’s convenient to have all of those e-mails in one location so I don’t have to look at them wherever they are and spread out throughout my inbox.
I also have this attachment panel, which is great, because now all of the attachments are handy in one place as well. Ordinarily when you’re going through your mail, you’ve got 20 mails from somebody, but only a couple of them have attachments. So, here they’re right there handy.
And in a similar vein, same with the meetings. You can search your calendar if you want for specific meetings, but right here just in this one little view I see all of the meetings that I have specifically with Kurt. So, it’s just handy in one place.
KURT DELBENE: Very cool.
DEREK BURNEY: If I go to the main page here, now I can see a lot of the activity that Kurt is doing. And look at that, there’s the LinkedIn icon, and that’s because, as you mentioned, LinkedIn is the first company to actually build the provider for the Outlook Social Connector. But because of the open SDK, really you guys can go and build your own as well. It’s super, super easy.
Now, I can tell by looking at this that Kurt has asked a question in LinkedIn, what’s the latest trend and buzz in shocks or dampers for auto racing. I can also click on his name, and what it will do is bring me directly to his profile page on LinkedIn, and there I can do some more research if I want to.
But the reality is if you’re not spending all your day living inside SharePoint, you’re probably in Outlook. And so it’s great to have all of this functionality and all of this visibility right there in front of you.
KURT DELBENE: Very nice. Thank you, Derek. (Applause.)
So, think about the potential there: 500 million Office users, the most popular client for e-mail and for calendaring in the world. It’s not about replacing the experience that exists, but rather augmenting it, and having that experience light up within Outlook, which people use so intensively day to day. So, we’re very, very excited about this. Again for the providers there will be shipping or our partners will be shipping, but also the extensibility opportunity for you.
So, I’d like to wrap up, really just kind of highlight some of the key things that we’d like to see you do. As I mentioned before, the beta is available today. We’d love for you to download, kick the tires, understand the implications for you business. Download the new version of Visual Studio. Enjoy that integration with SharePoint, and enjoy the integration with Office development. Lots more information on Channel 9 and MSDN, and start coding.
The other thing is I’d love to kind of now that we’re wrapping up at least the keynotes in terms of this conference, I’d like to invite you to the next one, to the MIX conference where we will be talking about Windows Mobile, kind of talk about Windows Mobile 7 and where that’s heading, where that new advancement is, talk again about Silverlight, and just a whole raft of additional things. This is the next step on the journey of us talking to you about all the cool stuff that’s going on in Microsoft that’s relevant to all of you as developers.
So, just wanted to take this first opportunity to invite you. It’s March 15th through 17th. Nobody likes to go to Vegas, I’m sure, but if you can bring yourself to go to Vegas, this is an opportunity to go back to that place that you deplore. So, please join us at MIX.
Enjoy the rest of the show. I hope you’ll get a lot out of it. And we truly look forward to more work with you on Office and SharePoint and the other Office family of products. Thank you. (Applause.)
END