Using marimo with Django

A couple of years ago, I got lucky and found Daniel Roy Greenfeld’s dj-notebook project thanks to a reddit post. I wrote about it here. It’s held up well. I still find it very useful in almost any context where I’d run python manage.py shell to help me understand what’s going on with a django site. My preferences for using notebooks have evolved since then, though. Lately, I find marimo notebooks more suited to the way I like to use (and re-use) notebooks than jupyter. They’re easier to deal with in git, easier to share, and they don’t have the same tendency to depend on hidden state. While they’re also, as a consequence, a bit less flexible, they strike a better balance for me.

So this weekend, I wanted to see how they’d work with django.

Read more →

dj-notebook: the REPL I’ve Always Wanted for Django

This year, I’ve really started to like jupyter notebooks. I first tried them out several years ago, but they’ve only just started to click for me. They haven’t changed; the difference is how I think about them. When I initially tried them, they felt like writing untestable code in a browser, where you could get yourself into an unknowable state very easily as you navigated between cells. While they certainly can be that, it was an incomplete impression, at best.

One thing changed my mind this year: I learned about the --notebook option for django-extensions shell_plus management command. shell_plus is a command that gives you a REPL with all your django models and many of the framework’s utility classes imported and ready to go. The --notebook option has shell_plus import that all into a jupyter notebook that you can access from your browser. Or that you can save and access from your IDE’s notebook support. It’s like absolute magic when it works, but lately you have to hold your jaw just right and explicitly specify a few dependencies' versions in order to make it work. It was 15 minutes of internet searching every time I felt like I was going to spend enough time in my REPL to want it. I recently learned about dj-notebook, which fixes that and adds a few useful features on top of it.

Read more →