Hierarchies scale well, though, and are often found in complex systems, both natural and manmade, where this is an issue.
This classic paper (The Architecture of Complexity, by Herbert Simon, Nobel prize winner) explores hierarchy as an organizing principle in complex systems:
>Hierarchies [...] are often found in [natural] systems
Nah they aren't. The 'tree' of life is more of a full-fledged graph and the whole kingdom-order-genus-species thing is muddy and ill-defined. Most of the 'hierarchy' we find in natural systems is just our own projected deformation of much more complex relationships.
Again, there's a lot more nuance to this. Look into the rabbit hole of cadherin/catenin or how epithelia are formed to see how a tissue is much more than a bundle of cells.
This hierarchical way of thinking is only designed for humans - because it helps us think more clearly. It's a crutch when you're attempting to learn, but at some point it becomes a hindrance when you want to run.
Once you get complexity past the ability to do horizontal transission, and past the point where divergent species can no longer interbreed, it pretty much becomes a tree I think. If not, please show me where 2 branches rejoin where there's no H transmission nor mutual fertility.
> the whole kingdom-order-genus-species thing is muddy and ill-defined
Well yes, it's somewhat an arbitrary construct for human convenience, but isn't much of the muddiness down to our limited understanding of the true relationships?
Regarding "cadherin/catenin or how epithelia are formed to see how a tissue is much more than a bundle of cells." could you give a link cos this is so far outside my area I really don't know what to look for (wiki article on Catenin wasn't very revealing of your point, sorry if I missed it)
> If not, please show me where 2 branches rejoin where there's no H transmission nor mutual fertility.
Viral infections modify host DNA, and can also incorporate host DNA -- this is a mechanism by which lateral gene transfer can occur between macroscopic organisms. The platypus has mammal, reptile and avian DNA, and they seem to have come about long after those branches diverged -- evidence that lateral gene transfers occur between macroscopic organisms.
Well I wouldn't normally but because you're so obviously wrong I thought I'd try. First, I can't find any reference to what you claim. The platypus is a mammal, end of, AFAICT. It has kept features from it's long evolutionary path (split off other mammals 165 million years ago) but no evidence of it being from gene-jumping I could find. eg. https://abcnews.go.com/Technology/story?id=4828261&page=1
"This process is called horizontal transfer, differing from the normal parent-offspring transfer, and it's had an enormous impact on mammalian evolution." For example, Professor Adelson says, 25% of the genome of cows and sheep is derived from jumping genes.
Relating to platypus and horizontal gene transfer, I found this, which seems to be not quite what you're talking about: Horizontal transfer of BovB and L1 retrotransposons in eukaryotes. Genome Biology, 19(1). doi:10.1186/s13059-018-1456-7
Regardless, horizontal gene transfer certainly does happen.
If you'd like a curated collection of many papers on horizontal gene transfer in eukaryotes, it comprises much of the evidence presented at https://www.panspermia.org/archindex.htm . Having followed this collection since 2010, I have gotten the sense that horizontal gene transfer to/from eukaryotes is not only common but an important mechanism of evolution.
Yeah most people think evolution is just natural selection and accidental mutations, which is a high schooler understanding's of it. I'm not being derogatory, it's literally what I learned in high school and I don't blame people for not digging further if they haven't taken classes afterwards.
”past the point where divergent species can no longer interbreed”
Species S may no longer interbreed with species T, but that does not imply they’ve separated completely. There may exist intermediate species U...Z that link them together (https://en.wikipedia.org/wiki/Ring_species)
To the best of my knowledge the tree of life actually is a tree though. Or are there known cases where two species have merged to create a new species?
Okay I suppose that it becomes a DAG if you zoom into the actual ancestral relations between individual organisms (which is where things become muddy). And I guess the concept of 'species' kind of forces a tree structure upon this DAG (although not exactly, but then the biologists didn't think to use a definition that provably produces a tree, in fact being of the same species isn't even an equivalence relation).
It seems a human tendency to organize things into hierarchies, I think our brains are likely optimized for it, but I think it's often an oversimplification. Taking biological evolution as an example, kids are taught about the evolutionary "tree of life", e.g. phylogenetic tree, wherein organisms are organized into a hierarchy of what is related to what. But while that worldview seems broadly accurate, it's definitely an oversimplification. Cross-species genetic transfer does occur in nature through various mechanisms, for instance in ring species or rare instances of viable hybridization (mules are the classic example of infertile hybrids, but fertile mules have rarely been observed in the modern era.)
It seems to me that a directed acyclic graph, rather than a tree, is a more accurate model in this case. (Directed because time always flows in one direction.)
A phylogenetic tree also fails to capture information about life that people might reasonable find interesting. Suppose for instance you want to study all organisms that fly. Bats, birds, insects and pterosaurs all fly[flew] but don't share common flying ancestors. The "flying organism" classification doesn't fit into that simple hierarchical tree.
I think it's a built-in cognitive pattern in the brain to create categories for sure. But organizing those categories into a hierarchy? I don't know.
How I model it, personally, is that as we learn more about the world, or learn about more things, we can increase the resolution of our categories, i.e. have more of them at a finer level of detail. From this process, my personal mental model goes, hierarchies tend to emerge as kind of "meta-categories." It's our attempt to overlay some predictability.
Mostly, it works okay, but when you hit a certain level of resolution, hierarchies get exposed as a very leaky abstraction. Busting out of that hierarchical mindset is, in my model, what happens when I "think outside the box:" Putting things which aren't "supposed" to be on the same level on the same level.
In my experience, thinking through things in this way leads to interesting places.
Do they, though? Arguably the worst part of nominal inheritance is that it doesn't scale. Can get you off the ground quickly, but will almost certainly bite you.
Now, mapping non hierarchical things to a hierarchy works well. But imposing that as a truth fails miserably.
I meant hierarchy in the sense of systems built of subsystems, which, in turn, are built of other subsystems, and so on. More like composition. And each subsystem often represents a different, more elementary, level of abstraction.
But, if I understand it correctly, nominal hierarchies can also scale really well, like DNS addresses.
This modern stigma against inheritance is weird. I feel like the people who speak against it either don't actually use it or used it poorly and got burned.
I use it all the time and find it perfectly abstracts things. Yes you can shoot yourself in the foot if you're not careful but wasn't that something we used to like about cpp? If a language is more expressive, I'd wager on average it's more likely to have bugs, but the benefit is an easier expression of skill and brilliance.
Hierarchies appear where there is a clear gradient or flow. The canonical examples are river networks and trees (from which: dendritic).
Even here, flows are often not entirely directed -- a river system experiences evaporation, precipitation, ground seepage, and aquifer flows, in addition to its dominant gravity-induced current. A tree has flows which originate at leaves (photosynthesis) and roots (water, mineral sourcing), as well as elsewhere (flowers, parasites and symbiotes, community flora and fauna). Similarly, evolutionary trees represent not only ancestral inheritance, but cross-species gene transfers -- bacteria, viruses, mitochondria, even other higher-order organisms (generally through an intermediary).
A true ontology to me is a largely nondirected graph. This may be a union of several directed graphs, a region of low-directedness within a larger directed space, or (fairly rarely) a near-universal truly nondirected system. Given that even cosmological megastructures are defined in terms of attractors and repellers, that is: gradients, truly nondirected spaces seem. likely rare. Though that's describing physical entities, conceptual spaces seem to me similar -- at least analogous, perhaps even more than that.
A tremendous risk in conceptual spaces is to equate some gradient with a moral, ethical, or social value gradient. This isn't -always_ a mistake, but it very frequently at least obscures more than it reveals, and can cause tremendous harm. The trait and tendency seems quite innate, dating. to earliest histories and likely earlier in the sociological and anthropological. It's all but certainly part of our neural wiring, "human nature", if not far deeper than that: a fundamental trait of representational modelling systems operating under constraints of perceptions, models, prior data, and processing and response capacity. Hierarchical value judgements are, by fundamental constraints of information systems theory, necessary (and very flawed) heuristics.
Or in fewer words: all models are wrong, some are useful.
Because both personal and sociocultural identities become wedded with values, they become rigid and defining. Good if certainty, speed, and consistency are required, not so much when flexibility and adaptation are.
In the context of TFA (and yes I'd submitted this): both hierarchical and ontological constructs are useful. I most often tend to think along the multi-hierarchical model -- that there are numerous centres, attractors, and repellers, with some phenomena behaving as both: a star or galaxy radiates light whilst attracting matter -- the same phenomenon is both a source and a sink.
I see networks of elements, trends, or traits, often with gradients not only of intensity but of complexity. This ... seems to serve fairly well.
Also worth noting: it's fascinating looking at classification schemes throughout history and which of those had central organising principles now seen as utterly unfounded. As well as some which have survived, or at least strongly suggested modern schemas.
For informational classifications associated with physical records such as the Dewey Decimal or Library of Congress Classification, a key contraint is that records must exist within physical space, at one and only one location. Looking at other classification systems (say, the LoC Subject Headings), this constraint does not exist, and works can be described, non-hierarchically, under multiple subjects simultaneeously. At the same time, many of the subject sections themselves have a strongly hierarchical structure, though also with notable idiosyncracies within specific areas. The law classifications, to my mind, most especially so.
Apparently the note-keeping system is a work in progress:
> PS: Many people ask, so I’ll just note here: no, I haven’t made this system available for others to use. It’s still an early research environment, and Premature scaling can stunt system iteration.
If you're on a Mac, you can have a look at The Archive: https://zettelkasten.de/the-archive/ which, as the domain indicates, is inspired by Zettelkasten, which [also inspired the "Evergreen Notes" idea][0].
As a Notion user, my immediate reaction was also "where can I get this". I've never seen a UI/UX as nice as that one. If he made a business out of it, I bet people would be begging to throw money at him.
I understand. I think what I and perhaps many other readers are primarily interested in is the raw link-following interface that enables quick jumping around to and from interconnected things, rather than note-taking or the methodology or philosophy of note-taking.
For example, if TV Tropes switched to an interface like this, I bet way more people would get lost down rabbit holes, and they'd go deeper and last longer.
Admittedly, I'm not much of a note-taker, let alone an Evergreen note-taker, and so far I haven't been sold on the idea. Essentially, I'm just too lazy. (I've found a lot of other very insightful information in this quasi-blog, though.)
I'm more hoping for a good neural interface to come out within the next five or so decades, so that this whole process can happen with very little effort and work almost automatically. Potentially insight-generating prior thoughts are pretty lossy when they're just in your head, as you describe it, but a neural interface and associated organization system could possibly eliminate this lossiness problem. I acknowledge it may take a lot longer than five decades before such a thing is practical and seamless, but it's just a hope.
At the end of the day, what I think I personally want right now is a hybrid note-taking, list-making, bookmark/document-organizing, mindmapping, knowledge base/wiki, table/chart-making, scheduling, planning app with an interface similar to this one, where it's easy and fast to follow different nodes, see how they relate, and unwind the stack at any point. I understand such a project is probably way beyond the scope of anything you're trying to do, let alone something you want to build a whole business around.
For reference, a lot of what I do is investigative and research work (generally centered around network security). This rarely involves long-form prose, and is more like trying to map and discover connections between lots of different kinds of small entities and findings. But I'd also find this valuable for more typical business use cases, like what Notion is generally used for.
Basically, I just wish apps like Notion, Coda, and Nuclino would implement an interface that's as smooth and useful as this one. These apps are all basically just trying to clone each other and are using interfaces that could've been designed in the 90s, rather than trying to fundamentally alter the experience.
> Things don’t always fit exactly. Maybe once enough new ideas are collected, a new category would emerge… except you can’t see its shape because everything’s already been sorted.
This is so very true and precisely why PL type systems (in their common usage, which involve creating ADTs/classes/records -- taxonomies) are so bad for the necessary creative evolution that software systems must undergo to keep up with the dynamic real world.
Dynamic entities, untyped maps, allow for creative evolution; type-oriented ADTs ubiquitous in typed PLs blind you and _bind_ you in exactly the way this post describes.
Just out of curiosity, do you significant experience in a statically-typed FP? What’s your favourite language right now? Your comment reminds me of Rich Hikey’s famous talk, so I would guess Clojure?
I have a similar take on Haskell and I do think its adherents are more clinging to a near-religious like commitment to the language and its counterproductive purity.
That said I think
> I feel learning Haskell was worthless.
is a little harsh. I suppose b/c I don't think learning (anything) is ever worthless.
Yes I'm a Clojurist, per se. I agree with even Rich Hickey who will even say that it's fundamentally not about the specific programming language.
However I do think Haskell falls into a different category. Most PLs at least make pragmatic concessions. PLs with strong static typing take a fundamentalist approach that does not give any flex and therefore I find anti-pragmatic.
But why not learn a strong static PL? Why take my or anyone else's word for it? The best way to discover the right tools is to pick them all up and wield them. If outcome is your goal, if productivity is your sincere goal (as opposed to something else like intellectual curiosity or purposeful rigidity...b/c you're, say, afraid of change) then I do think you will gravitate away from static typing in many cases. Especially in the prevalant case of development of web and distributed data systems.
The reason I use hierarchical models is because they provide more powerful abstraction than purely associative ontologies. I do use ontologies for defining logical objects in an organization (people, document types, costs, risks, etc) but I don't trust end users to invent their own because unless you have a background in it, they just re-create the same narrow taxonomies they use in spreadsheets.
An example would be how a corporate wiki/confluence and sharepoint sites are basically documentation landfills that support labour intensive ad hoc processes without a lot of intelligence. In contrast, a library of functions, microservices directory, data dictionaries, tool kits and categories of processes are an abstraction layer over those landfill elements that enables clarity and scale.
The skill and intuition to aggregate things into abstractions isn't common, so most people don't rely on it, but when you have it, it's really valuable. A rule I use in building ontologies is that a thing without a type is just a poor design decision that leads to conceptual debt, and a type without a thing is just a thing.
There are 5 practical relationship roles in knowledge modeling: parent-child, associate, source-target.
Parent-child is hierarchy. Associate is undirected peer. Source-target is less useful in general, but it roughly represents a directed peer relationship (e.g. A exports this good to B, and B exports that service to A -- there's a direction).
Associative relationships are very easy. Bob is friends with Mary, and with Pete. But they are also very loose and do not convey any information around belonging/precedence/ordering, which is a major downside. Associations don't have sufficient representational power for capturing structures.
Hierarchical relationships are very useful for expressing structure. For modeling real knowledge, you also need the ability to represent multiple hierarchies. For example, Bob is Dan and Chloe's father (parent-child in one context), and Bob is also Beth and Joe's boss (parent-child in another context). It can also happen in reverse -- Beth is Bob's superior in a social club they both belong to (yet another context). Multi hierarchies appear everywhere yet we don't often recognize them as such.
Multiple hierarchies are sometimes captured through tags (e.g. Gmail categories) or in the UNIX file system, via symbolic links. But apart from those examples, I haven't seen any widespread recognition of multiple hierarchies.
Most techniques/software tend to be designed for single hierarchies (e.g. outlines). This simplicity appeals to how the human brain processes information. It also only assumes a single context at a time which may be too simplistic and underpowered in many situations.
> There are 5 practical relationship roles in knowledge modeling: parent-child, associate, source-target. Parent-child is hierarchy. Associate is undirected peer. Source-target is less useful in general, but it roughly represents a directed peer relationship (e.g. A exports this good to B, and B exports that service to A -- there's a direction).
I feel like this is missing something, namely in modelling relationships where a single child can have an arbitrary number of parents in a single context (or source-target without cycles.) I don't think that's adequately captured by multiple-hierarchies when you can't break the parents into discrete categories (e.g. mothers and fathers) and thereby into discrete hierarchies. If you try to model a DAG like that as multiple hierarchies by somehow imposing an order onto the set of parents, you'll get yourself into a quagmire.
In a version control system, a commit might have an arbitrary number of parents. Furthermore a single commit might have an arbitrary number of relationships to another commit (e.g. parents can also be grandparents, etc) Trying to reason about such a system as multiple-hierarchies will have you reasoning about a potentially huge number of hierarchies if the graph is well connected. I think it's more straight forward to reason about the system as a single graph, rather than a huge set of spanning trees.
> I think it's more straight forward to reason about the system as a single graph,
So I'm still not sure I totally get the objection -- please help me out here. In my mind, multiple hierarchies are represented by a single graph.
When one reasons about the system, one will naturally only consider single hierarchies at a time for simplicity. The way to do this is center yourself on a node at a time, and then from that vantage point, traverse the node in different directions.
In the system, each edge belongs to only 3 categories: P ("parent", directed), A ("associate", undirected), S ("source", directed). We're only considering hierarchies, so we'll restrict ourselves to "P". Each node can have an arbitrary number of relationships with other nodes. A family and work relationship could look like this.
You -P-> your kid 1
You -P-> your kid 2
Mother -P-> You, Sister
Father -P-> You, Sister
Boss -P-> You
Boss -P-> Colleague
Company President -P-> Boss
Company -P-> Company President
Seems to me it should be easy to reason about multiple parents in different contexts -- they all belong in the same graph.
Wikipedia sort of does this with its Categories box at the bottom of every page, but Wikipedia only has one kind of relationship category: P.
Networked filesystems can approach multiple-hierarchy relations. Similarly for systems such as the WWW.
Nonhierarchical associative structures tend to hit a complexity explosion threshold after a time (though arguably the same criticism might be made of hierarchical classifications) in which categories simply multiply.
Yes. For a WWW example, Wikipedia has multiple hierarchies, represented by multiple Categories at the bottom of every page (which in turn can belong to multiple Categories). This permits arbitrary level of hierarchy.
After thinking about this issue for a long time, I came up with a solution of my own.
The solution I came up with is a personal knowledge base made up of files assigned with multiple categories. Categories form a hierarchy and the system strictly preserves this hierarchy and takes it into consideration with minimal user intervention: https://github.com/amitnovick/catalog
In general I agree with the sentiment expressed in TFA and generally try to follow it when building new ontologies because asserted subClassOf hierarchies create a huge impedance mismatch between how the computer interprets them and what the designer thought they meant (e.g. I've seen people use subClassOf hierarchies to represent a partonomy, but more subtle variants in what "is a" means within a single hierarchy can wreak havoc on usability). It also allows you to defer the deeper modelling until a use case presents itself and build your hierarchies from the underlying structure of the domain (with data) rather than trying to impose an almost surely incorrectly hypothesis about the structure of the domain from the top down (without data).
That said, there are a number of cases where hierarchical taxonomies are vital in building information systems. Some examples.
A use case where you need a way to guarantee that a space is completely covered without duplicates (important for accounting, or creating menus). Having a single non-overlapping reference space (like a map) is critical for clear communication.
A use case where you need to capture some semi hierarchical knowledge from domain experts, e.g. an org chart, or the parts of a car, or the parts of the brain.
Org charts are the perfect example of the tradeoff. Consider the US Department of Defense (don't actually do this you will loose your mind). The chain of command is famously a single parent hierarchy, and if it is not, it is a sign that something can go wrong due to conflicting orders. However, let's say I wanted to know which branch of the military funded a certain research project based on the office that wrote the RFP. This question is pretty much impossible to answer for an arbitrary RFP, and the time and effort needed to maintain the full associative ontology and keep it up to date is stupefying huge, AND it is not even clear that such an ontology would actually be pointing to anything that was actually meaningful in the real world (beyond ill defined social and economic relationships between arbitrary groups of primates).
Hierarchies are an effective way to collect knowledge from domain experts in a systematic way that does not require them to know that they are writing down a bunch of axioms, but instead can just draw a diagram -- multiple hierarchies are very important here, because hierarchies from different experts usually agree at a high level, and then differ in the details, often due to the use case for the knowledge or from the experimental perspective, not because there is some fundamental ontological difference. In this sense having multiple hierarchies is a way around the problem of ambiguity in the meaning of "is a".
I don't get why we don't use an S3 like filesystem with tags now, folders are very limiting. Get rid of folders, tag things properly, and then make a good search interface. Then you add a yeah for each file that has its old path, "/user/bin" for example, so that legacy folder structure still exists somewhere for legacy programs.
67 comments
[ 1.8 ms ] story [ 213 ms ] threadThis classic paper (The Architecture of Complexity, by Herbert Simon, Nobel prize winner) explores hierarchy as an organizing principle in complex systems:
https://www.andrew.cmu.edu/course/15-440/READINGS/simon-arch...
Nah they aren't. The 'tree' of life is more of a full-fledged graph and the whole kingdom-order-genus-species thing is muddy and ill-defined. Most of the 'hierarchy' we find in natural systems is just our own projected deformation of much more complex relationships.
This hierarchical way of thinking is only designed for humans - because it helps us think more clearly. It's a crutch when you're attempting to learn, but at some point it becomes a hindrance when you want to run.
> the whole kingdom-order-genus-species thing is muddy and ill-defined
Well yes, it's somewhat an arbitrary construct for human convenience, but isn't much of the muddiness down to our limited understanding of the true relationships?
Regarding "cadherin/catenin or how epithelia are formed to see how a tissue is much more than a bundle of cells." could you give a link cos this is so far outside my area I really don't know what to look for (wiki article on Catenin wasn't very revealing of your point, sorry if I missed it)
Viral infections modify host DNA, and can also incorporate host DNA -- this is a mechanism by which lateral gene transfer can occur between macroscopic organisms. The platypus has mammal, reptile and avian DNA, and they seem to have come about long after those branches diverged -- evidence that lateral gene transfers occur between macroscopic organisms.
Show me some paper on this. I mean an actual scientific paper, not a paper used to roll a yard-long spliff.
But then accidentally discovered this about gene transfer albeit in another area: https://www.sciencedaily.com/releases/2018/07/180709101216.h...
"This process is called horizontal transfer, differing from the normal parent-offspring transfer, and it's had an enormous impact on mammalian evolution." For example, Professor Adelson says, 25% of the genome of cows and sheep is derived from jumping genes.
OK, thanks!
Regardless, horizontal gene transfer certainly does happen.
https://news.ycombinator.com/newsguidelines.html
https://news.ycombinator.com/newsguidelines.html
(I took a quick look at your account's past comments and didn't see any previous history of this, which is great.)
Species S may no longer interbreed with species T, but that does not imply they’ve separated completely. There may exist intermediate species U...Z that link them together (https://en.wikipedia.org/wiki/Ring_species)
Okay I suppose that it becomes a DAG if you zoom into the actual ancestral relations between individual organisms (which is where things become muddy). And I guess the concept of 'species' kind of forces a tree structure upon this DAG (although not exactly, but then the biologists didn't think to use a definition that provably produces a tree, in fact being of the same species isn't even an equivalence relation).
It seems to me that a directed acyclic graph, rather than a tree, is a more accurate model in this case. (Directed because time always flows in one direction.)
A phylogenetic tree also fails to capture information about life that people might reasonable find interesting. Suppose for instance you want to study all organisms that fly. Bats, birds, insects and pterosaurs all fly[flew] but don't share common flying ancestors. The "flying organism" classification doesn't fit into that simple hierarchical tree.
How I model it, personally, is that as we learn more about the world, or learn about more things, we can increase the resolution of our categories, i.e. have more of them at a finer level of detail. From this process, my personal mental model goes, hierarchies tend to emerge as kind of "meta-categories." It's our attempt to overlay some predictability.
Mostly, it works okay, but when you hit a certain level of resolution, hierarchies get exposed as a very leaky abstraction. Busting out of that hierarchical mindset is, in my model, what happens when I "think outside the box:" Putting things which aren't "supposed" to be on the same level on the same level.
In my experience, thinking through things in this way leads to interesting places.
Now, mapping non hierarchical things to a hierarchy works well. But imposing that as a truth fails miserably.
But, if I understand it correctly, nominal hierarchies can also scale really well, like DNS addresses.
My point is imagine if the network had to only have the organization that is present in dns names.
Root, TLD, domain holder, sometimes further delegation depending on the domain holder.
For most of the cases, you will never be hitting root at all.
If the system was as hierarchical as it was proposed in the parent it would never be stable enough to work due to a single point of failure at root.
Ergo, hierarchies are not natural.
I use it all the time and find it perfectly abstracts things. Yes you can shoot yourself in the foot if you're not careful but wasn't that something we used to like about cpp? If a language is more expressive, I'd wager on average it's more likely to have bugs, but the benefit is an easier expression of skill and brilliance.
That’s why you throw up your hands and build property webs instead of heirarchies.1
Again, they can be useful. No, they are useful. But they are fragile. And are but one way to look at things.
Even here, flows are often not entirely directed -- a river system experiences evaporation, precipitation, ground seepage, and aquifer flows, in addition to its dominant gravity-induced current. A tree has flows which originate at leaves (photosynthesis) and roots (water, mineral sourcing), as well as elsewhere (flowers, parasites and symbiotes, community flora and fauna). Similarly, evolutionary trees represent not only ancestral inheritance, but cross-species gene transfers -- bacteria, viruses, mitochondria, even other higher-order organisms (generally through an intermediary).
A true ontology to me is a largely nondirected graph. This may be a union of several directed graphs, a region of low-directedness within a larger directed space, or (fairly rarely) a near-universal truly nondirected system. Given that even cosmological megastructures are defined in terms of attractors and repellers, that is: gradients, truly nondirected spaces seem. likely rare. Though that's describing physical entities, conceptual spaces seem to me similar -- at least analogous, perhaps even more than that.
A tremendous risk in conceptual spaces is to equate some gradient with a moral, ethical, or social value gradient. This isn't -always_ a mistake, but it very frequently at least obscures more than it reveals, and can cause tremendous harm. The trait and tendency seems quite innate, dating. to earliest histories and likely earlier in the sociological and anthropological. It's all but certainly part of our neural wiring, "human nature", if not far deeper than that: a fundamental trait of representational modelling systems operating under constraints of perceptions, models, prior data, and processing and response capacity. Hierarchical value judgements are, by fundamental constraints of information systems theory, necessary (and very flawed) heuristics.
Or in fewer words: all models are wrong, some are useful.
Because both personal and sociocultural identities become wedded with values, they become rigid and defining. Good if certainty, speed, and consistency are required, not so much when flexibility and adaptation are.
In the context of TFA (and yes I'd submitted this): both hierarchical and ontological constructs are useful. I most often tend to think along the multi-hierarchical model -- that there are numerous centres, attractors, and repellers, with some phenomena behaving as both: a star or galaxy radiates light whilst attracting matter -- the same phenomenon is both a source and a sink.
I see networks of elements, trends, or traits, often with gradients not only of intensity but of complexity. This ... seems to serve fairly well.
Also worth noting: it's fascinating looking at classification schemes throughout history and which of those had central organising principles now seen as utterly unfounded. As well as some which have survived, or at least strongly suggested modern schemas.
For informational classifications associated with physical records such as the Dewey Decimal or Library of Congress Classification, a key contraint is that records must exist within physical space, at one and only one location. Looking at other classification systems (say, the LoC Subject Headings), this constraint does not exist, and works can be described, non-hierarchically, under multiple subjects simultaneeously. At the same time, many of the subject sections themselves have a strongly hierarchical structure, though also with notable idiosyncracies within specific areas. The law classifications, to my mind, most especially so.
Often, I find, hierarchical taxonomies are “the box” I need to “think outside” of.
Consider supporting him on Patreon: https://www.patreon.com/quantumcountry
Apparently the note-keeping system is a work in progress:
> PS: Many people ask, so I’ll just note here: no, I haven’t made this system available for others to use. It’s still an early research environment, and Premature scaling can stunt system iteration.
I discovered Roam https://www.roamresearch.com/ and then org-roam https://github.com/jethrokuan/org-roam .
Roam looks closer to what's on the website, but org-roam would probably fit better into my existing note taking workflow.
[0]:https://notes.andymatuschak.org/z4SDCZQeRo4xFEQ8H4qrSqd68ucp...
For example, if TV Tropes switched to an interface like this, I bet way more people would get lost down rabbit holes, and they'd go deeper and last longer.
Admittedly, I'm not much of a note-taker, let alone an Evergreen note-taker, and so far I haven't been sold on the idea. Essentially, I'm just too lazy. (I've found a lot of other very insightful information in this quasi-blog, though.)
I'm more hoping for a good neural interface to come out within the next five or so decades, so that this whole process can happen with very little effort and work almost automatically. Potentially insight-generating prior thoughts are pretty lossy when they're just in your head, as you describe it, but a neural interface and associated organization system could possibly eliminate this lossiness problem. I acknowledge it may take a lot longer than five decades before such a thing is practical and seamless, but it's just a hope.
At the end of the day, what I think I personally want right now is a hybrid note-taking, list-making, bookmark/document-organizing, mindmapping, knowledge base/wiki, table/chart-making, scheduling, planning app with an interface similar to this one, where it's easy and fast to follow different nodes, see how they relate, and unwind the stack at any point. I understand such a project is probably way beyond the scope of anything you're trying to do, let alone something you want to build a whole business around.
For reference, a lot of what I do is investigative and research work (generally centered around network security). This rarely involves long-form prose, and is more like trying to map and discover connections between lots of different kinds of small entities and findings. But I'd also find this valuable for more typical business use cases, like what Notion is generally used for.
Basically, I just wish apps like Notion, Coda, and Nuclino would implement an interface that's as smooth and useful as this one. These apps are all basically just trying to clone each other and are using interfaces that could've been designed in the 90s, rather than trying to fundamentally alter the experience.
This is so very true and precisely why PL type systems (in their common usage, which involve creating ADTs/classes/records -- taxonomies) are so bad for the necessary creative evolution that software systems must undergo to keep up with the dynamic real world.
Dynamic entities, untyped maps, allow for creative evolution; type-oriented ADTs ubiquitous in typed PLs blind you and _bind_ you in exactly the way this post describes.
Just out of curiosity, do you significant experience in a statically-typed FP? What’s your favourite language right now? Your comment reminds me of Rich Hikey’s famous talk, so I would guess Clojure?
That said I think
> I feel learning Haskell was worthless.
is a little harsh. I suppose b/c I don't think learning (anything) is ever worthless.
Yes I'm a Clojurist, per se. I agree with even Rich Hickey who will even say that it's fundamentally not about the specific programming language.
However I do think Haskell falls into a different category. Most PLs at least make pragmatic concessions. PLs with strong static typing take a fundamentalist approach that does not give any flex and therefore I find anti-pragmatic.
But why not learn a strong static PL? Why take my or anyone else's word for it? The best way to discover the right tools is to pick them all up and wield them. If outcome is your goal, if productivity is your sincere goal (as opposed to something else like intellectual curiosity or purposeful rigidity...b/c you're, say, afraid of change) then I do think you will gravitate away from static typing in many cases. Especially in the prevalant case of development of web and distributed data systems.
An example would be how a corporate wiki/confluence and sharepoint sites are basically documentation landfills that support labour intensive ad hoc processes without a lot of intelligence. In contrast, a library of functions, microservices directory, data dictionaries, tool kits and categories of processes are an abstraction layer over those landfill elements that enables clarity and scale.
The skill and intuition to aggregate things into abstractions isn't common, so most people don't rely on it, but when you have it, it's really valuable. A rule I use in building ontologies is that a thing without a type is just a poor design decision that leads to conceptual debt, and a type without a thing is just a thing.
Parent-child is hierarchy. Associate is undirected peer. Source-target is less useful in general, but it roughly represents a directed peer relationship (e.g. A exports this good to B, and B exports that service to A -- there's a direction).
Associative relationships are very easy. Bob is friends with Mary, and with Pete. But they are also very loose and do not convey any information around belonging/precedence/ordering, which is a major downside. Associations don't have sufficient representational power for capturing structures.
Hierarchical relationships are very useful for expressing structure. For modeling real knowledge, you also need the ability to represent multiple hierarchies. For example, Bob is Dan and Chloe's father (parent-child in one context), and Bob is also Beth and Joe's boss (parent-child in another context). It can also happen in reverse -- Beth is Bob's superior in a social club they both belong to (yet another context). Multi hierarchies appear everywhere yet we don't often recognize them as such.
Multiple hierarchies are sometimes captured through tags (e.g. Gmail categories) or in the UNIX file system, via symbolic links. But apart from those examples, I haven't seen any widespread recognition of multiple hierarchies.
Most techniques/software tend to be designed for single hierarchies (e.g. outlines). This simplicity appeals to how the human brain processes information. It also only assumes a single context at a time which may be too simplistic and underpowered in many situations.
I feel like this is missing something, namely in modelling relationships where a single child can have an arbitrary number of parents in a single context (or source-target without cycles.) I don't think that's adequately captured by multiple-hierarchies when you can't break the parents into discrete categories (e.g. mothers and fathers) and thereby into discrete hierarchies. If you try to model a DAG like that as multiple hierarchies by somehow imposing an order onto the set of parents, you'll get yourself into a quagmire.
So I'm still not sure I totally get the objection -- please help me out here. In my mind, multiple hierarchies are represented by a single graph.
When one reasons about the system, one will naturally only consider single hierarchies at a time for simplicity. The way to do this is center yourself on a node at a time, and then from that vantage point, traverse the node in different directions.
In the system, each edge belongs to only 3 categories: P ("parent", directed), A ("associate", undirected), S ("source", directed). We're only considering hierarchies, so we'll restrict ourselves to "P". Each node can have an arbitrary number of relationships with other nodes. A family and work relationship could look like this.
You -P-> your kid 1
You -P-> your kid 2
Mother -P-> You, Sister
Father -P-> You, Sister
Boss -P-> You
Boss -P-> Colleague
Company President -P-> Boss
Company -P-> Company President
Seems to me it should be easy to reason about multiple parents in different contexts -- they all belong in the same graph.
Wikipedia sort of does this with its Categories box at the bottom of every page, but Wikipedia only has one kind of relationship category: P.
Nonhierarchical associative structures tend to hit a complexity explosion threshold after a time (though arguably the same criticism might be made of hierarchical classifications) in which categories simply multiply.
https://en.wikipedia.org/wiki/Wikipedia:Contents/Categories
The solution I came up with is a personal knowledge base made up of files assigned with multiple categories. Categories form a hierarchy and the system strictly preserves this hierarchy and takes it into consideration with minimal user intervention: https://github.com/amitnovick/catalog
Read about my journey and thoughts on it here: https://dev.to/amitnovick/a-catalog-of-your-files-2nd7
That said, there are a number of cases where hierarchical taxonomies are vital in building information systems. Some examples.
A use case where you need a way to guarantee that a space is completely covered without duplicates (important for accounting, or creating menus). Having a single non-overlapping reference space (like a map) is critical for clear communication.
A use case where you need to capture some semi hierarchical knowledge from domain experts, e.g. an org chart, or the parts of a car, or the parts of the brain.
Org charts are the perfect example of the tradeoff. Consider the US Department of Defense (don't actually do this you will loose your mind). The chain of command is famously a single parent hierarchy, and if it is not, it is a sign that something can go wrong due to conflicting orders. However, let's say I wanted to know which branch of the military funded a certain research project based on the office that wrote the RFP. This question is pretty much impossible to answer for an arbitrary RFP, and the time and effort needed to maintain the full associative ontology and keep it up to date is stupefying huge, AND it is not even clear that such an ontology would actually be pointing to anything that was actually meaningful in the real world (beyond ill defined social and economic relationships between arbitrary groups of primates).
Hierarchies are an effective way to collect knowledge from domain experts in a systematic way that does not require them to know that they are writing down a bunch of axioms, but instead can just draw a diagram -- multiple hierarchies are very important here, because hierarchies from different experts usually agree at a high level, and then differ in the details, often due to the use case for the knowledge or from the experimental perspective, not because there is some fundamental ontological difference. In this sense having multiple hierarchies is a way around the problem of ambiguity in the meaning of "is a".
https://www.perell.com/podcast/andy-matuschak