Things that make my work easier

This is a list of some of the tools that I use on a regular basis that have come to be an essential part of my workflow.

Writing papers

I use LaTeX for typesetting, and MacVim for typing (here is my .vimrc). References are managed using Bibtex. I also use Bibdesk, which is a simple GUI frontend for Bibtex files.

Most papers are kept in private repositories on Bitbucket. My coauthors and I use Git to allow us to work remotely on a paper and merge our changes. If a coauthor is not comfortable with Git, papers are kept on Dropbox.

Reading papers

I keep abreast of the literature using Inoreader (an RSS feed reader) with subscriptions to about a dozen arXiv and journal feeds. I have a few alerts set up on Google Scholar, which I also use for finding specific papers. See my post on Searching the Scientific Literature.


Lately, I write most presentations in Keynote. I use Latexit to typeset equations and paste the resulting (vector) graphics onto slides. For drawn diagrams, I use Omnigraffle.


Most of my coding is done with MacVim, in Python or Fortran. I also use the following:

  1. IPython. For interactive running and debugging.
  2. The Jupyter notebook (formerly IPython notebook). For organizing, recording, and sharing code with animations and mathematics.
  3. Github. For collaborative code development.


Matplotlib and VisClaw.


  1. SageMathCloud
  2. The Jupyter notebook (formerly IPython notebook).

Notes and productivity

  1. NValt. For managing plain-text notes, which I use for everything.
  2. Omnifocus. For managing all the non-research stuff I do.
  3. Gitit. Wiki software that runs the KAUST Mathwiki, for internal collaboration within my group.


  1. Jekyll. For building this website.
  2. Coda. For the Numerical Mathematics Group site