This is going to be another short update. Just like reviews and exams in the past, most of the work went into a new feature that isn’t ready to be public yet (but it’s being tested and will probably be announced relatively soon). We’ll wrap this one quick. It’s summer! Stop being in front of your screen and go enjoy the beach or something (sorry, Southern Hemisphere).
Notifications
We made some changes in the way we handle emails and notifications. Most of the changes are subtle or behind the scenes, so you probably didn’t notice.
The first change is in the way we generate all those notifications and emails. Until now, notifications were created all over the place. Someone added a comment? Create a notification. A judge level was updated? Create a notification… If any developer wanted to change anything about a notification, they had to go looking for the place where that notification was created. The new system is template based: choose a notification type, provide the relevant details, and the notification or email’s header and content are created. Want to fix a typo or make a message clearer? Go to the template folder and find the template with the name you’re looking for. Life is good.
Another change was to remove leading and trailing whitespaces from emails and notifications. For those of you who don’t know, “whitespaces” are all the characters in a text that are there, but you can’t see them. These include, but are not limited to, spaces, tabs and new lines. So if you used to get a bunch of unnoticeable extra spaces at the end of an email, they’re now gone. Just so you know.
Lastly, we changed the header of the email you get when there’s a new comment about an application for an event you manage to include the event’s name. Now it’s easier for you to sort out all the comments if you manage several events at the same time.
Event CSVs
CSVs, or Comma Separated Values files, are used to easily transfer information by creating a simple table in which each line in a file is a row, and the columns are values separated by commas. JudgeApps has all kinds of CSV files available, so you can download and use them. If, for example, you want to do some statistics about the Exemplar program, you can download a CSV file and open it in any spreadsheet application to review the data.
This month we improved the CSVs for events. We sped up event application CSVs with pre-fetching: we start getting the data needed for them before you ask for it, so once you do, it’s already there. We also fixed a bug when there are some special characters in an event’s name. These characters are not supported by HTTP (the main internet communication protocol), so asking for a CSV file for an event with a non-English name could create an erroneous link that would make the CSV file unavailable. We now translate those characters to a different standard. People using CSV files for events with Chinese, Japanese, and Hebrew names rejoice!
Reviews
Remember the times when reviews on JudgeApps were new, and each update article was mostly about reviews? Reviews are no longer new and shiny, but we still love them, which is why we added new options for review search. Up until now you could search reviews mostly by the people involved, but we figured out that maybe you’d want to see all the reviews you entered about judges in a specific event or maybe see the improvement in your GP career, so now you can filter the reviews by an event type or even by a specific event. Cool, ah?
Security
In the patched security vulnerabilities corner we fixed an issue with the way we handle exam questions and translations. Text entered in the questions’ fields or translations was marked as safe, even though its safety wasn’t checked, so a user with permissions to edit questions could, in theory, enter code as a question, answer or explanation, and have that code execute unwanted commands. The good news are that people with such permissions are all judges we trust with exam content, so they’re trustworthy, and all the text now goes through some cleanup before it is marked as safe.
That’s if for this installment of the JudgeApps Updates. If you want to share ideas with us (that’s where most new features and bug fixes come from), or if you would like to learn more about the technical mechanisms behind JudgeApps, please let us know!