{"action":"created","comment":{"url":"https://api.github.com/repos/erikrose/presentations/pulls/comments/74084088","id":74084088,"diff_hunk":"@@ -0,0 +1,205 @@\n+- Splash screen\n+    - PR screenshot: “Your code is bad and you are bad. Have a bad day.”\n+- Importance\n+    - Who's done code review before?\n+        - Who's done it sync?\n+            - We don't really do that, aside from maybe some pair\n+              programming.\n+        - Async?\n+    - Pretty much all code at Mozilla gets reviewed before it gets\n+      merged.\n+        - It's a great way to…\n+            - Improve the code\n+                - I like to think I'm good at this, but people still\n+                  find improvements to make in my stuff almost every\n+                  time.\n+            - Learn the codebase and the craft\n+                - It informs other people what's going on in the\n+                  codebase so you're not stuck with the sole\n+                  responsibility of maintaining it.\n+                - It's as much about teaching as fixing. It's a major\n+                  way we bring junior people up the ladder.\n+                - Tests may show the code works, but reviews ensure\n+                  it's easy to understand.\n+    - But open source runs on enthusiasm\n+        - Even when you're getting paid to do it\n+            - There's a lot of intrinsic motivation around here.\n+    - “Crisitunity”\n+        - We can drive the desire to contribute out of people, even\n+          drive out the people themselves.\n+        - Or we can magnify our power through teaching and\n+          encouragement.\n+        - I will show you how now, brown cow.\n+        - For example…\n+              …then continue on to goods/bads.\n+- Good/bads\n+      These will be a series of before/after PR screenshots with\n+      discussion.\n+    - Clarity\n+          “This makes frob() buggy.” vs. “Now if we call frob(), there\n+          will be a mem leak as we allocate the whatzit.”\n+        - Sometimes I say \"Hey, it would be cool if X, but it doesn't\n+          block the merge.\"\n+        - One step more is \"We should X eventually. I think we should\n+          either do it now or else open a bug about it for later.\"\n+        - A big \"That's all I see. With those changes, I think it's\n+          ready to merge.\" lets them (and you!) know you're done and\n+          ends with a note of encouragement.\n+    - Softeners\n+          When you have to point out something bad\n+        - A spoonful of sugar\n+        - The question mark\n+              Dr. Evil pic: \"My father…would make outrageous claims\n+              like he invented the question mark.\"\n+            - Cheap, easy sugar\n+            - Because maybe you missed something, after all (saves\n+              face!)\n+            - “There's no point returning path results when there is\n+              more than one term.” vs. “Can you remind me of some use\n+              cases for returning path results when there is more than\n+              one term?”\n+            - “If I do this, it crashes. Do you get that as well?”\n+            - Activates the Socratic method: great for teaching because\n+              it makes people think along with you, not just get\n+              battered with assertions","path":"Constructive Code Review/outline.txt","position":64,"original_position":64,"commit_id":"a1ea160b51662af3fc89beeab33470de227f6573","original_commit_id":"a1ea160b51662af3fc89beeab33470de227f6573","user":{"login":"erikrose","id":295816,"avatar_url":"https://avatars.githubusercontent.com/u/295816?v=3","gravatar_id":"","url":"https://api.github.com/users/erikrose","html_url":"https://github.com/erikrose","followers_url":"https://api.github.com/users/erikrose/followers","following_url":"https://api.github.com/users/erikrose/following{/other_user}","gists_url":"https://api.github.com/users/erikrose/gists{/gist_id}","starred_url":"https://api.github.com/users/erikrose/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/erikrose/subscriptions","organizations_url":"https://api.github.com/users/erikrose/orgs","repos_url":"https://api.github.com/users/erikrose/repos","events_url":"https://api.github.com/users/erikrose/events{/privacy}","received_events_url":"https://api.github.com/users/erikrose/received_events","type":"User","site_admin":false},"body":"You betcha! I'll talk about that at the \"maybe you missed something\" just above.","created_at":"2016-08-09T15:40:46Z","updated_at":"2016-08-09T15:40:46Z","html_url":"https://github.com/erikrose/presentations/pull/2#discussion_r74084088","pull_request_url":"https://api.github.com/repos/erikrose/presentations/pulls/2","_links":{"self":{"href":"https://api.github.com/repos/erikrose/presentations/pulls/comments/74084088"},"html":{"href":"https://github.com/erikrose/presentations/pull/2#discussion_r74084088"},"pull_request":{"href":"https://api.github.com/repos/erikrose/presentations/pulls/2"}}},"pull_request":{"url":"https://api.github.com/repos/erikrose/presentations/pulls/2","id":80531955,"html_url":"https://github.com/erikrose/presentations/pull/2","diff_url":"https://github.com/erikrose/presentations/pull/2.diff","patch_url":"https://github.com/erikrose/presentations/pull/2.patch","issue_url":"https://api.github.com/repos/erikrose/presentations/issues/2","number":2,"state":"open","locked":false,"title":"Add Constructive Code Review outline.","user":{"login":"erikrose","id":295816,"avatar_url":"https://avatars.githubusercontent.com/u/295816?v=3","gravatar_id":"","url":"https://api.github.com/users/erikrose","html_url":"https://github.com/erikrose","followers_url":"https://api.github.com/users/erikrose/followers","following_url":"https://api.github.com/users/erikrose/following{/other_user}","gists_url":"https://api.github.com/users/erikrose/gists{/gist_id}","starred_url":"https://api.github.com/users/erikrose/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/erikrose/subscriptions","organizations_url":"https://api.github.com/users/erikrose/orgs","repos_url":"https://api.github.com/users/erikrose/repos","events_url":"https://api.github.com/users/erikrose/events{/privacy}","received_events_url":"https://api.github.com/users/erikrose/received_events","type":"User","site_admin":false},"body":"Things will probably get reordered, but I think most of the material is here.\r\n\r\n* Anything offensive?\r\n* Anything that isn't true or that we shouldn't tell new Mozilla employees?\r\n* Anything missing?","created_at":"2016-08-08T22:19:02Z","updated_at":"2016-08-09T15:40:46Z","closed_at":null,"merged_at":null,"merge_commit_sha":"07f8f349ae61a06f9597ee7eb91ea250eb91866c","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/erikrose/presentations/pulls/2/commits","review_comments_url":"https://api.github.com/repos/erikrose/presentations/pulls/2/comments","review_comment_url":"https://api.github.com/repos/erikrose/presentations/pulls/comments{/number}","comments_url":"https://api.github.com/repos/erikrose/presentations/issues/2/comments","statuses_url":"https://api.github.com/repos/erikrose/presentations/statuses/a1ea160b51662af3fc89beeab33470de227f6573","head":{"label":"erikrose:code-review-outline","ref":"code-review-outline","sha":"a1ea160b51662af3fc89beeab33470de227f6573","user":{"login":"erikrose","id":295816,"avatar_url":"https://avatars.githubusercontent.com/u/295816?v=3","gravatar_id":"","url":"https://api.github.com/users/erikrose","html_url":"https://github.com/erikrose","followers_url":"https://api.github.com/users/erikrose/followers","following_url":"https://api.github.com/users/erikrose/following{/other_user}","gists_url":"https://api.github.com/users/erikrose/gists{/gist_id}","starred_url":"https://api.github.com/users/erikrose/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/erikrose/subscriptions","organizations_url":"https://api.github.com/users/erikrose/orgs","repos_url":"https://api.github.com/users/erikrose/repos","events_url":"https://api.github.com/users/erikrose/events{/privacy}","received_events_url":"https://api.github.com/users/erikrose/received_events","type":"User","site_admin":false},"repo":{"id":3675614,"name":"presentations","full_name":"erikrose/presentations","owner":{"login":"erikrose","id":295816,"avatar_url":"https://avatars.githubusercontent.com/u/295816?v=3","gravatar_id":"","url":"https://api.github.com/users/erikrose","html_url":"https://github.com/erikrose","followers_url":"https://api.github.com/users/erikrose/followers","following_url":"https://api.github.com/users/erikrose/following{/other_user}","gists_url":"https://api.github.com/users/erikrose/gists{/gist_id}","starred_url":"https://api.github.com/users/erikrose/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/erikrose/subscriptions","organizations_url":"https://api.github.com/users/erikrose/orgs","repos_url":"https://api.github.com/users/erikrose/repos","events_url":"https://api.github.com/users/erikrose/events{/privacy}","received_events_url":"https://api.github.com/users/erikrose/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/erikrose/presentations","description":"Slides from various presentations I've given","fork":false,"url":"https://api.github.com/repos/erikrose/presentations","forks_url":"https://api.github.com/repos/erikrose/presentations/forks","keys_url":"https://api.github.com/repos/erikrose/presentations/keys{/key_id}","collaborators_url":"https://api.github.com/repos/erikrose/presentations/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/erikrose/presentations/teams","hooks_url":"https://api.github.com/repos/erikrose/presentations/hooks","issue_events_url":"https://api.github.com/repos/erikrose/presentations/issues/events{/number}","events_url":"https://api.github.com/repos/erikrose/presentations/events","assignees_url":"https://api.github.com/repos/erikrose/presentations/assignees{/user}","branches_url":"https://api.github.com/repos/erikrose/presentations/branches{/branch}","tags_url":"https://api.github.com/repos/erikrose/presentations/tags","blobs_url":"https://api.github.com/repos/erikrose/presentations/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/erikrose/presentations/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/erikrose/presentations/git/refs{/sha}","trees_url":"https://api.github.com/repos/erikrose/presentations/git/trees{/sha}","statuses_url":"https://api.github.com/repos/erikrose/presentations/statuses/{sha}","languages_url":"https://api.github.com/repos/erikrose/presentations/languages","stargazers_url":"https://api.github.com/repos/erikrose/presentations/stargazers","contributors_url":"https://api.github.com/repos/erikrose/presentations/contributors","subscribers_url":"https://api.github.com/repos/erikrose/presentations/subscribers","subscription_url":"https://api.github.com/repos/erikrose/presentations/subscription","commits_url":"https://api.github.com/repos/erikrose/presentations/commits{/sha}","git_commits_url":"https://api.github.com/repos/erikrose/presentations/git/commits{/sha}","comments_url":"https://api.github.com/repos/erikrose/presentations/comments{/number}","issue_comment_url":"https://api.github.com/repos/erikrose/presentations/issues/comments{/number}","contents_url":"https://api.github.com/repos/erikrose/presentations/contents/{+path}","compare_url":"https://api.github.com/repos/erikrose/presentations/compare/{base}...{head}","merges_url":"https://api.github.com/repos/erikrose/presentations/merges","archive_url":"https://api.github.com/repos/erikrose/presentations/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/erikrose/presentations/downloads","issues_url":"https://api.github.com/repos/erikrose/presentations/issues{/number}","pulls_url":"https://api.github.com/repos/erikrose/presentations/pulls{/number}","milestones_url":"https://api.github.com/repos/erikrose/presentations/milestones{/number}","notifications_url":"https://api.github.com/repos/erikrose/presentations/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/erikrose/presentations/labels{/name}","releases_url":"https://api.github.com/repos/erikrose/presentations/releases{/id}","deployments_url":"https://api.github.com/repos/erikrose/presentations/deployments","created_at":"2012-03-09T22:46:11Z","updated_at":"2015-03-15T06:42:01Z","pushed_at":"2016-08-08T22:19:02Z","git_url":"git://github.com/erikrose/presentations.git","ssh_url":"git@github.com:erikrose/presentations.git","clone_url":"https://github.com/erikrose/presentations.git","svn_url":"https://github.com/erikrose/presentations","homepage":"","size":93980,"stargazers_count":2,"watchers_count":2,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":2,"mirror_url":null,"open_issues_count":1,"forks":2,"open_issues":1,"watchers":2,"default_branch":"master"}},"base":{"label":"erikrose:master","ref":"master","sha":"67ec980059ef2fffa6a41dde7ed1cf044ad88d7e","user":{"login":"erikrose","id":295816,"avatar_url":"https://avatars.githubusercontent.com/u/295816?v=3","gravatar_id":"","url":"https://api.github.com/users/erikrose","html_url":"https://github.com/erikrose","followers_url":"https://api.github.com/users/erikrose/followers","following_url":"https://api.github.com/users/erikrose/following{/other_user}","gists_url":"https://api.github.com/users/erikrose/gists{/gist_id}","starred_url":"https://api.github.com/users/erikrose/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/erikrose/subscriptions","organizations_url":"https://api.github.com/users/erikrose/orgs","repos_url":"https://api.github.com/users/erikrose/repos","events_url":"https://api.github.com/users/erikrose/events{/privacy}","received_events_url":"https://api.github.com/users/erikrose/received_events","type":"User","site_admin":false},"repo":{"id":3675614,"name":"presentations","full_name":"erikrose/presentations","owner":{"login":"erikrose","id":295816,"avatar_url":"https://avatars.githubusercontent.com/u/295816?v=3","gravatar_id":"","url":"https://api.github.com/users/erikrose","html_url":"https://github.com/erikrose","followers_url":"https://api.github.com/users/erikrose/followers","following_url":"https://api.github.com/users/erikrose/following{/other_user}","gists_url":"https://api.github.com/users/erikrose/gists{/gist_id}","starred_url":"https://api.github.com/users/erikrose/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/erikrose/subscriptions","organizations_url":"https://api.github.com/users/erikrose/orgs","repos_url":"https://api.github.com/users/erikrose/repos","events_url":"https://api.github.com/users/erikrose/events{/privacy}","received_events_url":"https://api.github.com/users/erikrose/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/erikrose/presentations","description":"Slides from various presentations I've given","fork":false,"url":"https://api.github.com/repos/erikrose/presentations","forks_url":"https://api.github.com/repos/erikrose/presentations/forks","keys_url":"https://api.github.com/repos/erikrose/presentations/keys{/key_id}","collaborators_url":"https://api.github.com/repos/erikrose/presentations/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/erikrose/presentations/teams","hooks_url":"https://api.github.com/repos/erikrose/presentations/hooks","issue_events_url":"https://api.github.com/repos/erikrose/presentations/issues/events{/number}","events_url":"https://api.github.com/repos/erikrose/presentations/events","assignees_url":"https://api.github.com/repos/erikrose/presentations/assignees{/user}","branches_url":"https://api.github.com/repos/erikrose/presentations/branches{/branch}","tags_url":"https://api.github.com/repos/erikrose/presentations/tags","blobs_url":"https://api.github.com/repos/erikrose/presentations/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/erikrose/presentations/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/erikrose/presentations/git/refs{/sha}","trees_url":"https://api.github.com/repos/erikrose/presentations/git/trees{/sha}","statuses_url":"https://api.github.com/repos/erikrose/presentations/statuses/{sha}","languages_url":"https://api.github.com/repos/erikrose/presentations/languages","stargazers_url":"https://api.github.com/repos/erikrose/presentations/stargazers","contributors_url":"https://api.github.com/repos/erikrose/presentations/contributors","subscribers_url":"https://api.github.com/repos/erikrose/presentations/subscribers","subscription_url":"https://api.github.com/repos/erikrose/presentations/subscription","commits_url":"https://api.github.com/repos/erikrose/presentations/commits{/sha}","git_commits_url":"https://api.github.com/repos/erikrose/presentations/git/commits{/sha}","comments_url":"https://api.github.com/repos/erikrose/presentations/comments{/number}","issue_comment_url":"https://api.github.com/repos/erikrose/presentations/issues/comments{/number}","contents_url":"https://api.github.com/repos/erikrose/presentations/contents/{+path}","compare_url":"https://api.github.com/repos/erikrose/presentations/compare/{base}...{head}","merges_url":"https://api.github.com/repos/erikrose/presentations/merges","archive_url":"https://api.github.com/repos/erikrose/presentations/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/erikrose/presentations/downloads","issues_url":"https://api.github.com/repos/erikrose/presentations/issues{/number}","pulls_url":"https://api.github.com/repos/erikrose/presentations/pulls{/number}","milestones_url":"https://api.github.com/repos/erikrose/presentations/milestones{/number}","notifications_url":"https://api.github.com/repos/erikrose/presentations/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/erikrose/presentations/labels{/name}","releases_url":"https://api.github.com/repos/erikrose/presentations/releases{/id}","deployments_url":"https://api.github.com/repos/erikrose/presentations/deployments","created_at":"2012-03-09T22:46:11Z","updated_at":"2015-03-15T06:42:01Z","pushed_at":"2016-08-08T22:19:02Z","git_url":"git://github.com/erikrose/presentations.git","ssh_url":"git@github.com:erikrose/presentations.git","clone_url":"https://github.com/erikrose/presentations.git","svn_url":"https://github.com/erikrose/presentations","homepage":"","size":93980,"stargazers_count":2,"watchers_count":2,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":2,"mirror_url":null,"open_issues_count":1,"forks":2,"open_issues":1,"watchers":2,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/erikrose/presentations/pulls/2"},"html":{"href":"https://github.com/erikrose/presentations/pull/2"},"issue":{"href":"https://api.github.com/repos/erikrose/presentations/issues/2"},"comments":{"href":"https://api.github.com/repos/erikrose/presentations/issues/2/comments"},"review_comments":{"href":"https://api.github.com/repos/erikrose/presentations/pulls/2/comments"},"review_comment":{"href":"https://api.github.com/repos/erikrose/presentations/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/erikrose/presentations/pulls/2/commits"},"statuses":{"href":"https://api.github.com/repos/erikrose/presentations/statuses/a1ea160b51662af3fc89beeab33470de227f6573"}}}}
{"actor":{"display_login":"erikrose"}}