How do I view the world? Is my view of the world enslaved by your model of the world?
Models and views, have been connected for so long that we can’t think of them separately. But that is exactly what Umberto Eco urges us to do. In Eco’s essay on Form as Social Commitment he urges the artist, the creative soul, to alienate. To create a new language that interrupts the model-view relationship.
The model is a language, a language that describes succinctly a reality, a set of observations. Those observations could be entries in a spreadsheet, weather records or human behaviors. When I observe a friend behave in a particular manner I look to put words to the behavior. If I have the language to describe the behavior then I am acting within the same cultural framework, the shared language of my friend. If I want to describe this particular behavior to you, I may be challenged to communicate the behavior and its corollary cultural statement in a few words. That would indicate that you and I don’t share a model.
My view of the world is mine, not a projection from a shared cultural model. Yet to break from the set of cultural models that we share I invariably need to alienate myself. I need to employ my free will to see the world differently. To separate myself from my local culture and break free. This separation powers my unique creative talents.
So why is software engineering any different? Why is information processing locked in slavery? The model and the data are bound to the view during development. The view may be slave to the model or the model a slave to the view, either way the tight coupling of the two defines the relationship.
Take a look at what fellow Medium author, Mark writes: “This is ironic, considering that SQL databases were originally designed to support ad-hoc queries that only bind tables/relations together at the final moment when a query is executed — yet they’re used by millions of apps where the structure is locked into the code ahead of time.” — https://medium.com/@maetl/having-used-titan-neo4j-and-orientdb-both-at-work-and-on-personal-projects-over-the-past-6-3bce614d7038#.6dxnmt3jq
Our first step to freedom is to de-couple the view from the model.
When I think about the major shifts in thinking, the evolution of science, perhaps the greatest evolutionary step taken is the birth of the Social Epoch. We have evolved from the Industrial Age to the Information Age and within the Information Age we are now evolving into the Social Epoch (an Epoch more than a sub-age). At the core of this evolution is the network.
A network is a set of connected nodes. Or in graph terminology a set of vertices connected with edges. Lets work with connected nodes for a minute. Statistical analysis differentiates between dependent and independent observations, typically preferring independent observations. When I observe my friend’s behavior as a good scientist I will try to isolate the correlation from the causations. I see my friend lift his hand, I see my friend throw a ball. These two actions exist independent of each other. I eat chocolate I lose weight. Does chocolate cause weight loss? The causative analysis requires a leap of imagination, much like the imagination we use to visualize motion, a set of independent observations over time. How much imagination is needed?
Back to my scientist self who will say magical words like R squared, or population size, or something that will convince others that a strong correlation between two observations indicates causation. And here is the beauty of the network revolution that underlies the Social Epoch. A network has a built in set of relationships, a set of connections that make the observations dependent on each other. The more links between observations the more Information (with a capital I) that is available to the scientist. When two of my friends are linked through a social network their actions are linked, my observations of them are linked. When I hear from each friend independently that he/she went to a movie, it does not take much imagination to guess that they went together. If they have more connections between them, my friends live in the same small town; I am even more likely to assume (imagine) that they went together.
The magic of evolution is in its broad affect. The social revolution has spawned a database revolution. The core element of distributed programming at the heart of the Internet world is the database and it is evolving. I remember the breakthrough of SQL data driven websites (here is a good place to thank MIT scholar and photographer Philip Greenspun for teaching me the power of MySQL). Later, the birth of NoSQL with the Hadoops of the world. And now the birth of the graph database.
I believe that graph databases are not just an incremental step, large, faster, smarter than relational databases. Rather graph databases are the manifestation of a significant evolutionary stage, the Social Epoch in the Information Age.
The graph database posses the power to change our thinking. It has changed my thinking as a system architect.
I used to be proud of the tight-coupled relationship between the database and the view. Ajax programming enabled the real-time instantiation of dynamic models in the user view. And more recently the angular JS world has brought the UI programming paradigm firmly into the Model view Controller world.
Yet here comes the graph database and the evolution of the Social Epoch in the Information Age forcing or better yet freeing me to think of a different client world, a world where the view is a decoupled entity.

What I am realizing is that SQL queries that perform conditional search and processing, set, modifications and enhancements, also inadvertently limit the client paradigm pushing the coupled model-view-controller world into my head.
What I believe is needed is a hierarchal distributed query language. Query language is probably not the right phrase anymore, perhaps query process, a set of languages that will shift the judgmental decisions from the server to the client. The phrase ‘map reduce’ is closer in the sense that mapping is a projection, yet the current Hadoop usage of that phrase is the exact oposite of my intention. When we go from a slice of flat data to a projection of a graph we will need a new client model, where the angular JS and the bindings in the client are local, leaving an intermediate layer in the client that talks graphs.
So lets all talk graph.

Meaning, as a linguistic term, is created by mapping two systems to each other. Projecting a first system through a lens onto a second system. To create a language for communication, map a symbol (a form) in a lingusitic system to a idea in a conceptual system. The word ‘cat’ is a symbol (composed of sub-symbols — letters) that is mapped to the ‘Unix’ language to the abstract idea that concatenates files. The word ‘cat’, the identical symbol is also mapped to English (and in particualr Russain) language to the abstract idea of a feline mammal. This process of mapping creates meaning and enables communication of abstract concepts through transmission of concrete symbols.
Information is a measure of the mapping. A well mapped symbol, a symbol that maps conclusively to a particular concept is Information full. A poorly mapped symbol, such as the symbol ‘cat’, that can be interpreted to mean different things, is Information light. The more Information in the symbol the clearer the transmission of the message and hence the interpretation of the message by the recepient.
The graph network has lots of symbols. Each nodes and edge is a symbol in itself, but also the many paths of traversal are symbols. Hence a graph network has potential for multiple meanings. Flattening the graph, choosing a projections from the graph, provides a mapping from a second system and adds meaning to the larger system. The flatenning process increases the Information in the system and limits the possible interpretations.
So when should we flatten the graph? What language should we use to describe the process? What are your thoughts?