(De)bug-off
Yet another never-ending project. Only this one is a game.
A Player can ...
- On their repo:
- Post a new debug challenge
- Assign a challenge to another player(s)
- Accept, reject, or ask for changes to proposed fixes
- On another player's repo:
- Accept a challenge (Fork it)
- Create a bug fix
- Categorize the bug fix
- Submit their solution (Pull Request)
- Be notified if their fix was selected or not
There are no winners or losers in this game because it never ends. You should continue to send each other harder and harder debug challenges as the course goes on. (If the game did end there would be winners and losers.)
Not only is this game fun, but it's educational! By the time you've been playing for a week or two you will have a reference filled with so many useful debugging tips.
Index
Learning Objectives
- De-Bugging
- Categorizing Bugs
- Logic
- Syntax
- And more!
- De-Bugging Tools
- Issues
- Branching
- Pull Requests
- GitHub Projects
- GitHub Notifications
Specifications
Set-Up:
A (De)bug-off repo:
|-- /zzz-challenges
| |-- challenge.js
| * place your challenges here
|
|-- /category-x
| |-- challenge-fix.js
| | * other players send "fix" files in their pull requests
| * other players will either place a "fix" in an existing category
| or propose a new category of bug along with their "fix"
| * you can accept, reject, or ask for changes to pull requests
|
|-- README.md
A (De)bug-off gallery:
* Repo boxes:
* Link to repo code
* Link to repo project
* The user's github image
* Who challenged who (if it's not your repo)
* Link to your Gallery repo's project for keeping score:
* A column per user who challenged you & accepted your fix:
* A note linking to their repo's project
* An issue linking to each merged PR & it's issue
- Create an empty (De)bug-off repo
- Create a new project in that repo
- Create 4 columns in the project
- Challenges
- Submitted Submissions
- Automation: new pulls & issues
- Accepted Submissions
- Automation: merged pull requests
- Rejected Submissions
- Automation: unmerged pull requests
- Create a (De)bug-off Gallery
- Set up your score board
Game Play:
Posting a Challenge:
- Place a new JS file with buggy code in your challenges folder
- Open an issue named after that file
- Link to the file in the description
- Don't give any hints about the bug!
- Challenge other players by assigning the issue to them
- Place the issue in the "challenges" column of your project
Accepting a Challenge:
- Pull the challenger's master branch to avoid conflicts
- Create a new branch named after the challenge
- Write and categorize your fix:
- xyz-fix.js:
- Link to the challenge issue
- Link to pythontutor demo
- Buggy code, commented out
- Your fix
- Test cases you used
- Description of the bug and how you fixed it
- Place the fix in an existing or new category directory
- xyz-fix.js:
- Send a pull request:
- Name it after the challenge you accepted
- Provide a nice helpful comment
- Mention the issue number in your comment (ie. #4)
- Cross your fingers and wait
Selecting a winner(s):
- Check incoming pull requests, move them to the project
- Find all pull requests related to your challenge:
- Either by their title
- Or by opening the challenge issue and selecting them there
- Read through them all and pass judement:
- Merge one if you like the fix & the categorization
- Close one if you don't like it at all
- Leave the author a note if you have a question or want something changed
Updating Your Score:
- You will receive a notification telling you if your fix was merged or not
- If your fix was merged, update your scoreboard (Gallery project):
- Create a new issue in that user's column (or create their column)
- Provide a link to the challenge & your pull request
Resources
(De)bug-off Repo:
GitHub:
- Project Boards
- Branching Workflow
- Pull Requests
- GitHub Issues
- Creating Folders from GitHub
- Rewinding in Git
Debugging:
- What is a Bug?
- MDN Guide
- Debugging for Beginners
- Beginner to Advanced, Video
- Common Bugs - Rollbar
- Common Bugs - Dummies
- Common Bugs - W3Schools
- Pre-Bugging
- Rithmschool Exercises
- DevMountain Exercises
- Searching with Regex:
- Hands-On JS Regex
- Kaki - a Command Line Application for searching directories with regex.
- Regex in VSCode
- Regex in Sublime