A hierarchical toolchain
I'm an experimental physicist by education. But since quite some time, I do not frequently perform experiments myself. Instead, I'm essentially acting as a consultant. I help to design experiments, to interpret and analyze them. And mostly, I advice my colleagues how to publish the data they got from their experiments or computations. Which often means that I have to analyze data, process images, create graphs, and write text myself, but always in close collaboration with others.
This interactive and iterative process takes time. Since my order book is already filled for the rest of this year, it is important for me to do that efficiently for being able to process each request within a reasonable time frame. In particular, I want to have the same workflow everywhere, whether I'm using the desktop at the office or at home or my netbook at a conference in Nice (basically ruling out all proprietary software).
The following list provides an overview of the applications I've chosen to use for these tasks in a loose hierarchical order (my second choice is given in parentheses). The one-liner below each entry briefly summarizes my personal reasons for the first choice. If I feel inclined to do so, I will elaborate on them in separate, subsequent posts.
Operating system: Archlinux (Debian Testing)
Transparent, simple, up to date. And tons of packages.
Shell: fish (bash, zsh)
Feature complete with minimal configuration.
Remote shell: mosh + tmux
An ssh replacement. Stays connected.
Shell extensions: virtualenv + virtualfish (virtualenvwrapper)
Easiest way to separate different python-based projects (like this blog).
CL Calculator: calc + units
Easiest way to calculate almost everything on the CL.
CL Editor: vim
Easiest way to edit almost everything on the CL.
CL File manager: autojump + ranger (mc)
Super-fast file system navigation and management.
Backup: attic (obnam)
Fast, scrictable, deduplicating.
Notes, Journal, Tasks: zim
My notes for my cloud.
Cloud storage: ownCloud
My cloud with all current projects.
Reference management: Mendeley (JabRef)
Full text search in all pdfs, bibTeX export.
Browser: Chromium (Firefox) in a sandbox
Fast, stable, consistent UI, all extensions I need.
Data analysis: ȷupyter with numpy, scipy, sympy (Mathematica)
Computing without licence hassles. Great UI with MathJax support.
Image processing: ImageJ, Gimp
All I will ever need and more.
Vector graphics: Inkscape
Standard compliant svg, eps and pdf ready for the web or publications.
Figure creation: ȷupyter with matplotlib
Publication quality figures with standard compliant svg, eps, and pdf export.
Typesetting: LaTeX w/ BibTeX
The de facto standard.
Editing: Several. Currently giviving atom a chance.
Syntax highlighting, command and citation completion, syncTeX support.
Version control: mercurial (git)
Keeps track of changes. No more 'manuscript_v17c_XY_NK_LM.tex'.
LaTeX diff generation: scm-latexdiff
Lights up the changes. Essential for not having to read the same stuff again.