1. This week I made some changes to my branch for issue #2050. This is done now and awaiting further review. I also worked on getting search and filtering working in the submissions table. I submitted this but David suggested a few more changes to make so that we no longer have to use the “dangerouslyUseInnerHTML” component. Finally I worked on investigating the lingering Prototype in the automated tests code.
2. It turns out the automated tests file that had lingering Prototype called has some other files that are pretty dependent on it, so I don’t think it would be a good idea to delete it. Had a bit of a hard time figuring out how to test my changes for the Prototype code related this, but now I believe I know how to do this.
3. I’ll work on making the changes for my submissions table issue and then continue to remove Prototype code from the automated tests files, now that I know how I can test it.
1. I created a pull request for the delete group function for students when they click create group. The delete group method delete the entire grouping as long as there are no submissions. And its currently only available to the “inviter” of the group. I dont know if that should be changed and made available to everyone?
2. No roadblocks this week.
3. I did look in to creating the create group button for instructor interface for individual assignments. It seems pretty straightforward, but it also comes with a performance issue when the class size gets fairly large. So it would be nice to get some ideas/input on that.
So last week I figured out how to add folders to the seed data in the assignment submissions to test the nested file selector.
I was hoping to do more but unfortunately this took me a few hours. I found the location of the seed files (db/data), created some folders there and then located the code that adds those files to the repos when bundle exec take db:setup is called. I then tried to add the folders to the repos by calling an existing function, which worked, but when I tried to add the files inside the folders, I would get an SVN error saying the parent folder is not a directory. Eventually got it working by changing the name of the folder in the generated repo (e.g. A1/something) so that it’s different from the name of the folder I made inside db/data. For some reason this fixed it and the files show up in the Submission page.
Next week I’ll hook it up to the UI I made previously.
1. Rewrote methods for running tests to execute them locally – removed server choosing/rotation functionality. Scrapped XML parsing functionality to instead store the results as JSON. David merged the PR in yesterday (thanks!).
2. Remove SSH from test run commands and run them on the local server directly. David was having an issue with the test results not being produced, so investingating that further. I think it might be due to some issue with the form uploading but I’m not 100% sure. So syncing those changes with Wilson’s too. Ideally going from there to start returning the test results to students – I don’t think this UI existed previously.
2. No troubles. As tough as the rubocop/hound comments can be, it is nice to be forced to learn some of the idioms of the Ruby language to ensure the code that we commit is readable and concise.
3. I hope to finish the markdown support in annotations and get a PR in for it this week.
1. Worked on the upload form again this week. Rewrote a large part of the automated_test_helpers file so that the file name for test scripts are now properly being accepted and uploaded. Multiple file uploads should also be supported again. It no longer lets you upload files with the same filename as well as they must be unique. Support files for tests should be added supported again soon once I add them back to the form as they were removed during our earlier work. I’m currently working on getting the ability to edit files working.
2. Running into issues with getting the ability to edit files working. It seems like it’s trying to create a new test script instead of editing the old one still, so I’m still looking into that.
3. Will continue working on editing files that are uploaded, as well as some general code cleanup involved with renaming confusing variable names from the existing code (such as script_name, which is actually test_script)
This past week I implemented a expandable nested list that will replace the flat list for selecting a file to view. I hard-coded the values for this list, so next week I will be hooking it up to the actual files. I was planning to do this the other way around (first get the existing flat list working with an arbitrary number of subdirectories, and then implement the expanding list), but then I realized that students can’t upload folders through the web UI so I wasn’t sure how to test the subdirectories. Is there a way I can directly add folders to the database, or do I need to use SVN?
1. Put up a pull request for running tests remotely, documented things which are oustanding. Looked more closely into the file upload. Files aren’t currently being created upon upload due to some confusion with attributes
2. Work on test script uploading. I think rewriting the code makes sense for the backend.
1. Spent this week working again on the upload form. I feel I am at a spot where i know exactly what’s not working and why, am just working on a solution. Currently, the filename is not properly being passed in which results in the filename being stored incorrectly, and unable to be downloaded. Tried a few solutions but was unsuccessful. This is a result of it being passed through the headers now which I cannot seem to access. The other issue is that a check is done against the test file id, which is not being passed in. I spent some time trying to pass this in, but am unsure of how to retrieve it from the form.
2. The main problem is with the wrong parameters being passed in by the form, and not being able to access the filename via the headers. Going to talk to David about how I can access this as I was unable to find help on this topic through Google. I was also unable to figure out how to access the test script ID through the form, and am still looking into that.
3. Will continue working on the test upload form. I think once I figure out the issues I’m working on I will be able to quickly fix the other issues with the form as I now have a good understanding of how its supposed to work and whats not working.
1. This week I worked a lot on style changes and refactoring requested for the TA Activity PR. There were quite a few things that I had to troubleshoot for a long time and it slowed me down(i.e. some controller methods being placed after private declarations), but overall I am happier with the state that its in. I will continue to respond to requests for this PR as fast as possible. I have left notes on the three remaining comments with some justification as to why it has been coded that way.
2. Small problems when refactoring be more concise that I attribute to simply not knowing all the ins and outs of Ruby and Rails. So although this had slowed me down a bit, it was pretty good to find the solutions and get to know the intricacies a bit better.
3. I will look at some outstanding issues and continue to respond to TA activity PR comments. Is there a high priority issue that you would prefer me to work on?
1. This week I worked on finishing issue #2050 for helping instructors see any submissions that have no files in them, and provide the option of not assigning graders to groups with empty submissions. I started to investigate the submissions table like David asked me to last week.
2. I had some job interviews and assignments this week, so it was another hard week for time management. Everything has settled down this week so I’d like to get two issues done.
3. Next week I will continue to look into the submissions table, I’ll also work on #2351 reported by @arkon, looks like I missed a bit of Prototype code in the automated testing files.
1. Last week I spent on the delete group function for students. For now I assumed that only the inviter can delete the group and that the whole grouping is deleted rather than a single member being deleted from the grouping. I don’t know if we could reuse the remove group method that is already in the groups controller but the code i’m writting follows the exact same flow.
2. I am having trouble with routing the front end to the backend. I think im just missing rails understanding so i have to look more in to that.
1. Started work on #2050, flagging submissions with no files attached. I’ve got it mostly working, I just need to account for the option of not allowing professors to assign graders to empty groups when they choose to randomly submit. (Right now it works only for submitting a grader to specific groups)
2. No roadblocks this week, other than an assignment/midterm heavy week. After this week I’ll be able to put a lot more focus into this course!
3. Next week I’ll finish up #2050 and talk to Karen and David for something else to do. I may pick up some issues I find in the list if I run out of things.
1.This week I created a pull request for the csv group creation and started looking in to why removing a member from the group fails. I think it might be because of the way the groupings are handled when a student is removed, but i did not get to look too deeply in to it.
2.The main road block for me was code formatting
3. This week i’m planning to fix the issue with removing a member from the group and doing suggested code changes for the pull request
1) Worked on the test execution functionality, digging into Resque. Figuring out how Redis and Resque worked together. Now able to run test locally.
2) Test runner doesn’t seem to be outputting (essentially) blank XML. Need to dig deeper into that. Determine if it is due to a bad merge or just isolated to a few languages
Last week I turned the checkbox for releasing marks into a button. This is mainly for consistency as I changed the dropdown for marking status into a button the week before. Also I briefly looked for potential bugs in the code for downloading submissions, which I think is good. I can’t think of a corner case where downloading the submissions would trigger a collection, which the user reported.
Next week I could implement some more additions to the grader UI.
3. Will continue working on a fix if Karen or David have any suggestions for changing the implementation. Otherwise, will be back on the test upload form this week.
Made revision to TA pull request as recommended by david and others
Added short form x/y marked presentation in dashboard view
Designed a separate dashboard page that displays all the graders and their distrubtions/information. This page can be accessed by clicking an “All Graders” link near the grader distribution from the dashboard when you are viewing a specific assignment.
Full screen with many graders (I repeated each grader multiple times to simulate a large amount of graders) :
Mobile sized screen with many graders:
Added an overflow option to scroll when there are many TAs (i.e. 40) so as to prevent a very long list expanding the dashboard view down too much.
Had trouble committing because rubocop-git (in the script that I made) fails on certain characters (i.e. those added in the internationalized string files). Just an FYI if anyone runs into an error using the pre-commit script and have added some of these characters to the internationalized strings.
I will be prompt to respond to any suggestions/fixes for the PR as it is getting quite large.
If there aren’t any more requirements for TA activity, I am going to work on a new issue this week (#2344 possibly).
1. Had a bit of a busy week with all my midterms this week but mostly worked on investigating some of the issues Jeremy outlined in his PR. I looked into being able to upload multiple test files but didn’t have a lot of luck as i’m a bit confused at how some of the stuff currently works so will have to do some more research into it. I also tackled some of the hound issues and currently have a PR for Jeremy’s branch.
2. Was unable to test my PR for the hound complaints because I had to do a PR to Jeremy’s branch and not the PR hound was complaining about. I couldn’t quite figure out how it was originally intenteded for the multiple test file upload to work. Maybe it would be better to focus on other things for now?
3. Will talk to Jeremy a bit after this meeting on how we want to proceed with things and get caught up with where he is on the project. I’m going to probably continue to try to support multiple test file uploads unless there is something else that is more urgent. I might cleanup all the code in a separate PR for hound so that we don’t have to deal with these hound complaints in the future as it is really cluttering up our PRs.
Last week I finished up the “Set to Complete”, “Revert to Incomplete” button and merged the marking states “unmarked”, “partial” to “incomplete”. Was relatively straightforward, but had a hiccup when I couldn’t figure out why I was getting a “Missing template” error for my new route that was defined for this toggling button. The solution was that I needed to use “render” instead of “render: template”. Next week I’ll add the new text field that shows the fraction of submissions that have been fully marked.
1) Worked to get a PR up with the changes around having a file uploaded. Ended up have to make some modifications to existing associations and the code to get it to a semi-working state.
2) Working with Wilson to get the file upload working completely. There are a lot of complaints from Hound and some comments from David to address.
3) A lot of the Hound comments relate to code that existed previously. I’m not sure if the best bet is to modify them in the current PR or create new PRs to clean that up later?
This week I finished the csv group creation (branch https://github.com/binuri/Markus/tree/issue-2338). I haven’t tested it yet, so I should be able to create a pull request on Thursday. I also picked up an issue for creating a column in the detailed csv report. I added the feature but I am currently tackling the hound >.<
No road blocks this week
Added grade distributions per TA for each assignment in the assignment dashboard. Example views provided below.
From the assignment dashboard, each grader has a hyperlink, which when clicked refreshes the distribution graph for the selected TA.
I ran into troubles when creating a remote controller action, which when called would return the new distribution for the selected TA. Initially, the action would render the JS before it actually computed and returned the distribution (causing an error). So I added a :before_action to workaround this, but am curious if anyone knows why this had to be done (and why in Rails it does not render the JS once the previous statements have been executed). Either way, this approach worked, but if anyone has insight, that would be great.
I plan to add the annotation per TA to the dashboard.
I will look at any outstanding issues that I can tackle.
I will think about more TA analytics that could add value to the dashboard view (and if I am recommended any, I will work on those as well)
1) This week I finished up with Prototype. I thought it was done earlier in the week, but I forgot to restart the Rails server when I was testing. As a result I found a lot more errors I missed later in the week, which have now been fixed. Annotations suffered the most, I think they are back to where they should be now.
2) No roadblocks.
3) I’ll be working on Issue 2050 for flagging empty submissions. If I finish that I may try to fix a bug I reported today.
1. Fixed the polymorphic_url errors caused by the target_controller selection. Fixed lots of hound syntax errors, and began working on understanding the process_test_form function. Tinkered with it a bit, and made a few changes that got it mostly working with the exception of an error involving the test_files relation.
2. Mainly the issue I had running into the test_files relation, but I believe jeremy solved that.
3. Will continue to work on getting the upload form functioning and documenting and fixing anything else I run into during the process.
1) Working on process_form method, looking at uploading of test file. Able to get this working locally
2) Submit a pr for the work i’ve done so far, base it off of wilson’s pr. Start looking at multiple test file upload (form currently doesn’t render once a test file is uplodaded due to some issues with the seq_num field of a test file)
3) Figuring out how to use version control when working off a PR in progress – I think I’ve figured it out now!
Last week I was able get a strict guideline of how the creation of groups to go after discussion with Karen and David. I have the code done with a few questions/exceptions. I was not however able to test out Karen’s feature branch regarding the group permissions (Sorry Karen!)
One main road block was time with everything else that’s going on. Other than that, a few questions I ran in to are
#a. What issue should I create the branch for? There’s a couple relating to groups. #2180 and #2237. Or should I create a brand new one?
#b. For a assignment with individual groups, if the student given by the memberships doesn’t exist, shouldn’t we throw an error? (Same scenario for group assignments)
#c. Maybe this is just me but to me the csv function sort of feels incomplete now because when an instructor wants to create a grouping between a group from an old assignment to a new assignment, they won’t be able to do that because the csv file upload only works for brand new groups.
Last week, I looked at the update_marking_status function that gets called when you change the marking status, and wrote an analogous function + route that just changes the marking status to complete. I then made a button for this in the submission view, but I had some trouble finding the right syntax to hook them together (was trying button_tag, but I believe I should be using button_to). Also, I searched for all the places that referenced the marking status unmarked or partial and changed them all to incomplete. However, I haven’t tested this yet.
Next week, I’ll be finishing up this task and then moving on to the next item to add to the grader view, which is the fraction of submissions completed.
I created a PR for the changes that I have made thus far to report on TA activity. I also did a writeup for my contact here at the University as to what is going well and what is not. Unfortunately, this week I had a lot of midterms and assignments, so I wasn’t able to get much more in the way of adding more analytics. Today, I plan to tackle my initial goal for this week of creating a distribution of marks for each TA for each assignment.
This week I plan to add visualizations in the assignment graph area. I am welcome to any more requests for metrics (I currently have # of assignments completed marking, # of annotations per submission, grade distribution for TAs for each assignment).
2. No code roadblocks. I did manage to break my laptop, so I had to get an old one up and running and re-set up the MarkUs dev environment. This is working now, but it cost some time.
3. Early into the week I’d like to get a pull request in with the changes mentioned above. After that I think I’m done with prototype. I was thinking of looking into the “General Issues” project, which has a few medium sized issues in it. Is that a good direction to be heading in?
1) Carried on looking into the test-framework branch, specifically the code for form and file uploads. Worked on delete grader functionality
2) Continue working with Wilson on test script and test support file uploads, ensuring attributes for assignments are updated correctly
3) Just figuring out how all the form/test code fits together and identifying where errors are coming from.
1. Spent this week working on getting the view for the test file upload working. Solved a few errors caused by missing functions in the helper, forms, and in the navigation bar. Gained a much better understanding of how everything goes together.
2. Ran into the issue with AssignmentRules, but David already addressed those for me in the PR.
3. Going to continue addressing issues of broken functionality in the file upload section and figuring out what still needs to be fixed / what works.
– Addressed some comments in PRs to allow them to be merged
– Added a functionality to calculate # of annotations per marked submission on a per assignment basis for TAs
– This is present in the submission status column for TAs and teachers right now, but plan to move this to dashboard
– Admins see as a whole how many annotations there are per submission (i.e. across every TA)
– Plan to add a quick reference to each Grader’s average annotation per submission using the function created for TAs
2. No problems, been a bit tough to juggle with studying for exams, and assignments this week.
3. This week, I plan to add some functions to calculate distribution of marks for each TA. If time permits, I will look into adding visualizations for these metrics to the dashboard and any other areas where appropriate.
2. This week was a little busy with assignments for other courses, so I wasn’t able to do as much as I would have liked.
3. Next week I will continue looking for inline Prototype code and checking to see what removing the inclusion of Prototype may break. I also would like to look into the FilterTable.js file, and try to figure out if it is still in use and what it’s for, as I think it’s related to Prototype.
So these last couple weeks I fixed a few PDF issues and also a bug regarding newlines not showing up in remark requests. There weren’t any major obstacles. Next week, I will start on the grading interface.
So last week I was still working on the repository set up when groups are set up through csv files. I created outline code but the code and the logic is very confusion. So I met up with Karen for and we decided that some of the previous code that already exists may not work/outdated and certain steps need to be reconsidered. So I went back home, I reformatted the flow charts etc that I drew to figure out the code and I have to meet up with Karen again and see if my understanding is correct and to see if the behaviour is appropriate and then finish up the new code
1) Looked a little more into the the results of the branch merge. There’s definitely a few things which are broken but it’s not immediately clear what has/hasn’t been implemented. Wilson and I have informally documented a couple of things which aren’t working right now
3) Schedule a meeting with Karen, David and Wilson to set some milestones for the project. It’s still not super clear to me what has already been built and where we’d like to be at the end of the term. So I think meeting up to set a few intermediate markers will be helpful (I’ll email).
– Added seed data for marks spreadsheets.
– One spreadsheet is visible, with marks entered, released to students, dated immediately
– Another is hidden, has no marks entered, has not been released to students, dated two months from seeding time
– Investigated rubocop pre-commit file
– Learned that the precommit script will only run on files that have been added (staged) for a commit
– TA Analytics
1) This week I worked on converting the last .rjs files in the views folder into .erb files. This is almost done now, 7 files have been deleted/converted and only 2 more remain.
2) I ran into a roadblock that came from my lack of Rails knowledge. I realized that a lot of the .rjs files I had to convert weren’t even being used anymore. Originally I thought they were just not working properly, but after investigating the current codebase and checking in the project’s git history I found that in some cases the method or action that the .rjs file was related to in the controller was removed. This resulted in me realizing I could just delete a lot of the .rjs files that still exist (especially in the grades and assignments view). After that I was back on track.
1) Implemented a different fix to fix the broken tags list. Also setup Jeremy’s merged test branch and investigated into what is working / what is not and documented it.
2) Mostly just getting used to how RoR handles migrations. Ran into a few issues with dependencies on the test-framework branch but got those worked out.
3) Jeremy and I are going to have a meeting with David and Karen this week regarding the exact scope and features wanted for the testing framework so we can figure out how to tackle it.
The one I posted before seemed a little extra so I narrowed it down.
1) Last week with the little assessment i did, my plan to tackle the full issue of groupings in one go was unsuccessful, so I decided to break it down. This week I came up with an approach to taking the repo_name in to consideration when creating groups through a csv file upload.
2) I ran in to a lot of road blocks where I didn’t know which step to take, for example, do I reuse the group when a repo name is found etc. Also I didn’t know the existence of hooks, so it took me some time to figure out the actual flow of methods/objects.
3) This week I plan to continue with the repo names in the csv file group uploads (edited)
Last week I made the annotations rotate when the JPG/PDF gets rotated. This was trickier than rotating just the image because the annotations are generated by coordinates, so some math needs to be done. For PDF, it wasn’t too bad because the coordinates are stored as percentages local to the PDF boundaries, but for JPG, the coordinates are in pixel space relative to the entire page. Also, rotating JPGs that aren’t square can cause them to overlap with the panel boundaries, so I added an extra translation to align them with the edges of the panel.Although I got the annotations rotating to the correct positions, I found some bugs in the annotation/image viewing code(#2308, #2307, #2306). For next week though, I’d like to fix some issues with my own code first. In no particular order:
If the grader tries to make an annotation while the image is rotated, the coordinates are stored in the db as if the image isn’t rotated.
For rotated annotations, the text sometimes doesn’t show up when the mouse is hovering over it.
Large JPG files with scrolling have wonky behaviour when the img element is rotated. The scroll bars aren’t updated to swap the width/height, and rotating the annotations on the img can bring them outside of the iamge viewing panel, which is right, but I need to figure out how to hide them until the grader scrolls over and update their positions as they scroll.
I think there’s some sort of mask at the bottom of the JPG view that needs to be resized upon rotation. When an image is uploaded in landscape orientation and rotated to portait, the bottom of the image is cut off by blank white space.
Sept. 21 – 28, 2015
1) Merged master into test-framework branch. This is now on my local fork.
2) Couldn’t figure out why the server wouldn’t start after my merge – but David helped me figure this one out!
3) Going more carefully through things that were merged to verify and test existing functionality. Start to look at at what test-framework has to offer. Coordinate with Wilson
Was a little busy this week, so didn’t get a lot done. Mostly worked on fixing the issue regarding tags not showing up. After spending a lot of time figuring out the debugging tools for Ruby on Rails, I figured out that we are storing the memory address for the user instance creating the tag instead of the actual user in the database. It was actually pretty hard to find this error since no exception was raised. I’m a little confused at how this ever worked since it seems like it should’ve always been broken. When the controller goes to try to find the user who created the tag, it encounters an error and 404s. I have fixed this but there’s a schema change I wanted to consult David about before changing that should probably be done.
Next week I will be talking to Jeremy about what we need to do in order to get the existing automated testing code working.
Last week I made a minor fix to the spreadsheets and added a button that lets you rotate JPGs and PDFs. The main issue was that it did not rotate the annotations as well so I’ll be investigating that this week. After I’m done that, I’ll either do another one of the PDF issues or change the UI of the grading interface.
Investigated rubocop and its usage/config in Markus project
-Added rubocop-git to project to be used as a tool to check for style conflicts before committing
-Created a ruby script (lib/tools/pre-commit) that uses rubocop and rubocop git to automatically check diffs and rake files to make sure they will not cause an issue with Hound when PRs are created.
– Dependencies are not installed on local machine when using sshfs so if I try to use some of the tools in our project, it failed.
– Add marks for each student in the new seeds for marks spreadsheets. Going to look at how this is done randomly in the assignment seeding.
1) This week I was playing catch up with school, but managed to finish some things I didn’t get done during the code sprint. I completed generating seed data for remark requests, and fixed a 404 error I found when instructors tried to comment on remark requests.
2) No roadblocks this week.
3) Next week I’m going to start working on my project, removing the last traces of Prototype. The first thing I’m doing is converting the last .rjs files in the views folders into .erb files. So far this has been going pretty smoothly.
I was a little busy catching up on school although i have no idea how i got behind in the first place. I started looking at the code to creating repositories.
Here is a list of things we would like to work on.
Group upload and management
There are several problems to address here, and anyone working on this should consult closely with us to make sure they understand the issues thoroughly. Groups and their repos are created either when a student logs in and navigates to an assignment, or when an instructor uploads a group list.
One issue is that the group upload using a csv file ignores the repo name in the csv file and auto-generates the repo name (group_xxxx). This is done to avoid name collisions, but it would be better if we can check to see if the repo name already exists, and if the membership is already the same.
Another issue is performance. We get a 502 proxy error when we run it through Apache for large numbers of groups (>400). The CSV upload deletes existing groups when it does the upload, so we can’t even do it incrementally. Two possible solutions to this problem are to refactor the code so that we can do the upload incrementally, or refactor the code so that the operation is run as a background task, so that the proxy error does not cause the transaction to abort.
We also want a way to create the repos and/or the directory in the repos in an automated way for individual assignments so that instructors can add starter code. Issue #2180 describes this in more detail
Complete work on the Git backend
We are nearly completion on a Git backend to allow student submissions to be stored in a Git repository. The remaining todo list is in #1855.
Remove the last calls to the Prototype library
We switched to jQuery some time ago, but there still remain a few places where Prototype code remains. We would like to finish getting rid of this.
Report on TA activity
It would be nice to see summary data of what TAs have done. Metrics such as ratio of assignments marked, average number of annotations per submission, and a distribution of marks for each TA would help instructors identify differences in how the TAs are grading.
4. UI of student interface
When a student navigates to an assignment, the landing page could use some UI work. The tab is labeled Assignments which isn’t correctly because it is a particular assignment. We also need to look at what information is displayed and whether there is a better way to organize it.
We could also look at issues with the results view of the assignment. Binuri mentioned that the students don’t see the weights in the rubric view.
5. Working on the production setup instructions
We occasionally run into problems that we can’t replicate on our development environment, and we also don’t do a very good job of supporting our system administrators who deploy several instances of MarkUs running under the Apache web server. We would like to put together a set of instructions for both these purposes. It would be great to be able to easily configure a virtual server running a production instance (or multiple instances of MarkUs).
UI of grader interface
Change marking status to a “complete” button. Include more info for TAs (x/y submissions complete)
(Relevant issues: #2118)
Dig into and update existing code. The goal is to reach a proof of concept stage where a single test can be run by clicking a button. There is likely a lot of refactoring to do starting with getting the test-framework branch up to date with master.
The existing design has results being sent back in XML. At least one of the auto-testers we are working with uses JSON, which seems like a more sensible format, so modifying our design to use JSON is the ultimate goal.
There are a few issues that with PDF annotations that would be worth looking into (#2011, #2043, #1936, #1935, #1109, 2042). A user has also reported a wish list of additional features including: switching between portrait and landscape, moving and resizing annotations. We also notice some problems with annotations on Chrome that could be investigated.