Over the last few weeks, as a spare time side project, I’ve been experimenting with a concept that has been circulating in my head for few years now. I’ve been trying to form an opinion, by writing code, around questions such as…
Over a series of few posts I will explore the outcome of that investigation. My hope is to get feedback on the approach since I would like to capture the results in a paper. But first, some history to put my thinking in context…
Erik and I went our separate ways but we kept in touch.
When I joined Bing, we had another go at a distributed graph store (amongst the other things that I was doing). We even had a natural language to LINQ-over-graph layer working. We supported media-related queries for the Xbox One voice search feature. I even presented the team’s work wearing the organization’s logo at the time 🙂 Unfortunately, while great technology, the project didn’t make it due to the risk associated with changing the existing, simple-but-not-as-capable platform. It was the right decision at the time.
Nevertheless, many of the supporting ideas and code (e.g. the data model, an RDF-like data model, a JSON-based data serialization similar to the later-introduced JSON-LD standard, serialization of query expressions using the same data model) became the foundation of Reactor.
Reactor is Microsoft’s large-scale, distributed stream/event processing platform used by Cortana to handle all types of near-realtime information. It’s based on Rx 3.0 that Bart, I, and others designed and built. Reactor can deal with billions of events, offering “at least once” semantics. Reactor is programmed used Rx queries. Think of Reactor as the execution engine behind an IQbservable
interface (actually, there is much more to that but let’s keep the discussion simple for now).
The Bing Platform: More Helpful, Personal and Intelligent from Bing on Vimeo.
After I joined Facebook, I met Adam Wolff who has been thinking about reactivity as a way of building applications on top of Facebook’s huge data platform. Adam is responsible, amongst other things, for React, the framework that enables fast, responsive UI on the Web and mobile devices.
We coded together during a Facebook hackathon session, wayyyy into the early hours of the following day. He’s totally hard core. I had to go home to get some sleep after 24h of non-stop coding but he stayed at the office for another full day of meetings.
Adam raised a challenge for us to consider… How can we build Facebook-style application experiences that don’t require continuous polling for data? How can we build responsive UIs that react to changes to the underlying data? Even though not part of my main responsibilities at Facebook, I saw it as a great technical challenge and an opportunity to revisit the various ideas from the last few years.
The investigation on what I call “ReactGraph” is really an evolution of all of the above. Part of a journey that started all those years ago. Whether the outcome is any good or useful, that’s to be determined 🙂 No matter what, I had a great time coding.
Next: ReactGraph Part 2: Remote evaluation of continuous queries
See "BrainExpanded - Introduction" for context on this post. Notes and links Over the years,…
This is the first post, in what I think is going to be a series,…
Back in February, I shared the results of some initial experimentation with a digital twin.…
I am embarking on a side project that involves memory and multimodal understanding for an…
I was in Toronto, Canada. I'm on the flight back home now. The trip was…