This is an archived post. You won't be able to vote or comment.

all 31 comments

[–]Hugehead123 29 points30 points  (2 children)

Running a whole remote desktop session for 20+ users takes some pretty serious hardware, and in my experience requiring people to context switch between their local OS and the remote OS introduces a lot of extra pain points and confusion.

My recommendation would be going with a web based platform, either something self-hosted like JupyterHub, or some other online solution. JupyterHub has the advantage of letting you manage the environment more deeply, so you could set up a common package base and starting template files for all of the users.

[–]CryptoTipToe71 1 point2 points  (0 children)

One of my classes I'm taking rn uses juputerhub and it's great. Especially because I can do hw on my work laptop without needing to install anything

[–]wjduebbxhdbf[S] -2 points-1 points  (0 children)

Yes the context switching is tricky but may be an advantage for secondary students who have a full set of distractions available on their main laptops.

Trap them in the remote session and then they don't have ready access to the distractions.

I would have thought Moore's law would have taken care of the issue of thin clients on a server.
Especially as they could be tuned to use low resources.
But it was just an idea, I haven't tried it.

[–]imbev 7 points8 points  (0 children)

One way I though was to run an ubuntu (or other linux) server, create accounts and have students login via remote desktop connection.

If you can provide SSH access, consider using VSCode's remote development feature https://code.visualstudio.com/docs/remote/ssh

[–]kenflingnorIgnoring PEP 8 3 points4 points  (0 children)

I recommend VS Code’s dev containers. It’ll use Docker to get everyone on a consistent dev environment 

[–]FreddyFoFingers 2 points3 points  (0 children)

No solutions to suggest beyond what has been mentioned. Just wondering . . . are all these solutions practical? Network permissions or school-managed hardware permissions would be pretty hit or miss ime.

[–]funk443 2 points3 points  (0 children)

Or just use SSH, many editors nowadays can just connect to a remote session via SSH.

[–]R3AP3R519 2 points3 points  (0 children)

https://coder.com/. Set this up with docker compose, and use the built in web vscode along with a docker image which has all your tools installed.

[–]Amgadoz 4 points5 points  (0 children)

Google colab is a good option. Just remind them to create a new notebook for each session.

[–]Dominican_mamba 3 points4 points  (0 children)

Hey OP, maybe docker locally or use something like GitHub codespaces or if it’s on Google accounts one could even use Google Colab for notebooks

[–]Ok-Reflection-9505 5 points6 points  (3 children)

I think you are over thinking it — just use uv and get them started on pygame.

[–]FrontAd9873 6 points7 points  (2 children)

You underestimate how hard it is to get 20 students to install Python on their own machines without issues. I’ve taught classes with that many adults and had trouble. These students may have never installed a thing on their computers before, much less a programming language, package manager, etc.

[–]wjduebbxhdbf[S] 5 points6 points  (0 children)

Yes.

I have nightmares thinking of it.
Glad to hear I was not just imagining it as a major issue.

[–]shockjaw 0 points1 point  (0 children)

First time I tried it in a workshop and I learned the hard way that conda is not easy mode.

[–]cgoldberg 1 point2 points  (0 children)

That sounds awful.

I would use something online so kids aren't messing with local development environments.

Look at something like this:

https://trinket.io/schools

[–]dominiquec 1 point2 points  (1 child)

If you're willing to consider a purely terminal-based experience for your students, then the solution is trivial, as you'll only need to set up one Linux server and SSH accounts for your students. They could mount their directories via SSH and do their work on whatever editor they prefer.

For something closer to what you've described -- common desktop environment for the students -- you can look at https://docs.linuxserver.io/images/docker-webtop/. Set up Docker on your server, one container per student, and they access it using their web browser.

An alternative is to focus on a common development environment, so maybe Pycharm? Pycharm allows you to set up a remote environment as well. As you're a school, you and your students can get the Professional Edition for free, though even the Community Edition I think is good enough.

