Inter Caetera


How I See The World

It’s becoming increasingly difficult to talk about the world with others. Sometimes it feels like the people we talk to inhabit completely different universes in which they perceive completely different truths through completely different lenses.

I’ve heard multiple explanations and multiple heuristics on how to approach this sorry state of affairs in order to not lose one’s sanity. One was to only say about what things are, and how one does something; refrain from saying how things should be and how one should do something. But that’s just kicking the can down the road: now, more than ever, we can’t agree on what things are.

That’s not particularly surprising, because most people seem to never think about how we actually perceive what things are. They simply assume that others see the world as they do for most of the time, and only do a double take when faced with a disagreement. I do not mean to make it seem like it’s a deficiency on anyone’s part — it’s actually fairly useful and understandable way of operating.

For most of history everyone was surrounded by those who were brought up and educated in the same way. And since most people used to have real things to do in the real world, the freedom not to have to think about how others perceived the world had a large degree of utility. If we can agree on the meanings of the fundamentals, we can be free to explore more complicated ideas and build more complicated structures, leaving the minutiae behind us. It’s easier to build a bridge when you don’t have to ask “what do you mean by…” every couple of minutes.

Many still operate under that assumption of common terms, even though it is evidently no longer true. Why?

The analytic knife

Describing something is a very dangerous activity. Whenever one describes something, what is actually done is slicing up reality into distinct parts with a very sharp intellectual knife. That knife is so sharp and so swift that sometimes it’s hard to even see it moving.

When one describes a part of the world of which one is conscious, one takes that deadly knife and attempts to name the parts which make up a whole. This and that. Here and there. Black and white. Now and then. Slicing the universe into bits. And the bits eventually end up being very small. They run all the way down to the essence of our being.

Sometimes this is done consciously. For example, I can take a look at my desk: it consists of the top surface on which everything readily needed rests, a few shelves, a cupboard and three drawers. This is a perfectly fine description for me, as a user of the desk.

However, were I to ask a carpenter to build a copy of the same desk, I imagine he would perceive it a little differently. Most of the desk is made of wood, that’s no problem, but there are also drawer slides and hinges which need to be ordered from a metalworker. The handles for the cupboard and the drawers are identical and made of plastic, plus there are bits in the slides which are also plastic, they need to be sourced from somewhere else as well.

And then I can ask my wife what she thinks the desk looks like, and she might tell me that it’s brown - the colour matches the bookshelves, - quite large, sturdy and that it fits the rest of my office well.

Seems like the desk can be named and organised quite differently depending on who looks at it. It can be sliced up in a number of ways, and it can be put together with other things, too, like the shelves and the office. What is obvious, though, is that this process happens all the time. Every nanosecond in someone’s mind somewhere, the knife cuts something. Slicing and assuming that everyone else’s knife slices the same way is asking for trouble.

Deep cuts

There’s no particular reason to believe that the knife ever stops working. The ancients believed that it stopped at the atomic level. The name Democritus gave to the fundamental particle of the universe means “indivisible,” or, more literally, “uncuttable.” We might have entertained the thought of atom’s immunity from the knife until the 1900s, but, with the discovery of the subatomic particles, the analytic knife proved to be sharp enough to cut even through the uncuttable.

The cuts run deep, to the very foundations of reality. But there is also the inverse of the knife, when things are put together in order to form larger structures. The way everyone understands the world is a network of cuts and seams. Cuts start at the top: I see a desk, then cut it up into the drawers, planks, screws, splinters, all the way down into grains of sand smaller than the smallest subdivisions of quanta, clouds of tiny dust. Seams start at the bottom: quarks, protons, atoms, molecules, cells, all the way to The One, a monistic perception of reality. Somewhere, sometimes, the two meet. The precise way this structure works is different for everyone. This is fundamental to my worldview.

We can move up and down that tree of abstractions. Can we move sideways? What if we applied the knife to the nature of analysis and synthesis? There are, after all, certain groupings of cuts and seams which seem to be more evident than others, more easily discovered. In my mind, that kind of grouping is called an abstraction.

Abstract thinking

I think of abstractions in terms of packing. Out there is a big world, and here I am, with my small head. I need to meaningfully pack the big world into my small head, so I cut it down and stich it up into a form that fits. An abstraction is just that: a way to fit information about the larger world into one’s mind by means of organising principles in which the specks of tiny dust of reality interact with each other.

Abstractions are plentiful and ubiquitous to every creature. They start at the most fundamental, pre-intellectual level of everyone’s and everything’s interaction with reality. The way sense organs transform information about photons hitting the retina or particles hitting the skin is possibly the one which is most understandably low-level, that goes up and up all the way to completely immaterial ideas like mathematics and theology.

However, every abstraction (except one) is imperfect, because every abstraction is limited by our experience as creatures in the world. Only divine knowledge of the precise state of the world can produce an abstraction which precisely explains everything that goes on in it. However, that knowledge is not available to us, since we as humans experience the world through our own abstractions. Nor would it be available to any system or simulation existing in the material universe — it can only be available to God who is above and beyond it.

