{
 "metadata": {
  "name": "The IPython Project"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "[Edit Slideshow Style]\n",
      "<style> .rendered_html {font-size: 150%} </style>"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<img src=\"/files/figures/logo.png\" />"
     ]
    },
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "The IPython Project"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "The IPython development team"
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "History"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "* October/November 2001: Fernando's \"afternoon hack\"\n",
      "    - `$PYTHONSTARTUP`: ipython-0.0.1.py (259 lines)\n",
      "    - Interactive Python Prompt (IPP), Janko Hauser (Oceanography)\n",
      "    - LazyPython, Nathan Gray (Caltech)\n",
      "* 2002: Fernando rejects John Hunter's Gnuplot patches: John starts matplotlib instead\n",
      "* 2004: First version of IPython.parallel (Brian Granger and Min Ragan-Kelley)\n",
      "* 2005-2009: Wayavi, Wx support, refactoring, slow period\n",
      "* 2010: Discover ZeroMQ\n",
      "    - PyZMQ Created (Brian Granger and Min Ragan-Kelley)\n",
      "    - Build Qt Console and IPython Kernel (Granger, Perez, Evan Patterson)\n",
      "    - Rewrite IPython.parallel with ZeroMQ (Min Ragan-Kelley)\n",
      "    - Move to Git/GitHub\n",
      "    - Python 3 port (Thomas Kluyver)\n",
      "* 2011: IPython Notebook (Brian Granger)\n",
      "* 2012: Development continues to accelerate"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Ohloh Statistics:\n",
      "\n",
      "<img src=\"/files/figures/ipython_ohloh_stats_20121023.jpg\" />"
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Components"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "The modern IPython consists of two types of processes:\n",
      "\n",
      "* IPython Kernel: runs code and sends output over ZeroMQ/JSON based message protocol\n",
      "* Frontends: User Interface that talks to a Kernel\n",
      "    - Terminal Console\n",
      "    - QT Console\n",
      "    - Web-based Notebook"
     ]
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "Terminal Console"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "The classic terminal based IPython with Pylab+Matplotlib for interactive plotting."
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "\n",
      "<img src=\"/files/figures/pylab-screen.png\" width=60% />"
     ]
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "Qt Console"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Inline plotting, multiline editing, rich output display, two process Kernel model."
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<img src=\"/files/figures/ipython_qtconsole2.png\" width=60% />"
     ]
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "Web Notebook"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Code, text, plots, equations, images, video, open document format."
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<img src=\"/files/figures/ipython-notebook-specgram-2.png\" width=60% />"
     ]
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "Fast, high-level parallel computing"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<img src=\"/files/figures/ipython_dist_architecture.png\" width=60% />"
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "A growing ecosystem of third party applications"
     ]
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "Microsoft: Python Tools for Visual Studio"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<img src=\"/files/figures/ipython_ms_visual_studio.png\" width=60% />"
     ]
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "A Vim Frontend"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<img src=\"/files/figures/vim-ipython.png\" width=60% />"
     ]
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "Notebooks on Windows Azure Cloud"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<img src=\"/files/figures/azure-notebook.png\" width=60% />"
     ]
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "StarCluster: IPython Notebook and Parallel on Amazon EC2"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<img src=\"/files/figures/starcluster_overview.png\" width=60% />"
     ]
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "NotebookCloud: one-click Notebook instances on Amazon EC2"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<img src=\"/files/figures/notebookcloud.png\" width=60% />"
     ]
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "Enthought's Canopy"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<img src=\"/files/figures/canopy-ipython.png\" width=60% />"
     ]
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "Emacs Notebook client"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<img src=\"/files/figures/emacs_ein_notebook_simple_plot.png\" width=60% />"
     ]
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "vIPer: a dedicated Notebook client"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<img src=\"/files/figures/vIPer.png\" width=60% />"
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Contributors"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "* Fernando Perez: Neuroscience, UC Berkeley (BDFL)\n",
      "* Brian Granger: Physics, California Polytechnic State University\n",
      "* Min Ragan-Kelley: Nuclear Engineering, UC Berkeley\n",
      "* Matthias Bussonnier: Physics, Institut Curie, Paris\n",
      "* Jonathan March: Enthought\n",
      "* Thomas Kluyver: Biology, U. Sheffield\n",
      "* J\u00f6rgen Stenarson: EE, Sweden\n",
      "* Paul Ivanov: Neuroscience, UC Berkeley\n",
      "* Robert Kern: Enthought\n",
      "* Evan Patterson: Physics, Caltech/Enthought\n",
      "* Brad Froehle: Mathematics, UC Berkeley\n",
      "* Stefan van der Walt: Neuroscience, UC Berkeley\n",
      "* John Hunter: Tradelink Securities, Chicago\n",
      "* Prabhu Ramachandran: Aerospace Engineering, ITT Bombay\n",
      "* Satra Ghosh: Neuroscience, MIT\n",
      "* Ga\u00ebl Varoquaux: Neurospin, Orsay, France\n",
      "* Ville Vainio: CS, Tampere University of Technology, Finland\n",
      "* Barry Wark: Physion Consulting\n",
      "* Ondrej Certik: Physics, University Nevada, Reno\n",
      "* Daren Dale: Cornell\n",
      "* Justin Riley: MIT\n",
      "* Mark Voorhies: UC San Francisco\n",
      "* Nicholas Rougier: INRIA Nancy Grand Est\n",
      "* Thomas Spura: Fedora Project\n",
      "* Many more (~150 committers)\n"
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Support"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "* Enthought: Qt Console, hosting, lots of other things\n",
      "* Microsoft: Windows HPC Server support, Visual Studio, Azure (thanks to Wenming Ye and Shahrokh Mortazavi)\n",
      "* DoD/DRC Inc: funding in 2012 to integrate Notebook and Parallel support (thanks to Jose Unpingco and Chris Kees)\n",
      "* NIH: via NiPy grant\n",
      "* NSF: via Sage compmath grant\n",
      "* Google: summer of code, 2005, 2010\n",
      "* Tech-X Corporation: previous versions of Notebook and Parallel "
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [],
     "language": "python",
     "metadata": {},
     "outputs": []
    }
   ],
   "metadata": {}
  }
 ]
}