Playing with Static

So one of the best design decisions I feel I made with Phos was the representation of objects as a chain of transformations. In this way the description could be easily stored as a static resource, and yet reliably reconstruct the state when restored in the environment. Doing this however requires understanding relationships in terms other than references, and requires that you properly manage the assignment of Proper Nouns in your application.

The notion of static here is on familiar to REST applications in general as a resource can be both 'well named' and embody an entity that changes over time. For example, Dave Goehrig, is a well named entity that many databases reference by name, even though he is not the same Dave Goehrig he was 5 10 15 20 years ago. (though he would love a cyclic reference to occur in his space time continuum).

The bit that I've been playing with to great effect is to start taking each of the slices in time, and making them uniquely named by assigning a UUID. I then map the transition between states in another state machine object that maintains a sequence of UUIDs over time. This allows each entity to be unique, allow the continuum to be an external reference frame, and allows us to compare, transform, and reset the state machine itself.

The primary purpose of this is to make managing programming of a live system as simple as possible. When the goal is to distribute and synchronize the processing of millions of parallel nodes, it becomes increasingly important to have your sysytem capable of manipulating many parts of the world asynchronously. Other parts of the world build sychonicity by generating continuum objects that represent a sequence of states. The third then can transform these continuums to generate objects which capture useful state. These key frame objects are the documents of note, the output you care about.

All this is true of current programming methods. While the computer is capable of entering a mind numbing number of states, there are only a handful we are ever really interested in. Most programs exhibit very few unique continuums or flows, and few of hose ever produce valuable output. Thin of vim while editing code. You care about your undo buffer and what is on the screen while editing, but it is the end file that you really care about in the end.