of utilizing Jupyter Lab, I’ve moved most of my work to marimo notebooks, a brand new type of Python pocket book that addresses many long-standing points with conventional ones. This text covers the explanations behind my transition and the way marimo suits naturally into my present workflow, with full gratitude to Mission Jupyter for constructing the pocket book ecosystem that formed knowledge science, analysis and schooling.
A little bit of background
I’ve spent years inside notebooks. For a very long time, my setup was a mixture of Jupyter Notebooks/Lab for native experiments and Google Colab for cloud or GPU work, due to their free tier choice. I’ve even authored many blogs on making probably the most out of those notebooks, the place I’ve shared tricks to transcend the conventional manner of utilizing them.
Having stated that, there have been sure points with these conventional notebooks, the most important being reactivity (or quite, the shortage of it). Hidden state, out-of-order execution, and handbook reruns have been a few of my ache factors with these notebooks.
That modified once I found marimo, an open-source various for Jupyter notebooks whereby you may run cells, carry out computations, and create plots simply as you’d in Jupyter. However beneath, it really works very otherwise and fixes many long-standing points. The important thing distinction is {that a} marimo pocket book is only a Python file, making it each a greater pocket book and a greater coding atmosphere for anybody who makes use of Python. On this article, I share ten causes behind my change and why working with notebooks has been a lot smoother for me since transferring to marimo.
If you wish to observe alongside, set up marimo as proven under. This command launches the marimo editor and opens the pocket book in sandbox mode, which works like a light-weight digital atmosphere that retains your pocket book remoted from the remainder of your system. You may as well use
marimo.newto begin a brand new pocket book within the on-line playground. For detailed directions, discuss with the documentation.
pip set up marimo
marimo edit --sandbox pocket book.py
1. Reactivity that lastly fixes the hidden state points
Conventional notebooks will not be reactive. Which means that if I alter one thing in a single cell, nothing else updates by itself. I usually find yourself re-running them simply to maintain the outputs constant. As an illustration, take into account the Jupyter Pocket book under the place on the left I outline two variables, a and b, add them collectively to get a 3rd variable c, after which show the worth of c, which is 30.
Now, if I have been to alter a to twenty as proven on the best , c would nonetheless present 30 except I re-ran the cell. That mismatch between code and output is the traditional hidden state downside.
Marimo fixes this with reactive execution, the place each cell is a part of a dependency graph (DAG). Modifications in a single cell robotically set off updates in dependent cells. So, when a adjustments, marimo re-evaluates any dependent cells. See how c updates robotically when the worth of a is modified.

This retains my code and outputs completely in sync and it means I can share my notebooks with others with out worrying concerning the order wherein they execute.
However ought to each cell replace robotically? Not at all times. Some cells are costly to run, like these involving ML coaching or heavy knowledge processing. The excellent news is that marimo helps lazy execution, which helps you to flip off auto-updates and set off such cells solely when wanted.
2. Cell order not breaks my workflow
Since marimo notebooks execute cells based mostly on variable relationships and never their order on the web page, this offers me the liberty to arrange my code in a manner that is smart to me. As an illustration, I can place all my imports and helper capabilities on the backside to maintain the workspace clear.
This additionally opens up some enjoyable use circumstances. I’ve used this to create small auto-graded quizzes the place the reply key sits on the backside of the pocket book. The quiz nonetheless works high quality as a result of the cell order doesn’t matter, and the solutions will not be instantly seen to the particular person taking the quiz. (And sure, marimo comes with a darkish mode too 😃.)

3. It’s principally a Python File underneath the hood
Since each marimo pocket book is saved as a pure Python file, it solves my long-standing challenge with versioning in Git. I can lastly monitor adjustments cleanly with out coping with messy JSON diffs. The pocket book additionally turns into way more versatile. I can reuse it as a script, run it from the command line, and even flip it right into a small interactive app with out altering something.
Beneath, the best aspect reveals the marimo pocket book view, whereas the left aspect reveals the identical pocket book opened as a standard Python file in an editor.

4. I can simply flip my Notebooks into apps
Turning a marimo pocket book into an interactive app can be simple. I can change between Edit Mode and App View with a single click on, and I by no means must rewrite my code or add something further.
Right here is an instance pocket book which converts temperatures from Celsius to Fahrenheit. The identical pocket book might be seen in App Mode utilizing the default vertical structure.

This characteristic is very helpful for creating interactive blogs, tutorials, and academic walkthroughs for libraries. Should you’ve ever learn AI Explorables, you understand the sensation of partaking with content material quite than simply studying it. Marimo offers an identical really feel and the Grid Format makes it even higher since I can drag and drop outputs to rearrange the app the best way I need.

