Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • May 26 03:16
    GitLab | Colin Macdonald pushed 3 commits to plom
  • May 26 00:02
    GitLab | Colin Macdonald pushed 5 commits to plom
  • May 25 23:47
    GitLab | Colin Macdonald pushed 30 commits to plom
  • May 25 23:46
    GitLab | Colin Macdonald pushed 1 commits to plom
  • May 25 23:40
  • May 25 23:34
    GitLab | Colin Macdonald pushed 18 commits to plom
  • May 25 23:26
    GitLab | Colin Macdonald pushed to plom
  • May 25 23:26
    GitLab | Colin Macdonald pushed 22 commits to plom
  • May 25 23:20
    GitLab | Colin Macdonald pushed 2 commits to plom
  • May 25 20:59
    GitLab | Colin Macdonald pushed 1 commits to plom
  • May 25 19:50
    GitLab | Andrew Rechnitzer pushed to plom
  • May 25 19:50
    GitLab | Colin Macdonald pushed 2 commits to plom
  • May 25 19:50
    Colin Macdonald merged merge request plom/plom!1471 in plom
  • May 25 19:50
  • May 25 19:28
    Andrew Rechnitzer opened merge request plom/plom!1471 in plom
  • May 25 19:27
    GitLab | Andrew Rechnitzer pushed 1 commits to plom
  • May 25 19:23
  • May 25 18:32
    GitLab | Colin Macdonald pushed 1 commits to plom
  • May 25 18:31
    GitLab | Colin Macdonald pushed to plom
  • May 25 18:31
    GitLab | Colin Macdonald pushed 6 commits to plom
cbm
@cbm755:matrix.org
[m]
forget what "this" is
fkobayashi
@fkobayashi:matrix.org
[m]
yep typing up a summary right now
fkobayashi
@fkobayashi:matrix.org
[m]

Goal: Be able to hotswap between servers (e.g. for different courses or for different assignments in the same course) without having to delete the current server directory and redownload all the student papers, etc.

Use case: When running multiple courses that use plom it might be helpful to be able to switch between different servers to look at how the marking process is going in each one. Or, sometimes when marking multiple sections of the same course it can be convenient to be able to switch quickly between sections (e.g., "I know somebody in the first section made this same mistake but I can't quite remember what I thought was wrong with it, let me go check what they said")

General approach:
Store servers for each class/assignment combo in different local directories. Whenever the user wants to switch (course, assignment), check if a directory for that exists already. If so, then try and launch a server from that directory. Else, make the directory and initialize all the data, etc.

Whenever user wants to switch to a different (course, assignment), give the option to either kill the current server and start a new one in the new directory, or keep the old server alive and choose a different port for the new server and launch the new server.

Details:

  • Add __init__() methods to CanvasServer and CanvasServerState so that we can do something like CanvasServer(course, assignment)
  • Determine CanvasServer.directory based on course and assignment instead of using a hardcoded path (already implemented a few days ago)
  • Make a global class LiveServers that holds a list of all currently-running CanvasServer objects
  • Add a pane to the flask app that lets the user manage currently-running servers and kill / resume old ones as they see fit. When killing a server it'd get removed from LiveServers and have its information (e.g. directory, port number, etc.) written to some file so that it's easy to later show the user something like "here are some servers you used in the past, do you want to start them back up?"
