-
Notifications
You must be signed in to change notification settings - Fork 32
Meeting notes
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!!
Things are going well :) Let's keep doing them :)
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 :)
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
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
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)
None today :)
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
- 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
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.
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.
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
Morgan (coming soon)
- Hints! With hint costs! And unlocks! And sorting! :D
- Auth things <3
- The app has been deployed!
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 :)
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.
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
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
We estimate that deployment costs will be less than $200 so we're not worrying about securing funding yet
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
Jessica
- Submissions - admin aware
Kenny
- Import / export
Lambert
- Other pages - admin aware
Jenna
- Still doing headers
Morgan
- Hints
Megan
- Auth
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!
We're getting pretty blocked on users and the current navigation is getting frustrating. We're working on both of those.
New issue where deleting submissions or deleting teams with submissions crashes. Investigating.
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
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!
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!
No new open questions :)
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
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
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.
What copyright should we be using for the website?
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)
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
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.
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.
- 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
Note: Line numbers in PRs are given for the edited file and not the original file unless otherwise noted
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
- 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)
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 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
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…)
- 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
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
First meeting!
- 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 :)
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)
- Hunt has betas in March / April
- Possilbly could aim for Puzzleday alpha in January / February
- Set up meeting in 2 weeks (check days for availability)
- Map of the system / documentation
- First-time setup
- Contributing using git
- Local Development Environment Setup
- External Authentication Setup
- Build and run locally
- Best practices
- Common Errors
- Making a page Event aware
- Making your page aware of the current user
- PageFilter and on page authorization check example
- Updating the DataModel and or Database Schema
- Debugging the database locally
- FAQ
- Onboarding
- Puzzle setup
- Puzzle properties defined
- Webification
- Unlock a puzzle for a team
- Setting up hints
- Puzzle lockout
- Annotations