HackerTube
HomeLongsLikedHistoryWatch laterCategoriesPlaylistsSettings

I don't like notebooks.- Joel Grus (Allen Institute for Artificial Intelligence)

O'Reilly6 HN recommenders · recommended in 6 months, 2018-2025
YouTube
120K views · 8 years ago · talk · evergreen

Joel Grus's JupyterCon talk explaining why he dislikes Jupyter notebooks. He covers hidden state, trouble with reproducibility and testing, and how notebooks frustrate teaching. He shows his preferred workflow and what Jupyter could change.

It is the go-to funny, irreverent critique of notebooks, linked whenever HN debates notebooks versus testable code.

Data science & statisticsPython, Ruby & scripting languagesTesting, debugging & developer tools#jupyter#python#datascience#reproducibility#softwareengineering

13 comments from Hacker News

@tillahoffmann2025 · in “Show HN: Localscope–Limit scope of Python functions for reproducible execution”

Yes, Jupyter notebooks are flawed (there's a great talk at ▶ this video ). But they are also very convenient for scrappy work and exploratory data analysis.

CitesView on HN
@taeric2024 · in “Bento: Jupyter Notebooks at Meta”

I'm assuming you've seen ▶ this video ? I know I found it far more amusing than I should have when it was released. I will confess that I found Mathematica kind of neat back in the day. I never got as good with it as peers did. I'm curious if that would be different for me today.

JokeView on HN
@lelandbatey2024 · in “Notebooks Are McDonalds of Code”

REPL stands for Read–eval–print loop link A REPL, by its name, is a very narrow version of the broader paradigm of interactive computer programming environments. But Notebooks are not REPLs, unless you use REPL to mean "interactive programming environment" and not REPL. Notebooks are much broader than a REPL! In a notebook, you can go back and edit and run individual lines of the notebook without re-running the whole notebook from the start and without re-computing everything that depends on what you just edited. Behavior like this makes it super hard to track the actual state, and super easy to lose track of how things are how they are. That's pretty terrible! The parent article links this great talk that goes into more detail than the parent post and is much easier to understand: ▶ this video

RecommendsView on HN
@carreau2022 · in “IPython 8.0”

First, yes, this is a common question. IPython does not try to deal with that, it's just the executing engine. Notebooks, do not have to be stored in ipynb form, I would suggest to look at link , and notebook UI is inherently not design for multi-file and application developpement. So training humans will always be necessary. Technically Jupyter Notebook does not even care that notebooks are files, you could save then using say postgres ( link ) , and even sync content between notebooks. I'm not too well informed anymore on this particular topic, but there are other folks at link that might be more aware, you can also ask on discourse.jupyter.org, I'm pretty sure you can find threads on those issues. I think on the Jupyter side we could do a better job curating and exposing many tools to help with that, but there are just so many hours in the day... I also recommend I don't like notebook from Joel Grus, ▶ this video it's a really funny talk, a lot of the points are IMHO invalid as Joel is misinformed on how things can be configured, but still a great watch.

RecommendsView on HN
@softwaredoug2021 · in “Ask HN: How do you run long computations without interruption?”

Get extensive code out of notebooks into testable libraries. Confirm it works before running a big computation. We try to keep our notebooks slim and factor anything complex into a Python library. We can experiment with this libraries implementation, write unit tests on smaller data sets to confirm it works, before doing a bigger experiment. We can also deploy the library to prod and ensure users get the exact same thing we experimented with. I would recommend the talk “I don’t like notebooks” ▶ this video (There’s also the alternative nbdev that creates a full software engineering and experimentation setup in 100% notebooks. Not something I particularly like, but it might be another option.)

RecommendsView on HN
@epistasis2021 · in “The Economist's excess deaths model”

I would love to see the tests that people come up for this... Tests can be helpful and informative, or they can be make-work boilerplate that will never reveal any flaws. And in this type of code base, it's hard to imagine the test that's written in code that will be informative. When dealing with data, "testing" is most often done visually, with plotting. The process of exploratory data analysis is not anything at all like writing code to an architected specification, and the same practices are not as effective for different types of work. Insisting that there should be automated tests for something like this reminds me of the cultural phenomenon of extreme table-phobia in the 2000s that happened as a reaction to using tables for layout. I had trouble getting people to believe that is was OK to use tables for tabular data, it was extremely frustrating. Or in the last 5-10 years, with design trends preferring spare layouts with lots of empty space, it was super hard to get information dense designs into production, because they were so averse to the idea that people may need information density for some things. I'm also reminded of this video about the deficiencies of notebooks: ▶ this video Yes, there are huge deficiencies to notebooks. But using them is an entirely different task than the type of code that one would write in an IDE, for code that gets put into a library and will be run by others. I have two work modes: 1) IDE (actually Emacs) where I write tests and the code is

CitesView on HN
@gravypod2021 · in “Complexity is a source of income in open source ecosystems (2019)”

I'm wondering what your opinion is of this talk: ▶ this video It has some comments about why good software engineering leads to good software, how good software engineering is hard right now because there's a lot of bad examples which cause people to make more bad code, and some suggestions on how things could be done.

CitesView on HN
@kenward2021 · in “Nbterm: Jupyter Notebooks in the Terminal”

I've been using the VSCode Insider's release as well and have been loving it and the new native notebook features for all the reasons you've listed already. That's an interesting solution. I believe this is similar to what Joel Grus does [0], except %s/jupyter/ipython. [0] ▶ this video

CitesView on HN
@tosh2020 · in “I Violated a Code of Conduct”

If you haven't yet: I think both talks are very worth watching: I don't like notebooks ( ▶ this video ) by Joel Grus I like notebooks ( link ) by Jeremy Howard notebooks are a very interesting medium and they have both shortcomings as well as things they are great at and neither were totally obvious to me.

RecommendsView on HN
@3JPLW2020 · in “Pluto.jl – a reactive, lightweight, simple notebook”

It completely fixes a huge number of the gripes in the JupyterCon talk I don't like notebooks by Joel Grus. The primary complaint there is that notebooks have a disconnect between the state of the program and the display of the cells. By using a completely reactive mode the state is no longer hidden. It's more akin to a spreadsheet than a notebook. A number of other complaints are completely circumvented by using a file format that's simply a pure Julia file with clever comments. Video: ▶ this video Slides: link Previous discussion: link

CitesView on HN
@kevsim2019 · in “How to separate your data from your code”

Jupyter notebooks are really abysmal when it comes to best engineering practices. There's an amazing talk called "I don't like notebooks" by Joel Grus at last years JupyterCon [0]. I highly recommend it. [0] ▶ this video

Strongly recommendsView on HN
@EForEndeavour2019 · in “Xkcd-Style Plots in Matplotlib (2012)”

You're not the only one. Here are slides from a talk that Joel Grus gave at JupyterCon 2018 titled "I hate Jupyter Notebooks": link Video of talk: ▶ this video

CitesView on HN
@tcpekin2018 · in “Why Jupyter is data scientists’ computational notebook of choice”

Here they are - they're definitely irreverent, but I find myself strongly agreeing with everything he says. link ▶ this video

Strongly recommendsView on HN
I Like Notebooks52:09

I Like Notebooks

Jeremy Howard
55K views • 6 years ago
Object-Oriented Programming is Bad44:35

Object-Oriented Programming is Bad

Brian Will
2.6M views • 10 years ago
Keynote - Preventing, Finding, and Fixing Bugs On a Time Budget | Raymond Hettinger @ PyBay201840:01

Keynote - Preventing, Finding, and Fixing Bugs On a Time Budget | Raymond Hettinger @ PyBay2018

SF Python
27K views • 8 years ago
Interactive notebooks ~ Pluto.jl | Fons van der Plas | JuliaCon 202023:38

Interactive notebooks ~ Pluto.jl | Fons van der Plas | JuliaCon 2020

The Julia Programming Language
48K views • 6 years ago
Programming is terrible—Lessons learned from a life wasted. EMF20121:06:44

Programming is terrible—Lessons learned from a life wasted. EMF2012

tef ebooks
1.7M views • 13 years ago
"How to Think about Parallel Programming: Not!" - Guy L. Steele Jr. (Strange Loop 2010)1:09:38

"How to Think about Parallel Programming: Not!" - Guy L. Steele Jr. (Strange Loop 2010)

Strange Loop Conference
9K views • 5 years ago
"The Economics of Programming Languages" by Evan Czaplicki (Strange Loop 2023)43:58

"The Economics of Programming Languages" by Evan Czaplicki (Strange Loop 2023)

Strange Loop Conference
141K views • 3 years ago
"The Mess We're In" by Joe Armstrong45:50

"The Mess We're In" by Joe Armstrong

Strange Loop Conference
398K views • 12 years ago
You Suck at Excel - Joel Spolsky (Reupload)54:01

You Suck at Excel - Joel Spolsky (Reupload)

Cool Bug Facts
27K views • 2 years ago
Emacs + org-mode + python in reproducible research; SciPy 2013 Presentation21:16

Emacs + org-mode + python in reproducible research; SciPy 2013 Presentation

Enthought
50K views • 13 years ago
Rich Hickey rants about HttpServletRequest in 1080p: Death By Specificity from Clojure Made Simple4:57

Rich Hickey rants about HttpServletRequest in 1080p: Death By Specificity from Clojure Made Simple

Fred Overflow
43K views • 6 years ago
Stanford Seminar - The Soul of a New Machine: Rethinking the Computer1:26:02

Stanford Seminar - The Soul of a New Machine: Rethinking the Computer

Stanford Online
76K views • 6 years ago
Dan Abramov   The wet codebase25:01

Dan Abramov The wet codebase

eswarnichtsmehrfrei
27K views • 5 years ago
"Stop Writing Dead Programs" by Jack Rusher (Strange Loop 2022)43:04

"Stop Writing Dead Programs" by Jack Rusher (Strange Loop 2022)

Strange Loop Conference
468K views • 4 years ago
Lone Star Ruby Conference 2010 Real Software Engineering by Glenn Vanderburg51:57

Lone Star Ruby Conference 2010 Real Software Engineering by Glenn Vanderburg

Confreaks
30K views • 15 years ago
October CincyRb - Jim Weirich on Decoupling from Rails1:15:58

October CincyRb - Jim Weirich on Decoupling from Rails

Launch Scout
48K views • 13 years ago
Raymond Hettinger, Keynote on Concurrency, PyBay 20171:13:53

Raymond Hettinger, Keynote on Concurrency, PyBay 2017

SF Python
161K views • 9 years ago
The Mental Game of Python - Raymond Hettinger1:10:00

The Mental Game of Python - Raymond Hettinger

SF Python
131K views • 7 years ago
DjangoCon 2008 Keynote: Cal Henderson1:02:44

DjangoCon 2008 Keynote: Cal Henderson

Google for Developers
125K views • 18 years ago
Invited Talk - Guy Steele1:07:22

Invited Talk - Guy Steele

ClojureTV
39K views • 9 years ago