Software for scientists
--------------------------------

Some things takes much less time and stress once you know the right tool.
Below, there is a community edited list of software for scientists.

## Text editors
in
General purpose text/code editors.
It may be better to have a good editor for everything, than different ones for different languages, scripts, notes.

* [Sublime Text 2](http://www.sublimetext.com/) 
    * License: paid, unlimited trial
    * Powerful but easy to start
    * [Good environment of plugins](http://wbond.net/sublime_packages/community#sort-installs), including ones for science, e.g.:
        * [LaTeXTools](https://github.com/SublimeText/LaTeXTools)
        * [Using Sublime Text 2 for R](http://tomschenkjr.net/using-sublime-text-2-for-r/)

* [Notepad++](http://www.notepad-plus-plus.org/)
    * Open source, for Windows
    * Quite powerful, simple (no steep learning curve), and very stable
    * Useful block-select functions

* [Vim](http://www.vim.org)
    * Open source  
    * Powerful, but steep learning curve
    * Type `vimtutor` in terminal to learn basics (or if you want to have some fun [vim-adventures](http://vim-adventures.com/))
    * TODO: some materials for science (e.g. complete setup to use it with LaTeX)

* [Emacs](http://www.gnu.org/software/emacs/)
   * More of a powerful programmagle text environment, than an editor
   * Includes mutt (first mail client that supported threading), IRC client, many programming modes, Tramp (SSH), terminal emulator (great for Windows users!)
   * Includes a powerful note-taking and Organization tool: [Org mode](http://orgmode.org/)
   * LaTex mode with realtime preview of output PDF is awesome

* [Gedit](https://wiki.gnome.org/Apps/Gedit)
   * open source 

## Note-taking

As we all take a lot of notes.
Some links from this: http://academia.stackexchange.com/questions/8002/how-to-manage-theorists-labbook.

* [TiddlyWiki](http://tiddlywiki.com/)
    * Interactive personal wiki in one file. A lot of plugins.
    * See http://boolesrings.org/krautzberger/2010/11/10/tiddlywiki-or-the-end-of-my-latex-notes/
* [Evernote](http://evernote.com/)
    * Synchronization with computer, web and devices. No tree structure or LaTeX support.
* [Gitit](http://gitit.net/)
    * Personal wiki with Git, notes in separate files.
* [Rednotebook](http://rednotebook.sourceforge.net/)
    * A journal/diary in one file. It allows to export the journal to PDF, HTML, Latex or plain text
* [DebateGraph](http://debategraph.org)
   * Organize a graph of notes
   * Include structured conversations around each node
   * Each node has its own rich text editor (no LaTeX)
   * Known issue: no way to export

As a general thing, [Markdown](http://daringfireball.net/projects/markdown/) format may be convenient. It can be read on any system, and it is easy to cenvert it to HTML, PDF of DOC using [Pandoc](http://johnmacfarlane.net/pandoc/).

## Collaborative writing

Some discusion here: http://academia.stackexchange.com/questions/1261/simplest-way-to-jointly-write-a-manuscript

(see also: Sharing code and Version control)

### Non-LaTeX

* [GoogleDrive](https://drive.google.com/)
   * Usually much nicer than sending back and forth docs 
   * Also nice for brainstorming (use your own colour)
* [Hackpad](https://hackpad.com/)
   * Content-oriented (same font), simple but productive features 
   * Great for brainstorming (names are visible, e-mail notifications)
   * Examples: https://hackpad.com/New-scientific-markup-language-utAjFcYuvvB
* [Etherpad](http://etherpad.org/) (software)
    * e.g. at [Titanpad](http://titanpad.com/)

### LaTeX

* [ShareLaTeX](https://www.sharelatex.com/project)
   * Open source  
   * Git and Dropbox support in paid version
   * Basic features are free

* [WriteLatex](https://www.writelatex.com/)
   * Perhaps the best way to introduce people to LaTeX (no installation required, starts with a full working example)

* [Authorea](https://www.authorea.com/)
   * nice interface designed for writing full, scientific papers
   * also can use Markdown
   * underlying git repo, so good history management
   * public articles + one private free

* [StackEdit](https://stackedit.io/)
   * Web editor with Markdown and LaTeX, synchronizes with GoogleDocs and GitHub
   * Maybe good to introduce people to Markdown

* http://mathb.in/
   * Short math notes


## Collaborative reading

* [PeerLibrary](http://peerlibrary.org/)
   * Collaborative reading of academic publications
   * Sharing, highlighting, annotations, discussions
   * Displays PDFs in the browser
   * Still in development, [open source](https://github.com/peerlibrary/peerlibrary)
* [SciRate](https://scirate.com/)
   * tracking of new papers from [arXiv](http://arxiv.org/)
   * you can recommend and comment preprints


## Version control

Crucial for code.
Often helps a lot with writing LaTeX documents (see some discussion here: http://academia.stackexchange.com/questions/5277/why-use-version-control-systems-for-writing-a-paper).
Much more pleasant than e-mailing back and forth changes!

* [Git](http://git-scm.com/)
    * steep learnign curve, especially on Windows
    * Tutorials:
      * Interactive tutorial: http://try.github.io/
      * Relatively simple intro: http://www.ralfebert.de/tutorials/git/
      * [Version Control with Git - Software Carpentry](http://arokem.github.io/2014-01-27-Stanford/lessons/swc-git/tutorial.html) - especially for scientists
      * [Git for Scientists: A Tutorial](http://nyuccl.org/pages/GitTutorial/)
      * [How to contribute to GitHub projects](http://guides.github.com/overviews/flow/)
      * Adv. interactive tutorial for branching: http://pcottle.github.io/learnGitBranching/
    * An easy to use interface for Win is [TortoiseGit](http://en.wikipedia.org/wiki/TortoiseGit)

* [Mercurial](http://mercurial.selenic.com/)
    * Pure Python, so it works nicely on Windows (Linux and Mac OS X as well) 
    * Similar to git but with less steep learning curve
    * [Hg Init: a Mercurial tutorial by Joel Spolsky](http://hginit.com/)

While for small-to-medium size both are equally powerful (so pick any and you will be happy!), an older version control system [Subversion (SVN)](http://subversion.apache.org/) is less powerful, but not necessarily simpler (so when starting a new repository, use Git or Mercurial). For older projects it is still fine (SVN version control is still much, much better than no version control!).

For both Git and Mercurial [SourceTree](http://www.sourcetreeapp.com/) is nice and free (though not open) graphical interface.

For hosting (for collaboration with others and backup), see [Bitbucket](https://bitbucket.org/) and [GitHub](https://github.com/).

## Website tools

For personal homepages, lab notebooks and conference websites.

* [WordPress - code](http://wordpress.org)  and [WordPress - hosting](http://wordpress.com)
    * Examples:
        * https://johncarlosbaez.wordpress.com/
        * https://gowers.wordpress.com/
        * http://netsci2013.net/wordpress/
* [Jekyll](http://jekyllrb.com/)
    * For writing blogs in Markdown and easily putting them on GitHub 
    * Tutorial for using LaTeX in it: http://cwoebker.com/posts/latex-math-magic
    * Examples:
        * [Open Lab Notebook in Jekyll]( http://carlboettiger.info/2012/09/28/Welcome-to-my-lab-notebook.html)
        * [A homepage](http://ivanzuzak.info/)
* [Wikidot](http://www.wikidot.com/)
    * e.g http://offtopicarium.wikidot.com/
* [Wikispaces](http://www.wikispaces.com/)
    * Simple wikis, very easy to create and manage
    * Used as open science notebooks, for instance http://usefulchem.wikispaces.com/
* [Site44](http://www.site44.com/)
   * Showing small site by putting files into a [Dropbox](https://www.dropbox.com/) folder
* [GitHub Pages](http://pages.github.com/)
   * Static websites with Git 
* [Instiki](http://golem.ph.utexas.edu/wiki/instiki/)
   * Wiki especially for mathematical collaboration (see features on [Azimuth - how to blog](http://www.azimuthproject.org/azimuth/show/How+to#blog) - LaTeX, SVG, ...)
   * Examples:
      * http://www.azimuthproject.org/
      * http://ncatlab.org/
* [WorkingWiki](http://lalashan.mcmaster.ca/theobio/projects/index.php/WorkingWiki)
   * Wiki especially for mathematical collaboration
* [Sphinx](http://sphinx-doc.org/)
    * Great for writing documentation
    * Example (in Polish): http://django.carrots.pl/
* [Jekade](http://zohooo.github.io/jekyde/)
   * Jekyll-like static pages with built-in LaTe support, in Node.JS 

## Survey tools

* [Google Forms](http://www.google.com/google-d-s/createforms.html) of [Google Drive](https://drive.google.com/)
   * easy, free, but for a limited number of responses
   * easy way to set registration for a small event, or to get feedback
* [Survey Monkey](http://surveymonkey.com)

## Reference managers

* [Mendeley](http://www.mendeley.com/)
    * With PDF, notes, arXiv field, BibTeX support, metadata extraction
    * Free with large storage limit; owned by Elsevier 

* [Zotero](https://www.zotero.org/)
    * Strong browser integration - click a button in the URL bar to save a reference
    * Syncs references between computers
    * Open source

* [JabRef](http://jabref.sourceforge.net/)
    * Cross-platform manager for BibTeX databases. Little integration with the web.

* [Bibdesk](http://bibdesk.sourceforge.net/)
   * Mac OS X

## Sharing and repositories

* [GitHub](https://github.com)
   * great for sharing code and not only; very open for collaboration
   * examples:
      * a scientific open-source project [QuTip: Quantum Toolbox in Python](https://github.com/qutip/qutip)
      * the [Linux](https://github.com/torvalds/linux) itself
      * [German Federal Law and Regulations](https://github.com/bundestag/gesetze) (vide open data)
      * ...and even a book - "Two dozen mathematicians wrote a 600 page book in 6 months on GitHub" (http://homotopytypetheory.org/book/, see also [a blog post on it](http://math.andrej.com/2013/06/20/the-hott-book/))
   * [gist](https://gist.github.com/) for posting short codes or notes on anything
    
* [BitBucket](https://bitbucket.org/)
   * for Git, Mercurial and SVN
   * less social/collaborative than GitHub
   * unlimited number of private projects and collaborators with an academic e-mail http://atlassian.com/software/views/bitbucket-academic-license.jsp

* [Figshare](http://figshare.com/)
    * For sharing negative data, plots, posters, etc; gives you a DOI.

## Question and Answer sites

(list only related to academia or research-level)

* Some [Stack Exchange sites](http://stackexchange.com/sites) related to science, e.g.:
   * [MathOverflow](http://mathoverflow.net/)
   * [Academia - StackExchange](http://academia.stackexchange.com/)


## General-purpose programming

* [Python](http://www.python.org/)
    * Some great packages:
        * The [SciPy ecosystem](http://www.scipy.org/) contains lots of useful libraries. A detailed course is online at http://scipy-lectures.github.io/
            * [NumPy](http://www.numpy.org/) for numerics
            * [Matplotlib](http://matplotlib.org/) for plots
            * [Sympy](http://sympy.org/) for symbolic computations
        * [IPython Notebook](http://ipython.org/) for interactive environment for exploration and presenting results `$ ipython notebook --pylab inline`
            * http://nbviewer.ipython.org/ for sharing notebooks
            * [Introduction to IPython Notebook](http://nbviewer.ipython.org/github/batterio/intro_ipython_notebook/blob/master/notebooks/index.ipynb)
        * http://pandas.pydata.org/ for data analysis (R-like)
        * Also: NLTK! http://nltk.org/
        * http://scikit-learn.org/stable/ for machine learning
    * Python syntax intro: http://learnxinyminutes.com/docs/python/
    * Intros to Python for scientists:
      * [A Crash Course in Python for Scientists by Rick Mulle](http://nbviewer.ipython.org/5920182) in IPython Notebook 
      * [Python for scientific computing: Where to start by Steve Byrnes](http://sjbyrnes.com/?page_id=67)
   * More in depth science introductions:
      * [Python Scientific Lecture Notes](http://scipy-lectures.github.io/) - great!
      * [Materials by Nicolas P. Rougier](http://webloria.loria.fr/~rougier/teaching/)
    
* [JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript)
    * For interactive applications and visualizations (works on any system, no installations required)
    * Nice introduction: http://eloquentjavascript.net/


## Plots and diagrams


* [Matplotlib](http://matplotlib.org/) for Python
   * http://scipy-lectures.github.io/intro/matplotlib/matplotlib.html
   * http://www.physics.ucdavis.edu/~dwittman/Matplotlib-examples/
* [gnuplot](http://www.gnuplot.info/) (free software)
* [R](http://www.r-project.org/) (for applied statistics, but also nice plots, free software)
    * use together with RStudio http://www.rstudio.com/, powerfull IDE for R
    * [ggplot](http://ggplot2.org/) "a plotting system for R, based on the grammar of graphics", easier and nicer looking plotting, [tutorial](http://www.ceb-institute.org/bbs/wp-content/uploads/2011/09/handout_ggplot2.pdf)
* [D3.js - Data Driven Documents](http://d3js.org/)
    * A JavaScript library any data visualizations (also interactive)
    * [Interactive intro](http://vogievetsky.github.io/IntroD3)
    * Examples: http://biovisualize.github.io/d3visualization/
* [Gephi](http://gephi.org/) 
    * for graph anaysis and visualization
* [Origin](http://www.origin.pl/)
   * Windows, commercial 

## Drawing diagrams

* In LaTeX: TikZ library
    * Examples: http://www.texample.net/tikz/examples/
    * Introduction: [Basic Drawing Using TikZ - ShareLaTeX blog](https://www.sharelatex.com/blog/2013/08/27/tikz-series-pt1.html#.Us28X2RDv8E), http://cremeronline.com/LaTeX/minimaltikz.pdf
    * Manual: http://paws.wcu.edu/tsfoguel/tikzpgfmanual.pdf 
* [Inkscape](http://inkscape.org/) for *.svg (Scalable Vector Graphics)
   * open source, GNU
* [The Ipe extensible drawing editor](http://ipe7.sourceforge.net/)
   * open source, GNU

## Presentations

(except for the well-known office packages :),
unless with some additional hints)

* [LaTeX/Beamer](https://en.wikibooks.org/wiki/LaTeX/Presentations)
   * also: Beamer slides using Markdown: http://jeromyanglim.blogspot.com.es/2012/07/beamer-pandoc-markdown.html
* [Prezi](http://prezi.com/your/)
   * zoomable prezentations
   * for example: http://prezi.com/d3lswto1mebc/free-falling-through-prezi/
* [knitr](http://yihui.name/knitr/) combine R and markdown and export your report to pdf/doc/odt
* [Slidify](http://slidify.org/)
   * combine R and Markdown and get beautiful HTML5 slides
   * [example](http://slidify.org/samples/intro/#1)
   * easy share on GitHub or Github, Dropbox or [Rpubs](http://rpubs.com/)

### Additional tools

* [Latexit](http://pierre.chachatelier.fr/latexit/) for easily putting equations into Keynote/Powerpoint/Anything

### Sharing slides

Sharing is bulit-in in [Prezi](http://prezi.com/your/) and [Slidify](http://slidify.org/).

* [https://speakerdeck.com/](https://speakerdeck.com/)
   * people can view online and download pdfs (no registration or adverts, as of now)
   * [example](https://speakerdeck.com/pmigdal)

More generic: [GitHub](https://github.com/) and [Figshare](http://figshare.com/)


## Posters

* [Inkscape](http://inkscape.org/) for *.svg (Scalable Vector Graphics)
   * GNU
* LaTeX
   * [LaTeX Templates - Conference Posters](http://www.latextemplates.com/cat/conference-posters) 

## Math calculations

See also: General-purpose programming: Python. (And to reiterate: [SciPy](http://www.scipy.org/)!)

* [Mathematica](http://www.wolfram.com/mathematica/)
   * commercial
   * for symbolic calculations
* [Wolfram Alpha](http://www.wolframalpha.com/)
   * for online simple plots, units changing, integrals etc. a "demo version" of Mathematica
* [MATLAB](http://www.mathworks.com/products/matlab/)
   *  commercial
   * for numerical calculations, supports scripting
* [Octave](https://www.gnu.org/software/octave/)
   * open source, GNU licence
   * almost the same as MATLAB (sometimes incompatible), without graphical interface - only text
   * may use Gnuplot for plots
* [Sage](http://www.sagemath.org/)
   * open source, licensed under the GPL
   * mathematics software system (alternative to Magma, Maple, Mathematica and Matlab.) . It combines the power of many existing open-source packages into a common Python-based interface.
* [R](http://www.r-project.org/)
   * for any kind of statistics 

## Productivity misc

Throw a pile of random programs (it is not a complete list)

* [Remember The Milk](https://www.rememberthemilk.com/)
   * Todo list with easy synchronization
* [RescueTime](https://www.rescuetime.com/)
   * to track how much time you spend on different activities on your computer (that is, how much you work, and how much you procrastinate) 
* [Delicious](https://delicious.com/stared) and [Pinboard](https://pinboard.in/)
    * bookmark managers
    
* [Dropbox](https://www.dropbox.com/)
    * backup, sharing and some crude collaboration and version control


## Other similar listings

* http://www.force11.org/tools

## Meta

This text is in [Markdown](http://daringfireball.net/projects/markdown), put on https://gist.github.com/ (https://gist.github.com/stared/9130888) (its raw text is [here](https://gist.githubusercontent.com/stared/9130888/raw/software_for_scientists.md)).

Feel invited to collaborate.

### By

Original version collaboratively edited on http://titanpad.com/x1AgPmeWX1 by:

* [Piotr Migdał](http://migdal.wikidot.com) (author and the maintainter)
* Thomas Kluyver
* [Marek Stępniowski](http://stepniowski.com)
* Vasily Sochinsky
* Florence Piron
* Marta Czarnocka-Cieciura
* [Krzysztof Zieleniewski](http://kwzieleniewski.wikidot.com/)
* Le
* [Przemek Biecek](http://smarterpoland.pl/)
* [Carolina Odman-Govender](http://www.carolune.org/)
* Marcin Kurczych
* David Ketcheson
* [Steven Byrnes](http://sjbyrnes.com)
* write your name (even if you contributed a single character :)) use name, pseudonym or increment the anonumous counter:
* ...and 2 Anonymous Contributors.

### Intro note from the TitanPad file

YOU ARE INVITED TO EDIT! :)

DO:
* Add programs you use and recommend
* Fix mistakes and omissions by others. :)

DON'T:
* Throw a pile of random programs
(it is not a complete list of software for X - it is a recommendation list)


Additional pluses for: 
* `[name](link)` 
* comments on status (e.g. open source)
* one sentence of description what's that and what's that good for
* links to tutorials or other resources (esp. for the academic usage)
* or links to good examples of usage
* adding categories, their short intros or general links
* marking explitly if it only works under some OS

Please take yourself time to read http://titanpad.com/ep/pro-help/#deletionpolicy (I will put it as a GitHub gist after)