In my QCon talk last year I talked, amongst many other things, about the need to react to the world’s information streams in near-realtime. The Bing Platform that powers Cortana and the Windows Phone OS were designed and implemented to support that vision.
At the very core of each Windows Phone 8.1 device is a stream processing service based on the algebra of Reactive Extensions. We actually use LINQ/Rx to write the expressions against that service. Every time you create a reminder of the form “remind me to say congratulations when I talk to Jim” or “when I get home, remind me to take out the garbage”, we actually create a standing Rx query on the phone that reacts to events such as “incoming call”, “text message conversation opened”, “email opened”, “geofence broken”, etc. By reacting to such events and then applying the appropriate filters, projections, and other operators, we take the applicable action (e.g. notify the user) in the appropriate context.
We have the equivalent service in the cloud as well, of which I am extremely proud. The team and our collaborators in MSR have done an amazing job. The cloud version is distributed across 100s of machines and few data centers. It’s a reliable and scalable version of an Rx evaluation engine. We built an abstraction layer that completely hides the implementation details, distribution logic, management, reliability, etc. of the service. Developers of Cortana experiences write Rx expressions against the world’s information streams in a declarative manner, using a very familiar programmatic experience. We have added capabilities and abstractions around the Rx framework we believe developers will like. Bart De Smet mostly and I will give more details in the near future. Together with Mike Andrews we recently gave a sneak peak during a Channel 9 interview. The video below about how the Bing Platform supports Cortana concentrated on our ability to process and react to huge amounts of information in near-realtime.
With a scalable reactive computing platform, Cortana can observe changes to the world’s information on our users’ behalf:
- Flight status changes (e.g. delayed, landed);
- Weather alerts for current or specific location;
- Traffic to next appointment or during the usual commute hours;
- News alerts;
- Favorite sport team score updates;
- And much much more that is coming.
We can handle 100s of millions concurrent standing queries evaluated on behalf of 10s of millions of users, hundreds of information streams, and a huge number of events per day. We are observing how this brand new system behaves. We will continue to add new information streams, expand the range of supported scenarios, and the number of supported users in the very near future.
This is just the beginning. The future is reactive! :-)