I have been going through an intense period of self-discovery and reconstruction. I realized that the path in life I have been following for the past several years is not working for me; it is not resonating with me, and it is taking me somewhere I don’t want to be. This realization was revealing itself to me at the same time as a complicated and heartbreaking end to a (short) relationship unfolded, and everything I believed crashed down and came into question. I was a programmer with no desire for a computer, I was a calm communicator behaving violently, I was an atheist experiencing God.
I believe that I am now picking up my pieces and realigning with my dreams — dreams I had forgotten or dumbed down. I’ve believed this several times during the past weeks, only to find another layer collapsing beneath me, so I may be full of shit. But all I can do is to use the best information I have now. It’s a very interesting, emotional time for me.
One of the axioms that crashed during this experience was the idea that I have any control over what happens in the world. This began as a grounded life principle: my attempts to control life only led to more suffering, so I should surrender to the flow of the world. It percolated up to my intellect, combining with the studies of physics I was using to distract myself from my emotions, eventually leading me to the confusing world of philosophy that I love to entertain.
The idea that there is something physically more to a human being than a physical system is something I consider absurd. The conventional non-spiritual idea is that you put more and more molecules together and suddenly a light turns on called consciousness. Humans have consciousness, dogs probably do, lizards perhaps not as they are simple stimulus-response machines, bacteria have no brains so certainly not. Associated with consciousness is the ability to make decisions as an independent entity: free will. Cognitive scientists are madly in search of the magical light that turns on consciousness, a holy grail in our search to understand ourselves.
My developing position — I won’t call it a belief, but I’ll say I am considering it and its implications seriously — is to reject the above narcissism. I see what we define to be consciousness as a gradual increase in sophistication of these biological machines. There is not self-awareness and self-unawareness, merely a band of sophistication in which we communicate that there is a definite “I” and that it is aware of itself. We can communicate that to ourselves, by having a little simulated conversation in our brains in which we say such things to some abstract person.
My experience, particularly at the end of the aforementioned relationship, showed me that a great deal of my self-awareness — my free will — is a hoax. I listened, I reasoned, I concluded the best action. I watched as a ridiculous prediction took hold of my reasoning process. I watched as I carried out, in a state of mental contradiction, the opposite of what I had concluded. I watched myself crying, simultaneously astonished and unsurprised by the way things actually unfolded. I saw myself not as a single unified “I”, but as an ensemble of communicating (or not) decision-making machines, combined with a mechanism retroactively justifying my ridiculous actions.
That free will I was so convinced I had struck me as a process, always living a moment in the past, existing to analyze and retrain my unconscious decision making processes for the future. I was a sophisticated machine, but a machine. I am governed by the same laws as a rock tumbling down a landslide. When asking whether it is possible that I will not push publish in a few minutes and share my thoughts with the world, I’m expressing not a set of a decisions available to me, but a state of uncertainty about what my action will eventually be.
I was walking down the mall and had the strongest urge to pick up a brick and throw it through a window. Jail schmail, money schmoney, I just wanted to do something nuts to release the pressure. And I did not; I watched the urge pass, frustratingly, as I didn’t carry out the action I had pictured so strongly. I couldn’t; my consciousness is not a decider but a justifier, and the action was not there to justify. There was no immediate reason it could come up with for why I didn’t — I was even disappointed that I didn’t. One might view this post as the belated conclusion of my justifier of that situation — that it does not in fact have control of my actions.
I see the universe as a great continuous four-dimensional tapestry, that I have the capability to view only a little slice at a time. I cannot ground the idea that there is some “I” which can cause the tapestry to be altered meanwhile existing within it. What could “altered” even mean in this situation: altered from what? I have been seeing this as a physicist studying something external for quite some time, but to incorporate it, to understand it as something I am part of, is taking me to a whole new place.
On twitter I participated in the short snarky exchange:
@stevedekorte – Threads sharing state by default is like variables being global by default.
@luqui – state is like globals :-)
@stevedekorte – @luqui only shared state – which is why FP ultimately fails – it trades comprehensibility for shared state optimizations
@luqui – @stevedekorte, wow, sneaking “FP ultimately fails” as if an obvious truth in a reply to a Haskell programmer
@stevedekorte – @luqui, a bit like sneaking in “[all] state is like globals” to an OO programmer? :-)
@stevedekorte – @psnively @luqui my only issue with FP is the decision to trade expressivity and reusability for less state while calling it progress
The conversation goes on (and on) between many twitterites, having a fun but serious argument about this and that benefit of this and that style. Dynamic/static types come up, OO vs. functional, usefulness, mathematical foundation, learning curves; none of the standard artillery is spared. What irritates me about this style of argument is all the sweeping adjectives (1) used with no definition, thus impossible to support with evidence, and (2) synonymized with better.
In this post, I will draw attention to this irritating vocabulary, so that the next time you use it you can realize how little you are saying.
(Disclaimer: this post is not intended to criticize stevedekorte specifically, even though I identify two of the terms he used below. It was a long, typical programming zealot argument, and all parties involved were being equally dumb :-)
A person is expressive if he expresses himself — he has an idea and wants to write it down. So I would say a language is expressive if it allows or enables the programmer to be expressive. Languages that restrict expression are not expressive. So we have the following facts:
- Dynamically typed languages are more expressive than corresponding statically typed ones, because statically typed languages forbid you from expressing some ideas.
- Multiparadigmatic languages are more expressive than languages which are paradigmatically pure, because the former allow you to express yourself if you are not thinking within the framework.
- A language which you are fluent in is more expressive than a language you do not know very well.
By these observations, we might guess that Perl is the most expressive language, Haskell is the least.
Do you notice yourself already equating expressive with good, and thus perhaps feeling offended? Everyone wants an expressive language, right? Here are some reasons some programmers might not want an expressive language:
- Most of my ideas are made of bullshit. Have you ever had a great idea, gone to write it in your blog, and realized it was nonsense because you were unable to write it? So writing is less expressive than thinking. Is thinking better than writing?
- Every programmer has a different way of structuring their thoughts. An expressive language will bring out the differences in thought structure between programmers, and introduce impedance mismatches between programmers on a shared project.
I’m not arguing that expressiveness is bad. I’m just arguing that it doesn’t mean good, it means expressive.
A language “is reusable” (to abuse language a bit) if code written in that language can be easily reused.
This “obvious” statement is hiding something very important; namely, reused how? For what? We are in an unfortunate situation in programming: code is designed to be reused in a particular way, and if you want to reuse it in a different way you are pretty much out of luck. An OO widget library is designed for the addition of new types of widgets, but if you want to reuse a program written in the library on a new platform you are in for a lot of work. A functional drawing library is designed so that you can transform and export your drawings in an open-ended variety of ways, composing new ways out of old ones; but if you need to draw a circle you have to build it out of lines, even if there is a much better way to draw a circle on your target. (This is essentially the expression problem).
An abstraction will always expose some things and conceal others. Different languages enable abstraction in different ways, which makes exposing certain things easier and others harder. The zealot will reply, “but in my experience, real-world programs are naturally organized around <insert preferred paradigm>, and <insert uncomfortable paradigm> doesn’t support that style as easily.” I would suggest to this zealot to look deeper into the definition of “real-world” to discover its many facets of subjectivity. (What domain do you work in? Who architected the real-world software you have worked on, and what was their background? What kinds of programs do you consider not to exist in the real world, and what values are you using to minimize them?)
Easy to learn
A language is easier to learn than another language if it takes less time to become competent/fluent programming in that language.
I don’t think this one is as automatically synonymized with “good”. Haskell programmers are aware how much relative effort was required to learn Haskell, and are usually grateful that they put in the effort. But all other things being equal, a language easier to learn ought to be better than one harder to learn.
The deadly omission in the above definition is that people are doing the learning. A language is easier or harder to learn to a single person, and that is entangled with their background, their approach, and their ambitions. When arguing “X is easier to learn than Y”, I encourage you to add one of the following phrases to the end:
- for programmers who already know Z.
- for people with a mathematical background.
- for people with a non-mathematical background.
- for children.
- for me.
Or something similar. The following phrases do not count.
- for almost everyone.
- for people with a typical background.
- for people who want to do useful things.
I’ll close this section with this remark: Haskell is the easiest language to learn, because I already know it.
I know I am frequently irritated by many of these kinds of words, and I’ve only mentioned three here. But you see where I am going. Respect the values of your fellow engineers. If you are a polyglot and like a paradigm, it probably comes from a set of values you have — a set of things you consider important, and that differ from the values of others. Concentrate on that; communicate your values, and try to understand the values of others. If you have toyed with a paradigm and quickly lost interest because of some surface feature (I have — e.g. I will throw out a language without support for closures) or impression, consider the possibility that you like what you like because simply because it is familiar (other equivalent notions: easy, natural). Which is fine, some people like to tinker with their thinking patterns more than others, but remember that you have trained yourself to think in a particular way, so consider that your “objective” judgements about these ultimately human languages could be biased.
(For the record, that last phrase originally read: “all of your ‘objective’ judgements about one of these ultimately human languages are biased”, which is quite a bit stronger than what I had intended)
I have been working my way through Volume III of Feynman’s lectures, the one on quantum mechanics. A few months ago I watched his Quantum Electrodynamics lectures for the lay public and I was fascinated by the beauty and simplicity of the presentation. Now I want to dig deeper.
The basic idea is summarized in the quote (can’t find its source, probably Feynman though :-): “Everything that can happen, does. Physics is then reduced to the problem of finding out what can happen.” This is not philosophical many-worlds garbage postulating the existence of infinitely many alternative universes (I will get to that), but instead the interpretation of the Lagrangian form: if you want to find the probability amplitude of some event, you just add up the amplitudes for all the different ways it could happen. The generality of the principle is astounding, and making only very weak additional assumptions it is possible to completely derive the workings of electrons and photons (except for the mass of the electron, which is still a mystery). The rule is not just for electrons and photons though; those are just the easiest kinds of particles to get at. The entire universe works this way: the amplitude of an event is the sum of all the ways (including classically absurd ones) it could happen.
In the beginning of my studies, I was constantly tripped up by my conception of time. In the double slit experiment, a photon interferes with a version of itself leaving the excited atom at a different time. It was very hard to picture this when I was still attached to my idea of time and causality. This is the logic of the universe, not the dynamics. That is, we aren’t really computing the amplitude of an event to happen so much as the amplitude that, given some assumptions are true, some other thing about the universe will be true. We phrase the double slit experiment like this: given that this atom is excited at t0, what is the amplitude that this other atom is exited at t1? There is no notion of happening or the flowing of time, it’s just a connection between statements about the universe. Realizing this was an important step in my understanding. Of course, the way that these two atoms are connected does involve time — that manifests itself in the different “ways it could happen” and thus affects the amplitude.
Ok, so we have this logic which connects facts about the universe together as amplitudes, which are complex numbers. How do we take these amplitudes and get some information we can use? The rule is: the probability of an event, er I mean, a fact, is proportional to the absolute square of the amplitude. Simple enough. So you set up an experiment and calculate the amplitudes for all the different ways it could come out (you have to calculate all the ways, because the probability is only proportional, so you need to normalize them so they sum to one — I find this unsatisfying). Then you do the experiment, and what actually happens at the end of the experiment is one of those ways, proportional to the absolute square of the amplitude for that way.
This is extremely unsatisfying to me. Almost all of the resources I have used for learning QM have described it this way and left it at that. I’m pretty sure it’s because nobody really knows the answer to the next question: when, exactly, do you take the absolute square? If you take it too soon, e.g. before “the experiment” is over, then you will lose the interference effects and do not get an accurate answer. But you can’t just delay taking it forever, because then you only ever have amplitudes, not probabilities. There is this arbitrary barrier between the “quantum” world and the “real” world, and that’s when you take the absolute square. This is intentionally ignoring the idea that your experiment apparatus, your measuring devices, etc. are all governed by the quantum logic above as well, because that is too hard to think about. This is the piece I am determined to understand; I am interested in QM philosophically, not practically, so it is not at all satisfying to me to say “it works in practice, get used to it.”
The theory of quantum decoherence provides half of the answer. It shows how this interpretation of the barrier is equivalent to the state of the experimental apparatus (including the state of you, the scientist performing the experiment) becoming entangled with what happened in the experiment. Eventually the whole universe gets entangled with the result of the experiment and that’s what “really happened”. God got a bunch of amplitudes for the way the universe could be; he took their absolute squares, rolled the dice, and picked one. Now the arbitrary boundary has been pushed out as far as it can go — to the edges of spacetime — instead of being between experiment and apparatus. Quantum decoherence shows a sort of compositionality of this quantum logic. This is getting more satisfying.
I love it because it is right on the edge of my ability to conceptualize. All the “decisions” in the entire universe could go this way or that, and if they both lead to the same thing and have opposite amplitudes, they could interfere with each other and make that thing impossible. It is because the universe is a chaotic system, that small changes give rise to large changes, that we can’t observe quantum interference on large scales. These little decisions are very unlikely to lead to the same state. Entropy gives rise to the classical world.
When I get really deep into philosophizing, I explode into the annoying considerations of consciousness. Perhaps God did not pick a universe at random, but our consciousness did. Our memory must conceive of time linearly, it would violate entanglement not to, and that’s why we think there is a single “chosen” universe instead of the explosion of all possibilities. But whether all possibilities exist or there is a single universe chosen at random is likely not an observable distinction, so it is merely fodder for pipe dreams.
If there were some device that could measure some things about the universe, without disturbance, set up in such a way as to negatively interfere with itself when its measurements were “undesirable”, it could potentially control the way the universe would go. Now you see where the title of this post comes from. I have not been able to sketch this device as a black box, nor fully understand why it should be impossible. I suspect it has something to do with the uncertainty principle, the derivation of which I have yet to completely understand.
Quantum Mechanics is fascinating to me, and I am trying to keep my mind open to the deep, philosophical, passionate curiosity it invokes without descending into the insanity of a quantum crackpot. It is a challenge.
I am technically enrolled in classes again, but my heart isn’t in it. I have a middle school teaching practicum (awesome), and a writing class (great), and a larger dose of boring bullshit. Are these two classes worth $6,000? Hardly. I am on the edge of dropping out again. My life has been exploding into worlds of hippie love and search for purpose. I am high in the clouds, riding the shifting winds.
My writing class has shown me a wonderful outlet: freewriting. It is my source of peace these days. I sit down, get comfortable, and start moving my pen. Whatever happens, my pen has to keep moving. Sometimes I just repeat the same word over and over — I have filled up an entire page with a single word. Sometimes I go on a deep symbolic exploration of my subconscious, exploring dungeons of memories. Sometimes I write nonsense stories, sometimes I just write nonsense. Sometimes I focus on the shape of my letters, sometimes I write as slowly as I can, sometimes I write as quickly as I want. I have hypnotized myself in this book.
It is so much more visceral than thinking. I am forced to stay with a thought long enough to finish a sentence. A thousand other thoughts arise and fade away before I get to that blasted period. If I were just thinking, one of those thoughts would have brought me back to the deeply emotional experience of breaking up with a recent love, and I would spiral down for hours. But when I am writing there is more force, more intention behind the thoughts, even as I go off into an unconscious trance. A passing whim is less capable of derailing me. Or sometimes I will be in the middle of an exploration when she comes into my mind — Moriah, I write — and having acknowledged her presence I can return to where I was.
It is important that it be handwritten. I love watching the shapes of my letters change as my mental state changes; sometimes it looks like a doctor’s rushed scribbles, sometimes it is deeply sensuous and feminine. I can evoke a sense of liberation by ignoring the margins, filling up the entire page. I can get a sense of spaciousness by closing my eyes and letting my words land where they will. Sometimes I feel the urge to draw a picture (I have drawn very little in my life). I have freewritten on a computer before, but it has never felt like this.
My right brain is waking up again. Welcome back.