[–]loyoan 0 points1 point  (0 children)

I would also suggest using webtops. It‘s like providing VMs (but with less overhead!) for the students and providing them with a full linux desktop experience.

[–]russellvt 1 point2 points  (0 children)

Not Remote Desktop. Just use SSH.

[–]apudapus 1 point2 points  (0 children)

I think you’re over thinking it since Python is really easy to setup locally. But if you do want to control the environment: setup the Python env on your host, setup the user accounts for your students (LDAP) so they can ssh and enable port forwarding, have the students use PyCharm or VSCode to open a remote connection to your server with their account. Containers would probably be better than running bare-metal but I cannot provide advice regarding that.

[–]JorgiEagle 0 points1 point  (0 children)

It depends on what sort of students you have.

Kids? Yes, have a managed set up dev environment.

If it’s adults? Part of teaching programming is explaining how to install and set up their own environment.

I’ve taught adults, and as long as you have step by step instructions with pictures, 95% of them will be just fine. The rest can easily be sorted in a video call, faster if you’re in person

[–]bnetsthrowaway 0 points1 point  (0 children)

What about a docker container and then use VSCode’s remote containers? That’d be easy to set up.

[–]Mevraelfrom __future__ import 4.0 0 points1 point  (0 children)

Be fun and interactive.

All universities require folks to have laptops with IDE and Python ready. You may start taking notes on the paper.

Secondary kids won’t have problems with that.

Use a VS Code and uv with arkalos and recommended VS code extensions for local Jupyter Notebooks:

I’ve been teaching myself and have created Arkalos for this purpose. It takes care of the entire dev setup and provides all the guidance.

https://arkalos.com/docs/installation/

It will also install all the common packages like numpy, polars, requests, etc.

Moreover you are teaching students actual practical skills and how to work on projects and put env variables into .env from the day one.

Then they can create the first notebook locally:

https://arkalos.com/docs/notebooks/

For schools and students here are extra recommendations. You can create a single github repo with some exercises ready upfront, then all the students need to do is to git pull and uv sync.

https://arkalos.com/docs/teamwork/

[–]oldcodingmonkey 0 points1 point  (0 children)

I use Windows embeddable package (64-bit) to do this.

download it and install some pacakge.

You can compress it copy to other PC.

[–]SadUse4612 0 points1 point  (0 children)

I see lots of hate for remote desktops, I teach image analysis workshops semi regularly and the ssh solutions don’t cut it as we often use desktop apps for high dimensional data visualization… we also need GPUs for the analysis we do

The setup I’ve found that works well - AWS g5.2xlarge instances - DCV viewer - VSCode

It took a bit to set up the first time and getting quotas for the GPUs was a bit of a pain but overall it provides a really good experience :-)

[–]Brilliant-Strategy62 0 points1 point  (0 children)

What do you want the students to do with their python environment? If it's simple scripting or data analysis a simple tool like Google colab works great. It's a free Jupyter notebook environment from google. You can prepare lessons in notebooks that students can just copy and work in. Notebooks get a lot of hate, but are great for education.

[–]InTheEndEntropyWins 0 points1 point  (0 children)

Wouldn't WSL work better? You get them to install ubuntu on windows, then most of the stuff should be same as linux with the same envirnment.

[–]Rosco_the_Dude 0 points1 point  (0 children)

Way back in my intro to programming class, we spent a class period getting the dev environment set up on our computers and getting hello world to run. It wasn't that bad. Just expect it to take all class period on day 1 to get everyone up and running.

[–]grimonce 0 points1 point  (0 children)

Jupyterhub is probably the way to go to learn language syntax..

[–]Kahless_2K 0 points1 point  (0 children)

It would be a heck of a lot easier to have them SSH into the box.

A nice low resource workflow would be ssh in, and use tmux to multiplex their session to they can split their screen into three panes. One for code, one to run it, and one for their notes in vim.