Crowdsourcing for a blog: Cool Binder features

I’ve been asked to be featured in a blog and I figured I’d crowdsource some answers to one of the questions here:

What are some neat features you can do with Binder that you don’t think most people are aware of?

  • Build R with conda
  • run RStudio
  • run a linux desktop
  • take advantage of the URL to navigate. Such as switch between classic and JupyterLab, or classic notebook and classic dashboard, or even RStudio or Voila (depending on what else is installed)
  • That you can do most configuring without even needing git installed locally by using your browser to interface with a GitHub repo or gist (I’ve found creating/editing a postBuild file is one that requires it. Not sure about start).

I do not know what most people are aware of, but these are some simple uses I enjoy a lot recently:

  • you can use it instead of HackMD; the JupyterLab team is using a Binder image running the latest JupyterLab version on their Wednesday meetings with Real Time Collaboration mode enabled and Markdown Preview panel basically replicating the HackMD features, but with the ability to quickly jump to a notebook for a demonstration.
  • you can use GitHub gists and Binder to create slim instances of Binder; I am always surprised how fast those spin up. To add a notebook to the gist just drag-and-drop it from your file browser.
  • you can use Binder links in the comments on PRs to preview, and give feedback on new features being worked on for JupyterLab, its extensions, and some other projects.
    • related to the above, you can have a bot (like this one) comment on your PR with a link to Binder to open up with the files on the PR branch, which is super helpful for reviewing changes to notebooks with interactive features.
  • this is very niche, but also super neat for other contributors: just earlier today I bisected a bug in JupyterLab using Binder images for all major PRs merged between 3.1.4 and 3.1.6 releases (see here)
  • you can make an SVG flowchart with data and analysis flow, embedding links to specific notebooks opening up on Binder and add it to the README of your project GitHub. It will not work immediately (you need to click on the svg first to make the links work), but it is pretty convenient way to facilitate navigation of a moderate-size repository.

Some key tools I use, preferrably with a simple JSON config copied by postBuild:

  • jupyter-server-proxy can run almost any well-behaved TCP server
    • fun for demos where you want to “pretend” you’re in a real working environment, with a scheduler, e.g. dagster, databases, etc.
  • nbgitpuller helps reuse a “stable” environment repo with one or more a “dynamic” content repos
    • improves time-to-pixels for multiple users
  • jupyterlab-fonts enables tweaking the style of a binder
    • just enough to make it distinctive
  • jupyter-videochat provides semi-private Jitsi multi-user chat rooms
    • can be configured by URL to launch directly into a specific room
    • moderator can add a password/lobby as well
  • ipydrawio works very nicely with collaborative editing
    • the austere sketch UI with post-its, full-screen (but with audio on in the background) is particularly good for brainstorming with minimal distraction