Oriole: a new learning medium
  based on Jupyter + Docker

JupyterDay Atlanta, 2016-08-13

Paco Nathan @pacoid liber118.com/pxn
Director, Learning Group @ O’Reilly Media

Jupyter

https://github.com/ceteri/oriole_jupyterday_atl
CC BY-NC-SA 4.0

Abstract

O’Reilly Media needed to provide a way for authors to use Jupyter notebooks to create professional publications. We also wanted to integrate video narration into the UX. The result is a unique new learning medium called Oriole, where:

  • Jupyter notebooks are used in the middleware
  • each viewer gets a 100% HTML experience (no download/install needed)
  • the code and video are sync’ed together
  • each web session has a Docker container running in the cloud

Tutorials are now much quicker to publish than “traditional” books and videos. This talk show examples and examines the system architecture built from open source projects. We’ll review feedback from authors working in this medium, i.e., how to teach more effectively through the combination of video + notebooks + containers.

about

Living and working in apple orchards

These beautiful chiltota migrate each year from Central America
to nest in our local orchards

Chiltota

Context

Les Guessing posed an interesting question earlier this year on Twitter:

Surprised how data "Storytelling" mostly talks about visualization, not video or other great storytelling mediums.

For example...

Regex Golf by Peter Norvig
https://www.oreilly.com/learning/regex-golf-with-peter-norvig

tutorial

Fernando's quote about Oriole

Elements

  • computable content (kudos to Lorena Barba) with repeatable results
  • rich text
  • informal video narrative, with a timeline
  • context as a "unit of thought"
  • data visualization/interaction
  • zero download/install/config
  • personalized sessions
  • instrumentation
  • experimentation

Motivations

We find that people who are the innovators in programming, data science, dev ops, design, etc., tend to be really busy people. So it's great to streamline how we develop content to publish, optimizing the production time to be weeks instead of months.

We also put ourselves into our audience's role: notebook content provides much more direct, hands-on, contextualized experience across a wide variety of programming environments. Meanwhile containers obviate the need for many people having to spend the first 40 minutes of a 3-hour conference tutorial fussing with downloads.

Plus, we really like to apply interesting new technologies in media for learning, mixing up what's possible.

What insights and experiences could we share back to the community, as Jupyter evolves? Oriole's just a starting point for O'Reilly, and we look forward to many other kinds of integrations for Jupyter in media.

A notebook, a container, and ~20 minutes of informal video
  walk into a bar...

with an open source project called Thebe in the midst

three layers

Jupyter @ O'Reilly Media

Embracing Jupyter Notebooks at O'Reilly, Andrew Odewahn
https://www.oreilly.com/ideas/jupyter-at-oreilly

Oriole Online Tutorials
https://www.safaribooksonline.com/oriole/

Learn alongside innovators, thought-by-thought, in context
https://www.oreilly.com/ideas/oreilly-oriole-learn-alongside-innovators-thought-by-thought-in-context

Some history

Literate Programming, Don Knuth
http://www.literateprogramming.com/

Paraphrased: Instead of telling computers what to do,
tell other people what you want the computers to do

Don Knuth

More recently

PyCon 2016 Keynote, Lorena Barba
https://www.youtube.com/watch?v=ckW1xuGVpug&feature=youtu.be&t=35m11s (video)
https://figshare.com/articles/PyCon2016_Keynote/3407779 (slides)

Highly recommended: speech acts (based on Winograd and Flores)
as theory for what we're doing here Lorena Barba

What we learned about teaching with notebooks

  • focus on a concise "unit of thought"
  • invest the time and editorial effort to create a good introduction
  • keep your narrative simple and reasonably linear
  • "chunk" both the text and the code into understandable parts
  • alternate between text, code, output, further links, etc.
  • leverage markdown by providing interesting links for background, deep-dive, etc.
  • code cells should not be long, < 10 lines
  • code cells must show that they've run, producing at least some output
  • load data from the container, not the network
  • clear all output then "Run All" -- or it didn't happen
  • video narratives: there's text, and there's subtext...
  • pause after each "beat" -- smile, breathe, allow people to follow you

For the JVM people: stop thinking only about IDEs, Ivy, Maven, etc. (ibid, Knuth1984)
BUILD UBER JARS, LOAD LIBRARIES FROM THE CONTAINER, NOT THE NETWORK!!!!
(apologies for the shouting)

Next steps

Briefly, some perspectives about the nature of assessment evolving... and how Oriole and Jupyter in general fit into the big picture

Thank you!

Kudos for Oriole design/development to: Andrew Odewahn, Zach Schwartz, Martin Bravo, Fred Chasen, Rune Madsen, et al.

Shannon Cutt and I are here, eager to talk with you about becoming authors for O'Reilly, particularly with Jupyter notebooks in Oriole :)

How about some free EPUBs and videos? (will email a link)