Remote REPL possible?

I love VSCode and want to use Juno as well for other types of work. I have Windows desktop but I need to run my programs on a Linux server, even during development time. Is it possible to run a local IDE (Juno or VSCode) and let a remote server handle all REPL commands?

3 Likes

I’m also interested in having this in VSCode. In VSCode, there are several ways to run Julia on a remote server. An easy way is to start a bash terminal and run ssh someserver. Then, you can start up Julia on the remote server. But, I don’t know of a way to tell the Julia extension to use that terminal for interaction. Instead of the normal Julia commands to send text to the REPL, you can use the command Terminal: Run Selected Text in Active Terminal (if you don’t have text selected, it sends the current line). It’s a little clunky, but it works for basic things.

I assume you know about it, but just in case: this is exactly what Jupyter / JupyterLab are designed for…

1 Like

That’s a nice idea… but wouldn’t we miss other integration points e.g. plotting pane?

Yes, but that doesn’t work for more serious development projects.

I’ve been exploring other options e.g.

  1. Run VSCode or Juno from the Linux host and display it back to Windows via X11 forwarding. However, the performance isn’t great and there are other annoying problems.

  2. Use vim or emacs from a terminal. That’s not too bad for hard core programmers but it does not click with some people.

  3. Idea above - run local IDE but execute code at remote site. The source files could be mounted from a CIFS file server so the code can be include’ed at the remote REPL. @tshort’s suggestion was great… it comes very close to what I want.

I do remote work on vim/tmux, editing the remote code directly, having mounted the remote file system via sshfs. Is it possible for VSCode to access sshfs-shared code?

2 Likes

Also consider VNC.

Yes! It is possible in Juno!
See the docs here.

This seems to be possible using port forwarding http://docs.junolab.org/latest/man/faq.html
I think migualraz beat me to it though!

I find a marvellous utility for terminal access and setting up port forwarding on Windows in Mobaxterm

It has a X display and VNC client etc.

1 Like

emacs with tramp and ess works great on a remote machine.

I will try Atom as well and report back my findings. Thanks all for the ideas.

1 Like

I’m not too familiar with VSCode, but the answer pretty much has to be yes, directories mounted with sshfs are treated by the file system just like any normal directory. One problem I have is that sshfs and to a lesser extent sshfs is horribly slow on my company’s VPN, so I always wind up having to run vim on the servers, which is just slightly annoying with tmux, depending on how you set it up.

I’m also a big advocate of the whole vim, ssh, sshfs, tmux setup. With this you can just do anything from anywhere at any time without having to worry, and with a better UI than you’ll find in any GUI. Just save all your configuration files in a repository once and for all and be done with it. I haven’t completely solved the problem of plotting, but dumping to files and then browsing them with your browser seems like the way to go (one day I’d like to make a little http server that makes that whole process a little more elegant).

1 Like

Yes, sshfs can have just enough lag to be a bother when the server isn’t on the same network. But IMO it beats dragging in a big VNC or an XServer.

vim-tmux-navigator and vim-slime are nice additions to the ssh-vim-tmux setup.

For plotting, I view files with feh or the browser, served over SSHFS from the remote. It’s not the same as a Plots.jl window, but close. An XServer would fix that, but this remote machine wants to be really secure.

1 Like

Have you tried Python’s instant HTTP server, it serves all files in the directory:

python3 -m http.server
# or
python -m SimpleHTTPServer
2 Likes

Yes, I use this all the time, it works pretty well. I’d like to make something that’s more integrated with my plotting process however.

2 Likes

I use the combination “VSCode/execute selected text in the terminal” all the time and configured shortcuts for this. On my Windows machine, I have Git for Windows. With the bash that comes with this installation of Git, it is very simple to connect via ssh to a Linux server, start a Julia session and execute the commands there. Only viewing plots requires outputting them to files.

1 Like

https://github.com/cdr/code-server

Would this work? Not sure if it can run the Julia plugin. Currently, I can’t install the Julia plugin as it’s not compatible with VSCode see error message

Unable to install because, the extension 'julialang.language-julia' compatible with current version '1.33.1' of VS Code is not found.

Now I wonder if Atom can do the same?

VS Code now has it’s own (backed by Microsoft) extension for that:
https://github.com/Microsoft/vscode-remote-release

I tested it a while ago and it did work pretty well.

2 Likes

The whole feature set of Juno – including the REPL, debugger, workspace, and plot pane – is available for remote sessions (see here for docs).

2 Likes

I don’t know if I understood the question, but you just need to install VSCode (the Microsoft binary from the website, the Linux version doesn’t support it), and then install the Remote SSH extension.

I use the extension everyday to develop Julia code on a remote Linux server.

Check their docs here:

2 Likes

the Linux version doesn’t support it

it does. :slight_smile: but i dont use vscode