Live data from Hacker News

JupyterLab: the next generation of the Jupyter Notebook

blog.jupyter.org

91–100 of 119 posts

Re: JupyterLab: the next generation of the Jupyter Notebook

#91
post #17

Earlier quoted context omitted.

I agree, but would phrase it more like this: Jupyter has succeeded because each of the different major modes of interaction have been decoupled. If you just want to use it in a shell, you don't need to involve the browser at all. If you want a narrative format for sharing, presenting, or converting to slides, you can easily launch that environment. This feels like a big step backwards for me too. It's effectively lik…

Can you elaborate on what you think is bad about the IDE-with-extras-plus-console framework? I do research in quantitative finance and I actually find it really useful.

One of the main things is that it continues to perpetuate primarily mouse-driven interaction with the development environment. Even when tools like this enable Emacs or vi key configurations, the integration just never quite works, and there are environment-specific options you are required to select that come from e.g. drop-down menus, etc. Interacting with UI elements is horrendously unproductive and disruptive to thinking. Putting it in the browser makes this worse, because then you've also got the browser's own key configurations, like tab switching or bookmarking, to worry about.

There is seldom any value in looking directly at code and at a console at the same time. But if you really want that, it's super easy to do it with a window manager like xmonad, or even just arranging shell windows on your desktop so that you can alt-tab between them easily.

You often want to quickly spawn and kill shell tabs, which themselves may or may not be in the same language. For example, I often have a tab in which I'm using IPython, another tab in which it's the working directory so that I can execute things with Python directly, mv/cp files, ls, etc. And then still more tabs in which I have background processes that check for file changes and run my unit tests whenever things change, sometimes a tab for Python 2 and another tab for Python 3. And further, development projects are almost always cross-language, so I tend to also have some tab opened for writing and working with C or Haskell at the same time, and possibly another with a psql shell.

Since there are so many necessary tabs just to do even the tiniest things, it means that any and all visual overhead must die. Switching these tabs, even if it is quick, inside of a clunky GUI application like a browser is just too unproductive -- the browser periphery already wastes maybe 5% of the available visual space, and then the overhead for the tab icons, clickable close buttons, etc., wastes another 5% inside of that, and then the width of the tabs is restricted because there's some left panel with directory information or in-memory workspace information (both total wastes of time), and the height is restricted below by some worse-than-plain-shell console; it just makes no sense. It's too much visual clutter and too inefficient to facilitate switching around as much as is necessary.

I think it should be emphasized again that the left-side panel showing either directory structure or the contents of an in-memory working environment are huge wastes of time. If you need to visualize a directory structure, that should just be another buffer, like a code source file, and when you want to view that you just switch to that buffer. There's no benefit to having some of your visual field distracted by it when you're working on other files. And the in-memory information is also generally crappy. It's another thing where if you really need it then it should just be in another buffer and you should quickly go to that buffer and give it all your attention for the short time you need it, then go back. It serves nothing by having it as an ever-present visual distraction. But more than that, relying on inspecting variables that way is a very infantile thing, and I see it a lot with MATLAB programmers. Their form of debugging is not to scientifically inspect and control the execution of the code, and use proper breakpoints and watchpoints to tells them what's going on, but instead to just "run everything" and then go and click to open up a spreadsheet-like view of a matrix variable or something and manually (!) inspect the data. Then they become reliant on this as a crutch and complain when it's no longer there, instead of learning proper ways to write tests and proper debugger usage and let those things automate the problem of zooming in on outlier data, messy data, or bugs.

Anyway, there's plenty more to say, but it's probably long-winded enough.

Re: JupyterLab: the next generation of the Jupyter Notebook

#92
post #82

Earlier quoted context omitted.

Maybe because Jupyter has already more than 70 kernels and got adopted before other notebooks appeared (Beaker, Spark, Zeppelin)?

true but the languages are siloed, each notebook runs just one language. with beaker the languages can communicate with each other. there's no easier way to combine python and javascript for d3, for example: https://pub.beakernotebook.com/publications/7fdcaaa6-fb83-11... there are lot more differences in the UI as well.

Not everyone needs more than one language in the same notebook communicating between each other. But if required, then the cell magic system looks superior to me: have a look at %%fortran, %%cython, %%javascript, %%html, %%bash options. Also it is possible to switch kernels in the same notebook, but serialization of state between kernels is handled by user.

Re: JupyterLab: the next generation of the Jupyter Notebook

#93

I love how notebooks allow the mixing of code and output and support incremental development by letting you choose which cells to execute. But I find the semantics horrible. Each time you execute a cell you do so in an environment that depends on your entire history and cannot be figured out by simply reading the notebook. I wish for a environment which would have the same semantics as a script but which would snapsh…

