June 03, 2005

Bill Gates on Windows Mobile 5.0 and Self-Service Kiosk Application

bill-gates-02.jpg Bill Gates speaking at the Mobile and Embedded Conference talks about their new embedded operating system and goes thru making a self-service kiosk application with Visual Studio.

It's notable that Mr. Gates is using kiosks as example. In his example he builds it for custom ring tones and SMS tones and does a C# application. Its interesting to see the linkage to phones and photos and media in general that comes to the surface.

From CSDN.Net

bill-gates-02.jpg BILL GATES: Good morning and welcome to our mobile and embedded conference. We're here to talk about the opportunity to do great software. We're here to talk about a big advance in the mobile platform and our embedded operating system that, combined with new tools, will let you build applications that weren't possible before.

The whole mobile space is incredibly hot. We're moving well beyond just doing voice calls and SMS messages to a whole range of applications that will take media, location, productivity information and present it in new and rich ways.

Work Is Changing

And it fits in really to the whole trend that the way we think about information availability, the way we think about communicating and the way we think about how we get our work done is all changing. For Microsoft, of course, we think about this in terms of the magic of software, the empowerment that started with the personal computer, got expanded with the Internet and graphical interface, and now is being taken to new levels with these wireless networks and the ever-smaller powerful devices that are connected to them.

We've gone from having this boundary between work that you just sit at your desk and do or when you're at home you're sitting there with a desktop computer to now where wherever you are, whether you're taking a portable computer or a mobile phone, you can be in touch, you can get the information that you care about.

And so it's a very radical shift that's taking place, a lot of expectation about what people can get into this device. And it's because of that vision of software working on all these devices, putting the user at the center, taking all the things you're interested and only having to express those things once and it shows up on the different PCs you use, shows up on the different phones you use, because of that software-centric vision that we decided we needed to be part of this mobile space.

So we took Windows CE and built around that. Now, we provide Windows CE and Embedded Windows XP to an unbelievable range of applications from kiosks, medical devices to use in set-top boxes to increasing use in the car and that's another area of special interest to us because we see explosive improvements in what can be done with the user interface there. So embedded Windows in both forms, CE and XP, is used very, very broadly.

The scenario of greatest focus for us, of course, has been this mobile scenario, building a whole stack of built-in applications and tools and getting mobile developers to take that and build a credible set of applications.

Collaboration Vision

As you use these different devices, we think about the user and we think about how you collaborate with other users. For example, the idea of not fragmenting communications, over time even the idea of the phone number will be fairly obsolete. You will just think of using that e-mail address for all the things you do, whether it's SMS, instant messaging, dialing, starting a videoconference, and in some cases you'll simply use a picture-driven interface where you don't need a name at all, you just pick the picture and then pick exactly how you want to communicate.

And so communications are coming together across these different platforms, even to the point where you ought to be able to walk in with a phone conversation taking place and transfer that onto, say, the PC and have a full screen sharing experience without rebuilding that connection. Having your contacts shared, your group name shared, not thinking of buddy lists as being separate from what you're doing with e-mail, that integration can simplify communications.

We believe in collaboration, letting you take things like photos, the business data and share that in what we call the SharePoint facility. That information you should be able to connect to from a mobile phone and be notified of things that are important, things that you care about.

Many of these processes involve a lot of workflow and making it easy to specify those things so that you can see where the work is and notify people of what needs to go on, no matter what device they're using.

Access to information is very important, bringing the power of search onto the mobile platform and yet recognizing that with that small screen it's very different and understanding the context so that you don't have to specify as much to get exactly the search that you want.

And so these communications processes, the collaboration, the richness of the information is just getting stronger and stronger.

In the mobile space the growth is pretty phenomenal. The idea of wireless e-mail, that you'll just take for granted, this will be commonsense. Every one of these devices from the least expensive to the most powerful will have that.

The phones will be very powerful in their hardware. In fact, Microsoft made a big, big bet on this. We bet that 32-bit based platforms would become the standard and so we built for that from the very beginning.

Market Opportunity

Of course, not only the operating systems and the tools but the applications will be exploding in sales. There are many categories here, taking traditional applications on the desktop and having versions that run on the mobile phone, taking games and thinking through what the mobile opportunity is there, there's a lot going on there. And then helping the operators by having the richness of this software increase the amount of connection time and create a financial opportunity for them as they participate in promoting and licensing this software onto these phones.

So software is driving the future of these devices and that for us is a great, great opportunity.

Global Impact

Three years ago Microsoft was investing in this space but we really had almost no phones built on our software. We did some work in the PDA space and we built off of that. Two years ago we had our first design win, it was Orange in Europe took our very first Smart Phone. Over these last two years we've had explosive growth. We have 40 different device makers now and they're providing devices to 68 different mobile operators, operating in 48 different countries; so a real explosion of activity and partnership.

Over the last couple of quarters we've had over a million devices ship in Europe alone, so great progress there including the phone and PDA space. The PDA space actually we're the leader in that, we see that as a complement to the phone space. Obviously the phone space is even larger and a growing share there as well.

Speaking to the work you do, we now have over 18,000 applications and we just want to make it easier and easier to build the applications. That's a big theme of not only today's event but the whole work we did in this version of the platform.

