
5 reasons why jupyter notebooks suck - dice89
https://medium.com/@alexander.mueller/5-reasons-why-jupyter-notebooks-suck-4dc201e27086
======
paulgb
My preferred workflow with Jupyter is for code to start in the notebook but to
regularly move the code into Python files as soon as it works. So the code
that lives in the notebook represents the "exploration frontier" of my
research but the remainder of the pipeline code stays in Python files where it
can be edited with an IDE, linted, tested, etc.

I also realize that English is not the author's first language but the tone of
this comes off unnecessarily negative to the (mostly/entirely volunteer)
developers of Jupyter.

~~~
williamstein
Jupyter has an enormous amount of funding (over 10 million at this point, I
think) from Moore, Sloane, Bloomberge, Continuum Analytics, etc. It's far from
mostly vounteer work. It's a great contribution by foundations and companies
to humanity that's been an enormous amount of hard work.

Notebooks suck for some things, and they are absolutely fantastic for others.

~~~
paulgb
> Notebooks suck for some things, and they are absolutely fantastic for
> others.

Speaking of which, I recognize your name :). Thanks for SAGE! It was my first
introduction to the power of a code notebook.

------
rz2k
> 4\. The non-linear workflow of Jupyter

This has always seemed crazy to me for something that is called a notebook and
seems designed for exploratory analysis. It seems like there should be a
record of the order cells were run, and what their contents were when they
were run, unless you have chosen "Kernel > Restart & Run All". Also, why isn't
that command given prime importance with at least a button in the toolbar?

I thought I was just using Jupyter wrong, so it is a little surprising to see
the same complaint from someone who has used it "roughly 3 years up to 60% of
my time".

I like the model of using RStudio with KnitR. I rerun the entire document
every now and then to make sure it accurately describes the thought process in
a coherent narrative. I _can_ cache results of operations that take a long
time, but doing that is explicit, and the command to do so can be found in the
code, rather than a consequence of an unrecorded action.

~~~
williamstein
In CoCalc, I did a complete new implementation of Jupyter notebooks from
scratch, but with tracking of _exactly_ when each cell runs, and all past
states of the notebook with a slider to move through them.

~~~
rz2k
In fact I use Jupyter almost exclusively for Sage, though too infrequently to
get a subscription to CoCalc.

Incidentally it isn't clear to me how I can get the Sage kernel into another
installation of Jupyter, or other kernels into the Jupyter installation
embedded in sageMath. If I used Jupyter instead of R/RStudio or Julia/Juno the
draw would be having the different toolsets and their environments all
accessible in one primary interface.

------
is0tope
Are people really running jupyter notebooks in some sort of production system?
I was always under the impression that the idea was to do some exploratory
work in the notebook and test out some basic functionality. After this it
should just be a matter of copying the code to an actual module, and add tests
as desired (though I don't necessarily subscribe to TDD per se).

~~~
curiousgal
I have never come across someone who does that.

I fee like the article is a response to an imaginary problem a la "5 Reasons
why Regular Expressions suck: 1-4 They make it hard to parse HTML".

------
curiousgal
Jupyter notebooks are meant for code sharing so that you don't have to run the
code yourself to see what it does.

If you are using them for something they were not intended for then yes, they
do suck.

------
SylvainCorlay
There is an excellent talk by Brett Cannon about this sort of post on open-
source projects getting to the top of Hacker News.

I would recommend it to anyone interested in this:
[https://www.youtube.com/watch?v=y19s6vPpGXA](https://www.youtube.com/watch?v=y19s6vPpGXA)

------
Entalpi
I thought Jupyter Notebooks were pretty much left in favor of Jupyter Lab.

JupyterLab:
[https://github.com/jupyterlab/jupyterlab](https://github.com/jupyterlab/jupyterlab)

~~~
williamstein
This makes no sense, because JupyterLab provides Jupyter notebooks as one of
the key file types.

------
Operyl
With regards to point 2, doesn't PyCharm have Jupyter integration now?

