Jupyterlab Desktop
blog.jupyter.org
blog.jupyter.org
The mode that I find most useful but still leaving something to be desired in terms of user friendliness is the "debug" mode. Step by step execution that at the same time provides access to variables, dataframes etc in a second panel.
One way or another its possible to debug, but a "debug-first" paradigm would make it more fluid and fun to write good code that does exactly what is meant.
Would be really slick in vscode…
For the basics, you can effortlessly but breakpoints, click through stackframes, inspect and modify variables via the GUI variable inspector window, execute statements in the console, etc.
A nice extra feature is the fact that as you step in, out and over certain pieces of code, the lines of code that are ran get annotated with the resulting values of the variables that get changed. E.g. when for-looping over an iterator, the value of x gets displayed next to the *for x in y:* line.
I also really love the conditional breakpoint functionality; it allows you to only break out into the debugger when a certain condition (expressed in python by the user) is met. Very handy when iterating over larger pieces of data that have sparse bugs in certain edge cases.
Edit: as a bonus, also quite nice that the vim plugin also works in the debugger console :)
The project looks like it died unfortunately, but I think they did end up adding Python support before that happened. Might be worth checking out.
My opinion is that I get very close of this REPL style with a notebook and (right click on notebook tab in Jupyter lab) open console for notebook.
This opens a REPL (iphython console) alongside the notebook. The you can code all kinds of Clojure stylistic Python ways using nested dictionaries.
You have to make sure to copy paste you finished code into the notebook or other .py file not to loose it, but it’s minor.
[0] Admittedly LightTable was pretty buggy so it wasn't all fun and games. But still - I would love for my day-to-day development environment (Dart/C++) to look like that.
You can also write notebooks with clerk, which gives you a whole bunch of data visualization utility and renders to a browser (via websockets). Also has a static html export. Cool thing here it’s that it uses just normal Clojure files, so all your tooling just works.
There is a Haskell IDE available in the MacOS Apple Store than has a similar live view feature. I don’t much use this IDE, but it is cool.
being able to watch your variables as the program executes, see what was allocated, see what wound up being stored in them, if there were matricies what size they are and being able to stop and open them up and check data, see data types at a glance etc.. really helps people who are just getting started with understanding imperative, procedural code.
There used to be a Python IDE that had the same feature called Rodeo, but it has been abandoned.
There also used to be a Julia IDE called Juno which was excellent at this as well, but it also have been abandoned in favor of the Julia VS Code extension, which has similar features.
The "debugging/scripting a data pipeline" task is somewhat orthogonal to building applications or exploring data but these days it is something alot of people are effectively doing.
It's free and open source. Let me know what you think: https://github.com/Almenon/AREPL-vscode
Jetbrains' DataSpell has the nicest notebook UI in my experience - lots of database integrations, R as well as Python, endlessly configurable. It's a relatively new product and still hiccups on some things, eg iPywidget and other interactive notebook tools.
Haven't gone back to vanilla Jupyter or JupyterLab in the browser for years.
Another issue is if you use vim key maps, Jupyter allows it in editor but vim mapping off automatically in notebooks.
Over the last 5 years I've gone:
* Anaconda install of Jupyter Notebooks (until the license change)
* running JupyterHub server for my organization
* PyCharm
* VSCode
VS Code has made fantastic progress in the last few years for Jupyter Notebook support. Integrated with Copilot it is scarily productive.
At the same time for teaching non-technical audiences it is hard to beat Google Colab for availability(mybinder.org type solutions are generally more brittle).
But I'm not sure it's enough of a hit to outweigh the other productivity gains I get, which are myriad. With vscode, I get vim emulation in Jupyter notebooks that actually works. I get better autoformatting options, and linting of notebook code. And I get a proper programmer's editor for working with *.py files. And that's just my greatest hits list.
The cell execution speed drastically (up to 10x) slows down w.r.t. Notebook file size. Still looking for a solution to this problem.
pip install "black[jupyter]"Some of the unofficial extensions like `code_prettify` don't work for Julia kernels, but at least for my usage, I've never felt the need for such tools in a Jupyter notebook.
Ju(lia)-pyt(hon)-eR
To make it clear
You can do this for as many kernels/conda envs as you need
https://writings.stephenwolfram.com/2013/06/there-was-a-time...
The bits I was aware of (/lived through), from UX standpoint was:
Mathematica -> iPython notebooks -> jupyter notebooks.
And from whatever source, I knew Mathematica notebooks had looked how they had /at least/ since the mid 90s. (My Mathematica days were college, and I did not spend much time contemplating the history of my tooling)
From elsewhere in the comments, it sounds like iPython->jupyter wasn't just a rebranding, as I assumed it was at the time.
"Symbolics Lisp Machine demo", special focus on 5 minute onwards.
https://www.youtube.com/watch?v=o4-YnLpLgtk
Mathematica was inspired from Lisp,
https://writings.stephenwolfram.com/2013/06/there-was-a-time...
To provide more information since video description lacks, this is OpenGenera a Lisp Machine OS designed to also run hosted on Unix systems. This specific version (seeing it uses jpeg) should be from mid- to late- 90s. Had tried some version but didn't remembered being able to have graphics on REPL.
Yes, that's basically how Jupyter console works. But will still argue that the Jupyter model is such weaker version of this that can hardly be called a derivative. Listener isn't only limited to being used like an isolated shell but can be attached to any part of the environment. (And this introspection is core to Lisp and Smalltalks environments.)
>Mathematica was inspired from Lisp
The language Wolfram, yes. The cell-based notebook interface was new. But similar to previous is a more limited version of what you had available; specifically interchanging text and code in Zmacs. Something that was also an advantage (easier of reason with) for what Mathematica was used for.
https://github.com/twosigma/beakerx
It has some quirks, but it works amazingly well really, esp. with the enhanced widgets BeakerX gives you.
#+begin_src R :colnames yes
words <- tolower(scan("intro.org", what="", na.strings=c("|",":")))
t(sort(table(words[nchar(words) > 3]), decreasing=TRUE)[1:10])
#+end_src
Is it possible to have minimal syntax for these code blocks? Markdown is nice because it looks clean, and the syntax does not get in the way. Markdown codeblocks are ```
code
```
[1] https://orgmode.org/worg/org-contrib/babel/intro.html#source... * Notebook
:PROPERTIES:
:header-args:R: :colnames yes
:END:
#+begin_src R
words <- tolower(scan("intro.org", what="", na.strings=c("|",":")))
t(sort(table(words[nchar(words) > 3]), decreasing=TRUE)[1:10])
#+end_src
As for making the block delimiter look different, there are various ways of making the text display differently from the actual text. For example, you could use the built-in `prettify-symbol-mode` with this config: (setq prettify-symbols-alist
'(("#+begin_src" . ?)
("#+end_src" . ?―))Joking aside though, if src block header (which can have a lot of options set up including specifying environment, tangling other block variable of setting totally separate interpreter version) is huge problem there are plethora of presentation customization.
Emacs allows customizing face and more. Org-modern [1], for example, uses font signatures and fringes for making it less “technical”
[0] https://www.masteringemacs.org/article/polymode-multiple-maj...
Gonna place a bet that AI delivers your wish within 2-3 years.
You do have a few nodejs/typescript/javascript kernels that work fine, so I don't see the point for rewriting Jupiter in node specifically for any reason.
In any case, maybe creating something for the browser only is easier because JS is native, but still I wouldn't call it "pretty trivial". For this use case (and more) you have projects like
It is a really powerful toolset, and building your own environment from separate parts is not trivial; so having it preconfigured in a standard way that others can reuse is no small matter.
I prefer online notebooks with a functional-reactive behaviour, such as ObservableHQ (which is JavaScript-based, rather than python); but Jupyter was the first popular one, so it hit hard.
https://mobile.twitter.com/observablehq/status/1234868724588...
Observable looks cool, but it doesn’t seem portable. It really bums me out that so much of the JS ecosystem is so sheerly commercial in this way. Sometimes I don’t understand why this is like this compared to the Python ecosystem. It’s not that I’m cheap either. I’ll happily pay for things that are properly monetized and provide a good value for my time. This doesn’t seem like it.
https://github.com/google/evcxr/blob/main/evcxr_jupyter/samp...
I think one of the biggest reasons why the R community is so strong is because of how easy it is to install RStudio and get started doing stats with a GUI program, and I see JupyterLab Desktop filling the same niche, for stats and for learning to code in Python more generally.
The pip-install business was always the weakest link in the Python beginner's journey, but now things are going to be be much smoother.
Here are some examples of instructions we've had to watch out for in the past, that are no longer needed when using JupyterLab Desktop:
- Windows installer: make sure to check the box that adds Python to %PATH%
- Use cmd.exe not Power Shell (which has weirdness if using venv[1])
- Run the command `python -m venv myvenv`
- Activate myvenv (OS-specific instructions)
- Run the command `python -m pip install pandas jupyterlab`
- Run `juppyter-lab` to get started
- Press CTRL+C (SIGINT) to stop execution in the end
It's doable, and we were able to run the tutorials since we had several co-hosts available to help beginners when they got stuck, but we definitely lose some momentum every time we try to run things this way.[1] https://docs.python.org/3/library/venv.html#:~:text=On%20Mic...
That works well, but make sure to download your notebook in the end of the session because they are ephemeral (will disconnect if no commands for 20 minutes).
[2] Example mybinder link that launches a notebook from a github repo: https://mybinder.org/v2/gh/minireference/noBSstatsnotebooks/...
Not sure about what platform or level of experience you are accustomed, but I am frequently working with Windows-only users who have never even heard of PATH. Inevitably, someone needs assistance becomes something got stuck on configuring the tooling and python cannot be found. Especially fun when it is the person's N attempt at learning Python and I discover that there is a historical half-working interpreter already present.
Conda is also a huge hurdle which I try to avoid, but if I know the ultimate aim is for machine learning, gotta deal with that on-boarding.
I found this: https://github.com/jupyterlab/jupyterlab-desktop/issues/279
So JupyterLab Desktop is not new? I still don't understand why Electron apps can't immediately be built for arm64...
But… wild shot - lot of machine learning stuff is not on M1, because there is no free ARM compiler for FORTRAN and there is some FORTRAN code in some popular machine learning stuff. Like R, I think.
> GCC’s GFortran supports 64-bit ARMs: … However, the Apple silicon platform uses a different application binary interface (ABI) which GFortran does not support, yet.
There was some experimental branch or whatever. I’m not sure of the state now.
You see it in a lot of ML examples around the Internet because it's a pretty good way of demonstrating and documenting ML for tutorials.
Eventually, I think there should be a better separation of concerns. IDEs should be IDEs and Jupiter notebook should be a thinner background service a-la typescript language service.
But with no proper gpu locally I'm kinda forced to use something remote. And getting DS dependencies set up correctly is almost impossible, so even if I had a GPU I'd probably anyways end up with something remote working out of the box.
I've tried to connect to them with Pycharm, and even downloaded a trial of Dataspell, their new IDE for DS. But I can't really get the integration to work. I'd like to do everything from the IDE, using the interpreter and power from the remote server. But feels like were not there yet, so many small bugs.
Just create a file with .ipymb extension, open it and install suggested packages.
https://code.visualstudio.com/docs/datascience/jupyter-noteb...
Why this is not core functionality of jupyter is beyond me.
I don't see a Portable Version of this software for Windows. I use Anaconda and it has it's own Jupyter but I would not mind having a Portable Desktop version of Jupyterlab that I could just bring up and have it work with the default Python or R interpreter in Conda.
:)
I have been on-and-off teaching some people Python and the initial setup on-ramp is horrible. Ok, so install Python, now ignore-this-for-now-complications: create a "virtualenv", use this thing called "pip", install these half-dozen things to get a basic notebook (Jupyter + scipy things), install these other half-dozen quality of life things, you should probably also have "conda" for the future, etc. That's a lot of nonsense for someone I am trying to show an alternative to Excel.
My shortcut, "You want to try Python?" approach has been to start with JupyterLite[0] where I can immediately get people coding and delay that pain.
https://thonny.org/ has been featured on HN recently. Looks at least as an iterative step forward.
For this example I couldn't get vscode to perform correctly (maybe possible but not obvious), while the desktop app worked as advertised.
Vscode mistakenly labelled the cells of my scheme notebook as python, while correctly running the scheme kernel. The result was that I could run my cells and get the right output, but entering code was annoying as the auto indenting and error markers were based on python instead of scheme.
Anyway, unless I can fix the vscode weirdness, score one for the desktop app, I will keep using it.
Well, it does not matter how much people invest in "applications" now, that's was and is the way to go because integration have proven COUNTLESS time it's value. The ONLY remaining reasons not to have it is business. An unsustainable form of business who DEPRIVE HUMANITY of much evolution potential for short/mid term big money for just some.
Think about that anytime you feel the power of such environments in some growing application, than think about what you miss being tied to modern systems because too many have developed stuff on them and do not have do the same on classic ones.
I'm a huge fan of Jupyter, I use Jupyter Lab as my primary IDE, but a little confused here. Maybe if I frequently connect to different servers? The python env discovery looks cool, but nb_conda_kernels does this for me now.
Like qbasic.
Jupyter is a generic platform these days, so spans pretty much all langs. I learnt powershell on a mac by writing notes in a jupyter notebook and executing powershell cells.
I recorded a video with terrible quality audio years ago that shows how effective it is. https://youtu.be/k-mAuNY9szI
Though my workflow right now is mostly SSH + tmux + jupyterlab
Does anybody have an IDE solution that offers auto-completion in multiple languages in the SAME notebook? For example, I'm currently using Jupyter Notebooks in DataSpell primarily in Python, but for a few cells I'll use R (using rpy2) and the R code doesn't do autocorrection.
We have just added support for Python and R integration and I am actually in search of external testers! If you are willing to sign an NDA to try out our Python and R integration and give us feedback please drop your email in the form below and I will reach out with instructions for you to try it out!
https://forms.office.com/r/UQchfQSGa5
If you'd like to start trying it out today you can install the extension from the marketplace here: https://marketplace.visualstudio.com/items?itemName=ms-dotne...
I will test out PowerShell. Thanks for providing links.
Maybe that's changed now
https://devblogs.microsoft.com/dotnet/net-core-with-juypter-...