In the embedded space we get stronger and stronger. We've made our programs there very flexible and we always have new capabilities, including adding to the shared source capability where we've had over 250,000 people go up to get that shared source and be able to start work in a very simple and direct way.

And so every year we're shipping new versions of the software. We've got version 3 of the Windows CE base that's out there and constant improvement taking place there.

Beijing Mobile

In this mobile space there's new types of things that wouldn't have been possible before. Let me give just two examples of this. One is in China, a partnership with China Mobile. In Beijing the city has a lot of people who go around and inspect things and China Mobile decided that by giving those people the ability to use a software application where you could report, give the location, send in the picture and then have the work be dispensed out to other city employees, that they could greatly simplify the process and be far more responsive.

This is a great application for the regional operator for China Mobile, Beijing Mobile because it drove up the number of phones being used, number of customers and the amount of activity. And yet it was put together, the application, in just four months. So it's a great example where location information, photo information and an application can completely change the work process.

Office Depot

Another example of this where it was the embedded Windows CE building a very special device for use in a warehouse setting is how this works with Office Depot. Office Depot is obviously a gigantic business with over 14 billion in sales and they wanted to have the inventory management in their warehouses done with higher quality, less training involved, more visibility of what was going on and so they built a special device with docking capability, built on Windows CE just for this particular need. And the fact that the tools made it easy to select exactly the software module that they wanted, build on the richness of Windows CE made that a great example of why we provide the embedded platform and why we've been so big on the developer tools that go with that.

Windows Mobile 5.0

So what we're talking about here is new opportunities and today's milestone is very important for this. It's the introduction of Windows Mobile 5.0. We've been hard at work on this for quite some time. There are many things we're excited about with this release. I'd say the work we've done on quality and reliability we'd put at the top of the list there, whether it's the radio stack or the development tools that let you look at what you're doing on top of the platform and make sure the applications will be totally secure, there's a lot that goes into the platform that just makes this the best for mobile applications.

If we look at the industry there is a lot going on. The mobile space in particular has more competition, a desire to move up and get this data side to carry its weight and not just rely totally on the voice side there and that means software comes in in a bigger way.

There's a need for standards and you've seen us announce over the last six months a number of new relationships, standards around e-mail, standards around media. Those are aimed at bringing those scenarios and getting those to critical mass. It should be commonsense that for something like rich schedule management you just look at your phone, see what's going on, any changes you make there so when you go back to your PC it's all just put together.

By driving these new scenarios we can make sure that people upgrade to new mobile phones and they're connecting up to the network more and more.

We do get the incredible benefits that the chips are more powerful. If we didn't have that, many of these applications wouldn't be possible. As we look forward we'll be doing even more with this processing power. Windows Mobile 5.0 brings in some speech recognition capabilities and we see that for small command sets as being really ready today, something that is very powerful.

As we move forward and get more CPU power, more software advance, the size of that vocabulary will just get larger and larger and so that will become a more important part of the interaction that you have with the device.

The power of these processors is letting us do not only high quality music but now bringing in video clips. The challenge there is to make sure that the rights management is done easily and so that as you work across devices you're not having to buy the music multiple times, you're not having to build your playlist up multiple times and if you listen to a song on the phone, you like what you hear, you can take your ratings and have those go back and be shared with the other devices that you work with.

And so in every one of these areas there is something that we need to do with software. And so this industry has got to seize the opportunity and Windows Mobile 5.0, whether it's in productivity, whether it's in customization capabilities or in the tools for rich application development, we feel that all the different firsts that we're delivering with this platform really make a deep platform to address the opportunities that are coming out there.

Well, let me talk specifically about some of those features. We're very keen on productivity. After all, Microsoft is the company that drives Microsoft Office. Microsoft Office is used really very pervasively, on a global basis on every desktop, on virtually every portable machine out there, and that's a product that we constantly innovate in. Things like workflow, rights management, advanced scheduling, easy sharing, business intelligence, those are areas where Office has gotten richer and will in the next big release that's coming sometime next year.

We wanted to make sure our mobile platforms connected up to all of that richness, so, for example, being able to edit Excel information and yet have it go back up to the PC, edit Word documents, the ability to have PowerPoint support on the mobile device so you can preview slides and do simple things with your PowerPoint presentation there; the ability to connect up to the e-mail capabilities that we have in MSN and Hotmail capabilities now with what we call Pocket MSN is being built down into this device. So that's an area of productivity and one that we're very, very strong on.

Outlook is the centerpiece of that and, in fact, we'll show you some neat things with Outlook connecting up, for example, the ability to take a photo on the phone, associate that with a contact and then not just on the phone but also after you've synched on the PC as well, having that photo there for a very visual interface.

I mentioned media as another explosive area. Of course, there will be dedicated music devices that you carry around but also a very high percentage of the media devices will be your phones. Phones are getting both more solid state storage and some of the newer phones like the Samsung I300 device is getting actually a very small hard disk built-in. And so the idea of taking a few playlists and having those synch onto the phone or with the hard disk having your entire collection there, that's now becoming very practical. And so we wanted to make sure that the formats, the rights management, the playlists, all of those things work in a seamless fashion between the phone platform and the PC platform.

