Symmetrical Conceptual
According to some new research, synaesthesia can be induced by hypnosis.
Synaesthesia is an abnormality in some people that causes them to mix up their senses. Some people hear colours, taste music. Then it turned out people could also link conceptual ideas to the senses, some people would see colours when they see a number. It’s now thought that this kind of rewiring on concepts accounts for savant abilities; one savant who remembered very many digits of pi, later said that he sees numbers like a terrain topology and flying through that terrain allows him to remember all the numbers.
The discovery that you can induce it comes at no great surprise to me. Programatically the brain seems to be in a permanent state of self rewriting (called neural plasticity) and when you turn off certain input validations with hypnosis, you get to make the brain do weird things like link ‘2′ to ‘yellow’.
This doesn’t at first seem like such a useful ability; but linking one concept to another is immensely useful for creating systematic knowledge of how things work. Think about a wheel, we link it to ’round’, ’spin’ and ‘roll’ which tells us all we need to use it as a mechanism by instantly indexing a concept to it’s uses we save vast amounts of thinking time.
This neatly brings us to programming. Programming seems to be an intensified version of this conceptual linking skill. Being able to conceptually pull functionality and mechanics (APIs) together. Being able to create new mechanisms, and so on.
It will be interesting to see if we can use this information about brains to better program our interfaces. When you call your method gwaaztze(), that’s not very useful because you need to create an unconnected reference (unindexable) against it’s mechanics and functionality to remember what the hell it does. But if we follow existing concepts we could rename it to get_content_pointer() and we can instantly place it’s mechanical properties without looking it up. We may still have to look up it’s precise definition, but at least we can get a topology of the API without a manual.
I also think this is why advanced none technical users in ubuntu like to remap ‘apt-get install’ to just ‘install’ on the command line. To them it makes no sense that you would use the noun of the package system, followed by two verbs that almost mean the same thing. It should be obvious or not important what the package system is, and any one verb should be enough, say ’software install [package]‘.
Perhaps what we mean by ‘ease of use’ outside of ’stop trying to use it exactly like windows’ means using existing conceptual links in a way that gives an indication about what the program is trying to do and thus allow our users to index the mechanics and functionality without having to create static memories of commands and interfaces.