Continued elsewhere

I've decided to abandon this blog in favor of a newer, more experimental hypertext form of writing. Come over and see the new place.

Thursday, October 31, 2013

Lisp is for Stupid People

[yes, the title is clickbait.]

I’ve been programming in Lisp for many years. It has a reputation as language only suitable to forbiddingly smart people (and indeed, most Lisp programmers I know are MIT-trained or the equivalent). I never quite understood that though. In fact, I realized recently that the reason I like Lisp, why I am always drawn back to it despite its general lack of commercial marketability, is not because I am so smart, but because I’m so stupid.

Or, more precisely, it is because Lisp is a better tool for overcoming my own mental limitations. It’s not that I am particularly stupid – my limitations are largely shared by everybody else. My attention is limited, my processing capacity is limited, my short-term memory capacity is limited, simply by virtue being a human being.

Programming is thought to require being able to hold complicated structures in the head. Here’s a cartoon illustration, which is pretty accurate as far as it goes, and here’s some actual interesting research on programmer’s mental functions. It may be that the fabled 10x or 100x programmers are just a little bit better at dealing with complexity than normal. I’m pretty good at it, but not superhuman, especially now that I’m getting alarmingly old.

The alternative to requiring programmers to be amazing jugglers of objects and acrobats of attention is powerful abstraction and good design. Abstraction is the basic way in which programmers encapsulate a bit of complexity in a single object or function call. All programming languages let you do this but some make it easier and/or offer more ways to do it. Good design means organizing a system around a few fundamental principles so that things make sense and navigating through the code doesn’t require a lot of effort.

These qualities are linked. Clean design means choosing abstractions so that they work together in powerful ways, and better abstraction tools make it easier to do that. It is certainly possible to do good software design in a less-powerful language. Some of the most impressive pieces of software design I’ve seen recently has been the series of visualization libraries coming out of Jeff Heer’s group, including prefuse (in Java) and the newer d3.js (in Javascript). The designers of these libraries have carefully chosen their abstractions so they fit together in powerful ways.

But, I maintain, it is a lot easier to do this in a language that is designed for it, and Lisp is that language. In Lisp, macros and other features make it trivially easy to hide all the details away in suitable abstractions, with the result that the meat of the program can be compact, so that the programmer can focus on it. In Java, by contrast, the important part of a program generally tends to be hidden away amidst boring boilerplate code that is necessary to please the Java compiler but not germane to the problem at hand (this article refers to the novel software metric “beef-to-bun ratio”, which is low in Java but apparently improving).

Thus Lisp has always seemed to me a much better tool than any other for augmenting my own limited brain functions. I don’t know why the rest of the world, presumably equally suffering from the same limitations, doesn’t see it that way.

Saturday, October 26, 2013

“God” ≡ God

Three of my intellectual heroes these days, in roughly decreasing order of respectability: Bruno Latour, Christopher Alexander, and Alan Moore. If I squint I can even detect a common project or thread that unites them. For one thing, all seem vaguely disreputable from the standpoint of mainstream thought. In actual fact, all three of these people would likely be pretty welcome in technology circles; and both Latour and Alexander have keynoted major tech conferences. But part of their attraction is a certain outlaw quality that success has not eliminated.

For the other thing: they are all, in different ways, struggling towards the spiritual (for lack of a better term). Latour writes on ecotheology, Alexander is determined to undo materialist metaphysics in favor of something rigorously old-fashioned and hylozoic, and Moore – well, I’ll get to him. This spiritual bent is somehow linked closely to the disreputable qualities. At least in the eyes of the MIT-trained-nerdy-atheist aspect of myself. They beckon to me from outside prison walls that I seem to have erected for myself.

