Frequently Asked Questions
These are questions that have cropped up before, and can hopefully solve your query
Table of Contents
Noteable High-Level Design Description
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
ipynbformat, 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.
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.
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'.
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:
- A mechanism to provide authenticated access to a range of different Docker App containers
- It uses a Jupyterhub that can launch notebook apps into a private, secure cloud
One of the features of teaching is checking that students have an understanding of what’s been taught. Notebooks can provide an excellent tool for homework and assignments.
Noteable allows an instructor to create a notebook document where some cells can be graded (given marks). Fundamentally, this works on the assumption that 1 assignment has 1 notebook document.
- 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.
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.
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.
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)
Noteable has different Notebooks available to the user.
The majority of notebooks have
Python 3 with a number of additional libraries pre-installed.
Specialist notebooks provide specialist kernels:
Specialist notebooks provide different Python libraries:
R with Stan, R in the
RStudio interface, ....