To assist my research (and other) work, I have tried various software. After all, I found the following software tools/systems are optimal for me:
- Operating system: Debian or Ubuntu. Both OSes are very powerful and easy-to-use, but I perfer Debian because of its stability and package quality. The current stable distribution of Debian (lenny) contains 28,000+ software packages. While using Debian for workstation/desktop, it is a common practice to use the testing distribution rather than the stable one. The releasing period of Debian stable is fairly long, so that usually you may not find the most current version of software. Since the packages in Debian stable are well maintained and almost don’t change for a very long period of time, Debian stable is very suitable for servers.
- Reference organization: Zotero. Zotero is a great tool to provide online/offline reference organization. Zotero is cross-platform since it is a Firefox add-on. Attached files can also be synchronized in Zotero. Group collaboration are easy through Zotero’s server. See this page for more information.
- Editor: Vim / gVim. Vim is a powerful and general-purpose editor for coding, text-editing, and everything. Vim can be the only tool for one to edit.
- Tex/Latex: Texlive (for Windows, MikTex). Tex/Latex provides the highest quality for typesetting, and anything can be typesetted by Tex/Latex. Tex/Latex is the only system that I’ve ever known to be able to productively typeset a large amount of mathematical formulae, i.e., hundreds or thousands of equations in a document. Combined with Zotero and bibtex, Tex/Latex is the most efficient way that I know to edit academic papers.
- Version control: Mercurial (for Windows GUI, TortoiseHg). Version control is very important for productive coding and writing. It is also very important for collaboration in writing.
- Build system: SCons. SCons is a very flexible build system. It supports sophisticated customization, and can be easily customized for automating data-processing for Tex/Latex, such as image editing and converting, bibliography processing.
- Generic programming: Python. See this page for more explanation.