Latour and Alexander I’ve written about previously; Moore is a more recent object of obsession. He is, of course, pretty well-known at this point as the most accomplished writer in the comic book format (Watchmen, V for Vendetta, League of Extraordinary Gentleman). What I didn’t know until recently was that he had declared himself to be a Magician, in roughly the Aleister Crowley sense, and was getting seriously into all sorts of mystical shit. In fact he’s written about this widely and you can find stuff on the net; his series Promethea is pretty much a catalog of various mystical systems in graphical form. While this sort of thing is not really my thing, I can at least respect that it is neither crazy or lamebrained or even supernatural. Here is a rough statement of the core of his stance as I understand it, from an interview in The Believer (emphasis added):
Actually, art and magic are pretty much synonymous. …The central art of enchantment is weaving a web of words around somebody… When that enchantment is the creation of gods and the creation of mythology, or the kind in the practice of magic, what I believe one is essentially doing is creating metafictions. It’s creating fictions that are so complex and so self-referential that for all practical intents and purposes they almost seem to be alive. That would be one of my definitions of what a god might be. …It is a concept that has become so complex, sophisticated, and so self-referential that it appears to be aware of itself….If gods and entities are conceptual creatures, which I believe they are self-evidently, then the concept of a god is a god.
This is more or less exactly the same idea I was groping towards a few years back. Given my background and biases, I’m inclined to think of god-concepts in more quasi-mathematical terms, whereas Moore thinks in quasi-linguistic terms, but I think we are pointing in the same general direction. The title of this post is my attempt to condense the idea down to a sort of formal notation, because that’s what I do.

This way of looking at things seems so simple and obvious and at least partially right that I can’t believe it’s all that original (with either Moore or me). Yet I can’t find much prior art. Perhaps it isn’t really satisfying to most people who want to know one way or the other if there is a referent on the other end of the symbol. Maybe people’s concept of concept is not rich enough to encompass these kind of complex, quasi-autonomous structures. Concepts are insubstantial; gods if they are not mere fiction have some effects in the world. We are used to thinking of symbols as dead things on paper; but the more primal oral form of language was always alive, always closely connected to the real-time human activity of a speaker. The causal powers of words in the old days was immediate and obvious.

But we are getting more experience even in our advanced writing-based culture, with complex symbol systems that are immaterial and yet have effects in the world. That is what software is, after all. Gods are pieces of cultural software, powerful enough to erect cathedrals, start wars, bind together communities. Like software, they are living texts, actualized fictions.

[update:

Another doctrine that might sound profoundly anti-rational is that God’s holy four-letter name, the Tetragrammaton, is identical with God Himself. Unlike other names that merely point to the signified, when the unnamable Absolute becomes known to the created beings by a name, that name itself becomes the personal God of religion, ’Elohey Is ́ra’el. When the Jews received the Torah at Mount Sinai, they experienced a synesthetic vision, in which the sounds of the commandments were seen as flying letters, made of pure light...during their synesthetic experience, the Jews actually saw God as identical to His name. Therefore, it is permitted to bow before the letters of the Tetragrammaton, because they are God, in an esoteric sense, and not just a visual representation of Divinity, which Judaism forbids
From Between Enlightenment and Romanticism: Computational Kabbalah of Rabbi Pinchas Elijah HurwitzYoel Matveyev, talking about an 18th century encyclopedia assembled by Hurwitz ]

Friday, October 18, 2013

The Government Within

I have a new guest post up at Ribbonfarm, mostly on the work of George Ainslie.

To go a bit meta on it: I find Ainslie fascinating but hard to internalize. I wrote the post mostly as a way to force myself to reread parts of his work and try to get deeper into it, with I guess some partial success. Any theory of distributed agency is hard, I think. The natural operation of the brain is based in simple agency and narrative; we aren't so good at thinking about systems with distributed control, or at the boundary between mechanism and agency.

Saturday, October 12, 2013

Fixing The Fixer

Mark Stein, one of my oldest friends, has helped edit and re-issue the memoirs of Mendel Beilis:
One of the great trials of the twentieth century was the 1913 blood-libel trial of Mendel Beilis in Czarist Russia. Beilis, a Jew, was arrested in 1911 by the Czarist secret police. He was accused of ritually murdering a Christian boy in order to use the boy’s blood to bake matzah for Passover. Beilis was jailed for over two years, under horrible conditions, while awaiting trial. He heroically resisted all pressure to implicate himself or other Jews. In 1913, after a dramatic trial that riveted the Jewish people and much of the rest of the world, Beilis was acquitted by an all-Christian jury.
This is a genuinely moving and gripping account. With something of a happy ending, even. Aside from Beilis's own responses to his troubles, which display an unassuming heroism in the face of forces bent on his destruction, it is quite heartwarming to see that a good many Christians supported and came to his aid, but also his neighbors and acquaintances. Very oddly, his friends and supporters included even members of the Black Hundreds, the anti-semitic nationalist group that was pushing the libel.

