VIM">A Love Letter to VIM

Friday, April 24th, 2009

Despite its hideous logo, VIM is a fantastic editor. VIM gets a kiss of death from HCI: it’s modal, has a steep learning curve and requires mental & muscle memory. Whenever I praise it around HCI folk, they crinkle their noses. But it’s an expert interface. Although I learned it many years ago, way before I knew anything about HCI, here’s 3 reasons I still love it:

  1. It minimizes programmer energy. VIM never makes you take your hands off the keyboard! I cannot say this enough. You never have to take your hands off the keyboard! An IDE like Eclipse will do lots of fancy stuff for you, but you have to click-click-click. It’s horrible. You should spend 95% of your time on the keyboard, not clicking. Time clicking is time not coding.
  2. It rocks on data files. I often have complex data files that I need to hack up in some structured way. Like, find the second ::, delete from there until the next !. Repeat 10,000 times. The only other way is often a script. VIM solves this problem quickly and indulges my inner laziness.
  3. It’s everywhere and needs only 2MB of memory. My app should need 300MB of memory, not my editor. Couple this with the fact that it’s standard on every *nix box (OS X too) and you’ve got a strong reason to give it try.

Citeulike, BibDesk and Pages

Wednesday, June 18th, 2008

Every researcher has (and hopefully solves) the reference management problem, and yet it seems hard to find concrete information on how people do it. I use Apple’s Pages to write up my research. The major alternatives, Word and LaTeX, have two crucial flaws that just drive me crazy. First, and this is a big one, Word handles images very poorly. It does not float text around them well and it provides almost no help in alignment. LaTeX has the type and compile routine that disrupts my concentration. LaTeX does have one thing that I love: \cite{} plus BibDesk.

While writing my latest research paper, I found a way to get the best of LaTeX, BibDesk, citeulike and Pages—and quickly. I love citeulike. The early parts of research involve a lot of page-hopping from research paper to research paper. I often have 25 tabs open in this phase. Citeulike offers a convenient bookmarklet that parses major research sites for reference info (no more hunting for the issue number). Plus, it offers the standard amount of socialness. I love it. Now I can quickly connect BibDesk to citeulike to Pages. It goes like this.

1. Download, install and open BibDesk.
2. Right click on Library and select Add External File Group.
3. Enter http://www.citeulike.org/bibtex/user/yourciteulike?key_type=4
4. Download and install (per readme) CiteInPages.
5. Drag references, one or more at a time, into Pages.
6. Choose CiteInPages alpha numbered from the BibDesk scripts menu.

The CiteInPages scripts are wonderful and open source. This gives me the best of LaTeX and Pages. Very nice. I hacked together a nearly-compliant ACM-style template for BibDesk. Install it in BibDesk’s application support directory: ~/Library/Application Support/BibDesk/Templates. If you want to use it, you first point the CiteInPages alpha numbered script to it by editing the script. Such is the price for good and free.

I’m in love.