Tooling

Notebooks & Reactive Computing

Jupyter, Marimo, Quarto, Observable — interactive analysis environments.

Notebooks are still the default surface for ad-hoc analysis, ML experimentation, and data exploration. The 2024–2026 wave brought reactive notebooks (Marimo, Observable) that fix the "stale state" problem of classic Jupyter. For data apps and dashboards, see Data Apps; for code-first BI, see BI & Dashboards.

Classic Jupyter

  • JupyterLab / Jupyter Notebook — the standard. BSD; runs locally, in JupyterHub, in VS Code, or in any cloud notebook host.
  • JupyterHub — multi-user Jupyter for teams; deploy on K8s with Zero to JupyterHub. BSD.
  • Jupyter Server — the headless backend other tools build on (VS Code notebooks, nteract, etc.).
  • BinderHub — public/free interactive notebook hosting from a Git repo; the engine behind mybinder.org.
  • nbdev (fast.ai) — write libraries in notebooks with tests and docs; opinionated but loved.
  • Papermill — parameterize and execute notebooks; the standard for "run this notebook nightly with these inputs."
  • Voila — render a Jupyter notebook as a read-only dashboard.

Reactive / next-gen notebooks

  • Marimo — Python notebook stored as a .py file; reactive (cells re-run on dependency change), no hidden state, deployable as a script or app, exports to WASM/HTML. Apache 2.0. The most-recommended new pick for Python notebooks in 2026.
  • Observable Framework — JavaScript Markdown + reactive cells → static-rendered data apps. ISC license; free. Successor to the Observable Notebooks SaaS, focused on Git-versioned reports.
  • Pluto.jl — reactive notebooks for Julia; same philosophy as Marimo.
  • Polynote (Netflix) — polyglot notebook (Scala / Python / SQL); fewer updates lately but unique for Spark workflows.

Document-style / publishing

  • Quarto — Markdown + Python / R / Julia / Observable cells → HTML / PDF / Word / book / website. MIT. The default for "this is a polished report or paper." Great for pdf-documents export.
  • R Markdown / Bookdown — Quarto's predecessor; still works.
  • MyST Markdown — Markdown variant aimed at scientific publishing; integrates with Jupyter Book.
  • Jupyter Book — book-style site builder over notebooks; MyST-flavored.

Hosted notebook services (free tiers)

  • Google Colab — free GPU/TPU tier; basically free Jupyter on a VM.
  • Kaggle Notebooks — free GPU; great for competitions and public sharing.
  • Hex — collaborative notebooks + apps; free Community plan.
  • Deepnote — Jupyter-compatible collaborative notebook; small free tier.
  • Marimo Cloud — hosted Marimo; free tier.
  • Mode, Noteable, JetBrains Datalore — paid SaaS with limited free tiers.

Kernels worth knowing

  • IPython — Python kernel; the default.
  • IRkernel — R kernel.
  • IJulia — Julia kernel.
  • xeus-cling — C++ kernel.
  • Almond — Scala kernel.
  • jupyter-cache — execute and cache outputs across runs.

Patterns to adopt

  • Pin and version environment. requirements.txt / pyproject.toml next to the notebook; uv lock files in 2026.
  • Don't rely on cell order. Either use a reactive notebook (Marimo) or write notebooks top-down without backward jumps.
  • Parameterize for production. Papermill turns a notebook into a callable function with inputs.
  • Convert to scripts when stable. jupytext syncs .ipynb.py; Marimo notebooks are .py natively.
  • Diff-friendly storage. nbstripout or jupytext for sane Git diffs on classic Jupyter.

Pick this if…

  • Default Python notebook in 2026: Marimo.
  • Existing Jupyter culture / many libraries assume it: JupyterLab + JupyterHub.
  • You want a polished report or PDF: Quarto.
  • JavaScript / web data team: Observable Framework.
  • Hosted, no setup, free GPU: Google Colab or Kaggle.
  • Scheduled notebook execution: Papermill (orchestrate it from Airflow / Dagster / Prefect — see Data Orchestration).

On this page