2025-10-22
Switching from Jupyter Notebook to Marimo.
With uv
install marimo
:
uv add marimo\[recommended\]
Then fire up a notebook for a python file:
marimo edit notebook.py
There are a ton of cool features, far beyond what Jupyter Notebooks offer, but I’m making the jump because marimo doesn’t have the two dealbreakers that kept me from using Jupyter Notebooks in my workflow.
Jupyter Notebooks are very nice for exploring datasets, but:
-
My workflow is based on everything being a text file. Jupyter Notebooks are not. This means that all my version control and task management tricks (wtfd) get fall apart.1
-
Jupyter Notebooks don’t integrate well into workflows where you want everything to run in order! (i.e. be reproducible) g
Marimo solves both of these. First, the files that are saved are just .py files (state is saved separately), so you can track them in version control and grep them as you would any other code file. This addresses both of my issues, since I can also script against the notebook.py file as I would against any other .py file. With the benefit of being able to run cells interactively, and inspect the data throughout the pipeline. Second, marimo tracks the state of the cells, and will warn you if you are using stale data. This prevents the problem where someone gives you a notebook that has cell output that you cannot replicate. Marimo defaults to guaranteeing that your results are reproducible (overstated, but more or less true).
Oh, also Jupyter 6 broke all of my slides.
-
What I mean by this is that I manipulate the file that holds the code directly. Jupyter Notebooks generate JSON files which preserve the state of the notebook, including your code cells, but a ton of other things. ↩