What are common issues with using notebooks for Python development? How do you know the current state, share reproducible results, or create interactive applications? This week on the show, we speak with Akshay Agrawal about the open-source reactive marimo notebook for Python.
Before writing any code, Akshay wrote a 2,500-word design document. He wanted to create a maintainable and reproducible tool that avoided the hidden state of traditional notebooks. We discuss solving the hidden state problem by building the notebook as a directed acyclic graph (DAG).
Akshay shares how marimo notebooks are stored as pure Python files, which makes them easy to read, importable, and git-friendly. We discuss serializing package requirements using PEP 723 inline metadata to create standalone reproducible notebooks. We also cover how marimo notebooks can be deployed as a web app or dashboard using Pyodide.
Course Spotlight: Navigating Namespaces and Scope in Python
In this course, you’ll learn about Python namespaces, the structures used to store and organize the symbolic names created during execution of a Python program. You’ll learn when namespaces are created, how they are implemented, and how they define variable scope.
00:00:00 – Introduction
00:02:06 – Akshay’s background and studies
00:04:14 – Work at Google and PhD program
00:06:29 – Sharing notebooks
00:08:18 – Starting work on marimo 2 years ago
00:12:48 – Avoiding notebook issues and building a DAG
00:18:39 – The difference of reactivity
00:20:39 – What is a marimo notebook?
00:23:39 – Video Course Spotlight
00:24:50 – Reproducibility and managing package requirements
00:27:49 – Using decorators for cells
00:30:23 – Writing a design document before any coding
00:34:08 – Interactivity and UI widgets
00:38:20 – Design decisions and built-in widgets
00:42:05 – Creating a deployable web application
00:44:34 – Exploring examples and tutorials
00:46:13 – Supporting DataFrame libraries with narwhals
00:48:00 – Migrating from a Jupyter notebook
00:52:02 – Working with cells and not running code
00:54:30 – A couple favorite tutorials
00:56:17 – What are you excited about in the world of Python?
00:57:39 – What do you want to learn next?
00:59:34 – How can people follow the project and yourself?
01:00:12 – Thanks and goodbye