Meeting notes - PuzzleServer/mainpuzzleserver GitHub Wiki
7/10/2019
Demos
Kenny (PR540)
- Mailing non-solvers!!!
- There's now an option to mail every team who hasn't solved a particular puzzle!
- Super useful for contacting teams that may need help :)
Morgan (PR543)
- Enable Post-game!!!
- Puzzles can now be solved after the event submission ends!
- Puzzles solved after submission end will not count toward a team's rankings and won't show up in fastest solves
- There are lots of warning/error banners to let teams know that submissions won't count for anything
- But you can still check answers now after the event :)
Adam (PR546)
- Encodings page updates!!!
- There's now a table of contents ๐
- There's a lot more useful instruction and many more examples of how do decode things
- There's many more complete decoding lists
- YAY!!!
State of the union
PUZZLEDAY IS SATURDAY!!! ๐ฎ
We're doing well, but there are a few things we'd really like to get done tonight:
- Finish PRs that will be deployed (all demoed)
- Deployment (also required because there's a rule change for Puzzle Safari that needs to get in)
- Perf checks / possibly another deployment
We also have some discussion that occurred:
Team disqualification
There is an open PR for team disqualification (PR541). We decided to hold off on checking this one in given that it's a large change that could be quite risky. The plan is to have it ready to go just in case we need to use it at the end of the event (in which case we'll merge and deploy between event submission end and the start of the closing ceremony). If we don't need it during the event we'll still merge it afterward (likely during the post-mortem meeting) since it's a chance we want to have.
Post-mortem
We're at the end of what we planned for when we started out :) There's definitely still more to do, but it's about time we took a bit of a break. The plan is to meet back again in 2 weeks for a post-mortem where we can discuss how PuzzleDay went, how the tech team process has been as a whole, and what our plan will be going into the offseason.
E-mails
The message limit has already been increased, so we should be good to go :) E-mailing is generally restricted to just admins just in case.
Support links
With the addition of a post-game, it's possible that teams will be solving puzzles / asking for help even after the event finishes. However, authors may not be monitoring the inbox to help. We decided to leave the e-mail in for now and we can remove it if it becomes a problem.
Safari case (no puzzles)
Puzzle Safari asked about the ability to hide the Puzzles navigation since their event has puzzles hosted elsewhere. Since that could require an additional query to get the Event it's a bigger change than we'd ideally like to make before the events, so instead we suggested a workaround that was to add a single puzzle with a PDF that's just instructions on how to get to the site they're using, which doesn't require any tech work or code changes.
Scaling plan
We have one :)
We did a scale test today and based on that and the PuzzleHunt data we think that we want to start the event with 5 frontend instances and 50 DTUs for the database with the option to scale up to 10 frontend instances during the event. We'll set up the scaling on Thursday (tomorrow) during flying t-shirt night by doing the following:
- Scale the DB to 50 DTUs
- Scale up the frontend
- Set up autoscaling for the frontend
- Max of 10 instances
- Timed scale to 5 instances for Saturday morning (day of the event)
Open questions
Puzzle Safari may need a small change to their home page next week when we're not meeting (add a link to their puzzle solving site). We are intending to handle the PR review / deployment over e-mail.
What's happening next
Morgan
- Scale the website
Jenna
- Set up post-mortem meeting
Everyone
- Think about things for post-mortem and enjoy the week off! :D
6/19/2019
Demos
Jenna (PR493)
- Data confirmation icon!
- A data confirmation icon now shows up on the answer submissions page for puzzles that support data confirmation
Morgan (PR354)
- Zip file upload!
- You can now check a box that converts uploaded zip files in to a set of files in the same 'folder' in the storage account so you can refer to them using a local reference!!!
- He demoed a cool page with a picture and some music on it to prove that the files were being loaded by referenece
- Bonus - the list of files is now alphabetized :)
Jessica (PR494)
- Team composition page!!!
- You can see how many team members of each type (full-time employee, intern, external) are on a team as well as the aliases entered for any possible employees (registered with non-microsoft account but entered an alias)
State of the union
BETA IS SATURDAY!!!
Good thing we're super on track :) The main goal for today is to get the beta site up and running by importing the alpha site. Anything else we manage to add is an awesome bonus.
Open questions
Things for next week:
- What is there left to do before the event?
- Ex. Are we aiming for live event support?
- How did the site handle beta?
What's happening next
Morgan
- #65: Unpack zipped content files
Jenna
- #405: DC icon for puzzles on submissions page
Lambert
- #452: Help teams find puzzles they should work on
Kenny
- Get the PuzzleDay beta site up and running! :D
Jessica
6/12/2019
Demos
None live - just lots of work getting done :)
State of the union
We're in a good spot :) Only a few key things left, and we're working on them this week.
We can use Azure credits for hosting!! :D We'll likely move over later when things are more chill.
We also talked about how to address the feedback from PuzzleHunt regarding lockout times for DC puzzles. The decision was to have each partial subtract one from the 'strikes' against that team for that puzzle without letting the count go negative. Basically, within the window considered for lockout, we'll step through submissions in order, adding one for every wrong answer and subtracting one for every partial answer (unless the count is already at 0, in which case that partial is ignored).
Open questions
Things for next week:
- Should we aim for live event integration before PuzzleDay?
What's happening next
Morgan
- #395: Disallow duplicate submissions / clean up database
Jenna
- #405: DC icon for puzzles on submissions page
Lambert
- #452: Help teams find puzzles they should work on
Kenny
Jessica
5/29/2019
Demos
None live - just lots of work getting done :)
State of the union
Last week's site issues (mini post-mortem)
What happened?
- A DB change went in for a nice-to-have feature
- A separate urgent change was needed and went in afterward
- The site was deployed without updating the database to get the urgent change in since that was the change being tracked
- The website broke - 12:30 am :( - we reverted by checking an older commit and re-deploying that
- Phil reverted the DB change and redeployed the site with only the urgent change Thursday morning, getting the urgent change out (thanks Phil!!!)
What should we do differently?
- Update wiki with deployment database steps
- Update wiki with how to 'revert'
- Have more people on the team learn how to do this
- At start of meeting, call out urgent changes
- Start PR changes that have database migrations with "[DB Change]"
Database demo
We reviewed a demo of how to do a database deployment to make sure we have multiple people who can take that action. Instructions are posted here.
Puzzle Day
It's coming up soon! :D We already have 68 teams and 410 players signed up.
Upcoming dates:
- June 22nd - Beta
- July 13th - Event
Remaining work:
- Listed under the PuzzleDay Event (July) milestone
- Really only the P0s need to happen, but we should get other things done too
- P0s:
Open questions
We're going to get confirmation on how the meta tokens will work for this year's PuzzleDay (one-to-one with puzzles or certain tokens go with certain puzzle counts).
What's happening next
Morgan
- [PR478] Perf changes to reduce DB queries for headers
- Maybe duplicate submissions bug
Jenna
- [PR480] DC property for puzzles
Kenny
- [PR470] Swag report
Phil
- Mobile!
Megan
- Build magic
Jessica
- [PR475] Show all puzzles after event completion
- Valid team member checks (intern/non-intern, etc.)
5/15/2019
Demos
Kenny (PR449)
- Swag!!!
- There's now a swag link and an order by date in the nav bar!
- It shows up in yellow to be attention-grabbing!
- There's also a convenient reporting page for admins
Phil (PR460)
- Homepage!!!
- We now have a swanky new homepage for PuzzleDay complete with info and our awesome icon
- We also have custom styles for our PuzzleDay event (including green text because nature)
- We also reviewed the text for the rules and FAQ
Jenna (PR455)
- Food things!
- Food now shows up in radio buttons with descriptions to help people choose food!
Jessica (PR58)
- Filtering!!!
- You can now filter between solved / unsolved puzzles!
- Finding puzzles has never been easier ;)
State of the union
PuzzleDay registration
We didn't quite get this done on Monday as planned, so we're going to go for it tonight!
Key things to finish tonight (before registration):
- Homepage / rules / FAQ polish & review
- Swag sign-up and food orders
- Team name violations
We also have some remaining P0 items for the PuzzleDay event:
- #450: Non-filled swag report page / e-mail
- #395: Duplicate submissions bug
- #382, #379, #375: Performance / downtime investigation (small note - only correct submissions were slow)
- #451: Filter to unsolved puzzles only (play page)
- #452: Help finding puzzles to solve (filter fastest solved pages)
- #453: Lockout adjustments for data confirmation puzzles
- #454: Mobile improvements
Open questions
We'll check on registration next week and keep working toward being ready for the event!
What's happening next
Morgan
- [PR446] Team name checks
Jenna
- [PR455] Friendly food changes
Kenny
- [PR457] Registration rejections
Phil
- [PR460] Homepage / rules / FAQ / styling
Jessica
- [PR458] Filter to unsolved only
Megan
Adam
- #275: Encodings page
5/8/2019
Demos
Kenny (PR407)
- Super-smooth team registration!
- You can now send a link that will auto-register anyone who clicks it! Yay for not having to wait for your teammates to approve you for the team they invited you to!
- You can now set a team bio that will show up on the register page so players know something about the team they're applying to!
Morgan (PR446)
- Team name checks!
- No empty-name teams! Teams have to be non-whitespace
Jenna (PR448)
- Home page links!
- The website homepage now has links for both puzzle hunt and puzzle day!
- Due to the change the links are now actually accessible from mobile!
State of the union
PuzzleHunt
IT WORKED!!! :D
The website worked and we didn't have to do a deployment while the event was running!!! (...we did have to do one right after to fix answer links but it was after so it doesn't count). Overall that is super impressive for our first event to congratulations to everyone for all of the hard work it took to make that happen.
That being said, there was plenty of feedback we discussed at the meeting:
- Slow response times, especially for correct puzzle submissions (also the same issue with duplicate submissions)
- No autoscaling triggering - we had to do 2 manual scaling events instead
- Puzzle list improvements (filter to unsolved, add a 'new' indicator)
- Whistlestops (backstage) had issues with people submitting to the wrong puzzle
- "Go to PH20" button wasn't reachable on mobile
- Request to be able to mark puzzles as printed / mark who's printing them
- DC lock times were problematic
- Parking registration (clean up instructions)
- Add list of past/present/future events
- Archiving / metadata tagging for searching past events / puzzles
These aren't things we'll focus on right away (except for the ones that also affect PuzzleDay) but they're good to have so we can work on them for next year.
PuzzleDay
Registration needs to open ASAP, so that's the next major focus. The goal is to get as much done as we can today and be able to open registration on Monday with some help from the PuzzleDay team. We discussed what we thought needed to happen for registration to be opened and assigned work.
Required - happening tonight
- Team name validations (no empty team names, check for bobby tables)
- [#443] Home page links (link to both PH20 and PD20)
- [#154, #11] Team rooms / lunch / tshirts (already in PR)
- [#444] Team redirects (if they're on a team and they click the e-mail link take them to their team)
- [#367] Team bios (let teams add a short description to help applications know which team to apply for)
Required - happening on Monday with PuzzleDay
- [#11] Finalized t-shirt sizes / food options
- Homepage / rules / FAQ updates
- Scaling for registration
- Create the event (already done)
Not required - should do soon
- [#197] Team auto-registration (send an e-mail link that auto-accepts)
- Application improvements (decline applications, don't allow applications to full teams, auto-decline pending applications when a team is full)
- Auth redirection bugs
- Intern vehicle registration instructions
- Badge printing / guest registration instructions
Not required - not planned
- System support for team merges (we'll do this manually this year)
- Team captains (decided we'll try without it this year and see if there are issues)
- Employee alias checks (we can self-verify & possibly add messages to the registration page) (applies to both min Microsoft intern requirement as well as no FTE requirement)
Open questions
Items for next week:
- Perf / app insights investigation into event
- Hunt survey results
What's happening next
Morgan
- [PR446] Team name checks
- Auth redirection (if time)
Jenna
Kenny
5/1/2019 : PuzzleHunt edition!
Today's meeting was a bit of a special one where everything was focused toward being ready for the PuzzleHunt event this coming weekend. Here's what we discussed and did:
From last week
- Feedback PR already in
- Double submissions fix wasn't ready and will be skipped
PRs: 13 open PRs
Only 2 PRs made it in tonight:
- [PR434] Add a tech contact link to the website footer
- [PR421] Add an errata indication to puzzles on the play page
There was some discussion about a few of them:
- 433 - add raw links to files
- Proposal for alternate (tabs)
- Small risk but no player benefit
- Decided against
- 421 - Errata
- Significant player benefit
- No other auto-update
- Decided for
- 430 / 432 - mail improvements
- Discussed in more detail during mail discussion - decided we don't need them
Mail system
Three approaches for mail have been under discussion:
- 1 big mail
- 25 batch mails in parallel (current)
- 25 batch mails sequentially
We decided to test out the second one as it's the one we currently have. We sent out a bunch of mails to a service, a bunch of mails to one account, and then a full e-mail to the PuzzleHunt participants.
Perf
We're looking good on the perf front
- Load tests came back with a peak much higher than beta
- We think we can solve things with money / infra scaling
- Still some things on admin author pages, specifically hints and queries
Event logistics
Scaling
- Start Friday night to same scale as test (50 DTUs, auto-scale for frontend with min 2 and max 10 and expected 3 <- at least autoscale just for scale up)
Contact
- For site emergencies only
- On the site and not on the site
- Added puzzletech alias to website footer & a slide to the opening so people know who to contact
Backup plans for scale - event caches
- 397, 399
- Only if scaling doesn't work
Last deployments
- Tonight
After
- Scale down (Sunday night / Monday)
- Feedback
Upcoming
We will meet next week since there's still a lot to do for PuzzleDay registration :)
4/24/2019
Demos
Kenny (PR403)
- Time show up in local time!!!
- Times are now human readable :D
- Except for event properties, but there's a warning on those pages for that
State of the union
Puzzlehunt is almost upon us and the good news is that we're in good shape. There are a number of things we're working on during today's meeting to get us the rest of the way:
- [#102] Timezone aware time displays
- [#377] Team list sorting (alphabetical)
- [#169] Errata
- [#409] Simplified answer links
- [#384] Removing sync controller exceptions
- SQL call reductions (role check short circuits and possibly event caching)
- All submissions fix for non-player-unlocked puzzles (pending SQL query evaluation)
- Load testing
There are a few things we'll look at next week listed in "Open questions" below. Almost there everyone! :D
Open questions
Feedback page
Need to determine whether to hide it during the PH20 event
Double-submissions bug
If teams hit 'submit' while a submission is pending, then they can 'solve' the puzzle twice which could unlock bonus hint tokens. To fix this we might just disable the submit button once it's clicked.
Event-day plan
How do we plan to handle issues the day of the event?
What's happening next
Morgan
- [PR400] Perf! (specifically the heap of calls that are made on every page regardless of content)
- Tech for whistlestops
Jenna
Kenny
Jessica
- [PR396] Errata!
- [PR401] Show responses for auto-solved / author-solved puzzles in the 'all responses' page
Jay
Lambert
- Mail if errata is added
Megan
- Load testing
4/17/2019
Demos
Kenny (PR387)
- E-MAILS ARE WORKING!!!
- E-mails are sent for team registration events and when responses are updated
- Yay!!!
State of the union
We have e-mails!!! :D :D :D
Perf got better!!! :D :D :D
Things are looking pretty good, although we'll have a lot left for PuzzleDay especially. Some key ares remaining are in player properties (such as food and vehicle registrations) and team registration (such as having auto-registering sign-up links and team blurbs).
Open questions
None this week :)
What's happening next
Morgan
- Perf! (specifically the heap of calls that are made on every page regardless of content)
- Tech for his module
Jenna
- User properties
Kenny
- Mail hookups
- Perf
Jessica
- Errata!
- Show responses for auto-solved / author-solved puzzles in the 'all responses' page
4/10/2019
Demos
Jenna (PR388)
- Puzzle checklist page!
- Makes it easier for authors / admins to check that everything's good to go before an event
- Shows counts for things like responses, hints, and prerequisites and more!
State of the union
We're still working on some auth / perf things for PuzzleHunt betas but we're doing well on features.
There was a small demo around the Azure side of managing the website and how to restart the app service if needed.
Open questions
We're keeping an eye on progress velocity - next week we can look at if we need to have a bonus work party meeting to get things done.
What's happening next
Morgan
- [383] Perf!
- Tech for his module
Jenna
- [271] Puzzle checklist page
- Routing cleanup
Kenny
- Mail hookups
Lambert
- PuzzleDay registration things :)
3/27/2019
Demos
Lambert (PR346)
- Show feedback submitter e-mail for authors :)
- Now authors / admins can see who submitted feedback so they can reach out for more information
Megan
- Performance!!! Monitoring!!!
- We have lots of cool numbers on how well our site is doing :)
- For people with access to the Azure resources, the information can be found on the Application Insights resource
State of the union
We updated our milestones to reflect the upcoming events we have. The new ones are:
- PuzzleHunt Beta (Now)
- PuzzleHunt Event (May)
- PuzzleDay Registration (May)
- PuzzleDay Event (July)
Everything not tracking toward one of those events is in "Nice to have". We reviewed the PuzzleHunt Beta one during the meeting today and assigned all of the open issues to people to work on (listed below).
Open questions
None today :)
What's happening next
- Auth bugs
Morgan (#340)
- Perf things
Jenna (#298)
- Feedback submission error page
- Routing improvements
Jessica (#272)
- Show list of all puzzle answers
- Show feedback submitter
- Adjust puzzle lockouts
- Import content files
- Team specific page exception
Jay
- Meta things
3/20/2019
Demos
- Team registration improvements
- Added more help text to everything
- Added a property for whether or not teams want to allow anonymous applications
- Only teams that allow anonymous applications show up on the Register page
Jessica (PR316)
- Puzzle errata!
- Now shows up on the puzzle submission page :)
State of the union
Key milestones:
PuzzleHunt website announcement
Sent during the meeting today! :D People can now view the homepage / rules / FAQ. We did a hotfix to update the overall homepage to just link to the PH20 event (since all of the links didn't work for anyone who wasn't a global admin which was basically everyone). We also scaled the website.
PuzzleHunt team registration open
Planned for Monday so PuzzleDay can help test. Key things missing were scaling the website and making team registration easier. Both of those were being worked on during the meeting today and will be re-validated on Monday.
PuzzleHunt beta
No blocking issues (although file improvements like opening in new tabs would be nice). Note: It would be a good idea to send out an e-mail reminding authors of file name requirements (no special characters, must be unique so they should probably pre-pend them with something unique).
Open questions
Puzzle Safari
Representatives from the Puzzle Safari team stopped by. They are hoping to user our website for team registration. It already works for their scenarios so no new requests. Their event would open registration in June so we'll check in with them again in May.
CSRF
Brought up as a possible issue (#315). It turns out there's a lot of protection built-in and the only issues found in a scan would be cheating scenarios and not hack the site scenarios, so we don't expect issues for PuzzleHunt (although we'll continue to investigate).
Meta updates without a deployment
Jay brought a plan to be able to update the meta without requiring a full deployment so that it could be quickly edited if needed during the beta. It involved updates to the Sync system including a table for version tracking. He's going to work on those.
What's happening next
Megan
- Scaling
- Non-manual deployments
Morgan
- File fixes (open in new tab, open instead of download, upload zip file)
Jenna
- Team registration improvements
- Navigation improvements (Routing fixes and link checks)
Kenny
- Whatever needs to happen
Jay
- Meta syncing
Jessica
- Errata
- Possibly a puzzle checklist page
3/6/2019
Demos
Megan (PR251)
- WE HAVE A DEPLOYMENT
- Also it works which is good
Kenny (PR276)
- Easy puzzle creation & editing clean-up!
- Only 4 inputs to create a puzzle, making it super fast and super easy
- The puzzle edit page now has clearer organization with a clearly-separated 'basic' and 'advanced' section
Jenna (PR278)
- Not really a demo, but updated auth and did a full test pass across ~50 pages with multiple user roles
State of the union
We. Have. A. Website. yay :D
We still have a lot of risks with how little testing has been done, but we're going to work hard to support that so that PuzzleHunt authors can get their puzzles out for beta. Kenny will be sending them instructions on how to use the website.
Many Azure adventures were had with the set-up but there are multiple Azure admins with access to all of the resources running the site. We'll work to add redundancy on the deployment side so we have backups for that process as well.
Open questions
None this week :)
What's happening next
Megan
- More deployment and auth things (there's always more)
Morgan
- Whistlestops page for his PuzzleHunt module, including custom puzzle URLs
Jenna
- NOT AUTH BECAUSE IT'S ACTUALLY DONE THIS TIME :D
- Updating meeting notes / tagging issues
- Navigation improvements (Routing fixes and link checks)
Kenny
- Simplified puzzle author experience for creating and editing puzzles (done during the meeting!)
2/27/2019
Demos
Jenna (PR256)
- Combined team details + members page!
- Admins and team members can now view their team details, current members, and member applications all on one page!
- Removed the members page since the functionality was now present in the team details page
Lambert (PR257)
- No duplicate responses! :D
- Added validations to ensure that puzzle authors couldn't have the same response text for the same puzzle
State of the union
We had a deployment at PuzzleDay!!! :D We were able to do some testing and get feedback. You can see all of the suggestions using the "puzzleday ask" tag.
Open questions
None this week :)
What's happening next
Megan
- [#120] Deployment
Morgan
- Whistlestops page for his PuzzleHunt module
Jenna
- [#14] Authorization pass
Jessica
- [#169] Errata
Lambert
- [#255] Duplicate puzzle submissions (done!)
2/20/2019
Demos
Kenny (PR244)
- Cheat code puzzle
- Puzzles now have an IsCheatCode property (solve value optional)
- Usage of cheat codes is reflected in the standings / state map (teams that used cheat codes rank below those who haven't in the standings)
- Whistlestops!
- When one is active, it becomes the only puzzle on the play page
- You can specify how long the lockout will occur (and the puzzles did re-appear on the page after that amount of time!)
Jenna (PR241)
- Demoed the new grid layout for real this week :P
Morgan (PR243)
- Database super-clean! :O
- Added "required" attribute to things that were required, which will cause edit forms to reject non-valid changes
- Changed foreign keys so that things that are required own you (ex. Puzzles own Hints) which fixes cascading deletion
- EXCEPTION: In the case of dual ownership (ex. PuzzleStatePerTeam is owned by both the Team and the Puzzle) a special helper function has to be written. Talk to Morgan if you think you're going to run into that problem
State of the union
We're targeting a full site deployment on the test server for Monday's PuzzleDay meeting.
Helpful hint: If your deployment is slow, use Ctrl+F5 (possibly Ctrl+Fn+F5) to run the code. It skips the performance debugger which makes things ironically move much, much faster.
Due to Morgan's changes, you may need to delete your database. Good thing we have demo event buttons ;)
Open questions
We closed on folders being the way to add pages with event-specific functionality, but we still haven't quite solved how to hide answer-type information given that this is an open-source project. A few ideas were thrown around, including:
- Changing to a private GitHub server (not possible given the number of contributors unfortunately)
- Reading code pages from a storage account (risky, sets off security bad-practice alarm bells)
- Obfuscate things in the plaintext code (still possible to break)
At this point this is still an open question.
What's happening next
Megan
- [#120] Deployment
Morgan
- Whistlestops page for his PuzzleHunt module
Kenny
- [#24] Impersonation
Jay
- Custom tech for his PuzzleHunt module
Jenna
- [#14] Authorization pass
2/13/2019
Demos
Kenny (PR229, PR231, PR232, PR233, PR234, PR235, PR236, PR237)
- ALL THE THINGS
- Demo event update - lone wolf team!
- You can now add yourself to a special lone wolf team during demo event creation so that you don't have to register for a team before you can check on player views :)
- Edit user properties
- Users or global admins can now edit their settings such as t-shirt size!
- Accessible via the names on the team members page or via the names on the users page
- For any properties that teammates should be able to see we'll put them in the team members grid
- Role updates
- Clicking 'remove author' now pops up a confirmation so you don't delete yourself by accident!
- If you aren't an author for the event, you will no longer have the 'Author' option in the role switcher!
- Note: You will always have the 'Play' role in the role switcher if you're an author or admin because you can always register for the event
- Hint updates!
- Hints with a 0 cost are now displayed as FREE
- Hints now show up in the standings page as a sortable column
- Team registration limits!
- Counts for registered teams & limits and registered players & limits are now shown at the top of the teams page!
- There are now checks when adding players to make sure that:
- No more than 12 of them are on a team
- No more than the max non-Microsoft players are on a team (based on how many players used the 'alias' field)
Jenna (via screenshots b/c teams) (PR241)
- New grid layout
- Includes a shortcut menu that collapses all of the links into one place
- Replaces html checkboxes with larger checkmarks for readability
State of the union
We met on Teams because of the snow - stay warm everyone!
Open questions
Fast forwards and whistlestops
- Fast fowards - skips that give you progress but prevent you from winning the event. Discussion revolved around whether or not to have them as a separate object or a boolean on a puzzle. The decision was to have them as a boolean on puzzles because many puzzle-like capabilities were needed, such as the ability to unlock other things and submit responses (to unlock the fast forward). The alternate name 'Cheat codes' was proposed and approved as fast forwards was theme-specific.
- Whistlestops - puzzles that when unlocked prevent any other puzzles from being solved until the whistlestop puzzles are completed or a time limit has elapsed. This will also be implemented as a puzzle boolean. When a whistlestop is active, the play page will convert into a whistlestop specific page (or will redirect to one) and no answer submissions will be accepted. For PuzzleHunt, Morgan may want a fancier page than the default to allow for certain interactions.
- Kenny will work on both of these :)
Deployments
- Megan is working on our deployments and feels that we're getting close. She is planning on setting up a PuzzleTech Azure subscription using her card for the official deployments. Other PuzzleTech admins will be added as owners on the subscription.
- Deployments to staging will happen automatically on checkin. Deployments to production will happen with a manual button click and come from a special prod branch. This will help avoid issues and enable hotfixes.
- We can use the free tier application for staging since it will only be for the PuzzleTech team to verify changes before they hit production.
- Jenna will learn how to deploy the application as well to provide redundancy.
- We're aiming for the 25th to have the deployment ready for PuzzleDay alpha to start using the site.
Next week: How will we do event-specific tech?
- Jay has some requirements for his module
- Morgan possibly has some for the whistlestops
- Are we going to use the separate projects?
What's happening next
Megan
- [#120] Deployment
Morgan
Kenny
- Fast forwards & Whistlestops
Jay
- Custom tech for his PuzzleHunt module
Jenna
- [#14] Authorization pass
1/30/2019
Demos
Kenny (PR223)
- Can now refer to resource files for specific events!
- Event Home / FAQ / Rules all look at a property on the Event to determine which folder to use for the pages per event
- PuzzleHunt 20 already has content :D
- Kenny also showed a picture of what was left of building 24 which was pretty cool
State of the union
Kenny demoed the site to PuzzleDay :)
The old site is dying. RIP :(
Open questions
None today :)
What's happening next
Jenna
Megan
Morgan
Kenny
- [#145] Auth for event imports
- [#128] Hints in scoring
- [#178] Showing current team application to user on registration page
- [#192] Sending signup link to teammates
Jessica
- [#169] Errata
Lambert
- Fixing visuals (get well soon!)
1/23/2019
Demos
Jenna (PR212)
- Add admin / author user view!
- Can now add / remove admins and authors from the event
- Slight problem - database only allows one of each, so it replaces right now (Morgan will help look into that)
Jeremy (PR183)
- Loads previous feedback per user!
- User can update their feedback
- Shows average & individual ratings
- Change to index from 1 because non-developers :) (also matches NPS standards)
- Note that feedback is not anonymous, but only authors and admins can see it
- Discussion - decided not to offer anonymous option since it's used for betas & we might need follow-up (included as possible P2 issue)
Kenny (PR165)
- Non-puzzles don't count in the event! :D (demo showed the score ignoring GetHopping)
- Standings - small fix so that rank matches up with score (update - already fixed PR213)
- From puzzle submissions view, clear puzzle filter to see all submissions for all puzzles!!
- Clicking the puzzle name re-adds the filter!
- Respects puzzle authors! :D (admins can see everything)
- Can sort by submission text, time
- Can also switch to see all submissions by a team!! :D - is team-specific page so that you can see team details
Jessica (PR219)
- Overall menu includes resources for encodings & things!! :D
- Also shows up for players!! :D
Lambert (PR214)
- Can now release teams from e-mail only mode!!!
- Puzzle state map shows an 'E' if a team is in e-mail only mode
- Team status page has a column for e-mail only mode with lock and release actions!
- Also from the puzzle view
- Includes a confirmation dialogue!!
State of the union
Things are going well :) Let's keep doing them :)
Open questions
Deployment
We discussed deployment. We had two main options that each had pros and cons:
- Deploy on a subscription owned by UR
- Advantages: They pay for it & we'd get a Microsoft URL
- Disadvantages: They could delete it without warning & we'll definitely have to worry about GDPR / open endpoints
- Deploy on a subscription owned by us
- Advantages: We control access & it won't get deleted
- Disadvantages: Less official and reimbursement is not guaranteed
The result of the discussion was in favor of having our own subscription due to the agreement that having full control over the subscription and deployment was the most important attribute, with the understanding that PuzzleHunt could potentially cover the costs of the deployment if necessary. It was then decided that the subscription would need to be shared so that multiple people could have access, protecting the site and deployments in case someone is not available to administer the site when needed. We also decided not to user personal Azure credits on MSDN accounts for the same reason. There are still some open questions:
- Will UR agree to reimburse us? (Jenna & Josh working on that request)
- Should we use a personal card or corporate Amex? (might depend on reimbursement)
- Will we still be able to get a Microsoft domain / cert (which might require GDPR & other compliance)? Should we use puzzleday.org (which we might own)?
- Who / what will own the subscription? (we might be able to use our GitHub organization)
The next piece is to see when we can get a test deployment up so we can hopefully try out the site for PuzzleDay alpha. Hopefully we can do that as soon as things work :)
What's happening next
Jenna
- Authorization pass
Lambert
- Ability to unlock teams if they're in e-mail only mode (demoed during meeting!)
- Maybe some CSS magic?
Jessica
- Resources finishing
- Errata
Jeremy
- Timezone conversions
Morgan
- Bug on puzzles you don't have unlocked
- DB issues with deletion / table keys
Megan
- Fixing auth bugs
- Working on deployment
Kenny
- Event specific resources / home page
1/16/2019
Demos
Kenny (PR160)
- Timed unlocks!
- You can set a duration after which a puzzle will automatically solve
- You can use this + pre-requisites to automatically unlock puzzle waves
- Navigation improvements!
- Can now role-switch from any page and it will try to put you on the corresponding page for the target role using ViewData (puzzle index page is a good example - look at the top of the cshtml file)
- General linking clean up - hopefully navigation no longer breaks
- Unregistered users now get a different nav bar with a register button
- Which leads us to...
Morgan (PR158)
- You can now register for teams!!!
- Players not on teams can see teams and request to join them or create a new team
- Players already on teams can accept requests to add players to a team
State of the union
Accessibility: We added a P1 for accessibility :) Thanks to Jeremy for reminding everyone about this! :D
GitHub issues: Issues were cleaned-up & added. The "Recommended" tag now highlights issues that have descriptions, should be easy to pick up with little to no context, and would be good to get done soon. Feel free to pick one that's not already assigned!
PuzzleHunt meeting: It went well! :D Kenny and Morgan did an awesome job demoing the website, and they passed along complements and excitement from the PuzzleHunt team :)
They did of course also had requests :P Small fixes / enhancements:
- [#194] [small] Stronger warning for solve all / unlock all - too powerful
- [#195] [small] Better guidance around team registration
- [#196] [small] Make it easy to mail join link to your team (with instructions)
- [#197] [medium] ^ have the above auto-approve
- [#198] [medium] Show answers for puzzles for players (sometimes answers are used in metas) (maybe also responses)
- [#199] [small] Standings page doesn't filter out puzzles that are not puzzles in the count
Feature requests:
- [#200] Put links in hints
- [#200] Timed delivery of hint tokens (already have the ones off of the puzzle) (can be faked with invisible puzzles)
- [#201] Release hint tokens based on teams completing the events (definitely a request)
- [#202] Notify teams if we modify the text of the hint (same as responses) (also if you add a hint)
- [discussion] Hints have timed unlocks
- [discussion] Unlock a puzzle based on a valid partial
- [#203] Hints become available after partial progress (some become free so you don't waste tokens on things you already know) (puzzle needs to encourage / tell you to do this)
- [#204] Higher value hints can make lower cost hints free (refunds? Reduced costs for higher hints? Hints might overlap)
Open questions
None today :)
What's happening next
Jenna
- Organizing / cleaning up issues
- Editing permissions for event admins and authors
Jeremy
- Feedback improvements
- Timezone things
Kenny
- Additional sort orders for standings
- Author dashboard
Roy
- Sending e-mails
1/10/2019
Demos
- Demo 1 - Puzzle auth filtering (admin / author)
- Demo event now makes the creator author of most but not all puzzles
- Puzzle state map & puzzles list will filter if you're acting as an author! :D
- Prerequisites can show up even for non-authors if they have the IsGloballyVisiblePrerequisite
- As things that you can add as prerequisite
- They won't be available for you to set your puzzle as a prerequisite
- Open question on how it works with waves - P1? They had been on the P0 list (currently no equivalent to timed unlocks)
- Can still set min prerequisites (same functionality as the old system)
- Demo 2 - Bulk response add
- Instead of having to add responses one at a time, you can now add them in bulk!
- Supports copying over from Excel!
- Can include empty lines & they're handled nicely (don't have to finish out each row)
Jenna (PR155)
- Role-aware team pages
- List of all teams for admins / authors, just team details for players
- Clicking on "Team" as a player will take them specifically to their team
- Members + Details + Status options for admins, just Status for authors
Jay
- Demo - custom site for his own module / meta setup for PuzzleHunt
- Ask for integration with full site - unlocking clues (clues + annotations - two tables)
Megan (PR151)
- Page-wide authorization! (not for content on the page - filter that separately)
- [Authorize(Policy = IsRegisteredForEvent")] < added to the class right before the class declaration to enforce a policy (example at the top of the EventSpecificPageModel, which checks that you are registered for the event)
- Info is taken from the route (so make sure to match other routes so we're using the same format)
- Can use "And" by listing multiple (but can't use 'or' - need to use separate policies)
- Can be overridden using 'allow anonymous' for FAQ pages
- List of policies are under Areas/Identity/UserAuthorizationPolicy (Megan can add more if needed)AuthorizationPolicy
- Can also use OnPageHnadlerExecutionAsync example in EventSpecificPageModel to see how to check for something specific within the page
State of the union
Happy New Year!
We have a few key dates coming up:
- Jan. 15th: PuzzleHunt go / no-go call on using the new website
- Mid-feb: PuzzleDay Alpha
- March: PuzzleHunt Beta
We are planning on having a recommendation for PuzzleHunt to help them with their decision. There was a larger discussion of gaps and pros/cons that will be included in that doc. It can be found here.
At a high level, the main missing components and our plans to address them are:
- Deployment - Megan believes we are very close and is going to attempt deployment over the weekend to her own subscription. We'll have the conversations with UR about funding ideally next month to find a more permanent home
- Authorization - A lot of pieces of the site don't include proper auth checks. With Megan's updates to policy we expect these to be quick to add
- Usability - Jenna is already working on this one and we believe that for PuzzleHunt at least players may be willing to put up with a sub-par UI as long as they enjoy the puzzles themselves
- Team registration - Morgan will be working on this next
- Development velocity - We fell off over the holidays, making it questionable that we'll be able to finish in time. To address this, Kenny, Megan, Morgan, and Jenna all re-confirmed their commitment to development with the understanding that we're about to enter a crucial crunch time. We'll also be having weekly meetings much more heavily focused on working and we'll have a hackathon Sunday afternoon.
Open questions
Team registration: We can use invite codes or we can build functionality into the site to make it possible for users to join teams directly. Morgan will be investigating a solution here.
What's happening next
Jenna
- Recommendation doc for PuzzleHunt
- Team navigation + auth
- Unbreak login button? (login / register)
Morgan
- Team registration
Kenny
- Auth cleanup for puzzles
- Event routing by name instead of integer (URL cleanup)
Megan
- Auth policies
- Deployment
12/6/2018
Demos
Morgan (coming soon)
- Hints! With hint costs! And unlocks! And sorting! :D
- Auth things <3
- The app has been deployed!
State of the union
Happy late Thanksgiving! :D
Our go/no-go for PuzzleHunt is going to be in January. We should be ready to make a call once we get back from break. Jenna will send out a poll early January so we can pick a meeting time.
We think we'll be close to finishing our P0 list after we make all pages user and role aware with a few exceptions (team invitations being one). In order to make that work happen, we're going to have a hackathon specifically focused on making all existing pages auth-aware. We'll come with examples so that we can hit the ground running :)
Open questions
We'll need to look into getting a nice URL for the page - worst case we use an aka link for a while. We think we own some of the domain names for puzzles.
What's happening next
Megan
- Deployment stuff (KeyVault & app settings)
- Authorization things (possibly page policies for the hackathon)
Morgan
- Puzzle wave releases (manual at least)
Jeremy
- Finishing things up & splitting the feedback view
Jenna
- Headers & roles & titles (oh my!) (for the hackathon)
- Sending out hackathon poll
- Sending out next meeting poll after holidays
Kenny
- Import / export
- Possibly menu team things
11/7/2018
Demos
Kenny (PR108)
- You can now set up a demo event with the click of a button!
- Demo events can be improved by anyone!
- BUNNIES!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Megan (PR111)
- AUTH IS A THING!
- IsAdmin / IsAuthor methods
State of the union
We estimate that deployment costs will be less than $200 so we're not worrying about securing funding yet
Open questions
Impersonation
- We would like to be able to validate a team view
- We would like to be able to check that things are not viewable by real players
- Hopefully this would also make it easier to do development (nice to have)
Import / Export
- Module based?
- History based?
- Kenny is thinking about a proposal
What's happening next
Jessica
- Submissions - admin aware
Kenny
- Import / export
Lambert
- Other pages - admin aware
Jenna
- Still doing headers
Morgan
- Hints
Megan
- Auth
10/24/2018
Demos
Kenny (PR93)
- Prerequisites! Add / remove!
- Dependencies! Add / remove!
- Can jump between them!
- MinPrerequisiteCount = minimum! You can have 3 prerequisites but if MinPrrequisiteCount is 2 only 2 of the 3 are needed to unlock the puzzle
- Solve all for !!!StartEvent!!! Starts the event!
- You can play the event and things unlock!!! :D :D :D
Jenna (PR98)
- Can now view a list of all users on teams in an event!
- Includes copy-able list of e-mails!
- Team member lists also include copy-able list of e-mails!
Lambert (PR101)
- Defaults for events and puzzles!!! :D :D :D
- Can set lockout policies for events
- Putting explanations in will be a later error
- Shows lockout timeout!
- Locks you out for realsies if you fail too many times!
- Can start an e-mail to 'the admins'
- In future will need to be puzzle specific to account for module authors
- Can't reset timeout yet
- Defaults in master, timeouts still in PR
Jessica (PR105)
- Blocks submissions after the event! :D
- Allows submissions during the event! :D
- Changes link text to say 'view past events' & adds text to the top of the page!
- Even if the page was previously loaded then it will validate and block you!
State of the union
We're getting pretty blocked on users and the current navigation is getting frustrating. We're working on both of those.
Open questions
New issue where deleting submissions or deleting teams with submissions crashes. Investigating.
What's happening next
Jeremy
- Open / close team registration
Kenny
- Test event quick create (so we don't have to keep re-making everything whenever we reset the database)
Lambert
- Ability to undo a team lockout for a puzzle
Jessica
- View all puzzle submissions from all teams for a specific puzzle
Jenna
- Layout things / improved page navigation / improved titles & headings
10/10/2018
Demos
Megan (PR82)
- Login! :D
- Can click login
- Can login via microsoft
- Can go to register page
- Yay!
- User update pages!
- Edit
- Not yet delete
- State map resolves ties! :D
- Standings (team view showing team ranks)
- Fastest! (both solve count and times)
- Discussion - show teams with no solves in standings? Old site doesn't :)
Jessica (PR60)
- Can add responses! :D
- Can submit answer & view previous sumissions
- Locks submissions after corrrect
- Text changes to 'see answers' instead of 'submit answer'
- Shows solve time!
- Shows as solved on author site!
Jenna (PR84)
- Can view team members!
- Can add team members
- Events w/ main page!
- Teams & puzzle links in the top bar work!
State of the union
By the end of the day of the meeting, we had 15 / 36 P0s completed! This is 9 more than we had at the last meeting.
That means we're back on track! :D
There's definitely still more to get done but that is a very good sign :) Let's keep it up!
Open questions
No new open questions :)
What's happening next
Jessica
- Start / stop event
Kenny
- Top level menus
- Edit puzzle dependencies
Lambert
- Lockout notice on puzzles page
Morgan
- Hints / user things
Megan
- Auth
Jenna
- View all users
9/26/2018
Demos
Morgan (PR71)
- Finishing out file upload mechanics (new File Management page)
- Can specify puzzle pdf, answer pdf, materials (things that are available after solving the puzzle, such as music files), and solve token files (things that are available after solving the puzzle)
- Can multi-upload for materials & tokens and can delete
- There's some bonus refreshing - sometimes not all of the files were showing up for multi-files
- Puzzle name now links to the PDF :D (only if you have a puzzle pdf)
- Adding a new puzzle / answer pdf replaces the old one
- Kenny politely requests a tag to separate headers :) (just to keep himself from going crazy)
Jeremy (PR74)
- Feedback button now shows up for each puzzle!
- Shows author view with list of all feedback, including time, text, difficulty, and fun
- Includes page for adding feedback that auto-grabs time (we should check UTC)
- Suggestions:
- Have feedback per user instead of per team (not started, but coming up)
- Have a separate view for author / player
- Note: This got done during the meeting :D
- Join between puzzle & team tables to get the page to show by a default :D
- Still separate when writing to the two tables (check that the record exists before writing)
- Slight bug with single unlock, but he'll fix it :)
- State map!!!
- Also using sparse information
- Includes links to status by team and status by puzzle
- Colors work!!
- Exact match for what we used to have (including style sheet)
- Bit of a ragged border at the top column
Lambert (PR77)
- Set contact e-mail of an event, which is used in the footer link
- Added footers! :D
State of the union
In the last 6 weeks, 6 P0s were completed (2 P0s per 2 weeks).
There are about 10 weeks and 30 P0s left (6 P0s per 2 weeks).
At that rate, we would finish in March 2019.
We are not on track.
:(
What do we need to do?
In order to finish on time, we need everyone to complete about one P0 requirement per person per week. We think we can make that happen.
What's blocking us from doing that and how can we unblock ourselves?
- Authentication - we don't currently have the ability to distinguish between players / admins / authors nor can we determine which player we are
- Workaround - we can work on the different admin / player pages, and as long as they're separate pages we can add the auth pieces in later
- Morgan & Jenna offered to be available to help Megan with any blocking auth things
- Documentation / incomplete knowledge (C#, Razr, etc.)
- Jenna is going to update the getting started documentation to fill out the gaps
- Morgan is going to update the documentation with how to run the storage emulator so files will work
- Hackathon! (time to ask the experts)
- Finding time / setting aside time / busy time of year
- Hackathon! (set time to focus on puzzletech work)
- Things being stuck in review (no reviewers, things being close but not quite done)
- Hackathon! (collaboration time for reviews)
- Tracking the rate of progress to make sure we're motivated to keep moving
The main idea we came away with was to have mini-hackathons on off-weeks. This would be time specifically dedicated to coding and getting things done without any of the usual meeting overhead. Suggestions were made both for usual weekday times and for potentially longer weekend sessions. @Jenna will send out a poll to find a good time and we'll try it out next week.
Open questions
What copyright should we be using for the website?
What's happening next
Morgan
- Puzzle files
- Puzzle waves
Megan
- Auth
- Deployments
Lambert
- Show cookies policy on site
Jessica
- Add puzzles submissions / responses
- Player submitted responses (from 'Play' page)
Kenny
- Team standings
- Most / least solved
Jenna
- Admin player management
Jeremy
- Submit feedback
- View feedback
- Homepage / some link consolidation
Phil / Asia
- Continuing to work on site wireframes (draft can be found here)
9/12/2018
State of the union
Done
Philip
- Said hi!!
Jeremy
- Said hi!!
Megan
- Made it so that objects don't have to worry about referencing other objects
- Ex. if a team references an event, it will just work
- IF the classes are custom they need to be labeled virtual and then it will just work
- Also updated to .NET core 2.1
Kenny
- Fixed database table names (inconsistency with pluralization)
- Blocked out menus
- Including notes on when things should be hidden
- Routing and event awareness cleanup
- Clicking on puzzles actually brings you into an event! :D The menus update to show menus accordingly
- Event id shows up in URL
- "Making a page Event aware" added to Wiki
- Added teams pages
- Is event aware :)
- Can add / edit / delete & view details
- Used pre-generated pages + event aware - only about 10 minutes
In progress
Kenny
- Get puzzle status of teams and team status of puzzles!
- View status of each puzzle for that team
- Can also unlock / lock puzzle for team and solve puzzle for team
- Unlocking shows time in UTC
- Can unlock all puzzles and lock all puzzles
- Puzzle names link to the view of which teams have solved puzzle where you can also lock / unlock Jessica (in PR)
- Answer submissions & responses!
- Can add answers & responses & partials / answers for cake is a lie
- Answer submission shows incorrect / correct
- Still todo:
- Answers are not yet per-team / team aware - that will come later :)
- Right now symbols are removed, which matches previous cases :)
- Responses should not allow empty (discussion around UI - possibly grey out add button until something is entered)
- Responses are missing - currently uses notes
Morgan
- Focused on adding puzzle files - mostly focused on backend instead of UI
- Internally, files are called ContentFiles to avoid naming collision with built-in types
- Currently Puzzles have a collection of contents
- Adding separate columns caused the database to be confused (multiple references out and one reference back was confusing)
- Includes way to map back to specific ContentFiles + code-side safeguard against multiple puzzle / answer files (server-side safeguard wasn't possible)
- Currently Puzzles have a collection of contents
- FileController has placeholders for auth
- Puzzle PDF shows on edit puzzle page (although it can be any file)
- ASP.NET has a built-in upload control
- Throws error if it's the same name (can ensure uniqueness by convention - ex. prefix with author name for module or use puzzle name for puzzleday)
- Could also add in module name, although we can do it by convention so it's ok for now
- Includes a link from puzzle name to PDF!!! (currently uses dev storage emulator)
- Note: edge and IE show entire drive path, but firefox / chrome will just show the file name in the URL
- URL includes storage, event, obfuscation per file, then URL file name
- Is a backing URL - players won't have to use it (actually goes to event/Files/filename)
- Nice URL will be able to check if you have the file
- Will probably need to have a way to view obfuscation just in case things break and we need to manually go through the storage account
- Note that file name isn't required in obfuscated url, but nice if I download things to machine
- Also added FileManager class for interfacing with Azure storage (includes obfuscation)
- Only need to be using Azure Storage Emulator if you're trying this part out
- Also must be a recent version
- Still todo:
- Can have one answer and one puzzle PDF (linked from UI)
- Can have additional files & 'solve tokens' (things that unlock on puzzle solve)
- Obfuscated URL still shows up in link - shouldn't do that
- Zip files / need to reference files outside of the website
- Suggestion: Add puzzle number to nice URL
- Advantage - doesn't require uniqueness
- Disadvantage - makes URLs harder to remember, now need to contact the server to get puzzle id
- Undecided
- Suggestion: Add URL-friendly version of puzzle name to make it easier to find / print
Notes
- We should be validating the model when arriving on a page
- If you go to a puzzle page, you need to know which puzzle you're viewing
- Should formatted submission be in the database only or also on the model?
- If it's something we're going to use every time we look at a submission, then it should be on the model
- We can keep an eye out for similar cases to make sure we're making the right call each time
- If you wrap a property around a backing field and they think it's the name you'll use, they sometimes use one and sometimes use the other :/
- We're going to double check this - to stay safe, add a 'not mapped' attribute on the backing field
- How do we test model methods?
- We can just make another test project
- Puzzle notes?
- Can be used if things changed between betas
- Can explain how to get partials
Non-code
Asia + Phil + Jenna
- Requirements & priorities
- Basic goals
- Basic scenarios
Meetings
We're going to set the meeting for Wednesday every other week instead of sending out a poll each week. Jenna will send out the invite and watch out for any issues.
Priorities and timelines
The scenarios / priorities can be found here.
Discussion points:
- Impersonation was added from the draft as an important scenario, although the mechanism may still be under discussion. Previous impersonation implementations were a bit buggy.
- Deployment is still an important open question and P0.
- Architecting the system such that a user can be forgotten without having to dismantle the database was discussed (register answers by team instead of player, etc.). This is especially important with GDPR concerns.
Timelines were discussed:
- There was agreement to target all P0s by the start of January with a hard cutoff at the end of the month. That should get things ready in time for PuzzleDay Alpha.
- P1s will likely be targeted by March for PuzzleHunt beta, but that call will be made in Jan and the target may be re-evaluated at that time.
What's happening next
- Jessica - will just pick an issue
- Phil / Asia - Site map (for next meeting)
- Jenna - teams w/ players & e-mails, PM things (what's done checklist & velocity)
- Morgan - more file UI, maybe puzzle dependencies
- Jeremy - feedback / puzzle-specific feedback
- Kenny - player puzzle page
8/29/2018
Note: Line numbers in PRs are given for the edited file and not the original file unless otherwise noted
Progress since last week
Kenny set up a linked databases example!
- What changed:
- He added/edited both puzzles and events pages (added links/buttons and removed some columns)
- He added a way to go from a specific event to the puzzles page filtered to only show puzzles in that event
- Dev notes:
- Removing columns for list pages (where you can see a list of things that are in a database) was just a matter of removing some columns from a pre-generated file
- Watch out for duplicate file names - right now some of them share names to keep the URLs clean, so don't forget to check which folder the file is in while working in editor
- When linking to the puzzles page in the code, he had to use /Puzzles/Index to get everything to work (line 44 of file ServerCore/Pages/Events/Index.cshtml in PR 47)
- In ASP.NET, using "@" causes a switch to code execution instead of just html. One major use is to reference variable (ex. @item.ID)
- You can pass values from one page to another via variables like 'asp-route-yournamehere' and having a parameter option in the OnGetAsync function for the target page
- Defining the asp-route variable: PR 47 File ServerCore/Pages/Events/Index.cshtml Line 44
- Defining the function parameter: PR 47 File ServerCore/Pages/Puzzles/Index.cshtml.cs Line 26
- You can also search 'EventId' in the PR to see how it was used on the Puzzles page
- Objects are actually references, which required some workarounds, but during the meeting Megan merged a change to fix this
- If you are making database changes, remember to check the wiki: https://github.com/PuzzleServer/mainpuzzleserver/wiki/Updating-the-DataModel-and-or-Database-Schema
State of the union
- We have independent front end sites for events (puzzle hunt / puzzleday)
- We have data models and associated pages
- We have space for tests (Megan will add an example test)
Overall code notes
Make sure you have the latest 2.1 .Net sdk
- If you set up recently, you should be fine since it was in the instructions To view database changes, right click on the table and select 'view data'
- That view also allows you to edit the database directly Performance shouldn't be an issue if we follow basic best-practices
- Use link queries instead of loops
- Link queries are database queries that join tables and get properties within the query itself instead of getting one set of data and then iterating over that data in the code to get a second set of data
- Just watch out when using loops to get data - generally it's not a good idea. Especially nested loops. Those hurt
- If you just want one property of an object, you can include it as part of a link query instead of getting the entire object
- Trying to be smart about caching caused a number of problems on the previous site - don't try it until we know we need it
- Once we have more Megan will run a profiler so we can check site performance and find out where we actually need to optimize For now, we don't need additional standard libraries
- Our project already has bootstrap, JQuery, JQuery validation, and JQuery validation unobtrusive
- JQuery will ideally address most needs
- If we realize the libraries we have are insufficient (ex. if we need specific hashing to check meta puzzle answers)we'll look at adding more - until then feel free to use anything from the ones already in the project
- Asia is happy to help with JavaScript things - reach out to her if you have questions :D
Puzzle upload
Puzzle upload is currently done via deployments meaning that authors do not have the ability to self-manage puzzle files. This puts a large burden on tech and becomes a problem in decentralized events (like puzzle hunt).
Proposal: Puzzles should be stored separately and not deployed with code
- An example would be using Azure Blob Storage for the files and referencing them via URL
- There are concerns around puzzles being discoverable before intended, either by players directly or by web crawlers
- One proposed solution was to create obfuscated URLs to prevent them from being guess-able
- An issue raised was that associated files (ex. not the puzzle PDF) might need to be referenced by the puzzle PDF, in which case randomly changing URLs would require a lot of manual updating for those files. A counter was that this was mainly an issue for metas, in which case those might be addressable as a special case and could potentially be addressed later
- Another issue was that we wanted to keep URLs clean and random obfuscated gibberish would work against that
- One proposed solution was to create obfuscated URLs to prevent them from being guess-able
- There were additional concerns about the puzzles being accidentally deleted
- It would not be good if someone from the team that owns the subscription was doing clean up the day before an event and deleted the storage account because they didn't recognize it
- Storage accounts can be locked as a safeguard against this
- A note was made that it would be nice to be able to import puzzles / files from the beta to the actual event, but this is not a primary scenario we need to focus on at first
- Morgan is going to continue to investigate and work on this :D
Goals and timelines
Need for direction & timelines
- Right now, issues are the only direction we have and it's difficult to see the overall trajectory of the project
- A decision on whether or not to use the new site should not be made days before an event. Instead, milestones should be set in advance as checkpoints and if the milestone goals are not met then the next event should instead be run using the old site
- Some key dates:
- Puzzleday alpha - January / February
- Puzzle hunt betas - March / April
- Time should be set aside for debugging and testing
- Some key dates:
- Goal and timeline proposal will be brought to the next meeting for group review (Asia, Phil, Jenna)
Suggested changes to existing behavior
- Author powers could be expanded
- Authors should be able to create puzzles, see a state map for their own puzzles, and edit puzzle answers
- Batch upload for puzzles / answers would be super helpful
- Decided there was no need for a 'support author' scenario - they can have full author permissions (note: this does imply that puzzles can have multiple authors)
- Authors can probably see all team states
- Feature requests
- For admins, puzzle answers should be hidden by default to avoid spoilers
- Admins should be able to promote other users to admins
- Teams / modules as a concept so users can become authors of all at once (similar to CPD's ground teams - could be pizza team for puzzle day or module authors for puzzle hunt)
- From CPD - regex validation for puzzles
- From CPD - Hints / errata / clues / answers all editable
- From CPD - puzzle solves in descending order to help teams figure out which ones to try
- Kenny came in with an awesome sample site map that he's planning on working on :D
User groups
- People who run the events (admin, author, logistics)
- Should include larger focus on author productivity than we've had in the past
- Players
- Registering / joining team (landing page, matchmaking)
- Playing in the event
- Beta testers
- Archive
- Users viewing / playing older events
- Not a primary user group - will be targeted later
- Impersonation
- Organizers need to be able to check things from a player's point of view, but there may be other solutions (ex. having separate pages, having admins join test teamsโฆ)
Open questions
- How will we persist event ID?
- The general discussion was that event ID is probably special and can be persisted using a mechanism that isn't used for smaller properties
- Some options were to persist it in a session object or to put it as part of the URL
Next few weeks
Here's what the team is focusing on next :)
- Jessica - Answer submission / responses
- Kenny - Scaffold menus / data (starting with teams and puzzle states per team)
- Morgan - File upload
- Megan - Authentication (live ID + user, user access / denial)
- Scenarios & timeliens & milestone definition
- Phil - Player (registration & team-building)
- Asia - Player (during event)
- Jenna - Admin / author focus
8/15/2018
First meeting!
Next steps for the team
- Set up environment
- Edit the sign-in sheet (found here)
- Select an issue (or create a new one)
- Fix that issue!
- Repeat steps 3 and 4 whenever possible :)
Discussion topics for future meetings
Meetings for those interested in these topics will happen later
- Archive structure for hosting previous events
- Deployment model / database deployment
- (possibly) Sign-in / authentication (maybe only need Microsoft verification for Puzzleday, can send link to employee alias)
Timelines
- Hunt has betas in March / April
- Possilbly could aim for Puzzleday alpha in January / February
Other things to do
- Set up meeting in 2 weeks (check days for availability)
- Map of the system / documentation