What we are using org-mode for

| categories: orgmode | tags:

About four years ago I picked up Emacs again, because of org-mode. It started as an experiment to see if org-mode might be a solution to managing my growing list of obligations. Since then I have learned alot about org-mode. I was feeling reflective today, so here I describe a few of the things we are doing with it now, besides just organizing my obligations! I have found org-mode useful for many other things.

1 This blog

Every entry of this blog is written in org-mode and exported to an HTML file (https://github.com/jkitchin/jmax/blob/master/user/blogofile.el ) that is compiled by blogofile (http://www.blogofile.com/ ). Thanks to some emacs-lisp code, each post has the raw org-file linked to it so you can see exactly how the page was made.

2 Writing large technical documents/books

I used org-mode to write my book on modeling materials properties using density functional theory (http://kitchingroup.cheme.cmu.edu/dft-book ). This book has over 100 Python code examples that are integrated with the narrative text, including equations, figures and references.

I also used org-mode to write "Python computations in Science and Engineering" (http://kitchingroup.cheme.cmu.edu/pycse ), which shows that Python can be used extensively for solving scientific and engineering problems.

These "books" are not published in any traditional way; their value is in the org-format where the code is executable.

3 Writing scientific publications

The following papers from our group were written in org-mode. The supporting information files all contain embedded org-files with all of the code used to generate figures and analysis, as well as the data to make the papers reproducible and reusable. These papers include both experimental and computational work.

  1. Spencer D. Miller, Vladimir V. Pushkarev, Andrew J. Gellman and John R. Kitchin, Simulating Temperature Programmed Desorption of Oxygen on Pt(111) Using DFT Derived Coverage Dependent Desorption Barriers, Topics In Catalysis, 57(1), 106-117 (2013). http://link.springer.com/article/10.1007%2Fs11244-013-0166-3
  2. Alex Hallenbeck and John R. Kitchin, Effects of O2 and SO2 on the Capture Capacity of a Primary-Amine Based Polymeric CO2 Sorbent, I&ECR, 52 (31), 10788-10794 (2013). https://doi.org/10.1021/ie400582a .
  3. Mehta, Prateek; Salvador, Paul; Kitchin, John, Identifying Potential BO2 Oxide Polymorphs for Epitaxial Growth Candidates", ACS Applied Materials and Interfaces, 6(5), 3630-3639 (2014). http://pubs.acs.org/doi/full/10.1021/am4059149 .
  4. Zhongnan Xu and John R Kitchin, Relating the Electronic Structure and Reactivity of the 3d Transition Metal Monoxide Surfaces, Catalysis Communications, 52, 60-64 (2014), https://doi.org/10.1016/j.catcom.2013.10.028 .

We have several more papers in progress that are being written in org-mode. We just export the LaTeX manuscript (https://github.com/jkitchin/jmax/blob/master/ox-manuscript.el ) and submit it. My students now use org-mode to produce reports for their PhD qualifying exams, MS project reports, and other internal reports I ask them to write. I have used it for writing internal memos and reports for the Department. I occasionally use it to write technical emails.

4 Writing software

I have used org-mode in three serious software development efforts. So far, all of them have been in emacs-lisp.

  1. org-ref is an extension of org-mode that provides deeply integrated citation and referencing in org-mode documents using bibtex as the reference database. The software is written in emacs-lisp, in an org-file, and the source code is tangled out of it. See https://github.com/jkitchin/jmax/blob/master/org/org-ref.org . The code is about 1700 lines long.
  2. doi-utils is a smaller package that allows you to download bibtex entries and pdfs from a DOI. See https://github.com/jkitchin/jmax/blob/master/org/doi-utils.org
  3. org-show is an emacs-lisp package for using org-files to give presentations. See https://github.com/jkitchin/jmax/blob/master/org/org-show.org .

This literate programming approach to writing software is interesting. You can document via narrative text what the software does, and how it works, sometimes as you write the code. I have not used org-mode to write a large Python project yet. I am considering it.

5 Giving presentations

For some examples of using org-show, see: a. Org-mode is awesome https://www.youtube.com/watch?v=fgizHHd7nOo b. Using org-ref https://www.youtube.com/watch?v=JyvpSVl4_dg c. The org-show show https://www.youtube.com/watch?v=JZ8RK-R9O_g d. Scipy 2014: Python in teaching https://www.youtube.com/watch?v=IsSMs-4GlT8 e. Scipy 2013: reproducible research talk in Beamer generated from org-mode https://www.youtube.com/watch?v=1-dUkyn_fZA

Presenting from org-mode takes some adjustment, but it really lets you strip something down to what is important, with few distractions!

6 Teaching classes

The book on dft that I wrote has been used in a graduate course several times. The last time I taught it we actually used the org-file directly in class during lecture, and I had students turn in their assignments with org-mode. That was done on a computer cluster I administer, so everyone had the emacs/org-mode setup I created.

This fall I am teaching a graduate MS course in chemical reaction engineering. It will be taught from org-mode. All the notes are in org-mode, all the assignments are in org-mode. Emacs will communicate with a git-server I run that will provide authenticated delivery of course materials and assignments. Grading is all done through org-mode, with the grades stored directly in the assignment files. The source code behind this effort is located for now at https://github.com/jkitchin/jmax/tree/master/techela . There is no course website; students will run M-x techela, select their course, and the syllabus.org file will be updated and shown, with org-links to get assignments, open lecture notes, etc… The students will do all this on their own laptop, with a preinstalled version of https://github.com/jkitchin/jmax , Enthought Canopy Python, git, ssh and TeXLive.

I am needless to say, very excited to try it!

7 Managing obligations

And of course, I still use org-mode to manage my daily job responsibilities as a professor:

  1. Running a research group of ~10 PhD and MS students, managing grants, paper deadlines,… I share org-files with my students through Dropbox to keep some activities coordinated.
  2. Teaching classes
  3. Department, college, university committee duties
  4. Preparing for professional meetings
  5. Conference organization
  6. Keeping track of personal things
  7. etc…

I just counted the lines of the files in my org-agenda:

wc -l ~/Dropbox/org-mode/*.org
    346 /c/Users/jkitchin/Dropbox/org-mode/abet.org
     28 /c/Users/jkitchin/Dropbox/org-mode/advising.org
    854 /c/Users/jkitchin/Dropbox/org-mode/cheme-undergrad-committee.org
    745 /c/Users/jkitchin/Dropbox/org-mode/committees.org
  11187 /c/Users/jkitchin/Dropbox/org-mode/contacts.org
    451 /c/Users/jkitchin/Dropbox/org-mode/department.org
      2 /c/Users/jkitchin/Dropbox/org-mode/email+gnus.org
     91 /c/Users/jkitchin/Dropbox/org-mode/email.org
    611 /c/Users/jkitchin/Dropbox/org-mode/gilgamesh.org
     91 /c/Users/jkitchin/Dropbox/org-mode/gnus.org
      6 /c/Users/jkitchin/Dropbox/org-mode/group.org
    749 /c/Users/jkitchin/Dropbox/org-mode/journal.org
    274 /c/Users/jkitchin/Dropbox/org-mode/lab.org
    352 /c/Users/jkitchin/Dropbox/org-mode/manuscripts.org
    117 /c/Users/jkitchin/Dropbox/org-mode/master.org
   1239 /c/Users/jkitchin/Dropbox/org-mode/meetings.org
    513 /c/Users/jkitchin/Dropbox/org-mode/notes.org
    118 /c/Users/jkitchin/Dropbox/org-mode/org-course.org
    182 /c/Users/jkitchin/Dropbox/org-mode/personal.org
    485 /c/Users/jkitchin/Dropbox/org-mode/prj-doe-early-career.org
    109 /c/Users/jkitchin/Dropbox/org-mode/prj-exxon.org
     25 /c/Users/jkitchin/Dropbox/org-mode/prj-gcep-project.org
     15 /c/Users/jkitchin/Dropbox/org-mode/prj-simonseed.org
     83 /c/Users/jkitchin/Dropbox/org-mode/prj-task-191.org
      8 /c/Users/jkitchin/Dropbox/org-mode/prj-task-203.org
    349 /c/Users/jkitchin/Dropbox/org-mode/prj-task-97-mat.org
    238 /c/Users/jkitchin/Dropbox/org-mode/proposals.org
    378 /c/Users/jkitchin/Dropbox/org-mode/research.org
      7 /c/Users/jkitchin/Dropbox/org-mode/researcher-ids.org
    110 /c/Users/jkitchin/Dropbox/org-mode/reviews.org
    619 /c/Users/jkitchin/Dropbox/org-mode/software.org
    629 /c/Users/jkitchin/Dropbox/org-mode/tasks.org
      2 /c/Users/jkitchin/Dropbox/org-mode/taxes.org
  21013 total

hmm… that contacts file is big. My agenda might speed up if I move it out. It is not so slow that it bothers me though. That happens when you dump gmail contacts to org-contacts. That is even after cleaning up all the obviously bad entries!

8 Summary

There is hardly an area in my work not touched by org-mode these days!

Copyright (C) 2014 by John Kitchin. See the License for information about copying.

org-mode source

Org-mode version = 8.2.6

Discuss on Twitter