The Beauty Of Singing - From Abstraction To Emergence

#absurd-abstractions

2023-11-20

Elephant_side-view_Kruger.jpg
Picture of the Elephant from Wikipedia

00014-3353350733.png

"Hold on a minute, didn't I just click on an Article about Singing or something?"
You must think. Confused, as why I am showing you an Elephant and a majestic Caterpillar. Or was it the other way around? Nevermind. And neither of them can sing. Yet these two images are as related to this topic as the two things being depicted are related to each other.

"No." - You say. "Yes". - I say. Under the correct level of abstraction.
Abstraction?

This thing?

Pasted image 20231123145906.png
Picture of Kandinsky from Wikipedia

Yes! But also no... See the problem with the notion of Abstraction is that we as a society have been conditioned to a very specific association with the word of abstraction. And to throw a little meta into the conversation, we need to think in a more abstract way about abstraction. Before losing you, here is another example.

Pasted-image-20231123150148.png
Picture of a Category from Wikipedia

(Frankly, that was not the best attempt to keep you from leaving, but please stay, its going to be fun.)
Another thing that we associate very commonly with abstraction: The world of mathematics, and its weird kinks. Both of these things can only exist because of the human ability of "Abstraction". And on a more poetic note, both Art and Mathematics, which could not be more apart from each other share the same mechanism, to be useful for us, making them effectively cousins under the abstraction of abstraction. The common definition of abstraction is to reduce something to its essence. However I don't fully agree with this definition. When do we know what something's essence is? And wouldn't that imply that everything has effectively only one essence?
The better question would be: Essence in terms of what? This is where my definition begins. And how a Caterpillar and an Elephant are related and how they ended up in an Article about singing.

Abstraction is less about what something is, but more about the conceptual activity in describing something in terms of its properties. See under the abstraction of mechanical properties, an Elephant and a Caterpillar are the same thing. Both of them are very heavy. Yes? Good. Both of them have a big belly. Yes? Good. Both of them can move. Yes? Good. Both of them have a very flexible and strong protraction in their front, that they can extend and contract with multiple joints, to lift heavy objects? Yes? Ok, I will stop now. See, in the scope of certain properties these two objects are identical. The other properties that do not match, are ignored. A better word for this is in the scope of a certain level of abstraction. Now. Back to the Kandinsky and the Categorical conondrum. The first one is an abstract painting in the level of abstraction of color, shape, movement and composition. I think this particular piece is an abstraction of music. So we might have a connection to singing, finally. The second one is a piece of category theory. One of the most abstract concepts in mathematics. And here abstract does not mean difficult or hard to comprehend. But the most boiled down form of a concept to one aspect in relation to other objects. Meaning anything can be modeled or represented in terms of a category. And everything could become a category on that level of abstraction. But this article is not about category theory. It is about singing. So let's get to it, shall we?

Our mouth. Has many muscles. If we move those muscles we can open it. If we close it we can kiss our loved one. And if we open and close it we can chew delicious food. Our mouth is a good thing. It can do many different things with the same set of muscles. If we open it slightly in a very precise way and then start putting pressure on our vocal chords, depending on how we contracted our lips we produce a vowel in the best case, and a random utterance in the worst. Now if we start adding our tongue to our funny choreography, we can actually start articulating letters. And if we focus on a word tracing the contour of every single letter, we can actually start shaping words. We transformed moving our mouth to actually speaking. Just observe a new born, to realize how impressive of a feat that is! And yet when we speak we don't even care about how many different muscles we put into action and coordinate with each other. We just think in terms of the level of abstraction of speaking. This probably is the most useful notion of abstraction. Abstracting actions in terms of their application or context. Even though we don't consciously think about all these microscopic activities everytime we have a conversation they still take place. We effectively abstract over the implementation of speaking.
This is where I sneak in a reference to programming. Where abstraction is effectively used to separate application of a module from its implementation, or steps to produce the activity you want to use. There is another phenomenon taking place now, we move from one level of abstraction to the next. Now is the time where I have to talk about Emergence.

Emergence is the appearance of properties in the behavior of a system, which non of the constituent components of the system have by themselves. Let's make yet another example which has absolutely nothing to do with singing. Water. Another good thing. Water is wet. Yes? Good. But as anyone with a rudimentary chemical education knows, water is made out of the configuration of three atoms, one Oxygen and two hydrogen atoms, making it H2O. None of the atoms by themselves show the property wetness. On the level of abstraction of atoms, there is no notion of wetness. Only that of charges, negative electrons and positive protons. It is a property arising out of the lopsided distribution of charge, caused by having two hydrogen atoms close together on one end of the Oxygen, making a molecule of water polarized and therefore acting as a fantastic vehicle for reactions, making water not only wet, as in sticking to other substances but also act as a solvent, which enables all of life, in the level of abstraction of biology. The properties of water are an emergent phenomena arising out of the unique interaction of its elements. But here is the fascinating thing. Had the elements of water any other configuration, water would not exist. Now that seems obvious, but think about it. You can move your mouth in any possible way, as I have showcased with my little interactive call to action above. However it is only certain very specific configurations or interactions that result in comprehensible speech. This is when emergence takes place. It is not just the accumulated effect of the components. If you add sand to sand. You have now a lot of sand. But no Emergence. It is like Aristotle once said: The whole is more than the sum of its parts.