Another new area, of course, is photos. In fact, by many measures phones will be the place where the most photos are taking and these photos are very easy to share out with each other. We need to make sure that the camera is very high quality and photo management gets easy, that you have access to those photos in the application, so a lot done, particularly in the user interface, to take that scenario and drive it forward.

So music, video, photos, e-mail, Office documents, in every one of those areas, Windows Mobile 5.0 is a very big advance.

Well, to understand why we're so excited about this, of course, the easiest way is to see it in action. And so to give you a quick glimpse of some of these new features I'd like to ask Ford Davidson , who's a product manager for Windows Mobile, to come up and give us a quick look.

FORD DAVIDSON: Great, thanks, Bill. (Applause.)

BILL GATES: Morning, Ford.

FORD DAVIDSON: Good morning. We're excited to be here with you today to introduce Windows Mobile 5.0. Throughout the course of the demonstrations today you'll see the cool new functionality as well as new tools and APIs that bring this software to life.

Windows Mobile is about three things: improved productivity, integrated multimedia experiences and more options for partners to differentiate and for developers to innovate.

So let's dive into productivity. And I thought we'd begin by highlighting developer productivity through an ISV application that takes advantage of the new APIs in Windows Mobile 5.0.

For the past few days I've been using an application called Rundo and it's part of a line of sports applications from a company called Sentient based in the U.K. Now, Rundo is a great application for running and here's how it works. Using a Bluetooth GPS antenna and taking advantage of the new multiflex GPS API in Windows Mobile 5.0, Rundo can share GPS functionality with other applications on the device to pull in key information that's important to me when I'm on a run, like my speed, distance, number of calories I've burned, even my altitude, and it stores this information in the activity log.

So let's go ahead and take a look at the activity log from my run here in Vegas.

So in addition to my lap time, notice it also stores photos that I took during my run. Now, this is this morning on the strip and Elvis at 7:30. But what's great about this is that Sentient is taking advantage of the new camera capture API to bring in camera-taking functionality right into this application.

Now, what's sweet about this is that it works consistently across devices with integrated cameras and that's great.

But one of the coolest things about the Sentient application is it's built entirely using managed code. Sentient was able to add new functionality by taking advantage of the new APIs as well as use the new developer tools and these are just some of the great things that we're providing for developers to be more productive with Windows Mobile 5.0.

But what about productivity for business customers? We've done a lot of work on improving the navigation experience with the addition of soft keys and improved support for devices with integrated keyboards. Now, I've got the HTC Universal. This is the first UMCS Windows Mobile based device and we're going to go ahead and take a look at our new Outlook mobile messaging experience.

Now, in addition to our rich icon support for e-mail attachments and meeting requests, just like Outlook on the desktop, we've added high- and low-priority e-mail indicators to help business customers quickly identify important messages to address when they're on the go.

Now, Bill has sent me a high-priority e-mail, so let's go ahead and open this message. And in addition to our new look and feel we have an outstanding e-mail attachment story. In Word Mobile we've added support for viewing tables, lists and images from documents created on the PC. In Excel Mobile we're allowing you to view and create charts on the go. And based on customer demand we've added PowerPoint Mobile so that business customers can review and refer their presentations when they're out of the office. It supports full animation.

Now, in addition to our great e-mail attachment story we've also done a lot of work around making information actionable. Watch this. Notice that Bill's name is outlined. With one click it launches our totally redesigned Outlook Mobile Contacts application and in addition to the great user interface, notice the different communication messages are mapped to soft keys for faster access.

I'm going to go ahead and edit Bill's contacts, and I'm going to take advantage of the new picture taker API in Windows Mobile 5.0 that you can integrate in your applications with just a few lines of code.

So I'm going to assign a photo to Bill's contacts, and that's going to show up in the contacts in the phone experience and even the next time I open a message from Bill right there in our message header. And that highlights the great integration between our contacts, phone and e-mail applications but it extends back to the PC as well.

So let me switch over to Outlook on my desktop and I'm going to go ahead and open Bill's contacts. And what you notice is the photo that we assigned to Bill on our device has synchronized through Active Synch and is now available here on our PC.

So those are just some of the exciting new things we've done around productivity and new APIs but in Windows Mobile 5.0 we're delivering on the multimedia front as well.

So I'm going to switch now to Windows Media Player 10 on my desktop and here's where I keep my music, pictures, video, even podcasts. And what's great about this experience is I can take it with me on my Windows Mobile based device.

Now, we've done some exciting things in the Windows Mobile 5.0 platform to enable partners like Samsung to build the I300. Now, this device is sweet. It has a 3-gig integrated hard drive. It's sleek and it has Windows Media Player 10 Mobile so that I can transfer music from my PC, including songs I've downloaded from sites like MSN, and take with me on the go.

So let's take a look at this experience.

I've got about a thousand songs on this device and Samsung's added a great scroll wheel to help with navigation. But I'm here today to show you that there's an even better way to search for music on this device. Check this out. With a few presses of the keypad I can filter through all 1,000 songs to the song that I'm looking for in a matter of seconds. Now, that's cool.

Let's go ahead and fire up this song from the Wallflowers, and in addition to our great synchronization support for playlists and album art, we also support star ratings to deliver a more familiar Windows Media experience for customers on the go.

