Frequently Asked Questions

These are questions that have cropped up before, and can hopefully solve your query

Table of Contents

Noteable FAQs

 

Noteable High-Level Design Description

+ What is a computational notebook? - What is a computational notebook?

First, we have to declare that the term 'notebook' is often over-used, so let’s break this down into four parts:

  • The 'notebook document' is the file, in ipynb format, that contains the source code & output of your work.
  • There’s the backend bit that takes the source code and compiles it. This is language-specific, and is called the 'kernel'.
  • There’s the front-end 'notebook dashboard', which is mainly used to open notebook documents and manage files.
  • Finally, the 'notebook app' is the term for the application that provides the web-server which powers all this.

+ Where does Noteable come from? - Where does Noteable come from?

Let’s start with 3rd generation programming languages (3GL) - machine independent, abstracted, programmer-centric. The source code is written, then compiled into another form, which is then executed.

3GL programmers often use an integrated development environment (IDE) tool to write, compile, and execute code all from the same place. IDEs often come with additional helpful features such as syntax highlighting, code-completion, and debugging. 3GL programming means a developer can use an IDE on their workstation, with locally installed libraries, to create a compiled application that can be distributed & executed as is on other computers.

iPython took the renowned programming language Python and wrapped an interactive shell around it – so it would compile & execute sections of code in sections. iPython came with a command-line shell, and a game-changing IDE: a web-based interface.

iPython's main goal is not application development, but data analysis, exploration & modelling.

Jupyter Notebooks are a language-agnostic IDE for iPython, and also bring a wealth of visual & user-centric improvements to the tool. These developments, primarily open-source and developer-community oriented, are the building blocks of the Noteable service.


+ What is a docker container? - What is a docker container?

A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings.

The important part for us is 'includes everything needed to run an application'.


+ What does Noteable do? - What does Noteable do?

The problem with a Notebook App is that is runs on the user’s computer, and needs the user to have all the libraries installed that they want to use in their notebook documents.

If we can put the Notebook App plus all the desired libraries into a docker container, we have a distributable service that we know is complete & correct.

Noteable is, at this level, two things:

  1. A mechanism to provide authenticated access to a range of different Docker App containers
  2. It uses a Jupyterhub that can launch notebook apps into a private, secure cloud

+ What is the Jupyter Project? - What is the Jupyter Project?
The Jupyter Project is a spin-off project from the I-Python project, which initially provided an interface only for the Python language and continues to make available the canonical Python kernel for Jupyter. The name Jupyter itself is derived from the combination of Julia, Python, and R.

+ Why Noteable? - Why Noteable?
  • Notable provides the tools and support, for lecturers, students and researchers, whatever their level of skill or knowledge, to deliver narratively rich, coded solutions.
  • Notable enables computational narratives to be readily created, shared and reused within and across teaching and learning contexts.
  • In order for data, and the computations that process and visualize that data to be useful and meaningful for humans, they must be embedded into a narrative - a computational narrative - that tells a story for a particular audience and context.
  • Our tools are designed by lecturers and researchers to support lecturers and researchers.
  • They are easily integrated into your existing Virtual Learning Environment solutions.
  • Tailorable to your teaching: Notebooks can be discipline specific or designed to be bespoke for your needs.
  • We can support researchers working with data as well: To provide more CPU or more data storage, niche language kernel support and Big Data tooling.
  • Your student numbers may change but our infrastructure makes sure your Notebooks still work smoothly. All without recourse to local IT support.

+ How can I install my own packages on Noteable? - How can I install my own packages on Noteable?

For most notebooks

In an early cell in your notebook, install the package - use either of these options:

  • !conda install -y package-name
  • !pip install package-name

conda is much slower, but checks version dependencies to ensure there are no problems. pip will just install the library.

In either case - the library will not be present when you next start a notebook server.

For RStudio

You can install Python packages as above.

For R-specific packages, you can also select Tools, Install Packages... - and install that way.

Again, the packages will not be available the next time you start a notebook server.


+ How can I share notebook documents/files with other users? - How can I share notebook documents/files with other users?

From your notebook, you can’t.

Noteable notebooks have an extension called “nbgitpuller” (available under the “+GitRepo” button in the Notebook Dashboard.) If you make files available from an accessible git repo (does not have to be GitHub), then others may download those files. For full details on using this method, please read the nbgitpuller documentation. IMPORTANT: You do NOT need to create fancy links or anything... +GitRepo does that for you.

Most (but not all) Noteable notebooks have an extension called “nbgrader”. This allows instructors to make assignments available for courses. Nbgrader has the advantage that it supports grading and limits distribution to just those on a specific course. The downside is that nbgrader requires a connecton from an LMS/VLE (see the nbgrader section)