Bootstrapping

Crystal is a cool new language that I like. One thing that’s neat about it is that even the compiler (as opposed to the runtime libraries) is written in Crystal. That is, the compiler is written in the same high level language that the compiler is intended to compile! As an aside, this is really powerful and important for the future of the language, because of the way that it enables OOP programmers to contribute to the language core. Compare with MRI Ruby, which is written in C, so that you have a divide between core developers who can follow what’s going on in the C code and everyone else.

Anyway, I intend to write more about Crystal later, but here’s the quick point. A version of Crystal that has the compiler written in Crystal has to be compiled… by Crystal. So the way this works is that Crystal version 0.9.0 is compiled by a precompiled binary of Crystal version 0.8.0. If you install crystal-lang from Brew you will see this happening: it pulls down a tar file of 0.8.0 in order to compile 0.9.0.

Obviously this leads to a chicken and egg regress. What compiled 0.8.x? 0.7.x., and so on. So where did 0.1.0 come from then? It came from Ruby! That is, Crystal’s compiler used to be written in Ruby, before Crystal learned how to bootstrap itself.

It might seem that the regress stops there, at the point before the Crystal bootstrap, but MRI Ruby’s C code has to be compiled by something as well, for example the gcc compiler. And how is a compiler like gcc compiled? It is bootstrapped in another regress that goes back to an assembler. Honestly I get fuzzy at this point, but my understanding is that at some point in the past you arrive at humans physically etching circuitry or manually feeding in punch cards to machines. That is, we have to start the sequence before you can get to programs that generate other programs and machines that build other machines. And of course humans bootstrap each other, down through the generations.

Anyways, I know I just recapitulated the concept of the historical regress, from which Aristotle inferred the existence of a Prime Mover. What’s striking for me though is how this account of bootstrapping conflicts with the dominant sense in computing of infinite, cheap, meaningless reproducibility. Every program and document is capable of being reproduced millions of times across the Internet. No particular bit or line of code residing on a particular computer is special. But bootstrapping shows how all code is indebted to a certain lineage, even as it is also potentially free from that legacy to develop in new directions. Well, all the parallels and analogies flow from there.

Reading Habits

I read a lot. Mostly I read blog posts, picked out from my Google Reader stream. I read these all in a blur, constantly hitting the ‘j’ key (a shortcut for next), generally restricting my gaze to the headline, only occasionally stopping to read the article text itself. Often the entry is a description of a longer article or something involved like a photo gallery or video. I open these out into new tabs in my browser and continue on: ‘j’, ‘j’, ‘j’. Then when I’m done gulping down the stream I move on to the opened tabs, reading each article (or determining that I don’t need to read it after all), closing the tab, moving to the next one, from left to right. Sometimes with especially long articles I will click a button associated with the Readability service that will send the article to my tablet or my Kindle for reading later. This process can take from 45 minutes to 2 hours depending on my interest in the articles (this assumes that I’ve ‘kept up’ by ‘clearing’ my list on the previous day). On average my eye passes over something like 150 items, 150 headlines I have to make determinations about. It has the feel of a daily chore; it is, according to the local meme in my house, “important” ((As in “I can’t leave yet. I have to finish reading my feed. It’s important.“.)) .

In addition to this bizarre, harrowing ritual I read the newspaper. These days I am trying to keep up some hard-won French reading skills by reading Le Monde on my Kindle. I try to give about an hour to this. I have always found artifacts from other cultures, other things being equal, to be more interesting, simply because of the formal differences. A stupid pop song in another language is more interesting than a song in English where I can appreciate the lameness of the lyrics. A conventional comedy or action film from another culture can be enlivened by the strangeness of ambient details which take on their own sociological interest for me. If the dialogue or story are boring I can try to figure out what the characters are eating or the political context behind certain statements. Likewise reading Le Monde is like reading the New York Times, except that it takes longer for me to read, there are certain expressions and allusions that are mysteries to me, and it’s mostly about Europe. But it’s so fun to read! There’s an extra intellectual and creative challenge built in to the task of trying to figure out what the hell is going on. The best moments are when you pick up shades of gallic irony and humor in the diction, like the chicken company on the verge of bankruptcy in danger of being ‘plucked’.

Finally, I try to read longer texts. The truth is that my ability to read books has been in descent ever since college. I was seduced away by that stream of blog posts, also by a tendency to read magazines (I always read Wired cover to cover and used to do the same with Harper’s and Atlantic Monthly), also by video games, consuming television series and movies on Netflix and a general uptick in busy-ness. The Kindle has absolutely resurrected my desire and capacity to read books. It’s hard to say why. It might be something as stupid as a habituated preference for screens. The fact that it’s one of the devices that I bring everywhere and I resort to it whenever bored could be another reason. It’s also very easy to ‘stream’ books by purchasing the next book in a series or another book by the same author as soon as you’re done with a book ((That’s how I read the first five books in Song of Ice and Fire so quickly.)). This streaming of books is similar to the rapid “conquering” of a television series or a film genre that Netflix makes possible.