But we're also delivering for developers around media. So let's switch now to the Rundo application that we started with.

What's great about this is that Sentient has taken advantage of the new state notification broker API to actually pull in the track that's playing so within the application I can not only see how fast I'm going and how many calories I've burned but I can also see what song is playing right from within the application. And that really highlights our great multimedia story for both consumers and for developers.

We've given you a preview of the exciting things we've done in Windows Mobile 5.0 around productivity and multimedia and you'll see more throughout the demonstrations today around the work we've done to provide a more flexible platform for partners to differentiate and for our developers to innovate.

Thank you. (Applause.)

BILL GATES: I mentioned that we're working with 40 different device makers and 68 different mobile operators. In meeting the special requirements that the hardware makers have and the operators have has been something we've learned a lot about in these last two years. We are very flexible to both of those types of companies. We want to see an incredible variety of hardware and we want the operators to be able to meet their business needs, whether it's branding, promoting special applications, customizing in a particular way.

Innovation and Choice

Now, in order to achieve this in the past we've had to do a lot of work. There are many things that had to come back to Microsoft, there were places where the user interface just didn't have that kind of flexibility. So we've put a lot of effort in so that whether it's the hardware side or the user interface Windows Mobile 5.0 is incredibly flexible.

For example, on the hardware side we've got rich soft key and keyboard support that means that you just put a driver in and the software adapts to that. We've got the 3G support. In fact, we support all the different networks now, so if people want to have Wi-Fi support or any new network that comes along, building that in becomes very simple. And, in fact, we do expect to see a number of devices supporting multiple wireless networks and able to give the users the best of the different options there because of the richness of the software.

We also now support landscape ? and keyboard type support. This has been important for the Smart Phone because we're really seeing now everything that was good about the PDA is moving into the phone and it's really a device with both of those things.

The extensibility of the dialing API and the ability to support hard disks and persist the changes that you make, support USB 2.0, all of those in that rich hardware realm.

For the operators the ability to do easy updates, what we call device image updates, which means that it's just like downloading an application, it's not special, it's not going back and re-flash type thing that it was before, the operating system is a lot more flexible.

With the depth of APIs, with the user interface flexibility you'll also see a lot more branding coming in and yet done in such a way that the applications are still completely compatible. Compatibility is always a big thing for Microsoft. It's something we've put an immense amount of energy in and here with Windows Mobile 5.0 we have backwards compatibility to the applications that people have had in the past.

That is a difference between what we've done and what some of our competitors have done, and part of that has to do with anticipating the richness that would come along, the 32-bit richness, the memory mapping richness and making sure the applications would be able to make that transition.

So flexibility and compatibility are things that are strength of this platform, whether it's on the phone or in the embedded space in general.

This is another area where I think seeing is believing and so let me ask Mike Hall, one of our technical product managers, to come up and give us a sense on what this innovative differentiation can look like. Welcome, Mike. (Applause.)

MIKE HALL: Thanks, Bill.

Hey, everybody.

So one of the things that we've seen is that operators and developers need to find a way to differentiate on the Windows Mobile platform through customization and this can either be through ring tones, themes, applications or services and these services could be things like voice over IP, push to talk or even video telephony.

Now, one way that you might see this happening if you've just purchased your new Windows Mobile 5.0 device and you want to get this themed or updated with new applications or services before you leave the operator's store.

Now, perhaps one way that you can make this happen is through a kiosk that is based on Windows XP Embedded. Let's take a look at how we could build such a kiosk and get these devices updated on the fly with applications, services, themes or ring tones.

Okay, so on my desktop here I'm using Visual Studio .NET 2003 to write a C# application. Now, the great thing here is that this application is just a desktop application. I can write my code, I can build my code, I can debug and test my code, all on the desktop without having to build or deploy the Windows XP Embedded operating system image.

Once my custom shell, my kiosk, is complete, I can then step into the mode of building the XP Embedded operating system. Let's have a look at those steps.

So the first tool that I'm going to look at is a tool called Component Designer and the Component Designer tool gives me the ability to set a number of different attributes for my component that I'm building here. In this case we're generating a custom component for the boot-up screen of our Windows XP Embedded device.

So first of all I can set root membership and in this case I'm saying that this component is a custom shell. I can also set the files for my components and in this case all I need is the application, C Kiosk 30XE. If I have registry data I can add that and I can also add component dependencies here. In this case I've added support for the .NET Framework 1.1.

Now, the great thing about componentizing your applications or services is that any developer can take the components that you've generated and build an embedded system around that without having to know the operating system dependencies, the files or the registry settings needed for the components you've just generated.

Once I've generated this component the next step is to move into Target Designer. And Target Designer is the tool that is used to configure and build the Windows XP Embedded operating system image.

In the center of the screen here I have my project workspace and I've already added two components in the Windows XP Embedded catalogue, which contains over 12,000 individual components. So right now I've added support for my embedded kiosk hardware, which is just a PC architecture X86 device, and I've added support for a component that I've created in Component Designer, which is called Hibernate Once and Resume Many. And this is a new feature that was added to Windows XP Embedded Service Pack 2 and we'll come back to this in just a few seconds.

