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:
- 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.
- For the same reason, the code in videos is invisible to search engines.
- We can't diff and merge videos in version control the way we can diff and merge source code and Notebooks.
- 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:
- Author spends minutes, hours, or days incrementally building up the notebook.
- Author puts notebook in "mark time" mode.
- Author records audio her favorite desktop tool while clicking "next" in the notebook to insert time marks into metadata.
- Author saves audio and inserts URL into notebook.
- Time passes.
- Audience opens notebook in browser (either a local or web copy—the audio file may be local or web as well).
- Audience presses "Play".
- Notebook incrementally reconstructs itself in sync with voiceover.
- 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.