Heidegger, Cookies, and NoSQL
Life with a toddler is always a strange combination of charming, frustrating, philosophical, exhausting, and funny. The other night, my wife tried to give my daughter a cookie. “Cut, cut!” my daughter said. So, my wife took the cookie and cut it in half. “No, no, no!” cried the toddler. “Okay, which one?” said wife, holding out a whole cookie in one hand and the half cookie in the other. “Two!” said the toddler, grabbing a cookie with each hand. She was finally happy.
But I couldn’t help but notice. “You don’t have two,” I said. “You have one and a half.” Naturally, she ignored me.
In “Modern Science, Metaphysics, and Mathematics” (1962), Martin Heidegger asks what separates modern science from the pre-scientific inquiry of the Greeks and Middle Ages. Heidegger accepts the suggestion that the difference is that modern science is “mathematical,” but he doesn’t want to just conflate “mathematics” with the matter of counting and quantification. The ancients could measure things just as well as the early moderns did. The difference is deeper than that.
He writes that,
the mathematical is that “about” things which we really already know. Therefore we do not first get it out of things, but, in a certain way, we bring it already with us. … We see three chairs and say that there are three. What “three” is, the three chairs do not tell us, nor three apples, three cats, nor any other three things. Rather, we can count three things only if we already know “three.” In thus grasping the number three as such, we only expressly recognize something which, in some way, we already have.
In a very real sense, I never taught my daughter “two.” She just started saying it one day recently, presumably because she was copying one of us. I think to some degree, to her “two” just means “I have something in each hand.” She tends to prefer to have something in each hand, and once she does, she says, “Two!” and is happy.
What’s more, even if we had explicitly tried to teach her “two,” at best we would have only been able to teach her the word. Without already having the concept of twoness, it would be pointless to show her two of this and two of that. Two intrinsically means something which is both the same and different. It is the same as being in the same category (cookie) but different as being different individuals (the whole cookie and the half cookie). Pure difference is not two, but merely one and another one. Pure sameness is just one. If you can read this, you probably understand what I mean by it, but there is no way you could explain that two is sameness-in-difference to a toddler. They just have to already know what twoness is of themselves, and as a caregiver, you can just give them a word for it.
I have spoken in front of my dog almost as much as my child, but the dog still struggles to understand “sit” and has made no apparent progress in learning “two.”
Heidegger goes on to argue that the mathematical nature of modern science consists in “a project of thingness which, as it were, skips over things.” Counting requires categories—a sameness in which to subsume difference. To my daughter, because she has two hands, the two pieces of cookie are two. But to me, as a logical adult who learned fractions in third grade, it is a whole cookie which is one, and the half cookie is only a half, not another whole. Neither of us is necessarily more right than the other, but we are approaching the problem with different a priori categories.
In data visualization, we distinguish between “categorical” scales and “quantitative” scales. Suppose we have a chart of dessert preferences. It doesn’t make sense to draw a line from “18 votes for cookies” to “12 votes for cake” because the scale is categorical, not quantitative. We can represent this as a bar chart, but not as a line chart because “18” is quantity where “cookie” is only a quality. But if we instead charted desserts eaten per day, suddenly we can draw a line chart between the days because we are given quantitative units for both X and Y axes.
Heidegger saw the shift from ancient to modern as a shift from qualitative to quantitative and from specific to universal. For the ancients, the four elements were completely different materials (earth, air, water, fire) manifesting different qualities (dry, hot, wet, cold). You couldn’t possible draw a line connecting them. For the moderns, everything is on a common scale of mass and location. It is no coincidence that Descartes was both the father of modern philosophy and the father of the Cartesian coordinate system. If we think of modern science as being more experimental, Heidegger argues that this is a consequence of its quantification:
Modern science is experimental because of the mathematical project. The experimenting urge to the facts is a necessary consequence of the preceding mathematical skipping of all facts.
If we have first skipped over all the individual facts and qualities in their irreducible complexity, then we must go back and instead observe the numbers of their preassigned categories. If I overlook the fact that this cookie is cut and that one is whole, all that is left is to say that they are “two.”
Heidegger characterizes modernity as the age of method:
the procedure, i.e. how in general we are to pursue things (methodos), decides in advance what truth we shall seek out in things.
Method is not one piece of equipment of science among others but the primary component out which is first determined what can become object and how it becomes object.
Computers, which began their domination of society late in Heidegger’s life (d. 1976), exemplify this.
To me, the heart of the web is the form. In the form, we create a standardized input, a schema which preclassifies our data into its abstract essence. A web application is typically just a fancy, interactive form (CRUD) and a web page is just a templatized Mad Lib representation of the stored data. The difficult part of being a web developer is trying to run out in advance and anticipate all possible data, all possible inputs and outputs, and constrain it to something like a reasonable, understandable schema with a flexible design.
When it comes to data, web developers have a surprisingly Platonic streak:
You always have a schema, even if you don’t statically type it.
You always have a schema; where and how it’s defined is the only question.
You always have a schema, it’s just a matter of where it’s located: in a database, or in your application code.
Developers treat the schema like the sculpture hidden in the marble: once we clear away the defilements, the schema will show itself. The challenge of development is to take the Platonic, ideal schema out of the realm of ideas and somehow get it into your computer so you can actually use it.
The word “method” comes from the Ancient Greek μέθοδος meaning “following after” from met (preposition “along”) plus hodos (“the road”, “the way”). The modern feeling is that if we just follow the right set of practices and procedures, everything will happen in the ideal way as we follow the road to progress.
If today we live in the age of method, dominated by machines that exist to preclassify us and everything around us, it may be time to look at another tradition for the way:
If a method can be explained, it will not be eternally applicable
The power of the modern method is its universality, but the danger is skipping over things. We skip over things at our own peril because the anomalies we pass over may come back when we least expect it.
I think the appeal of “schemaless” databases comes from something like this. We create perfect cookiecutter into which to mould all of our future data, but then something comes along and the method which we had so meticulously explained to the computer is no longer applicable. As long as there is still a developer, still some human in charge of telling the computer what it should be doing, this is fine, but so soon as we say that some software is done and walk away, the world changes, our software no longer fits, and the cookie crumbles.
A “schemaless” database per se is not the solution. At best, schemalessness is just a trick to trade ease of initial development for more time spent refactoring later. True schemalessness comes from being human and adapting to changes as they come instead of trying to anticipate all possible changes later. We want the perfect methods for our data and the perfect routines for our lives, but the messy business of reality always threatens to overtake and exasperate us.
Whether dealing with a toddler or managing a website, the ideal is to be like the zookeeper in the Zhuangzi:
狙公賦芧曰， The monkey keeper, once said, giving out acorns:
「朝三而莫四。」 “In the morning I will give you three and in the evening four.”
眾狙皆怒。 This made all the monkeys angry.
曰：「然則朝四而莫三。」 He said, “Well then, in the morning four and in the evening three.”
眾狙皆悅。 This made all the monkeys happy.
Bend with the changes, refactor when appropriate, try to anticipate as much as possible, but know that something will always slip through. Don’t be afraid to change directions and deliver four in the morning and three in the evening if it makes your clients happy. Most of all, try to see if you can get a chaos monkey to travel with you and shake you out of your routines and keep you from skipping over what’s most important.