Download - How to Argue about JavaScript
![Page 1: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/1.jpg)
How to argueabout JavaScript
![Page 2: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/2.jpg)
How not to argue about semicolons
![Page 3: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/3.jpg)
Our argumentsshould be purposeful.
![Page 4: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/4.jpg)
ideal: scientific research
![Page 5: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/5.jpg)
reality: political debate
![Page 6: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/6.jpg)
“In science it often happens that scientists say, ‘You know that’s a really good argument; my position is mistaken,’ and then they actually change their minds and you never hear that old view from them again. They really do it. It doesn’t happen as often as it should, because scientists are human and change is sometimes painful. But it happens every day. I cannot recall the last time something like that happened in politics or religion.”
Carl Sagan (1987)
![Page 7: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/7.jpg)
“Who the hell are you?”
![Page 8: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/8.jpg)
No one of consequence.
![Page 9: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/9.jpg)
“Where do you get offcensoring me, you fascist?”
![Page 10: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/10.jpg)
I don’t.
![Page 11: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/11.jpg)
Motives for havinga code argument:
![Page 12: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/12.jpg)
to troll
![Page 13: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/13.jpg)
to feel awesomeabout yourself
![Page 14: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/14.jpg)
to persuade othersto your way of thinking
![Page 15: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/15.jpg)
to understandthe subject better
![Page 16: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/16.jpg)
![Page 17: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/17.jpg)
An argument has three goals.
![Page 18: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/18.jpg)
Goal 1:It should produce
a wise agreement, if possible.
![Page 19: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/19.jpg)
Goal 2:It should be efficient.
![Page 20: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/20.jpg)
Goal 3:It should not damage
the relationship between parties.
![Page 21: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/21.jpg)
Tactics for arguments:
![Page 22: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/22.jpg)
Tactic 1:Separate the people from the problem.
![Page 23: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/23.jpg)
bad:
the objective nature of the problemhow humans feel about the problem
![Page 24: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/24.jpg)
bad:
the objective nature of the problemhow humans feel about the problem
![Page 25: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/25.jpg)
good:
the objective nature of the problemhow humans feel about the problem
![Page 26: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/26.jpg)
the original ticket:
![Page 27: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/27.jpg)
response from Jacob Thornton (@fat):
![Page 28: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/28.jpg)
comments one and two:
![Page 29: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/29.jpg)
comment three:
![Page 30: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/30.jpg)
comment four:
![Page 31: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/31.jpg)
(this is why you should be nice)
![Page 32: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/32.jpg)
Tactic 2:Focus on interests, not positions.
![Page 33: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/33.jpg)
Tactic 3:Invent options for mutual gain.
![Page 34: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/34.jpg)
Tactic 4:Insist on objective criteria.
![Page 35: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/35.jpg)
(standards)
![Page 36: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/36.jpg)
(benchmarks)
![Page 37: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/37.jpg)
THE SELECTOR WARS
![Page 38: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/38.jpg)
![Page 39: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/39.jpg)
![Page 40: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/40.jpg)
![Page 41: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/41.jpg)
![Page 42: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/42.jpg)
“So what should I do?”
![Page 43: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/43.jpg)
How to think:
![Page 44: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/44.jpg)
Retain a willingnessto be convinced
![Page 45: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/45.jpg)
Imagine where othersare coming from
![Page 46: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/46.jpg)
Account for your own taste
![Page 47: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/47.jpg)
Account for your own emotions
![Page 48: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/48.jpg)
John Resig“I learned some things about jQuery today…”
![Page 49: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/49.jpg)
Recognize derails as they happen
![Page 50: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/50.jpg)
Ahead:An inventory of the discussions
taking place in a single closed ticketon Twitter Bootstrap’s GitHub project
![Page 51: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/51.jpg)
Should Bootstrap change asyntactic shortcut that does not
minify properly in JSMin?
main question:
![Page 52: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/52.jpg)
Should library authors careabout interoperability with JSMin?
Or should JSMin accommodate codethat Crockford finds distasteful?
main question (broadened):
![Page 53: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/53.jpg)
meta-discussions perpetuatedby at least two of the 143 ticket participants:
![Page 54: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/54.jpg)
“No, people who are fanatical about
semicolons are just spreading FUD.”
“People who don’t use semicolons are JavaScript hipsters.”
![Page 55: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/55.jpg)
“No, people like you are bitching about a library
they got for free.”
“@fat is being a jackass and a bad project steward.”
![Page 56: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/56.jpg)
“Semicolon or not, that lineshould still be rewritten.”
![Page 57: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/57.jpg)
“JSMin sucks anyway.People should use
some other minifier.”
![Page 58: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/58.jpg)
“Who cares about minification? Everyone’s got a fast connection now.”
![Page 59: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/59.jpg)
“We’ve now spent like a hundred comments arguing about a single semicolonthat @fat is too stubborn to add.”
![Page 60: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/60.jpg)
“We are bikesheddinglike hell up in here.”
![Page 61: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/61.jpg)
“Stop posting on this ticket! GitHub sends me a notification with each new comment.”
![Page 62: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/62.jpg)
also: trolls
![Page 63: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/63.jpg)
also: wisecracks
![Page 64: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/64.jpg)
meanwhile:
![Page 65: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/65.jpg)
Staying on topicrequires moderation.
![Page 66: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/66.jpg)
How to speak:
![Page 67: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/67.jpg)
Be nice.
![Page 68: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/68.jpg)
Speak with surgical precision.
![Page 69: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/69.jpg)
E-Prime
![Page 70: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/70.jpg)
“Any proposition containing the word ‘is’ creates a linguistic structural confusion which will eventually give birth to serious fallacies.”
Alfred Korzybski,Semanticist
![Page 71: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/71.jpg)
“PHP is awful.”
![Page 72: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/72.jpg)
“PHP is awful.”
“Whenever I use PHP, I end up longing for the logical API and unsurprising
behavior of Ruby or JavaScript.”
![Page 73: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/73.jpg)
“jQuery is easier to usethan MooTools.”
![Page 74: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/74.jpg)
“jQuery is easier to usethan MooTools.”
“I find jQuery more intuitiveto use than MooTools.”
![Page 75: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/75.jpg)
Be honest in yourcharacterizations.
![Page 76: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/76.jpg)
“What if the other sidewon’t play along?”
![Page 77: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/77.jpg)
Don’t rise to the bait.
![Page 78: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/78.jpg)
![Page 79: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/79.jpg)
Emphasize the contrast betweenyour tactics and your opponents’.
![Page 80: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/80.jpg)
“Why do I have totake the high road?”
![Page 81: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/81.jpg)
Hellfire and tormentI didn’t have time for:
![Page 82: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/82.jpg)
Ember vs. Backbone
![Page 83: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/83.jpg)
Micro-frameworks
![Page 84: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/84.jpg)
CoffeeScript!
![Page 85: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/85.jpg)
Issue #28: script loading solutionhttps://github.com/h5bp/html5-boilerplate/issues/28
![Page 86: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/86.jpg)
Douglas Crockfordvs.
the world
![Page 87: How to Argue about JavaScript](https://reader034.vdocuments.site/reader034/viewer/2022051110/54b9d8db4a79599f5f8b4589/html5/thumbnails/87.jpg)
(fin)