{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

Title here: a Notebook-based talk

\n", "\n", "

With a great subtitle!

\n", "\n", "
\n", "\n", "

\n", "

[ipython.org](http://ipython.org)

\n", "\n", "

\n", "

Fernando P\u00e9rez

\n", "

[fperez.org](http://fperez.org), [@fperez_org](http://twitter.com/fperez_org)

\n", "

U.C. Berkeley

\n", "\n", "

\n", "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## How to use this to write slideshows...\n", "\n", "### Installation check\n", "\n", "First, this presumes you've already read and executed once the accompanying `install-support` notebook, which should install the necessary tools for you, and you restarted your notebook server. If everything went well, right now your toolbar should look like this, with a new button highlighted here in red:\n", "\n", "![img](files/toolbar-slideshow.png)\n", "\n", "That new button is the toggle to enter live slideshow mode, which you can use to switch between the normal editing mode (with the whole notebook as one long scrolling document) and the presentation mode.\n", "\n", "### Loading the CSS\n", "\n", "All the CSS is kept in a file called `style.css`, and it's loaded, along with a few handy utilities, by the `talktools.py` script. Simply run it once to load everything, or if you make any tweaks to the CSS:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# I keep this as a cell in my title slide so I can rerun \n", "# it easily if I make changes, but it's low enough it won't\n", "# be visible in presentation mode.\n", "%run talktools" ], "language": "python", "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "html": [ "\n" ], "metadata": {}, "output_type": "display_data", "text": [ "" ] } ], "prompt_number": 30 }, { "cell_type": "code", "collapsed": false, "input": [ "website('nbviewer.ipython.org', 'Notebook Viewer - nbviewer')" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "Notebook Viewer - nbviewer\n", "
\n", "\n", " " ], "metadata": {}, "output_type": "pyout", "prompt_number": 158, "text": [ "" ] } ], "prompt_number": 158 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "\n", "# `IPython.parallel`\n", "\n", "* Cluster: one *controller* (master), N dynamic *engines* (slaves). $N \\lesssim 300$.\n", "* Accessed by users via dynamic proxy: `parallel.Client`.\n", "* A `Client` creates as many *views* as desired by user:\n", " - `DirectView`: SPMD.\n", " - `LoadBalancedView`: automatic task distribution.\n", " - Blocking and async APIs.\n", " - Direct `put` and `get` (and `scatter`/`gather`).\n", " - Views can span arbitrary subgroups of the cluster.\n", " - Multiple views coexist simultaneously.\n", "* One-sided communication model.\n", "* Happy coexistence with MPI.\n", "* All comms with [\u00d8MQ](http://www.zeromq.org), in C++, no GIL, zero-copy when possible." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Lessons in building a community\n", "\n", "## A delicate balancing act\n", "\n", "* Individual leadership and sense of ownership vs turf wars.\n", "* Clear project vision vs. broad engagement of a community with many ideas.\n", "\n", "## Disagreement: highly reactive fuel\n", "\n", "* Can power creativity or spectacularly blow up.\n", "* Patience, trust, generosity and respect.\n", "* Make calls and live with the mistakes without recrimination.\n", "\n", "## The rules apply to everyone, starting with me\n", "\n", "* Even if they slow me down!\n", "\n" ] } ], "metadata": {} } ] }