PyCon US in Portland - notes from our Jupyter/IPython-in-depth tutorial

Last week I was in Portland for PyConUS.

Thursday I contributed to the Jupyter/IPython-in-depth tutorial led by Matthias Buissionier and MinRK core Jupyter project members.

TutorialsIPython and Jupyter in Depth: High productivity, interactive Python2017-05-18 Tutorials, 9 a.m. – 12:20 p.m.

I'd previously run part of this tutorial at EuroPython 2016 in Bilbao, so I was familiar with some of the github ipython-in-depth content - though there is an immense amount of materials from which it is necessary to choose/adapt.

It was a great opportunity to be able to co-present with Matthias and Min and meet some core Jupyter team members.

Matthias had done quite a bit of work updating the repo which has been used for various workshops since 2012, pre-dating even the announcement of the Jupyter/IPython bigsplit (at SciPy in 2014?).

It was proposed that I present how to deploy JupyterHub in the Cloud as I'm familiar with Docker/Kubernetes/Google Cloud Platform.

I was really pleased with that for a couple of reasons

- one of the main questions I had at the end of my 3hr Bilbao tutorial was how do we install JupyterHub
  At the time it was harder to install and I'd hoped to address this at some point.

  In the meantime the Jupyter project, supported by the Berkeley Institute for Data Science Education Program has further developed JupyterHub and in particular installation procedures have been developed and published.

- that procedure makes use of the Kubernetes Helm project "The Kubernetes Package Manager", something which has been on my todo-list for a while, so this was an opportunity to see how easy that is to use

Matthias pointed me to the "Zero to JupyterHub" website which describes in a very clear way how to deploy JupyterHub on Google Cloud Platform or Microsoft Azure.  In fact those instructions could be used on any  Kubernetes platform.

I used those instructions to
- deploy a basic jupyter hub image
- extend this by building a docker-stacks base-notebook image, with ipython-in-depth repo integrated
- extend this to a more complete image dervied from the docker-stacks minimal-notebook image to which I added Thomas Kluyvers' bash kernel

The deployed example is absolutely not for production being http based without any realy login authentication.  But the "Zero to JupyterHub" explains how to add proper authentication for example using OAuth2 with Google.

All this is well explained in the "Zero to JupyterHub" docs here