# First steps with Jupyterlab

**URL:** <https://discourse.julialang.org/t/first-steps-with-jupyterlab/30893>\
**Category:** New to Julia\
**Created:** [November 9, 2019, 10:56am UTC](https://discourse.julialang.org/t/first-steps-with-jupyterlab/30893 "2019-11-09T10:56:55Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Usor](https://avatars.discourse-cdn.com/v4/letter/u/8dc957/32.png) [@Usor](https://discourse.julialang.org/u/Usor)\
**Post date:** [November 9, 2019, 10:56am UTC](https://discourse.julialang.org/t/first-steps-with-jupyterlab/30893/1 "2019-11-09T10:56:55Z")

</div>

If this is not in the correct forum, can someone move ot to the right one? Maybe Tooling? Thanks.

I don’t know much about Jupyterlab, so I am here to learn. I read up on it, but I need some to-the-point guidance and answers. I saw it in action and was impressed, as it looks better to me than VS Code and certainly better than a poor terminal. But once I learned it’s always online, I was turned off. So here are some basic questions. I hope you will properly educate me.

What is Jupyterlab?

What are its essential functions?

Can it be used fully offline (like an offline IDE)?

If online, it makes use of some online server, including extra computing power, to process things?

Does it have (some) Vim ways?

---

<div class="post-metadata">

**Author:** ![venuur](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/venuur/32/6493_2.png) [@venuur](https://discourse.julialang.org/u/venuur)\
**Post date:** [November 9, 2019, 4:21pm UTC](https://discourse.julialang.org/t/first-steps-with-jupyterlab/30893/2 "2019-11-09T16:21:43Z")

</div>

I didn’t see you mention anything Julia specific, so maybe you’d get help by browsing the JupyterLab page itself?

> **[JupyterLab is Ready for Users](https://blog.jupyter.org/jupyterlab-is-ready-for-users-5a6f039b8906)**
>
> We are proud to announce the beta release series of JupyterLab, the next-generation web-based interface for Project Jupyter.

I’ve used JupyterLab for Python development professionally. It’s a nice step up from Jupyter Notebooks but not really a full IDE. Mostly I use it because it’s the only way my company allows me to access our higher power compute resources.

For Julia, Juno is really a great starting point. It’s basically a preconfigured Atom setup. And Atom seems to be a decent IDE. Although I still miss PyCharm which is excellent for Python, but I don’t know if it supports Julia yet.

---

<div class="post-metadata">

**Author:** ![Usor](https://avatars.discourse-cdn.com/v4/letter/u/8dc957/32.png) [@Usor](https://discourse.julialang.org/u/Usor)\
**Post date:** [November 9, 2019, 5:08pm UTC](https://discourse.julialang.org/t/first-steps-with-jupyterlab/30893/3 "2019-11-09T17:08:05Z")

</div>

Thanks.

Yes, you are right. I neglected to mention Julia, but it is indeed in the context of Julia. (Or I wouldn’t have posted it on a Julia forum, but I should’ve been clearer anyway, and posted it in Tooling.)

I went through their pages, but really wanted answers to those questions. This whole Jupyter thing is almost totally alien to me, though I understand some of it. I never had a need to use it. So I am gathering information to then think how I will proceed.

Atom is no option for me.

---

<div class="post-metadata">

**Author:** ![venuur](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/venuur/32/6493_2.png) [@venuur](https://discourse.julialang.org/u/venuur)\
**Post date:** [November 9, 2019, 8:43pm UTC](https://discourse.julialang.org/t/first-steps-with-jupyterlab/30893/4 "2019-11-09T20:43:38Z")

</div>

I understand a bit better. Apologies about the misunderstanding, and welcome to Julia if you’re not a regular user already.

First I have a question, and the rest of this answer will address your original questions. To better understand your technical needs, what aspect of Atom makes it no option for you?

What is Jupyterlab? What are its essential functions?

It combines a notebook style interface for interactive development with a file manager and terminal to provide a basic IDE experience. The notebook interface allows you to enter code into text editing areas called cells and run the code seeing the output immediately. This is especially useful for testing new ideas and learning how some piece of code works.

Can it be used fully offline (like an offline IDE)?

Yes. Usually you start the program by running a command like `jupyter lab` in a terminal and then you load the IDE in the browser. For better or worse you always access JupyterLab via the browser.

If online, it makes use of some online server, including extra computing power, to process things?

It’s possible to do this too. I setup this environment once. It is a convenient way to provide a graphical interface to a server that would normally only offer a terminal interface.

Does it have (some) Vim ways?

Not that I’m aware of. The text editing capability is minimalist although autocomplete is usually available. Usually I copy code from the notebook into a file when I when to reuse the code so that I can use my preferred editor (PyCharm for Python and Juno for Julia).

---

<div class="post-metadata">

**Author:** ![Usor](https://avatars.discourse-cdn.com/v4/letter/u/8dc957/32.png) [@Usor](https://discourse.julialang.org/u/Usor)\
**Post date:** [November 10, 2019, 6:31pm UTC](https://discourse.julialang.org/t/first-steps-with-jupyterlab/30893/5 "2019-11-10T18:31:50Z")

</div>

No need to apologize. We all have flaws. Thanks for your answers.

To answer your question about Atom: I find it bloated and I dislike their installation (and deinstallation) practices.

About Jupyter: they always use the term notebook, which was always immediately unintuitive, vague or annoyingly ambiguous to me.

But anyway, the fact that it runs in a browser might be a waste of resources to me. It gives me the idea of it being bloated too, though I could be wrong.

---

<div class="post-metadata">

**Author:** ![venuur](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/venuur/32/6493_2.png) [@venuur](https://discourse.julialang.org/u/venuur)\
**Post date:** [November 10, 2019, 11:31pm UTC](https://discourse.julialang.org/t/first-steps-with-jupyterlab/30893/6 "2019-11-10T23:31:29Z")

</div>

If bloat is a primary concern I suspect you’d be better using `jupyter notebook` which opens a slightly lighter weight interface. You still pay the cost of a browser tab (up to 200 MB of you use say Firefox) but in general the notebook is very responsive.

The whole notebook interface is really best for highly exploratory work where you want to see the effect of each command. Especially it helps if you generate a lot of plots.

For light weight I think your best options are Vim or Sublime Text (though I have less experience with this option). If you want to setup Sublime here’s a post discussing it

> [@Sublime Text 3: Worth a look!](https://discourse.julialang.org/t/sublime-text-3-worth-a-look/17142):
>
> The “Tooling” category lists Juno and VS Code explicitly, probably because they are considered general-purpose and widely used (and widely usable?). I believe from my very recent experience that Sublime Text 3 is at least on par in terms of capabilities and raw power. I don’t mean to start any flame wars or fruitless discussions on the merits of various editors, but it seems to me that Julia users need to be made aware of the benefits of using Sublime Text 3 for programming in Julia. Just a fe…

I personally prefer the more fully featured IDEs like IntelliJ because I’ve adjusted my workflow to accommodate them. Atom is okay for me, but I do agree there’s room for improvement.

---

<div class="post-metadata">

**Author:** ![Usor](https://avatars.discourse-cdn.com/v4/letter/u/8dc957/32.png) [@Usor](https://discourse.julialang.org/u/Usor)\
**Post date:** [November 11, 2019, 2:32pm UTC](https://discourse.julialang.org/t/first-steps-with-jupyterlab/30893/7 "2019-11-11T14:32:16Z")

</div>

Thanks.

Yes, I was investigating some options, including Sublime. All this attempting to lay a foundation for an environment is costing me quite some time. VS Code, while impressive, seems slower than ST3.

DataVoyager.jl seems like a good option for exploration, so I wouldn’t need Jupyter, but I noticed non-sharp graphics. On the Github page it looks like it won’t be solved anytime soon. I used a poor, yet responsive, terminal to see the effects of commands (which I was used to anyway and which works).

So I tried Git Bash, which was impressive, but there seems to be much input lag.

I think it will be Jupyter or Sublime.

IntelliJ you mentioned. I considered it, but it indeed without even having tried it, seems bloated for me.

---

<div class="post-metadata">

**Author:** ![duncanam](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/duncanam/32/10669_2.png) [@duncanam](https://discourse.julialang.org/u/duncanam)\
**Post date:** [November 13, 2019, 11:50pm UTC](https://discourse.julialang.org/t/first-steps-with-jupyterlab/30893/8 "2019-11-13T23:50:29Z")

</div>

Specifically regarding your comment about Vim, while the coding philosophy of Jupyter is fundamentally different than Vim, there’s a nice extension that allows for some familiar bindings both within cells as well as navigating between them. It can be found here: [jwkvam/jupyterlab-vim](https://github.com/jwkvam/jupyterlab-vim)

---

<div class="post-metadata">

**Author:** ![pfitzseb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pfitzseb/32/45566_2.png) [@pfitzseb](https://discourse.julialang.org/u/pfitzseb)\
**Post date:** [November 14, 2019, 10:29am UTC](https://discourse.julialang.org/t/first-steps-with-jupyterlab/30893/9 "2019-11-14T10:29:33Z")

</div>

If you’re looking for a minimal dev environment (without Electron bloat etc) and are comfortable in a terminal, then (n)vim + tmux + a Julia REPL might be a good option. Note that it will require quite a bit of configuration to feel good.

---

<div class="post-metadata">

**Author:** ![Usor](https://avatars.discourse-cdn.com/v4/letter/u/8dc957/32.png) [@Usor](https://discourse.julialang.org/u/Usor)\
**Post date:** [November 14, 2019, 4:44pm UTC](https://discourse.julialang.org/t/first-steps-with-jupyterlab/30893/10 "2019-11-14T16:44:07Z")

</div>

Maybe that will do the trick, although Jupyter would cost me a browser window (and tabs). Is that Vim plugin the only of its kind for Jupyter? (Is there a better one?)

---

<div class="post-metadata">

**Author:** ![Usor](https://avatars.discourse-cdn.com/v4/letter/u/8dc957/32.png) [@Usor](https://discourse.julialang.org/u/Usor)\
**Post date:** [November 14, 2019, 4:51pm UTC](https://discourse.julialang.org/t/first-steps-with-jupyterlab/30893/11 "2019-11-14T16:51:05Z")

</div>

That looks very interesting. I never considered tmux. But I have come to a point in life where I don’t feel much like having to configure these kinds of things anymore, unless I must.

---

<div class="post-metadata">

**Author:** ![duncanam](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/duncanam/32/10669_2.png) [@duncanam](https://discourse.julialang.org/u/duncanam)\
**Post date:** [November 14, 2019, 4:53pm UTC](https://discourse.julialang.org/t/first-steps-with-jupyterlab/30893/12 "2019-11-14T16:53:31Z")

</div>

If you don’t want to use Jupyter, don’t use Jupyter. Instead you can use something like Juno/Atom which does allow for “cell” definition and evaluation. Then, you can install vim mode plus in Atom, and this gets you Jupyter-like evaluation, a variable workspace, debugging, and vim keybindings.

The plugin I linked is the best one I’ve found so far. Ultimately I decided to keep vim away from Jupyter since the notebook style environment doesn’t mesh perfectly with the rapid editing style of Vim.

Edit: forgot to respond to the last part of your question.

---

<div class="post-metadata">

**Author:** ![Usor](https://avatars.discourse-cdn.com/v4/letter/u/8dc957/32.png) [@Usor](https://discourse.julialang.org/u/Usor)\
**Post date:** [November 14, 2019, 8:48pm UTC](https://discourse.julialang.org/t/first-steps-with-jupyterlab/30893/13 "2019-11-14T20:48:01Z")

</div>

But Atom, as we already thought, is much more bloated and their installation/deinstallation practices are bad.

No worries. It’ll be probably Sublime or Jupyter.

---

<div class="post-metadata">

**Author:** ![BLI](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bli/32/37206_2.png) [@BLI](https://discourse.julialang.org/u/BLI)\
**Post date:** [November 14, 2019, 8:59pm UTC](https://discourse.julialang.org/t/first-steps-with-jupyterlab/30893/14 "2019-11-14T20:59:59Z")

</div>

I like Jupyterlab – although it appears to be a resource hog. One thing I don’t know how to do, is edit a notebook. Suppose I want to search and replace to change a variable name throughout a notebook. Is it possible to open the notebook in a “file” view and do search and replace? I assume it is possible, but I haven’t found out how to do it.

---

<div class="post-metadata">

**Author:** ![Usor](https://avatars.discourse-cdn.com/v4/letter/u/8dc957/32.png) [@Usor](https://discourse.julialang.org/u/Usor)\
**Post date:** [November 14, 2019, 9:26pm UTC](https://discourse.julialang.org/t/first-steps-with-jupyterlab/30893/15 "2019-11-14T21:26:36Z")

</div>

Did you check any documentation? (I would think this should be a reasonably trivial thing.)

How much RAM does Jupyter Lab take on your machine?

---

<div class="post-metadata">

**Author:** ![Usor](https://avatars.discourse-cdn.com/v4/letter/u/8dc957/32.png) [@Usor](https://discourse.julialang.org/u/Usor)\
**Post date:** [November 14, 2019, 9:31pm UTC](https://discourse.julialang.org/t/first-steps-with-jupyterlab/30893/16 "2019-11-14T21:31:31Z")

</div>

Can anyone tell me about the stability of Jupyter Lab, assuming it is necessarily combined with IJulia.jl? The Github page, section Issues, of IJulia does not give me an air of stability, but what do I know about it? More specifically there seems to be trouble with Julia 1.2 and another issue is about Dataframes.

---

<div class="post-metadata">

**Author:** ![BLI](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bli/32/37206_2.png) [@BLI](https://discourse.julialang.org/u/BLI)\
**Post date:** [November 14, 2019, 9:38pm UTC](https://discourse.julialang.org/t/first-steps-with-jupyterlab/30893/17 "2019-11-14T21:38:00Z")

</div>

I haven’t checked RAM consumption. But I have currently 4 tabs/notebooks open on my 32GB RAM Dell workstation (Xeon processor, 6 cores I think), each with some 40-100 cells, and when I switch among them, the input cells sometimes are blank. If I click in one of the blank cells, it gets populated with the text that really is there. I suspect that this is caused by them taking up some memory, but I may be wrong.

Jupyter notebook is probably a lighter tool, but I really like the file browser in Jypyter lab…

---

<div class="post-metadata">

**Author:** ![BLI](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bli/32/37206_2.png) [@BLI](https://discourse.julialang.org/u/BLI)\
**Post date:** [November 14, 2019, 9:39pm UTC](https://discourse.julialang.org/t/first-steps-with-jupyterlab/30893/18 "2019-11-14T21:39:32Z")

</div>

It should be trivial. I haven’t really seen any documentation. The link earlier in this thread is just a nice blog, I think. I saw some impressive videos 1-2 years ago. I should probably google or youtube jupyterlab…

---

<div class="post-metadata">

**Author:** ![Usor](https://avatars.discourse-cdn.com/v4/letter/u/8dc957/32.png) [@Usor](https://discourse.julialang.org/u/Usor)\
**Post date:** [November 14, 2019, 10:30pm UTC](https://discourse.julialang.org/t/first-steps-with-jupyterlab/30893/19 "2019-11-14T22:30:57Z")

</div>

Yes, that would do you good.

Are you on Windows? You could use `Ctrl Alt Delete` to see memory usage. If on Linux, you could use the `top` command in a terminal.

---

<div class="post-metadata">

**Author:** ![orialb](https://avatars.discourse-cdn.com/v4/letter/o/65b543/32.png) [@orialb](https://discourse.julialang.org/u/orialb)\
**Post date:** [November 14, 2019, 10:35pm UTC](https://discourse.julialang.org/t/first-steps-with-jupyterlab/30893/20 "2019-11-14T22:35:43Z")

</div>

> [@Usor](#):
>
> Can anyone tell me about the stability of Jupyter Lab, assuming it is necessarily combined with IJulia.jl? The Github page, section Issues, of IJulia does not give me an air of stability, but what do I know about it? More specifically there seems to be trouble with Julia 1.2 and another issue is about Dataframes.

Works great, I didn’t encounter any issues with Dataframes or 1.2 .

[Next page](https://discourse.julialang.org/t/first-steps-with-jupyterlab/30893.md?page=2)
