evil
Evil is the ultimate vim experience in Emacs. It is the steroidal, caffeinated, successor of vimpulse and vim-mode. It will make you kiss strangers on the street. It will inspire odes to the wonderful hjkl.
With evil, the days of longing for a better vim are over. Using vi over ssh, you will crave your emacs dotfiles.
vim users: You can start by explaining why surround.vim is twice the length of evil’s surround.el (which itself is half documentation). If you are the type of person who understands (or writes!) vimscript, kindly forgive my ignorance. You can actually read that stuff?
Cheers.
Use of void in C prototypes
A giant died this morning. My condolences go to Dennis Ritchie’s family and friends.
In memory of Dennis, here is a short history lesson about C prototypes. Have you ever wondered why the following is legal?
#include <stdio.h>;
void foo () {
printf("Goodbye, World!\n");
}
int main (int argc, char **argv) {
foo(1); /* Call foo with a non-existent parameter */
return 0;
}
---------------
$ gcc test.c -Wall -Werror
$ ./a.out
Goodbye, World!
This is legal for historical reasons. In pre-ANSI C function prototypes didn’t include parameters. C89 introduced parameters in prototypes, but it continued to recognize the old syntax for backwards compatibility.
If you want to declare a function foo that really takes no parameters, use void:
void foo (void);
Till death take us all away
The world spun when I heard Steve Jobs died. Steve Jobs was you and me. He was an inventor, an investor and a visionary, but above all else he was human.
Steve was an orphan and a dropout. He was a cancer victim and survivor. He was the entrepreneur who failed and succeeded. He was the bitter young business man who fell from grace and out of sight. But then he came back and rose higher than ever. Who doesn’t use his products today? Who doesn’t know his name?
There was a little bit of all of us in Steve Jobs and we saw Steve Jobs in ourselves too. He was always there, he always fought on, and he seemed invincible. But today the illusion has been shattered. There is all too much in common between Steve Jobs and ourselves. Steve the survivor is dead. There is no hiding from death today.
Remembering that I’ll be dead soon is the most important tool I’ve ever encountered to help me make the big choices in life. Because almost everything — all external expectations, all pride, all fear of embarrassment or failure – these things just fall away in the face of death, leaving only what is truly important. Remembering that you are going to die is the best way I know to avoid the trap of thinking you have something to lose. You are already naked. There is no reason not to follow your heart.
Installing lxml on Leopard
I’m surely the last developer using Leopard, but Snow Leopard couldn’t compete with Ubuntu and Lion has more warts than the Wicked Witch of the West.
Anyway, you can’t just install lxml with pip (the preferred way of installing Python libraries) because lxml depends on a recent version of libxml2. If you try, gcc will stop when it encounters missing headers added in later versions of libxml2:
libxml/schematron.h: No such file or directory blah blah blah
Instead, use the fabulous Homebrew to install a newer version of libxml2 and then run pip with that version.
brew install libxml2 pip install lxml --install-option="--with-xml2-config=/usr/local/Cellar/libxml2/2.7.8/bin/xml2-config"

20 year old