To finish my design all I need to do is add my Windows XP Embedded theme kiosk components and you can see this under shells within the catalogue.

The final step under configuration will be to run an operating system dependency check and then build the target image and that would take approximately 10 minutes to complete, so we're not going to do that right now.

Instead, let's step over to our kiosk that's already running our custom shell and generate a theme and download that to our Windows Mobile device.

OK, so this is our kiosk. This is running regular PC architecture hardware, this is running on an X86 processor and this boots directly into the Windows XP Embedded kiosk application that we've just seen in Visual Studio. This is running a touch screen and, of course, this is just a standard driver that ships with Windows XP Embedded. There is no additional configuration needed to take advantage of this feature.

So I'm going to choose Pocket PC, I'm going to scroll down through the list of themes available and select Xbox and step down through the list of available Xbox themes. I am going to choose Halo 2. I think it's the obvious choice. Halo 2.

So what does this theme include? This includes not only a custom display screen for my Pocket PC device but it also includes custom ring tones and a custom SMS tone. This is great. I'm going to select next, and now, because we're using XML Web services and SMS to deploy the theme to our Windows Mobile device, I need to enter the phone number of the device that I'm using. Everybody look away for just one second: 425.214.6171 and now I hit Send. And when I hit Send this is going to deploy that custom theme to the Windows Mobile device. But, of course, using SMS and Web services this is going to take a couple of minutes to deploy.

So while that's happening, let's take a look at Hibernate Once and Resume Many, the feature that we talked about in Windows XP Embedded Service Pack 2.

It can be fairly common for devices in the office or in the home to power down unexpectedly. So at this point the kiosk is completely powered down. When I reapply power, Hibernate Once and Resume Many is going to kick in. Right now we're running through power and self test on the embedded system. Once power and self test is completed we directly resume the embedded operating system back into the custom shell that we've provided for the XP Embedded device. That really is fast boot-up for embedded systems. (Applause.)

And you can see how this might be used in retail point of sale devices or even devices that are used in the home for consumer electronics.

So right now we're ready to build and deploy another theme to another Windows Mobile device. But with Windows Mobile 5.0 Bill has already mentioned that we have a new technology, which is known as Image Update and this is a fantastic new technology for the enterprise, for developers and also for operators. In this case we could deploy the update, the theme, the application or the service directly into ROM on the Windows Mobile device. That way if the device gets powered down you don't lose any of the data, the application or any of the files that are associated with that application, and it's as easy as downloading and installing an application today.

OK, let's take a look at our Windows Mobile device and see whether our theme has arrived.

OK, so here's the custom today screen on our Windows Mobile Pocket PC and this looks sweet. You can see here that on the today screen it's not only branded and looks like Xbox and Halo 2 but we have integrated full motion video within the today screen of the Pocket PC device. And this is provided by a company called Phone Themes in the U.K.

Now, of course, the theming experience extends all the way through the device. So if we were to receive an incoming call and it looks like we're getting a call here from James, the owner of MEDC, he should know better than calling me during the keynote, and you can hear the custom ring tone playing in the background.

So I'm going to answer the call. Hey, James, I'm presenting at a keynote, I'll give you a call back in a few minutes. You can see that even the timer dialogue inside of the Pocket PC is themed to look like Xbox and Halo.

But wait, there's more. If I go to the keypad dialer you can see that even the keypad dialer has been updated to have a complete Xbox and Halo 2 look and feel.

So what have we seen during the last few minutes? We've seen that with Windows XP Embedded Service Pack 2 developers can rapidly build embedded systems based on PC architecture hardware, standard off-the-shelf device drivers, off-the-shelf applications or applications you build yourself in Visual Studio. We've also seen how operators and developers can take advantage of the new flexibility of customization in Windows Mobile 5.0.

Thanks very much. (Applause.)

Easy for Developers

BILL GATES: If you look at the history of Microsoft's successes going all the way back to the original BASIC or MS DOS, one thing they've all had in common is that we've succeeded because we reached out to developers and we provided tools and we got great applications built on the platform. MS DOS succeeded with an incredible range of applications and then came Windows where we went out to developers and said now it's time for graphical interface, let's work together and see what we can do here, and together some incredible successes came out of that.

The mobile space is no different. Although the phone will have some built-in applications like the e-mail and many of the things we've seen here, really the sky is the limit in terms of the new applications. With the location information, the bigger disks, database capability built into these phones, we're very excited to see the thousands and thousands of new things that can be built here.

Our part is, of course, to make it easier and easier to provide those tools. And, of course, we've got a rich tradition that comes to us from the work we've done in Visual Studio. So we've built our embedded and mobile development environment around Visual Studio, of course with a rich set of extensions on top of Visual Studio. Visual Studio itself is going through a major advance. This summer we'll ship Visual Studio 2005, which was codenamed "Whidbey," and we're very excited about the new things that are built in there. All of those things become available to mobile embedded developers.

We've also done a number of things with our add-on kit that are unique to those environments, for example, the new database with SQL Server 2005 Mobile Edition, greatly enhanced, a lot easier to develop against.

A lot of new designs that let you preview your applications, that ability to emulate the target environment has always been a strength, but we've had feedback on where you wanted to go even further in that and so you can test out the applications in a very rapid way.

