Remote REPL possible?


#1

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?


#2

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.


#3

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


#4

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.


#5

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?


#6

Also consider VNC.


#7

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


#8

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.


#9

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


#10

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


#11

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).


#12

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.


#13

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

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

#14

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.


#15

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.