Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • 06:18
    Colin Macdonald opened merge request plom/plom!1242 in plom
  • 06:17
    GitLab | Colin Macdonald pushed 1 commits to plom
  • 06:11
    GitLab | Colin Macdonald pushed 2 commits to plom
  • 04:02
    GitLab | Colin Macdonald pushed 1 commits to plom
  • 03:59
    Colin Macdonald approveded merge request plom/plom!1231 in plom
  • 03:28
    GitLab | Andrew Rechnitzer pushed 1 commits to plom
  • 03:07
  • 00:34
    Andrew Rechnitzer approveded merge request plom/plom!1217 in plom
  • Jan 22 18:35
    GitLab | Colin Macdonald pushed 1 commits to plom
  • Jan 22 07:15
    GitLab | Colin Macdonald pushed 1 commits to plom
  • Jan 22 07:11
    GitLab | Colin Macdonald pushed 1 commits to plom
  • Jan 22 07:02
    GitLab | Colin Macdonald pushed 1 commits to plom
  • Jan 22 06:52
    Colin Macdonald opened merge request plom/plom!1241 in plom
  • Jan 22 06:50
    GitLab | Colin Macdonald pushed 18 commits to plom
  • Jan 22 06:36
    GitLab | Colin Macdonald pushed 2 commits to plom
  • Jan 22 05:33
    GitLab | Colin Macdonald pushed 1 commits to plom
  • Jan 22 04:28
    GitLab | Colin Macdonald pushed 2 commits to plom
  • Jan 22 04:28
    GitLab | Colin Macdonald pushed to plom
  • Jan 22 04:28
    Colin Macdonald merged merge request plom/plom!1236 in plom
  • Jan 22 04:26
    Andrew Rechnitzer approveded merge request plom/plom!1236 in plom
fkobayashi
@fkobayashi:matrix.org
[m]
I'm kind of doubtful it will be very useful, since I recently entered the "flail wildly in the code" stage of debugging...
Andrew Rechnitzer
@arechnitzer_gitlab
ha
I think in the short term the better solution for someone who wanted to look up what they did in the previous assignment would be to log into speedgrader or similar
better short term tasks = get the push back working nicely with flask idiocy
cbm
@cbm755:matrix.org
[m]
at least in the near-term, I think we anticipate containers with both a plom-server and a flask instance in them, one for each assessment.
Andrew Rechnitzer
@arechnitzer_gitlab
also - I think I recall Forest having a busy week... so very short term plan = Plom work doesnt make Forest supervisor angry
1 reply
fkobayashi
@fkobayashi:matrix.org
[m]
I was thinking of revisiting this, but I'm not sure if it'd be in alignment with your other design decisions?
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?