We've had our Compact .NET Framework version 1.0 and now that's evolving to the next version, the Compact .NET Framework 2.0 that ships with that Visual Studio release. It's completely upwards compatible and, of course, it's a subset of the full .NET Framework 2.0.

We have some new language features, including the COM interop, and we have many new APIs on the device. We've talked about a number of those. There's a whole category called State Notification. This is where all the things that happen on the phone, the network coming up and going down, power being low, keyboard being attached, flipping the screen, the application gets to see all of those things and have code that can respond appropriately, for example, re-laying out the screen when that's important.

We have taken the source code we've put out for anybody to see and added new capabilities. A good example of that is we're putting in Bluetooth libraries, very requested for all the different embedded devices, not just the mobile space, and so your code for Bluetooth can go from literally hundreds or thousands of lines down to just a few, leveraging what we've got built in there.

So we're reaching developers from the beta release of Visual Studio that's out now in the add-on connection up to the final RTM. There's no need to change anything, you just upgrade to that final release to manufacturing, the final version and you're totally up and running without any change to the work that you've done today. And so a lot going on with managed code, a lot going on with the APIs, a lot going on with the way that the applications can work together.

So if you had to say is there a theme that really drove Windows Mobile 5.0, I'd say this commitment to developers would be right there at the top of the list.

Again, this is something that we want to show you it working in action because we're very proud of it and we want you to jump right on it and take advantage of it. And so to show us development let me ask Neil Enns, one of our program managers, to come out and give us a look at Visual Studio being used for embedded mobile. (Applause.)

NEIL ENNS: Thank you, Bill.

BILL GATES: Welcome, Neil.

NEIL INS: Thanks. Good morning. Today we're going to build a restaurant database application for my Smart Phone device. Believe it or not, I won some money off Ford at poker last night and so I need to go for a fancy dinner tonight to celebrate. We'll use this application to help me find that restaurant.

We'll be building the application today using Visual Basic .NET, but I want to let all of the native developers in the audience know that you can now write C++ applications for both Windows Mobile and Windows CE devices directly within Visual Studio 2005. (Applause.)

So for this application we need a database of restaurants. And I worked with my concierge last night in Visual Studio to put that database together. Let's take a look at it. New in Visual Studio 2005 is the ability to access your SQL Mobile databases directly within the IDE. You can see here that I can browse into my tables of restaurants, I can see all of the columns that I've created, I can even go in and edit the table schema. I can add columns, I can delete columns and I can even rename them or change their data types. In addition, I can go in and edit the contents of the table. I was working with my concierge last night and we were typing this information in and he loved it; super, super powerful way to get your application databases up and running.

So now that we have a database let's build some user interface around it. We need to show this information to the user. Using the data sources window I can actually go in and tell Visual Studio how I want this data to be represented in my application. I can select the data grid or a detailed view. I can even control the individual columns and say whether I want a text box, a link label or some other type of control.

For this application I'll actually use the details view since that looks great on a Smart Phone device. And as for the drag and drop, Visual Studio not only creates the UI controls but also creates a type dataset, a binding source and a table adaptor for me. All of the code is wired up to show the information to the user with no coding on my part, it's ready to go.

So Vegas is a pretty busy town and if I pick a restaurant using this app and just show up, chances are I'm not getting a table. So let's use new Windows Mobile APIs to add support for calling a restaurant to make a reservation.

I'll start by adding a call item, nice and straightforward, and then double click on it to wire up our event handler. We need to do two things in this method. We need to get the current record from the database so we know what phone number to call. Then we use the new Windows Mobile APIs to go off and place the call.

Let's add a reference to those new telephony APIs using the add reference dialog. And notice how only the smart device references show up in this view. I know that if I see an assembly in this dialogue I can use it in my smart device application.

So we'll grab telephony, we'll insert that, now we can write some code.

To start we'll get the current record and to do that I'm going to use a new Visual Studio feature called Code Snippets. We ship with over 500 VB code snippets to help developers get more code in their applications faster. When I press Tab, all the snippets show up, I can navigate to my code snippets and pick current row. Two lines are in, I'm ready to go.

Now let's make the phone call. I'll create a new phone object and then using that we'll place a phone call to the number. To get the number I used our current row and notice how IntelliSense because I'm using strongly typed datasets knows everything about my database, all the columns are there, I don't have to remember column names and database schema, any of that stuff, I just use IntelliSense, my four lines of code are in and we can place a phone call to the restaurant.

So I've got a lot on my plate. I have the keynote, I have a session tomorrow, lots of things to do. I want to make sure that I don't forget the reservation after I've made it. They're hard to get, I'd like to be reminded.

Let's take advantage of new Windows Mobile APIs for Outlook Mobile to add an appointment reminder to my calendar after the reservation is done. We'll start by adding a menu and the add reservation menu items.

Now, we need to wire that up to some UIs and I've actually started a reservation dialogue a little earlier. We need to go and add a way for the user to go and set the time of the reservation and so I'm going to use this sweet new control, very innovative in .NET Compact Framework 2.0, called the Date Time Picker; going to have to drop that right on my form and we actually have date/time available for the user to very easily enter the time of their appointment. I'll set it to time and we're done; that's our UI. Let's go and wire that up to our main application.