The post title is a reference to a supplementary essay that claims Bernard Malamud plagiarized large sections of his famous novel The Fixer from Beilis' account.

Saturday, September 14, 2013

Yom Kippur and Escape from Language

My relationship with Jewishness is untainted by any feelings of ideological obligation. That is to say, I belong to this people and community (sort of, more or less), I participate in their rituals (very occasionally), I share some deep values (not necessarily the obvious and articulated ones), but I will be damned if it will determine how I think. Like any other body of learning, I treat it as a resource that I will make use of as I see fit, not a framework that I have to fit myself into. 

This sounds both a bit naive and a bit like bragging, but I’m just trying to be accurate about how things are with me. I’ve never been able to comfortably wear an ideological or identity. In a way it’s annoying that I am a radical non-joiner. Some people manage to make themselves nice lives out of being Jewish, or being an anarchist, or scholar, or activist, or whatever. I resist being anything. I suppose even that becomes an identity eventually.
“I decided I’d rather starve and live on the edges of nowhere than do anything at all, than become anything labeled.” – Bukowski (a saint of illegibility)
Given that I’m not a counterculture hero or anything close, but rather a middle-class guy with a family to support, I do in fact have a quite labeled work identity (and resume and LinkedIn profile and all the rest). It’s a real enough aspect of me; I don’t mind (much) inhabiting the role and selling it on the marketplace. But a holy day is a point where I can step back from it and place it in its proper perspective. Taking off from work is just a superficial aspect; it is taking a day off from the everyday structural illusions of the world, the better to put them in their proper place.

There’s a lot of talk about the soul this time of year – how to purify it, is it going to be inscribed in the Book of Life, etc. Like a good materialist with cognitive science training, I am deeply dubious about the very concept. Yet someone or thing is being dubious, no? If nothing else, language and grammar force an identity to come into being.

Yom Kippur begins with the Kol Nidrei, an odd bit of legalistic performative Aramaic that has the emotional force of prayer, and an interesting and controversial history that I was unaware of until recently. It is a release from vows, and has been interpreted by anti-semites to mean that Jews can’t be trusted.
It refers to vows assumed by an individual for himself alone, where no other persons or interests are involved. Though the context makes it perfectly obvious that no vows or obligations towards others are implied, there have been many who were misled into believing that by means of this formula all their vows and oaths are annulled. – Philip Birbaum via Wikipedia
Mordecai Kaplan, the founder of the reconstructionist movement, tried to get rid of it but failed. The emotional force of it and its connection to the ritual proved too strong; and for many Jews it is the most moving and holy ceremony of the calendar.

My own interpretation, which is no doubt overly influenced by my own particular obsessions, is that the Kol Nidrei is a fundamental and irreplaceable counterweight to the usual Jewish obsessions with language and law. It is not so much a release from vows as a release from language, a temporary ritual acknowledgement that for all our word-worship, words are an imperfect and inadequate tool to face reality and life, and most of all the sacred. Like many other religious and meditative practices, the Kol Nidre is a form of language whose function is to move beyond language.

Monday, September 09, 2013

Proposed Extensions to the Booleans

A quasitechnical nonproposal (ref):

☒□☒□☒□☒□☒□☒□☒□☒□☒□☒□☒□☒□☒□☒□☒□☒□☒□☒□☒


true because I say so
true because God says so
hidden truth
ultimate truth
penultimate truth
self-contradictory truth1
true in all possible worlds
true even in impossible worlds
ironically true
true because the powerful have decreed it true
true despite that the powerful have tried to make it false
necessarily true
too beautiful not to be true
true for me but not for you
true for you but not for me2
true for all practical purposes
truth eventually universal; but for now unevenly distributed3
true for anybody with a shred of self-respect
truth of the master
truth of the slave
truth of the parent
truth of the child
forbidden truth
really forbidden truth
unspeakable truth
unbearable truth
truth nearly but not quite dead from overexposure
mostly true
sort-of true
“true”
occasionally true
conventional truth
conventionally unconventional truth4
self-aggrandizing truth
self-effacing truth
true because least improbable alternative
bought and paid for truth
casualty of war truth
official truth
underground truth
tentative truth
overbearing truth
true irregardless
true to truth itself
true despite all appearances