Back to singing. When we speak we can modulate our vocal chords to a certain cadence. Ew, cadence? Well we have our first musical concept, finally. However cadence in this sense just means the sequence of tonality to give emphasis to a part of our vocalization. Like when we ask a question, or want to make a point. Now again we could stretch out words, randomly, we can put the intonation of a question form in the beginning, confusing everyone. And yet if we string cadences together, focusing conceptually on a musical context and voicing notes with every breath, we start to sing. Some better than others. But that is not a matter of emergence. That is called practice. Now something else is happening, we moved up another level of abstraction. By adding a musical context to the activity of speaking, we now focus on different aspects. Words or parts of words become the vehicles for the articulation of notes. Sentences become melodies. We don't really pay attention to the speech component, as in a conversation with the main purpose being communication and exchanging information. Instead speech becomes an aesthetic experience, something we commonly call beautiful, under the abstraction of singing.

And for the attentive readers under you, you might have also realized by now, that this article is indeed not about singing. Instead singing became the vehicle through which I transported the concept of abstraction. A Metaphor. Yet another nice thing we can do with Abstraction. And not only was it about abstraction, but about its applications and common links to related concepts.
Which brings me to programming.

Programming is also one of those crazy human inventions that is powered by abstraction.
Abstraction allows functionality to be reusable, by implementing two things with a common denominator and just expressing their difference explicitly. This leads to less repetition of similar details or operations, enabling flexibility, efficiency and finally productivity . But abstraction is so much more. It is a mechanism for modeling complexity.
On the level of the machine, code is just an instruction set that is electronically converted to signals that change the inner working of the CPU, or another funny silicon component. But through abstraction it is also text communicating with a symbolic language meaning to humans. Enabling them to read it and reason about it in terms of the underlying processes. Now people have figured out that staying in that level of abstraction makes it very hard to reason about harder problems. Similar to how when we talk or sing we can't possibly focus on all our microscopic muscular interactions. So we started writing languages that translate to simpler languages. They are compiled. A high-level language is compiled to a low level language. However there is also languages that do not compile to each other having different levels of abstraction. C is a high-level language in regards to Assembly. While being a low-level language in regards to Javascript.

But what does that mean? For me it simply means that the conceptual framework in which the language is embedded is closer to the representation of the hardware. In C for example you have pointers with which you can specify addresses in memory. You could theoretically pass a function to another function by passing the pointer of that function to another. C also has multiple different datatypes representing the same concept differently in memory. Like numbers, having multiple different formats, for signed and unsigned numbers or different lengths, effectively being represented in totally different byte configurations in some cases. Yet in Javascript you can represent the exact same things. You create numbers and you can pass functions to other functions, while also not having to worry how they are or where they are represented in memory. We abstract over the details of memory. Yet jumping up this level of abstraction now enables us to thing in term of function chains, higher-ordered functions. Etc. As I said it is also possible in C, but through the raise in abstraction we are dealing with a completely different concept and can express this concept more idiomatically . But this is abstraction in terms of language design. We as programmer are also creators of abstraction on a daily basis. At least, we should be ideally. Hence this article.

As programmers we deal with the encoding of processes and systems solving certain problems for certain domains. As creative coders we use coding as tool of expression. Turning formulas to pictures. Backend developers model business structures in terms of the program's architecture. They first need to define what an account is for example, to then implement transactions. And teach the language that only knows what a number or a function is about these concepts. Effectively creating new levels of abstraction in which we can reason in terms of other concepts. Like singers we start putting together simpler steps and voicing something, focusing on a certain context. In this level of abstraction programmers are effectively singers which not only need to perform smaller tasks to produce something emergent, they also need to define every time the correct level of abstraction, while doing it, based on the context they work in. Programmers are singers. Not of notes. But of levels of abstraction.

Now that is beautiful!

Takeaway

When we program, similarly as when we sing, we should not be concerned about the lower steps of implementation and just focus on the conceptual background necessary to execute our desired task. To accomplish that we need to raise in level of abstraction, which requires us to often model that abstractions ourselves. But for me that is a necessary step to build efficient, scalable solutions, which are easy to reason about.