I'll start by double clicking on Add Reservations to get the event handler and now we need some code. And again I'll use a code snippet to create the appointments.

Now, I admit this looks like a lot of code, but it's actually very simple. We're only doing three things. The first thing we do is we get the current row from the database, just like we did with the telephone API. Then we show the dialogue to the user that we've created in that other view. Then the magic happens. Then we go and use the Outlook Mobile APIs in just six lines of code to create the appointment, populate it with a subject based on the restaurant information in our database, the location, the body, the start time, and then save it back to Outlook Mobile. That's all it takes to build an application that creates appointments.

So I don't get to Vegas very often and I'd actually like to remember my trip to this restaurant when I go. So I'm going to use the new camera-capture APIs that Ford talked about earlier to add camera support to my applications. To start let's make some room to show the picture to the user and we'll go and add our picture box control right on our form.

Now we need to wire up a menu item to take a photo. With that done, you do the very familiar event handler work to go and create a camera capture dialogue. And this camera capture dialogue snippet will actually be available for everyone here to use in their Visual Basic development as well. It's very straightforward, you create the camera capture dialogue, you set the title of it and you show it to the user. That's all it takes to drive the camera UI. The nice UI shows up, the user takes a picture and we get the filename back. So let's use that filename to populate our picture box.

We create a new bitmap and then we add the camera dialogue filename. That's it. That's all of our code to build this entire application from start to finish. Let's build it and look at it on a real device.

While that's compiling and deploying I just want to take a quick second to highlight a little bit about developer productivity with our new device emulator. This is a new ARM-based device emulator that allows you take any application from the Web that's written for Windows Mobile, install it and run it. This is last year's Mobile to Market application contest winner, Virtual Pool, running unchanged from the company's Web site directly in the new emulator. It's a super powerful way for developers to take existing applications, play with them and see how they interact with their new code.

So it looks like our deploy is finished, so let's just take a look at what we wound up with. So you can see that the complete application is running and even though we wrote no database code all the information is showing on the screen. I've actually heard from a few people that RM Seafood is a great place in Mandalay Bay to go for dinner, so let's call them to place a reservation. With the call soft key and that one API to call the phone method you get exactly the same dialer experience as users get dialing from the home screen.

Now I've called these guys about 100 times this week practicing for the keynote so we'll just hang up and pretend we made a reservation for 6:00. I'll go into add reservations, we'll see our dialogue with the sweet date/time picker and I'll go in and say that we're eating dinner at 6:00 PM.

When I say done we can actually switch back to our calendar application and see the appointment show as it's added to the Outlook Mobile database. (Applause.)

When I open the record you can actually see all the information that we've preset using the data from our restaurant database right in the Outlook appointment. We've even filled the notes field with the restaurant review so we know it's a good place to eat.

So the last piece of the puzzle is we've actually gone in and added the take a photo support. When I do take photos you'll see the camera capture API show up and since it was hard to bring the RM Seafood restaurant right here to take a photo, I have a picture that I'll take a picture of for the photo. So we'll get that set up, looks good, there we go. And notice how it's now reflected directly in our application with that single line of code to set the picture box, super easy to take advantage of.

That was a very quick tour through some of the great new features in Windows Mobile 5.0, SQL Mobile 2005 Mobile Edition running on a Smart Phone device for the first time, Visual Studio 2005 and .NET Compact Framework 2.0.

Now, there is more to .NET CF 2.0 than just the date/time picker so I'd like to invite Seth Demsey on stage to show you some more of the great new technologies and features in their latest release. Seth. (Applause.)

SETH DEMSEY: Thanks very much, Neil.

So you've just seen some of the great new enterprise and deep platform integration features of Windows Mobile 5.0 and Visual Studio 2005. I'm going to show you how you can use these same tools to create richer applications faster, reusing more of the code that you already have written.

I have a great peer-to-peer gaming infrastructure that I've been working on and the only thing that's left for me to do is finish writing the game. I actually have a friend waiting backstage to play the game against me when we're done, so let's go ahead and actually build this application.

It's really easy to leverage your existing controls in Visual Studio 2005. You can simply right-click in the toolbox and select Choose Item. There you can just navigate to your DLL and your controls will show up right in the toolbox like mine did.

I'm going to go ahead and add two of my player controls to this application to show the player's names and score. You'll notice that Visual Studio is even showing me snap lines that makes it really easy for me to align my controls.

Now I'm going to go ahead and add a square control to my application, which is the heart and soul. It implements the game of Squares where two players take turns connecting the dots with lines and whoever completes a full square, well, they get the point.

That's our application but I'm going to show you a great Windows Mobile feature, which is the ability to work with your application in both portrait and landscape mode. Now, previously you could do this but it required writing code and today I'm going to show you how you can use Visual Studio 2005 and .NET Compact Framework version 2 to make your app work in landscape and portrait mode without writing any code at all. You can simply right-click on your form in Visual Studio and select the new rotate command to actually look at what your app would look like when it was rotated to landscape mode.

Well, we didn't do too good of a job here, we're actually missing player two and we're certainly not centered in the screen so let's rotate back and use the Compact Framework's new docking and anchoring functionality to fix all this.

