The open-ended flexibility of Prototype Pattern has been discovered in a lot modern productivity tools for creators, such as Roam Research and Figma.
The block reference achieves prototypical inheritance at a text-processing level: when you rebuild/reshape a new idea using existing blocks, you can simply copy their references as well as their sub-bullets under the new block.
Besides the the block refs(pointers) to their ancestors, you can also drop your own words as new properties. All the inherited and the added properties help you to model the upper level concept.
Not simple text manipulation, but modeling technique!
Steve cited Douglas Hofstadter’s compelling argument in GEB, which explains Prototype Pattern is fundamental to the way our brains work.
He paraphrases a simple example: how the announcers comment on a new rookie player in an NFL game. The example is very helpful to understand the essence behind prototype-based modeling:
The most specific event can serve as a general example of a class of events.
Each block in Roam Research, no matter how specific it is, can be used to represent other concept. It can be either a fleeting note or a permanent note.
There is generality in the specific.
I elaborate Steve Yegge’s example using block reference(a more proper version should use “Attribute” but I did not).
L.T. is an “instance” of Emmitt Smith: he just inherited all of Emmitt’s properties.
Before Roam carries out its template feature. Romans] already take advantage of block references to achieve that purpose. From a programming perspective, templating is just one-level prototypical inheritance. So folk told him not to introduce template features.
Components in Figma is a perfect interpretation of the open-ended flexibility of “prototype modeling”, which is fundamental to the way our brains work.
Rusmus Anderson once said it was his most impactful innovation at Figma.