Some half dozen persons have written technically on combinatory logic, and most of these, including ourselves, have published something erroneous.

Since some of our fellow sinners are among the most careful and competent logicians on the contemporary scene, we regard this as evidence that the subject is refractory.

Thus fullness of exposition is necessary for accuracy; and excessive condensation would be false economy here, even more than it is ordinarily.

Haskell B. Curry and Robert Feys, Preface to “Combinatory Logic”

State machines are difficult to program and debug. Almost every consideration about the goto statement applies to the event handling mechanisms that manage state transitions. The event handlers do not share variable scopes, so, like in the case of the goto, the code relies on global variables, or in global session variables, when they are created dynamically. There is no top-level structure in the code to make the main sequence evident. For the maintainer, it is very difficult to know what it is trying to achieve.

Our industry, the global programming community, is fashion-driven to a degree that would embarrass haute couture designers from New York to Paris. We’re slaves to fashion. Fashion dictates the programming languages people study in school, the languages employers hire for, the languages that get to be in books on shelves. A naive outsider might wonder if the quality of a language matters a little, just a teeny bit at least, but in the real world fashion trumps all.

Steve Yegge, Foreword to “The Joy of Clojure”

The book and class leave it at that and proceed onto the limits of computability, which is the real point of the material. But there’s a natural question that isn’t presented in the book and which I never thought to ask:

Finite State Automata Regular Expressions
Pushdown Automata Context Free Grammars
Turing Machines ?

While we know that there are many models that equal Turing Machines, we could also construct other models that equal FSAs or PDAs. Why are RegExs and CFGs used as the parallel models of computation? With the machine model, we were able to just add a stack to move up at each level – is there a natural connection between RegExs and CFGs that we extrapolate to find their next level that is Turing equivalent?

Once upon a time I took great care to ensure that TEX82 would be truly archival so that results obtainable today would produce the same output 50 years from now but that was manifestly foolish. Let’s face it, who is going to care one whit for what I do today after even 5 years have elapsed, let alone 50. Life is too short to re-read anything anymore in the internet age.

Nothing over 30 months old is trustworthy or interesting.

Donald Knuth

Most programmers are still locked into the idea of making a program out of a large pile of tiny files containing pieces of programs.

They do not realize that this organization was forced by the fact that machines like the PDP 11 only had 8k of memory and a limit of 4k buffers in the editor.

Tim Daly

How did I live without Pathogen all this while ?

Putting it to use with some clojure plugins:

mkdir -p ~/.vim/autoload ~/.vim/bundle
curl -Sso ~/.vim/autoload/pathogen.vim
cd ~/.vim/bundle
git clone git://
git clone git://
git clone git://

And the .vimrc gets execute pathogen#infect() at the top