swcarpentry / shell-novice

The Unix Shell
http://swcarpentry.github.io/shell-novice/
Other
386 stars 975 forks source link

Binder button for launching JupyterLab? #998

Open davidrpugh opened 5 years ago

davidrpugh commented 5 years ago

Is there any interest in adding a Binder button so that learners can launch a JupyterLab instance and get access to a terminal running bash shell in the cloud?

JupyterLab 1.0 just dropped on PyPI and conda channels and is quickly becoming a default Python development. I used to always have a terminal window open when using Python or Jupyter but increasingly I am doing all of my terminal work using the terminal from within JupyterLab.

At a minimum it would provide instructors with an alternative teaching environment should they choose to use it without burdening either instructors or learners with additional software installation.

gcapes commented 5 years ago

I guess this might be useful for someone struggling to install Bash for whatever reason.

Part of a normal workshop is that learners leave with a working set-up on their own machines, so I would tend to view this Binder suggestion as a back up rather than a recommended alternative approach.

davidrpugh commented 5 years ago

@gcapes Thanks for the feedback! I agree that it should not be the recommended approach: we really do want learners to have a working install of bash on their own machines. I think that the value of the Binder button would be more for instructors who might want to demo bash shell within a familiar working environment for Python users.

I used to develop Python using my favourite text editor, an IPython console and a terminal window. I am increasingly moving towards JupyterLab as it provides all three inside a nice UI. I like to demo my development workflow for learners when I teach and when I teach the shell material I like to show learners that you can use a terminal from within JupyterLab. In this context, I find the Binder button useful as it allows learners to try out the terminal within JupyterLab without having to spend time installing Anaconda/Miniconda (if they don't already have it installed).

gdevenyi commented 5 years ago

Does binder actually offer a bash shell? I thought that was a python/R thing.

davidrpugh commented 5 years ago

Binder provides a number of UIs including JupyterLab and JupyterLab provides notebooks, Python consoles, and terminals inside a common UI.

davidrpugh commented 5 years ago

Here is the link that will launch the Binder that I created for the Software Carpentry Python lesson.

https://mybinder.org/v2/gh/swcarpentry/python-novice-gapminder/binder?urlpath=lab

...once the JupyterLab UI resolves then you can click the terminal button to get access to a terminal running bash inside JupyterLab.

wtgee commented 5 years ago

I used a Binder setup for a modified version of the Python Pandas workshop. We weren't doing it as an Intro class but instead as a more specific focus on Pandas and data analysis and we told them in advance that we expected them to know and have familiarity with Python. In that context it worked really well and saved time in terms of installing dependencies, making similar data files available, etc.

Some caveats:

My (unmerged) branch is here.

Some other instructors are attempting a similar thing with this Intro to Python branch @richard-miller

However, I agree that for the basic classes this might not be the best setup as it skips over valuable learning experience with setup.

gdevenyi commented 5 years ago

We would welcome a PR that adds the necessary materials and refers to them in the instructor guide.