As such we can only evaluate abstractions based on how well they correspond to reality and their interaction with other abstractions. Typically, these days, this is done by means of the scientific method: we take a higher-level rational abstraction and see if it matches lower-level empirical evidence. Understood like that, science is basically a process of looking for imperfect abstractions that let us understand the world better and make predictable judgments about the future.

Truth and usefulness

This is why I have a hard time accepting basically any scientific theory as “true,” because in my framework there are basically two ways the word can be understood.

It can either be applied inside of an abstraction to judge whether a certain idea abides by the constraints and principles of the abstraction itself. For example, we can say that the statement “one is more than two” is true within the realm of mathematics, because the definition of “two” is that it’s one more than “one”. Within the abstraction of Newtonian dynamics we can also truthfully claim that velocity is distance divided by speed. Most people would also agree that the sentence “the Sun rises in the east” is true.

However, these statements become more difficult once we leave their respective abstractions. While conceptually one might be more than two, in the kitchen, one clove of elephant garlic is definitely more than two cloves of softneck garlic. The way one operates in the kitchen is completely different than one does mathematics. The statement is no longer “true” on its own, it becomes meaningless. Like a lemon tree planted in the Arctic, it has nothing to support it and dies. Once you add the theory of relativity, the formula for velocity in Newtonian dynamics no longer works for cases close to the speed of light. The idea of “sunrise” isn’t all that useful in astrophysics.

Hence, the second way the idea of truth is applied is as a blanket judgement of an entire abstraction and how well it corresponds to reality. If the abstraction can be used to predictably achieve desired outcomes often enough that it passes a certain arbitrary threshold, it is judged as true.

However, from the confusion of the two types of truth arise most errors in philosophy. That’s why in my view it’s better to evaluate the correspondence of abstraction to reality in terms of usefulness. An abstraction is more useful than another if it leads to more predictable outcomes in a given situation. A tomato might biologically be a fruit, but saying to a chef that “well, tomato actually is a fruit!” should be met with a polite, yet stern, request to leave the kitchen.

Programming as philosophy

I did not choose the word abstraction without a reason. In programming we often work with abstractions, and in that discipline the word is mostly understood as a logical generalization of common functionality. We create abstract classes and abstract things out all the time.

But once you look at the world through the lens of cuts and seams and how they group together, it becomes a useful and eye-opening tool to map the world to code. It’s not an easy thing, though.

Since everyone sees the world through different abstractions, it requires a great deal of understanding to accurately grasp how the users and the designers expect the software to be used. This ability to put oneself in the head of another and try to understand how his abstractions might map to his view of the world I call intellectual empathy.

In the course of the work of a programmer it is not only required to empathise with the designer, but, more crucially, with the users. This can sometimes lead to conflicts where certain individual users might have diverging ideas of how a functionality should work. It is on us, as software craftsmen, to reconcile those conflicts and to potentially introduce solutions which might lead to the users to reevaluate their abstractions.

There is also, of course, the matter of which abstraction we choose to map reality into — a sort of third order structure of abstractions (which themselves are a structure of analytic cuts) which we call a paradigm. In philosophy, analogously, we could call it a school or perhaps an ideology. It’s possible to work from the very fundamentals of programming and begin at the level of machine code, but even for that we added the abstraction of hexadecimal representation of bits. Up a few levels and we get to choosing a high-level language, with objects and classes, or maybe functions and monads, following one of the well-established paradigms.

When we make abstractions by the cuts of the analytic knife, there is a certain quality to them. That quality is impossible to perceive, it’s impossible to even talk about, but it’s undoubtedly there. That quality is what is most commonly understood as elegance. An abstraction is elegant if it maps well to other abstractions, is easily understood and can be easily extended or reused. For example, our grasp of the requirements of a particular software project can be said to be elegant if it neatly and without much explaining maps onto code and then to working software. Conversely, it is inelegant if we need to do many transformations and mappings to bring it to the line of thinking that everyone involved — users, designers, programmers — can understand.

You can’t really talk about elegance of abstractions in a way which produces anything objectively useful because it is so general. I suppose the closest anyone’s ever come to it were the authors and practicioners of DDD, which emphasises making the code reflect the business domain as much as possible, but even that fails to capture the question of elegance in its entirety.

All of this working with abstractions is of course something that’s been done for thousands of years by philosophers. They sliced up the real world with the analytic knife and piled up abstractions in order to answer the most fundamental questions about existence. In the process, they made our lives easier by coming up with processes that led to discovery and invention. This is precisely what programmers do these days, however instead of waiting years or centuries for the impact of our ideas, we get them in an instant — depending on the speed of the compiler.

This is how programming, Christianity, and philosophy has impacted my way of seeing the world. I know most people don’t think like that, most people don’t even need to consider their own epistemology and what they think is true. A large part of what we think is true in the modern world, especially nowadays that the influence of Catholicism on our thinking is lessened, doesn’t really follow from anywhere. Like cut flowers, it has lost connection with its roots and under closer scrutiny is found wanting. It’s sometimes valuable to stop and think why the roses don’t smell like they used to.

Divider Divider
Back to top