With the Kindle I’ve gotten back into the habit of reading long works, but mostly fiction. I read plenty of long-form political and sociological analysis on the Web, but it’s been a long time since I read a long nonfiction work from beginning to end (I’ve almost never read any history). This is something I’m fairly ashamed about, because I have a liberal arts education and a master’s in philosophy. When these institutions have pushed me to read texts for class I’ve been set ablaze by their ideas, perhaps even going overboard in the degree to which I incorporated their outlooks (in college I was in turn a Stoic, then a Humeian, then a Kantian, then a Hegelian, then a Nietzschean). I found writing papers in graduate school — trying to understand the system of the work and setting up a controversy to hang a paper on — extremely satisfying, extremely fun. I liked the experience of becoming a mini-expert on some marginal issues in the systems of these heavy thinkers. To this day some chance comment might elicit from me an impromptu (and probably unwanted) discourse about Maimonides’ theory of scriptural interpretation or my understanding of the Absolute in Hegel. But time moves on, these institutions no longer terrorize my life, and I’m not reading these texts anymore. I hate what this says about me and about the original importance of those texts for me.

The total impression this account should leave is that my reading is eclectic and geared toward the timely (blog posts and newspaper articles) and my longer reading is dominated by fiction. The blog reading in particular takes the form of a senseless consumption. With how much credibility can I claim that I have a lasting impression from any of the 150 items that I’ve encountered during my feedreader power hour? I’m pretty sure my brain is shutting down at some point, not actually recording anything, for want of any consistency in the subject of the posts. I’m probably just whipping up a batch of ADT ((Attention Deficit Trait, I read a post about it once.)) in there. I get the same feeling to a lesser degree with the other reading and video watching I do. I’m not doing anything with the information or content or knowledge that I’m taking in, I’m just collecting and consuming, and oftentimes I’m hurrying ahead with what I’m currently reading or watching in order to conquer the next thing. This is part of a larger pattern in my life, which is that I keep taking in more and more rich experiences (books and movies but also trips, intense work experiences, major life changes like getting married or learning how to drive, etc.) but I’m doing nothing to process or differentiate these experiences. It seems like you can get away with not processing experiences if you live a relatively simple life but not when you’re a world-devouring monster like me.

Anyway, there are elements of my reading regimen that I hope to change. I recently stopped subscribing to Techcrunch, because I realized that I was literally skipping through almost all the headlines (also the personalities and quality of analysis are awful). I probably don’t need to know about every upcoming Android handset. I would have trouble foregoing Google Reader completely, especially BoingBoing ((I like to be down with the freshest memes.)), but if I could pare my list down even more I could probably transform it into a less soul- and attention-destroying activity. In general, though, I want to start committing to longer, more serious texts (( I know this doesn’t preclude fiction. It’s just that fiction is so easy for me to read, consumptively, that I don’t have to make a conscious resolution about it. I would like to write more about fiction, though.)) on the condition that I will also put the work in to process them. The best way I know to do this is to write about my understanding of the text. This post is really a preamble for my next post, which is going to be about a philosophical text I read in full. Something I loved about the experience of reading this book, which at times was quite a slog, was that I genuinely had trouble understanding some of the points. With most things I read there’s a kind of automatic and superficial understanding (that is, it might fall apart if challenged but it never is) but with this text I know that I need to spend more time to have a meaningful understanding, yet I am sufficiently excited about what I did understand to want to make the effort. This is a good feeling because it suggests to me that what I’m reading might actually matter.

A Bit of Wisdom

People think that there are authorities out there with direct knowledge when in fact there is no direct knowledge, there is only focal knowledge, knowledge that is located around a set of practices, discourses, institutional locations, etc. So for example a doctor doesn’t know bodies; a doctor knows a bunch of things about the body when it’s presented in the examination room at the hospital. He’s the authority at that place in that time because of the weave of social premises that support him there. I forget why I thought this was important (( That is, what distinguishes this thought from introductory Foucault. )) . I had to get out of bed to write this because I couldn’t let this thought go.

Update: I remember now. It was because I had a mental vision along the following lines:

that a programmer as a patient might look at a doctor trying to determine a treatment for him ((in my vision it was a large red cancer on the lung contracted by ingesting an experimental drug)) and find that he recognizes the doctor’s prescription as a kind of workaround or kludge. Then I thought that the programmer would try to talk to the doctor on the level of processes, establish a common language like, but I thought that the doctor wouldn’t buy into it. The doctor wouldn’t see the workaround primarily as an absence of knowledge, but as a positive knowledge of treatment. He would say, “listen, what I know is that this practice alleviates some of the symptoms of the condition”, and that would be the basis of his authority.

What I mean is that the programmer tries to model a domain of reality, so he sees both the attempt at approximation and correspondence and the inevitable collapse of the pretense that the model re-presents the reality. A database of people is not the people–it’s not even a reference to the people, but rather to their vital statistics. Of course. How else could it be? So knowledge as a model carried in the head of someone– it’s not the thing, it’s not the authoritative image representation of the thing, it’s not the essence of the thing stored away, instead it’s what programmers call “domain specific“, it’s a specific socially-constructed protocol for interacting with a socially-constructed thing. In my vision the programmer’s disappointment doesn’t touch the doctor, because the doctor isn’t interested in the purity of a perfect model but in the efficacy of sound practices. The final step is that “people” believe in authorities at a level that is less sophisticated than either the programmer or the doctor’s (not supposing that one is more sophisticated that the other). They think that authorities just know stuff– authoritatively, without context.

I know the central situation is vague (what is the doctor ignorant about? etc.) but that’s because it’s from a daydreaming-thought-experiment of the kind I often have.