Reactive or Proactive

Troll

On the surface it looks like everything that happens is a reaction of something else that happened. This is the old mechanical view of the world that gave use the theory of causality and my second favorite argument for the existence of God, the first cause argument. My favorite argument however is:

Beer is proof that God loves us and wants us to be happy.

The first cause argument was blown out of the water with quantum physics, but it’s hard to argue this one, unless perhaps by God-fearing or angry-atheist teetotaler.
Quantum physics also restored free will, because a giant clockwork universe doesn’t give the cogs any wiggle room.

The reason for this yarn is that for the past few weeks I’ve been working with Windows Presentation Foundation, or WPF. After working with the Angular Framework for couple of years I started looking for a comparative WPF framework which lead me to ReactiveUI.

ReactiveUI is based on Microsoft’s Reactive Extensions, and what surprised me is what I thought was the new paradigm of browser programming has been around for quite a while. The first .Net Rx extension was released in 2009 with the Observer Pattern emerging decades earlier.

The basic idea behind reactive programming is moving the focus from the how to the what. Let the reactive library take care of the how. For example, the ReactiveUI framework implements what’s called MVVM pattern whereby the programmer focuses on what to display based on the underlying data model – the reactive library takes care of syncronising the model with the view.

This might sound mundane, just some programming tricks. But what if we extrapolate this idea, not just for individual programs but the platform? That could mean the device, corporate network or even the Internet.

This is not some Utopian view, it’s already happening. Anyone who’s ever indicated with a browser an interest in, say for example a holiday in Iceland has probably experienced this. Suddenly ad’s for flights, hotels and things to do in Iceland start to pop-up on every website.

The ad-widget’s what is to show an advertisement and Google’s data model has churned our browsing history to make a stab at what might be of interest. This is the Internet’s causality.

The traditional design of programs is proactive – or feature rich. Cram in every thinkable feature. The odds are that when a potential customer choses between two products, he’s going to make his choice based on missing rather than existing feature.

This is perfectly logical from the long-term view perspective. The downside however is increasingly convoluted software. A classic case in point is the Microsoft Office suite. Powerful enough to handle any documentation or presentation scenario thinkable – but at the cost of becoming victim of it’s own success. An example is when form overtakes function with heavily ornate documents. The function of managing textual information turns into an exercise of not breaking the format.