What you describe looks like reactive programming and lazy evaluation and Mathematica has support for this using the notion of Dynamic. This is how actually Manipulate is implemented.

Re: JupyterLab: the next generation of the Jupyter Notebook

#94
post #53
post #11

Earlier quoted context omitted.

Holy cow I never knew that existed! My life could have been so much different the past few months had I known.. I bet I even skimmed past it on HN without even looking.. Shame on me

Ditto! Amazing. Seems the inverse of notebooks where it is a notebook with predominantly text and a box with code and results. I'm going to take Hydrogen for a spin. I still rely heavily on Mathematica, since the notebook interface won me over years and years ago. I think the next Mathematica paradigm to be redone in JupyterLab is easy connections to data without all the connection string fuss. You can just put in so…

I found Jupyter notebooks more stable than Mathematica.

Re: JupyterLab: the next generation of the Jupyter Notebook

#96
post #82

Earlier quoted context omitted.

true but the languages are siloed, each notebook runs just one language. with beaker the languages can communicate with each other. there's no easier way to combine python and javascript for d3, for example: https://pub.beakernotebook.com/publications/7fdcaaa6-fb83-11... there are lot more differences in the UI as well.

Not everyone needs more than one language in the same notebook communicating between each other. But if required, then the cell magic system looks superior to me: have a look at %%fortran, %%cython, %%javascript, %%html, %%bash options. Also it is possible to switch kernels in the same notebook, but serialization of state between kernels is handled by user.

what is superior about %%javascript?

here are some examples of JS working in beaker (in addition to the above python/JS demo):

https://pub.beakernotebook.com/publications/87a444cc-fb85-11...

https://pub.beakernotebook.com/publications/797f99f2-fccd-11...

https://pub.beakernotebook.com/publications/afa0f71c-4aaf-11...

Re: JupyterLab: the next generation of the Jupyter Notebook

#97
post #6

I love Jupyter notebooks, I just wish I could use them in a dedicated program instead of having to run a server and using a browser based client. It feels hacky and I just prefer native apps for coding and the browser for reading documentation and similar. Even an Electron based program that could be associated with notebook files and hide the server-client model would make it nicer to use. At the moment I like to op…

Solution to related but different problem: I have too many projects with several notebooks that make window management a pain (two dozen browser tabs in a browser I would like to use for other things). My solution in OS X is to use the ancient-but-venerable Fluid app as a wrapper for each project, so I can treat it like a native Mac application. One can open as many new window in Fluid as you like, so one can have cluster info, another netdata, another terminal, and any number of notebooks.

Re: JupyterLab: the next generation of the Jupyter Notebook

#98

I love how notebooks allow the mixing of code and output and support incremental development by letting you choose which cells to execute. But I find the semantics horrible. Each time you execute a cell you do so in an environment that depends on your entire history and cannot be figured out by simply reading the notebook. I wish for a environment which would have the same semantics as a script but which would snapsh…

The real simple thing would be to paint a border or just a sideline in cells that have already been executed.

Just that would make everything much, much better.

Re: JupyterLab: the next generation of the Jupyter Notebook

#99
(disclaimer: I'm one of the authors of the scipy talk the post is about...)

First: JupyterLab is definitely still alpha-level software, and is undergoing very rapid iteration.

I notice that a lot of comments are missing one of the most important ideas behind JupyterLab. It's built on a very flexible plugin framework (provided by PhosphorJS), and all components are provided as plugins. JupyterLab essentially is a reference set of components, but we really see people creating their own components, and a rich 3rd party ecosystem. This also sets a foundation for exploring other ideas for what a web notebook might look like, etc, and provides an easy way to distribute such a component. More than just extending via components, we've paid a lot of attention to getting having a good keyboard shortcut system, a good command/command palette system, etc. The video of the talk shows some simple examples of how JupyterLab can be extended: https://www.youtube.com/watch?v=Ejh0ftSjk6g&list=PLYx7XA2nY5....

Also, I see several people talking about having a UI that is really focused on notebooks. We definitely plan on an easy way to maximize a single pane (which might be a notebook, etc.) to be able to focus on one thing.

Re: JupyterLab: the next generation of the Jupyter Notebook

#100

I love how notebooks allow the mixing of code and output and support incremental development by letting you choose which cells to execute. But I find the semantics horrible. Each time you execute a cell you do so in an environment that depends on your entire history and cannot be figured out by simply reading the notebook. I wish for a environment which would have the same semantics as a script but which would snapsh…

The real simple thing would be to paint a border or just a sideline in cells that have already been executed. Just that would make everything much, much better.

Thanks, that makes a lot of sense. I've opened an issue: https://github.com/jupyter/jupyterlab/issues/405.
Post reply on HN