Record and Playback in the IPython Notebook

This post originally appeared on the Software Carpentry website.

We decided last fall to start teaching Python using the IPython Notebook rather than a plain old command-line interpreter. It will take us a few months to complete the transition, but one of the things that we're hoping to do in the meanwhile is build a record-and-playback plugin for the Notebook. We think this will be more useful than the screencasts we currently have because:

  1. People can't pause a video, then copy and paste its text, because there is no text: there are just pixels arranged to look like letters.
  2. For the same reason, the code in videos is invisible to search engines.
  3. We can't diff and merge videos in version control the way we can diff and merge source code and Notebooks.
  4. Video is inherently less adaptable to new platforms (e.g., tablets and smart phones) than first-class content that's rendered by the devices themselves.

As we explain in the issue we've opened for it on GitHub, the workflow we envision is:

  1. Author spends minutes, hours, or days incrementally building up the notebook.
  2. Author puts notebook in "mark time" mode.
  3. Author records audio her favorite desktop tool while clicking "next" in the notebook to insert time marks into metadata.
  4. Author saves audio and inserts URL into notebook.
  5. Time passes.
  6. Audience opens notebook in browser (either a local or web copy—the audio file may be local or web as well).
  7. Audience presses "Play".
  8. Notebook incrementally reconstructs itself in sync with voiceover.
  9. Audience can use "Rewind", "Fast Forward", "Pause", "Go To Cell" (jumps the audio) or "Go To Time" (jumps the notebook) at will.

We'd welcome your input: if you have any thoughts on design, interface, or implementation, please add comments to the issue.

Dialogue & Discussion

Comments must follow our Code of Conduct.

Edit this page on Github