Skip to content
Jenna edited this page Apr 25, 2019 · 38 revisions

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

  • [PR411] Simplify answer links
  • [PR414] Hack teams shortcuts for chrome

Kenny

Jessica

  • [PR396] Errata!
  • [PR401] Show responses for auto-solved / author-solved puzzles in the 'all responses' page

Jay

  • [PR377] Team list sort fix
  • [PR412] Remove exceptions from sync controller

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

Megan (#327, #279)

  • Auth bugs

Morgan (#340)

  • Perf things

Jenna (#298)

  • Feedback submission error page
  • Routing improvements

Jessica (#272)

  • Show list of all puzzle answers

Lambert (#300, #300)

  • Show feedback submitter
  • Adjust puzzle lockouts

Kenny (#139, #331)

  • Import content files
  • Team specific page exception

Jay

  • Meta things

3/20/2019

Demos

Jenna (PR317, PR323)

  • 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

Morgan

  • Whistlestops page for his PuzzleHunt module

Jenna

  • [#14] Authorization pass

Jessica

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

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

Morgan

  • [#177, #104, #59] Database things (allowing deletes, allowing multiple admins)

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

  • [#14] Authorization pass
  • [#99] Cleaning up grids & removing ids

Megan

  • [#120] Deployment
  • [#24] Impersonation

Morgan

  • [#177, #104, #59] Database things (allowing deletes, allowing multiple admins)

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

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

Jenna (PR161, PR163)

  • 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

Kenny (PR148, PR150)

  • 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

Megan (PR111, PR118)

  • 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

Kenny (PR76, PR78)

  • 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

Lambert (PR83, PR64)

  • 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

Kenny (PR70, PR76)

  • 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)
  • 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:
  • 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

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
  • 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
  • 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

  1. Set up environment
  2. Edit the sign-in sheet (found here)
  3. Select an issue (or create a new one)
  4. Fix that issue!
  5. 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
Clone this wiki locally