This is something I would like, since it makes the downloading step (very slow) a one-time thing
But I seem to recall you talking about running everything through docker containers in the future
Also not sure if it's really relevant to many people. Probably not many people will be running multiple servers on one machine, right?
cbm
@cbm755:matrix.org
[m]
ummm TL-DR: this looks like orchestration, where one flask is managing a bunch of Plom-servers, not all of which are running. Improvements to from plom.server import PlomServer to make this possible welcome
1 reply
HAve you looked at PlomServer?
fkobayashi
@fkobayashi:matrix.org
[m]
I just started to this afternoon
cbm
@cbm755:matrix.org
[m]
Its a background Plom Server you can launch, and in theory take down, restart
from say ipython
fkobayashi
@fkobayashi:matrix.org
[m]
Yeah although for some reason when I try PlomServer.server._server_proc.terminate() it doesn't seem to do it???
Caveat, I'm not sure if that's actually where the problem is, my code might be breaking before it reaches that point
1 reply
cbm
@cbm755:matrix.org
[m]
p = PlomLiteDemoServer(); p.stop?
can reproduce with that?
fkobayashi
@fkobayashi:matrix.org
[m]
ok that works
I was just suspicious since formerly I'd been trying to kill the server directly using its PID and that hadn't been working
cbm
@cbm755:matrix.org
[m]
there are some bugs still too... especially on ipython
There are two backends popen2 and some builtin python thing: latter not reliable yet
likely related to problems you had before too :(
Anyway, the flask stuff is more likely a discussion for @arechnitzer_gitlab but the orchestration aspect should be doable
I don't quite yet see the mapping between many users, many flask instances and many plom server...
cbm
@cbm755:matrix.org
[m]
to start with, I tihnk the plan is one user get's one flask instance
fkobayashi
@fkobayashi:matrix.org
[m]
I think that there would still be one user with one flask instance, but the flask instance could possibly be managing multiple servers?
cbm
@cbm755:matrix.org
[m]
sure
I think it could spin them up on demand as you suggest
they would all live inside the same container (with the flask) for now
fkobayashi
@fkobayashi:matrix.org
[m]
Ok! I'll get started trying my hand at it, then?
cbm
@cbm755:matrix.org
[m]
I guess! Idea from my POV (wearing machine admin hat) is Prof X wants to use plom, so I run a docker instance and send her the URL and flask password. She can then launch as many pc-glue, or from-scratch assessments as she likes.
fkobayashi
@fkobayashi:matrix.org
[m]
Cool
cbm
@cbm755:matrix.org
[m]
sort of, the flask thing is a bit too "long running", it it would be nice if each PlomServer came from the latest stable branch, and in their own dockers... and a pony
But maybe its a start.
Ideally the flask thing should be able to disappear, pull latest branch and come backup
But we don't have to save the entire world all a once. Baby steps!
fkobayashi
@fkobayashi:matrix.org
[m]
Ok!
cbm
@cbm755:matrix.org
[m]
Will the docs magically get easier to maintain if I finish up my "sphinx" branch and we move more and more docs in source? Or is this magical thinking on my part?
arechnitzer
@arechnitzer:matrix.org
[m]
um
cbm
@cbm755:matrix.org
[m]
magical thinking explained: if docs are in tree, thou shalt not submit MR that are inconsistent with docs. Reviewers will force you to update the docs before they accept your MR
arechnitzer
@arechnitzer:matrix.org
[m]
ooo
cbm
@cbm755:matrix.org
[m]
more than likely, we'll just open lots of "follow-up: update the docs for the foo change" bugs...
arechnitzer
@arechnitzer:matrix.org
[m]
hahah
Alex Jordan
@Alex-Jordan
Hello PLOM Team. Suppose I used PLOM to generate PDFs, but then instead of printing them, I arranged for each one to be emailed to the target student. The student would either (a) print the exam, write on it, and scan/photo their work into a single PDF or (b) digitally annotate the PDF with their work. Then they deliver their PDF back to me inside an LMS. Could I expect that PLOM would manage these returned PDFs well? Assuming the students don't take garbage photos of the pages, do you think it could work? Including if the students insert a page of scratch work here and there before they scan?
In other words, does the scanning of completed exams needs to be a controlled process?
cbm
@cbm755:matrix.org
[m]
I did something like that through the pandemic.
My workflow: email/msg students a url like "https://sekrit.math.com/exam/<SID>_random_hex.pdf" a few days before the test. At 11am (test start), I put those files in place and tell students to begin. 35 mins later, they stop writing and scan. They then upload to our LMS (Canvas). I then pull all those PDFs from Canvas (using the LMS's API) and scan them into Plom using plom-hwscan (we call this "Homework Mode" in Plom)
cbm
@cbm755:matrix.org
[m]
This worked very well, but some of the scripting is a bit immature still (see https://gitlab.com/plom/plom/-/blob/main/contrib/plom-server-from-canvas.py and https://gitlab.com/plom/plom/-/blob/main/contrib/plom-push-to-canvas.py). We're also working on making a webUI that allows one to connect to Canvas, grab any assignment containing PDF files and populate a Plom server from them.
What LMS do you use?
1 reply
Andrew Rechnitzer
@arechnitzer_gitlab
hi @Alex-Jordan - happy to give you a tour of what is required.
9 replies
arechnitzer
@arechnitzer:matrix.org
[m]
ah - our students were pretty adamant that they did not want to be required to print or use a tablet
could have been "Print a test - no way - I need those extra 30 seconds"