Brought to you by NumFOCUS Foundation and O’Reilly Media Inc.
The official Jupyter Conference
August 22-23, 2017: Training
August 23-25, 2017: Tutorials & Conference
New York, NY

Writing (and publishing) a book written in Jupyter notebooks

Andreas Mueller (Columbia University)
11:05am–11:45am Thursday, August 24, 2017
Extensions and customization
Location: Murray Hill Level: Intermediate
Average rating: ****.
(4.00, 2 ratings)

Who is this presentation for?

  • Educators and authors

Prerequisite knowledge

  • Familiarity with Jupyter notebooks

What you'll learn

  • Learn how to use nbconvert, how to write custom preprocessors, and how to customize nbconvert templates
  • Understand what to watch out for when creating notebooks intended to be converted


The Jupyter Notebook can combine narrative, code, and graphics—the ideal combination for teaching anything programming related. That’s why Andreas Müller chose to write his book, Introduction to Machine Learning with Python, in a Jupyter notebook. However, going from notebook to book was not easy.

Andreas shares challenges and tricks for converting notebooks for print, exploring the architecture of nbconvert and focusing on the limitations of Markdown and writing custom converters. For his book, Andreas extended nbconvert to create AsciiDoc, the target format for publishing with O’Reilly. However, because nbconvert relies on pandoc, which in turn relies on representing everything as Markdown, there are severe limitations on what can be expressed in a convertible way. Andreas had to create a set of pre- and postprocessing tools for actually creating all the infrastructure necessary for a large document like a book.

Photo of Andreas Mueller

Andreas Mueller

Columbia University

Andreas Müller is a lecturer at the Data Science Institute at Columbia University and author of Introduction to Machine Learning with Python (O’Reilly), which describes a practical approach to machine learning with Python and scikit-learn. His mission is to create open tools to lower the barrier of entry for machine learning applications, promote reproducible science, and democratize the access to high-quality machine learning algorithms. Andreas is one of the core developers of the scikit-learn machine learning library and has been comaintaining it for several years. He is also a Software Carpentry instructor. Previously, he worked at the NYU Center for Data Science on open source and open science and as a machine learning scientist at Amazon.