Above is a sketch of a possible user interface to a radically new way of building and programming our virtual environments. It's called the "Object Network".
It's an approach that's needed now, because computers and our virtual property are starting to merge invisibly into our surroundings, demanding new ways of interacting with them.
The imminent proliferation of small, internet-connected devices in our homes and the arrival of increasingly sophisticated forms of augmented reality mean we will start to lose track of the boundary between real and virtual.
So you need to be able to see, control and program the virtual stuff that you own. That's what we mean when we say "program reality"!
The Object Network approach aims to model the real world as closely as possible, so that programming your virtual reality is just as intuitive and natural.
For example, we have familiar "objects" with sets of "properties". These objects link up into bigger structures. The familiar URL or web link is used to build those links.
As you can start to see by looking at the sketch above, the state of an object can depend on the state of another one that it links to. Here, the light depends upon the state of the price tag, alerting you that you should run out and buy the fish tank!
These two objects are hosted on different devices. The light object could be running on your home tablet, which may be controlling a Lifx bulb on the home net. The price tag object would be on a machine owned by the petshop. But the light object can "see" the tag object through its URL.
The light can advertise its own object URL via a beacon, either on the bulb, or on the nearby tablet driving it. Beacons, QR codes and GPS provide anchor mechanisms between the real and virtual worlds, allowing the virtual world to be made visible and interactable via augmented reality.
To find out more about why the Object Network was created - read this introduction to the philosophy behind the approach.
The Object Network is being prototyped in an Android app called NetMash.
Contact me and/or subscribe to my blog and/or follow me on Twitter.