5. Environment friendly Bundle Supervisor, so no extra dependency complications
Marimo comes with a built-in package deal supervisor that lets me set up lacking libraries proper from the pocket book. If a module is unavailable, marimo reveals a small immediate, and I can set up it with a click on. This removes the same old back-and-forth with terminals.

Marimo additionally handles reproducibility for me. Once I run a pocket book with the --sandbox flag, it tracks all packages and their actual variations and saves them contained in the pocket book file as a top-level remark. There is no such thing as a want for a separate necessities.txt file as a result of the pocket book already carries every little thing it wants.

6. Constructed-in utilities for working with DataFrames.
Should you spend numerous time exploring knowledge, that is a type of options that instantly looks like a godsend. If you show a dataFrame in marimo, the default view is totally interactive and comes with a number of useful instruments proper out of the field, like scrolling, pagination, computerized histograms for numeric columns, and easy sorting and filtering from the column headers. This quickens the EDA course of for me, as visible exploration usually offers higher insights.

Marimo additionally lets me flip a DataFrame into an interactive enter aspect. Utilizing mo.ui.desk,I can choose rows and use these picks in downstream computations. The picks replace reactively, which implies the remainder of my pocket book updates robotically too.

If I wish to share a pocket book with a enterprise stakeholder, marimo features a UI dataframe editor that lets them drag and drop aggregations and transformations with out writing any code. It even generates the equal Python code for each step.

And wait, that’s not all. There’s additionally a Knowledge Explorer utility that lets me construct fast visualizations straight from the DataFrame.

All of this makes early-stage knowledge exploration a lot quicker. As a substitute of juggling libraries or writing boilerplate code simply to know a dataset, I can begin analyzing and visualizing instantly contained in the pocket book.
7. See the documentation as you kind
One of the vital underrated options of marimo notebooks for me has been the Reside Docs panel. I can see perform docstrings, parameters, and examples with out calling assist utilities.
The panel can be interactive, so I can scroll by way of lengthy docstrings, examine examples, and duplicate snippets into my pocket book. If the docstring has formatted examples, marimo detects them and lets me copy them straight into a brand new cell, which has been very helpful whereas studying new libraries.

8. SQL Contained in the Pocket book
Marimo has nice assist for SQL. I can keep in a single pocket book and blend SQL and Python in a really pure manner. I can write a SQL question inside a SQL cell, run it, and get the identical clear desk view that marimo offers for DataFrames.
I can even run SQL on native information by way of DuckDB. A easy choose * from "file.csv" simply works. If I wish to hook up with an actual database, I can do this from the aspect panel. Marimo lets me add totally different knowledge sources, and as soon as added, the tables present up straight within the pocket book.

9. Molab: marimo notebooks within the cloud
Molab is for marimo notebooks, what Google Colab is for Jupyter notebooks. You get all of the goodness of marimo notebooks within the cloud. You possibly can open Molab at molab.marimo.io, create new notebooks, or open those you made earlier. It’s a nice choice once I wish to spin up a pocket book quick or keep away from working issues on my machine. Many widespread Python packages are pre-installed, notebooks have persistent storage, and I can share, obtain, or add them simply.

One other neat characteristic is the GitHub integration. You possibly can go to the Molab URL and change molab.marimo.io/notebooks with molab.marimo.io/github and it’ll allow you to open any pocket book, Jupyter or marimo, that’s hosted on GitHub in Molab. Nevertheless, there is no such thing as a GPU assist for now, like in Colab, however I’m certain that’s one thing that the staff might be engaged on.
10. Customizable LLMs integration
Marimo additionally has some actually helpful AI-assisted coding options inbuilt, which have been very useful for me. To be sincere, Jupyter additionally has a JupyterLab extension for AI options known as JupyterAI (and sure, I have written about that too), however having AI assist constructed into marimo removes numerous the friction for me.
I exploit AI in marimo primarily for 2 issues. The primary is producing new notebooks once I wish to attempt a brand new library or make a fast demo. It saves me time since I shouldn’t have to hunt for toy datasets or arrange every little thing from scratch.

The second is refactoring and debugging. Marimo’s AI assistant has the complete context of my pocket book, so it might learn my code and assist me repair or clear it up proper contained in the pocket book.

I additionally like that I can select totally different fashions for chat and for enhancing, and set my very own guidelines for a way I need code to be written. And if I wish to keep away from proprietary fashions, Ollama works high quality as a supplier too.
Conclusion
I’m not related to the marimo staff and this isn’t a paid put up, however my expertise from utilizing it in actual initiatives. This can be a lengthy learn as a result of I wished to share how marimo has made my pocket book work smoother in follow. I’m solely calling out the components that helped me probably the most. The docs go a lot deeper and are the very best place to discover every little thing marimo has to supply.
