Picture a tree. Let’s make it an oak tree, so most people in the northern hemisphere will have direct access to one. Over the course of the oak tree’s life, it increases in size gradually, with new branches, sub-branches, and leaves appearing in that order of frequency. The trunk remains alive, but is less dynamic in it’s size and shape than the portions of the tree closer to the leaf-nodes, to borrow a metaphor that seems dangerously recursive. New branches and leaves appear and disappear, each with a frequency entirely contained by the structure supporting it on the tree. All of the leaves growing from a specific branch will be around no longer than the branch itself is around. So it is with the branch as well. If our example branch is attached to another larger branch, it will be part of the tree no longer than the larger branch is.

The tree is a familiar archetype. One can find similar instances of this archetype in other systems, from the pattern of evolution to data structures in computer science. There is some utility in finding these archetypes and understanding them. We may find new insights into how to think about evolution, data storage, etc., by mining pre-existing sources of knowledge on similar systems. There is some risk associated with this behavior as well. It is always tempting to over-fit the metaphor and see homology where there is no functional similarity.

I intend to use this site as a place to contain my thoughts on such matters, as well as a repository for my various projects. I will post on aspects of my projects that may illustrate the archetypes involved in software development and the design and implementation of systems in general. A primary source of inspiration for this site, including the title, is the book A Pattern Language: Towns, Buildings, Construction by Christopher Alexander.