By simply docking my controls to the top, to the bottom and having my squares control fill out the remainder of the form we've done everything necessary to make our application work great in landscape mode. Without any code it works absolutely perfect. (Applause.)

Well, that's great but we're going to add some more features to this game. How about some sound, that would make it nice. I actually wrote a COM component a while ago that makes it very easy to place sound in games and what I'm going to do is actually use this COM component directly from managed code to play sound.

Visual Studio 2005 and .NET Compact Framework 2.0 make it very easy to leverage your existing native components, your COM components, COM components from your enterprise and those commercial components that are available. And it's easy to do; simply choose add reference and navigate to your component and click OK. That's all you need to do. When you switch to Visual Studio's object browser you can see that an interop library has automatically been added and you can drill in and see all the interfaces, classes and methods that are available on that COM object for you to call.

So let's go ahead and wire this up. We're going to go ahead and create a play sounds object, which is my COM. Notice you have full IntelliSense on the COM interop. We're going to go ahead and new that up just like we would any other managed object. So it's just that easy to work with a COM component in managed code now.

There are a lot of new language features in the full .NET Framework version 2, and these features are also available in the Compact Framework as well.

I'm going to use a new generic dictionary to store the sounds in our application. What generics allows you to do is create a strongly typed data structure to use exactly the types that you want, no more casting from object anymore and getting type load exceptions or invalid cast exceptions; we do all the strong type checking at design time to make your productivity better.

So we'll go ahead and create a string key for the name of the sound and an integer value for the index that the COM component requires. Go ahead and call this sound and new it up as well.

All right, go ahead and prime this sound up with a few sounds using the Code Snippet just like Neil showed. We're going to add two sounds to our dictionary, one for a line and one for a square.

Now I'm ready to go ahead and switch back to design view and wire this up into the application. I can click on my squares control and then go into the event viewer to view all the events that are available on my custom control. Specifically we have a line drawn event exposed in this control that we're going to look into and another quick code snippet is going to do everything we need to do to play the sound. So if a square is not completed we're going to play the line sound; otherwise we're going to go ahead and play the square sound.

That's it. We're going to go ahead and build the application and switch to our emulator. I'm going to go invite my friend Jeremy backstage to play this game against me right now. And there's another cool thing about the device emulator in Visual Studio 2005 and that's that I can deploy the same COM component without recompilation to the emulator that I use on device. I don't even need to have the source code to it anymore, it's just one component.

Here's our application and we can see it looks just like it did when we were doing the design work. And I'm going to go ahead and click and add a line and you can hear the sound that was being played by our COM component. Oh, Jeremy is going to play me here.

And one more new thing we can do with the device emulator is actually rotate the emulator at runtime to see that our app looks exactly like it did when we did the rotation work in Visual Studio.

Well, we've just built this awesome application that uses user controls, COM interop, uses docking and anchoring to make the application work great in landscape and portrait mode, and we used generic to create a type space dictionary to store all of our sounds.

Visual Studio 2005, Windows Mobile 5.0 and the .NET Compact Framework make it easy to write rich applications fast, reusing more of the code that you already have written. Thank you very much. (Applause.)

Furthering Platform Value

BILL GATES: Well, we've done a lot with the platform, including a lot of things we didn't have a chance to show you this morning. We've got a new debugger capability, new way of installing applications with a deep security model that the operators will really appreciate. We're supporting ten new languages with the platform and we've always been very good at supporting a broad range of languages and now we've really covered all the important ones. The voice command capability with some speech processing, that's an application we feel really points to the future while providing value today. And we'll be doing some new things, whether it's the push e-mail support, things around videoconferencing, making it easy to build voice devices on the platform.

Working Together

Part of the value of working together with us is this huge mix we have to our big R&D investment, starting with our research groups, then with our strong platform that we build for all kinds of devices and then taking the parts of that that make sense to put into the phone, into the embedded devices and making sure they connect back to the personal computer itself.

One area that we see a lot of activity is this new NFC, Near Field Communication and we're working with a number of other companies in the industry to get some standards around that. With the extensibility we have in Windows Mobile 5.0, simply by adding a device driver, as those standards emerge we'll have phones to support that.

We see a lot of very interesting scenarios, whether it's getting additional information or being able to make payments, doing rich data exchange, so that's definitely a space to pay attention to and we're going to make sure we're in the lead in terms of making that available, so a huge commitment to drive this platform forward and year by year we'll deliver a dramatic increase in the volume of devices that you can sell your applications onto.

We appreciate the incredible support we've gotten for this platform, even starting a few years ago when the volume was quite modest and our aspirations were simply on paper. Now that we've made two years of great progress we're starting to see the payoff, people are building the applications, they're seeing that pay off. But the future is really where the big numbers come in and where the power of software will really show itself to be the centerpiece of what makes these devices come to life.

So we've got a deep commitment to do new releases. Here at this event there will be a lot of chance for dialogue, for you to give us the feedback that helps us set the priorities for the next version that we're already starting work on. We've really broadened the ecosystem, that's very, very important to us. We've made the tools so that you can be even more effective and what it leads to is a level of innovation. And so I'm very excited to see the work that you'll do building on Windows Mobile 5.0.

Thank you. (Applause.)

Posted by keefner at June 3, 2005 06:56 PM