Saturday, November 10, 2007

Lisp Programmers And Anarchists

I'm originally from Chicago. In Chicago, we say "The cops are the biggest gang." We say it like other people say "What goes up must come down." The interesting thing about travelling outside of Chicago is that you really don't hear this sentence every day anywhere else in the country. Tourists in Chicago always think this sentence is intended as a philosophical statement, or a metaphor. If they stay in town long enough, however, they learn sooner or later that there's no metaphor involved. The cops simply are the biggest, best-funded, best-organized gang in the city of Chicago.


The gangsters who currently run Chicago, of course, had to fight some other gangsters to take it over first, and those other gangsters were pretty motivated and pretty capable. The history of Chicago is basically a history of gang wars.

Al Capone

I've always loved techno-anarchism, but in a "wouldn't that be great" / "isn't that cute" kind of way. Taking it seriously became impossible for me; growing up in Chicago made me immune to it. When I was younger I hadn't developed my immunity yet, and I was in England. My uncle told me about regions in Belfast were the police never went, because of hostility between the English and the Irish. Having just read a bunch of techno-anarchist stuff, and being pretty naive, I said something along the lines of, "Oh wow, no government - do they police themselves?" My uncle basically said, "Well you could say that, in a sense. The areas are run by gangsters."


Belfast isn't the only city with urban areas ruled by gangsters because the police don't go there. Anybody who's ever listened to gangster rap or seen "Boyz N The Hood" is familiar with this phenomenon. The anarchist ideal of taking down social structures and systems doesn't really shine that brightly when you consider that we already have places without law throughout the world, and they're all horrible places to live. There's a relevant Russian saying, which basically goes, "Don't kill the king unless you know who's next in line for the throne."

Many rebellious people like to say that politicians are just gangsters. It's not true the way it's true of Chicago cops, but in many cases it holds a serious kernel of truth. It's certainly relevant when you're talking about the Bush family. But toppling the existing system, just because its rulers are criminals, doesn't necessarily make sense, because the fallout could bring on worse criminals. Don't do away with the cops unless you know who will take up patrolling the streets once they're gone. If you get rid of the boys in blue, you may just end up with new young men, also wearing blue.


Gangsters are the reality of life that anarchists consistently fail to recognize. They are an emergent phenomenon. If you have a society, groups of men in that society will organize among themselves to dominate others by violence and intimidation. It always happens. The anarchist idea, tear down society to do away with oppressive regimes, misses the fact that you can really only ever do away with a specific oppressive regime.

Lisp programmers are to limiting programming language features as anarchists are to limiting social structures. Anarchists think that life will be better if you get rid of the politicians and the cops, never realizing that if you do, new ones will arise to take their place who could be substantially worse. Lisp programmers think that life will be better if you get rid of limiting programming language features and simply program in Lisp, never realizing that if you do, you will create your own limiting programming language features which might be worse.

The operative word here is might. Sometimes the Lisp programmers are right - sometimes if you operate in a freer context you write better programs. But consider Reddit's famous Python rewrite, undertaken due to the lack of available libraries. They wanted to avoid re-inventing the wheel. That wasn't just because re-inventing the wheel is time-consuming. It's also because re-inventing the wheel is error-prone. A healthy open source project has countless programmers fixing its bugs and working on its design. There's less risk of debugging and less risk of painting yourself into a corner.

One of Paul Graham's Lisp books shows you how to create a system and syntax for object-oriented programming in about 20 lines of code. Building your own OO framework has got to be an incredibly educational experience - but using an untested OO framework still in development is only fun if you're working with really good people. And the incredible freedom of Lisp is probably the reason it doesn't appear to have the community traction or library support that even its fans want from it. Everybody knows the cliche joke "Anarchists unite!". It's got to be difficult getting programmers to agree on conventions and idioms when their language can do anything.

Lisp programmers like to say that every language is a subset of Lisp. But that's the whole point. Lisp gives you so much power it's difficult to rally a community around any one way of using that power. Just as anarchists say everybody has a problem with some social constraint, therefore let's do away with all of them, Lispers say everybody has a problem with some language constraint, therefore let's do away with all of them. But in either case, if you do that, you end up with very little, and sooner or later somebody has to establish constraints just to get anything done.

Black Rock City

There are anarchist environments, temporary autonomous zones where gangsters and politicians have little or no influence. It is deeply healthy to visit these environments and spend time there. However, living there year-round would spoil the magic. Likewise, the righteous anarchist who brings down a corrupt, evil king sometimes does the world a huge favor - but you can't rise up in revolution against every king, because you'd never get anything done.

If you're ever wondering why there aren't more jobs writing Lisp, this is why.