JudgeApps Updates – September 2018

This month saw a lot of bug fixes and user experience improvements. We see people starting to use the Discourse discussion forum, and we encourage you to give it a try.

IMPORTANT: If you find any security bugs, DO NOT post them to the Discourse forum!


During September we dedicated efforts into making JudgeApps email services better. The main change was to change our email services to Amazon’s Simple Email Service (SES). After receiving several assistance requests from users who didn’t get their account verification emails, we realized that iCloud (Apple’s cloud and email service) was blocking emails sent by JudgeApps, because their source (JudgeApps using an email service controlled by us) was classified as untrusted. Once we identified the issue and started using SES, our emails (now using a well-known service) were blocked no more.

One of the unintended side effect of this change was that for a few days emails were not sent immediately. We fixed that as well, and now email should be going out as expected. We’re sorry for any inconvenience this might have caused.

We also fixed two small bugs that affected email notifications for new event applications. The first bug caused emails for event applications to be sent with a broken link to the event page. The link was missing the domain part (links were missing this part: apps.magicjudges.org), so it couldn’t be clicked. The second bug was caused by a wrong variable assignment that set the judge name to be the same as the event name, so the message would claim that the event applied to itself whenever a new application notification was sent (Thanks Nate Hurley, for letting us know). Both were fixed. Event admins rejoice!

Translated Exam Questions

Two issues affecting translated content for exams were taken care of, one affecting users and the other affected the people translating questions.

First, we improved the user experience by changing the way questions are loaded. Whenever a question is loaded, all its translations are loaded as well, but only the ones using the user’s default language are shown (or English, if the question hasn’t been translated to that language yet). Up until recently, all the content was loaded and shown on screen, and once the page was fully loaded, all the irrelevant translations were hidden. This caused two possible unexpected behaviors:

  1. If it wasn’t quick enough, users would see all the text before it disappeared, and it was confusing
  2. If one of the content maintainers started editing a question and then clicked the browser’s ‘back’ button, all the text of all the languages would appear (and wouldn’t disappear)

To prevent this awkward behavior, all text not in the user’s default language (or English fallback) is now set to be hidden as soon as it’s added to the page (think of it like a replacement effect that reads “this translation enters the page hidden”).

The other issue was a bag on the tests’ admin pages. Each test admin page has a table with all the questions, and for each of those questions, the translation status for each language. Clicking the link for the status should take you to the question translation page, but that link was missing the question ID, thus sending translators to a nonexistent page. Thanks Christian Genz for noticing the behavior, identifying the problem and telling us about it!

Minor Bug Fixes

The following bugs were found and squashed:

  • To calculate how many questions are required to pass (or fail) an exam, the passing score (percentage) was multiplied by the number of questions and rounded. Unfortunately, it was sometimes rounded in the wrong direction, which gave wrong counts – now it works properly
  • When applications using the OIDC tried to get a user’s photo from JudgeApps, it would return a broken link (similar to the one with the application notifications) – the link is whole again!
  • The percentage symbol (%) has a special meaning in internet addresses (URL), so whenever a user would upload a file with the percentage symbol in its name, the resulting link to the file was illegal – we now tell the link to treat the name as is, instead of trying to understand what’s the deeper meaning of the percentage symbol
  • After the downtime in August, the forum content search index wasn’t rebuilt properly, so searches returned incomplete results – Isaac King noticed and notified us, so we manually ran the indexing process on older content, which is now fully searchable again

Feedback and Support

As you may have heard, there’s a new Discourse discussion forum for JudgeApps. This forum replaces some of the feedback form functionality. People have already started using it, and many of the bug fixes in this monthly update came from there. If you find any non-security bug, or have any questions, suggestions or feedback, please let us know over there. The forum is public and we encourage your participation in discussions. The feedback form has been modified to reflect this change.

Remember, though, that these discussions are public. Please do not post any confidential content such as exam content, personal details, reviews, etc…

IMPORTANT: If you find any security bugs, DO NOT post them to the Discourse forum!

Security bug details should never be posted publicly. Please use the JudgeApps feedback form for those. Exposing such details publicly increases the risk of them reaching the wrong people and being exploited. Please help us keep you and your data safe.