Philip Guo (Phil Guo, Philip J. Guo, Philip Jia Guo, pgbovine)

Research Directory Structure

Summary
Here's a simple directory structure that I've used for my computer-based research projects over the past few years.

Whenever I've worked on research projects over the past few years, I tend to naturally organize my files into a directory structure that looks like the following:

Top-level directory: I put all of my “written-in-English” files (e.g., notes, feedback, papers, presentations) into a directory named with the project name; I named this example research-project-X. My top-level directory is backed up and synced across all of my computers. I used Unison back in the Stone Age, but now I use Dropbox. (I usually put code and data files in a separate location such as a version control system or a network-mounted drive.)

master-notes.txt: This is the main notes file for my project. The beginning is usually a high-level introductory pitch, and the rest is organized as an append-only “work log.”

I append a new entry to this file every day as I'm working on this project. At the beginning of each day, I write the current date as the heading and then jot down whatever notes I feel like jotting down throughout the day. Each day's log entry ranges from a few bullet points to a few paragraphs, sometimes interspersed with copied-and-pasted snippets from email exchanges, terminal commands, or code.

I keep this log file very informal and don't bother organizing at all. In particular, I don't mind redundancy; in fact, redundancy means that an idea is important enough for me to come back to multiple times. I sometimes even copy excerpts from this file into other files when appropriate; duplication is fine.

Every few weeks or so, I go back and re-read my old log entries. Sometimes older ideas mix with newer ones to spark an “A HA!” moment of inspiration. Read “The Spark File” by well-known technology writer Steven B. Johnson for a more eloquent description of this simple work logging technique, and the serendipity that it enables.

TODOs.txt: A text file with a list of todo items for this project. I don't use any fancy todo list apps; just a simple text file suffices for each project.

feedback-from-others/: A sub-directory containing one text file of notes for each person from whom I got direct feedback about this project. Each time I meet for, say, coffee to discuss this project or give a talk and get audience feedback, I add a new text file into here.

presentations/: PowerPoint files containing slides for presentations I've given about this project.

related-work/: A sub-directory containing PDF files of related work, such as papers, book chapters, and other articles that are related to my project. Obviously these form the basis of the Related Work section of my research papers.

papers/: A sub-directory containing raw LaTeX source files, compiled PDF files, and other files related to research papers that I write about the results of this project. I place each paper submission in its own sub-directory, with an additional reviews/ sub-directory for storing reviewer comments and my responses.


In addition to this basic directory structure, I add in more plain-text files of notes whenever appropriate. I use Vim as my text editor and the convenient gf command to jump between files written as “links” in plain-text (poor man's hyperlinking).

That's it! My organizational structure is pretty simple, but it's worked well for me over the past decade.

Created: 2013-06-24
Last modified: 2013-07-19
Related pages tagged as software:
Related pages tagged as research: