The Future of Notebooks: Lessons from JupyterCon
It would seem that notebooks were specifically tailored for my use cases (being in academia and doing data analysis), in practice I found that I drift away from notebooks every time I try them and stick to a good old console (ipython or bash) instead. Here are a few things that irked me:<p>-It&#x27;s browser based. Yuck. This means you can wait upwards of ten seconds for a session to load up every time you want to start one. Also, generally speaking, I deeply dislike browser-based applications that have nothing to do with the internet. It just feels so clunky. My workflow gets interrupted as I have to play between windows <i>and</i> betwen tabs, and whenever I want to switch from a task to another I have to remind myself &#x27;well this is my web browsing instance that also happens to be my notebook&#x27;, it&#x27;s not natural and gets in the way. By contrast, a terminal advertises itself as exactly what you want to use it for. It&#x27;s also very snappy.<p>-Following up on browser-based awkwardness, my god is this thing slow. Initializing kernels. Interrupting kernels. Restarting kernels. God save you if you want to import more than a couple libraries. Wait you made a mistake and want to stop and restart that one cell? Guess you just have to go through the whole kernel thing again I guess. So you launched something and it turns out it eats way more memory than expected? Well, &#x27;sudo pkill -9 firefox&#x27; it is, do not pass go, do not collect autosave. It just does not play nice and lags behind every thought or action you want to take. Again, contrast with a plain terminal that just does the job and does it <i>now</i>.<p>-Speaking of exiting, these things don&#x27;t seem to be able to do so gracefully. If something hangs up you just have to kill everything if you want to resume working, instead of good old ctrl-C. The fact that killing everything <i>also</i> tends to kill the web browser you used to do actual web browsing is just icing on the cake.<p>-Setting things up can be dodgy. Should your notebook fail to start, error messages are extremely cryptic. Documentation for troubleshooting is lackluster. No one ever seems to have any two identical issues on Stackoverflow, which is also plagued with WorksOnMyMachine (tm) syndrome. If you ever have to mess up with both Python 2 and 3, you may be in for a good time.<p>-The notebook format in which sessions are saved is supposed to be human readable and editable. In practice I have never seen a single human read or edit any of these by hand, for the very simple reason they are horrible to read or edit by hand. Again, why do I have to load a file in a cryptic format in my web browser when I could just %paste my snippets off of my editor or even just use my IDE&#x27;s builtin capacities (code runner on vscode, F9 in spyder, etc.)? Plus, compatibility issues between versions can make your notebooks suddenly unusable (and hard to salvage due to the aforementioned format issue). This doesn&#x27;t happen with snippets pasted onto a terminal.<p>-IDE integration has been sloppy in my experience. I&#x27;ve been told this may be subject to change, however.<p>Note that all this criticism doesn&#x27;t mean I don&#x27;t respect the work of the people behind this - they&#x27;ve made a fantastic tool that just doesn&#x27;t happens to fit my use cases, for now. Every once in a while I try to work with notebooks, find they&#x27;re still unusuable, shrug and go back to my terminals. As the experience improves I may make the switch one day, who knows.