☒□☒□☒□☒□☒□☒□☒□☒□☒□☒□☒□☒□☒□☒□☒□☒□☒□☒


Footnotes

1 h/t G. Spencer-Brown's imaginary values
2 h/t "Bob" Dobbs: “I don’t practice what I preach because I’m not the kind of person I’m preaching to
4 aka "SlatePitch"

Monday, September 02, 2013

Labor Day Nonpost

Labor Day is a day when laborers are not supposed to labor. It is an artificial holiday, created explicitly to separate US labor from the international labor movement, which still celebrates on May 1. Since I am now a member of the blogging proletariat, this particular post is excusing itself from the task of making a point, and is going to ramble and drop links.

I Believe in America

Labor Day Is a Scam To Keep You Poor and Miserable Forever

Developers are the Autoworkers of our Generation (Hacker News discussion_)

Tech CEO autistically offers to automate someone’s job away

The discussion on that last one got me thinking…A good developer is constantly automating the boring parts of their job so they can focus on the more interesting parts. What is a compiler, or a continuous-integration server, but a way for developers to spend less time on repetitive tasks?

It is always striking to me how much software has improved in this respect, and how little. Yes, tools like Wordpress make it possible to set up a website in minutes, where it would have taken a month or so in the past. But the basic tasks of coding don’t seem any easier. Languages have not improved much in the 30+ years I have been doing this professionally, nor have editors or debugging tools (actually things have gotten quite a bit worse since the peak of powerful programming environments, the Lisp Machine, but that is a flame for another day). Revision control systems have improved, but not radically. You’d think we’d have systems that could go from intention to powerful software engine almost instantaneously by now, but no, it’s still an incredibly tedious process. Software seems stuck on a plateau, which is good news I guess for us developers, we just haven’t made ourselves as obsolete as we should have.

Of course the real money is in automating other people’s jobs. That is happening and I believe will accelerate in the next decade, which would cause labor unrest and a resurgence of Luddism if people had any guts, but mostly they don’t. Of course this has been happening for a long time:
The bourgeoisie cannot exist without constantly revolutionising the instruments of production, and thereby the relations of production, and with them the whole relations of society. ... Constant revolutionising of production, uninterrupted disturbance of all social conditions, everlasting uncertainty and agitation distinguish the bourgeois epoch from all earlier ones. All fixed, fast-frozen relations, with their train of ancient and venerable prejudices and opinions, are swept away, all new-formed ones become antiquated before they can ossify. All that is solid melts into air, all that is holy is profaned, and man is at last compelled to face with sober senses, his real conditions of life, and his relations with his kind.

– Marx & Engels, The Communist Manifesto (1848) (and no, I am not a Marxist but I am very fond of this passage)
The developer/entrepeneur/VC nexus is like the Victorian bourgeois raised to the nth power. Move fast and break things! If the old labor and socialist movements were a response to the rise of industry and the destruction of traditional ways of life, well, we are still waiting for an adequate political solution to the social churn caused by software.

Mitigating the effects of accelerating technological change doesn't sound so hard in theory. I don’t have any trouble imagining what that response should be. The goal is to have a world where the creative entrepreneurial spirit can thrive, but without the side-effects of destroying people's lives.  How about for instance: a guaranteed minimal income; changing our model of education from its industrial model to one of continuous learning; greater wealth equality and more democratic workplace cultures? All good ideas, but with essentially no chance of happening given the currently broken political system.

As a software person I feel our field should have some social responsibility for these issues – given how much we are damaging people’s livelihoods, we should also be working on the fixes. However, we don’t really have the talent or inclination.

Perhaps that is changing. Software may be eating the world, but as it does it gets changed in turn. The more artists, activists, and other people who are not in the generic tech-nerd mold get involved with software, the better (and I say that as pretty much a generic tech-nerd myself). The more important software is, the more important it is that it reflect the full spectrum of human needs, desires, and abilities, not merely the narrow parts of that it currently serves.

Previously. Also there are some obvious links between this topic and my recent guest post on I/Thou, the explicating of which is left as an exercise for the reader.

Some work songs (Spotify link).

And I should add that I have almost no personal complaints about my current employment, at least, none that have to do with this post. I'm pretty firmly in the camp of eaters rather than eaten and hope to stay that way.