why i will never write javascript ever again*
DESCRIPTION
A talk about the pros of an all CoffeeScript development stack.TRANSCRIPT
![Page 1: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/1.jpg)
Why I will never write JavaScript again*
LA CoffeeScript 10/22/14
![Page 2: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/2.jpg)
Why I will never write JavaScript again*
LA CoffeeScript 10/22/14
*the“no really, I don’t hate JavaScript” version
![Page 3: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/3.jpg)
–You
“Wait, Who is this guy and what the hell does he know about JavaScript?”
![Page 4: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/4.jpg)
Hi I’m Wolff!• A little about me:
• Señor Frontend Engineer @ The Noun Project
• Active community of designers
• Nearly 70,000 icons in SVG/PNG
• New API http://api.thenounproject.com
• All around cool person…
• Avid pizza aficionado
• Wanted to be a playwright not a developer
![Page 5: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/5.jpg)
Wolff’s Backstory:• Accepted to school for Playwriting
• Me: “That’s a terrible fucking idea”
• Me: “I’ve made a website before, why not do that?!”
• Made the logical choice to go to art school for programming 😕
• Worked in iOS (hated it)
• 2nd Frontend dev barackobama.com
• Relaunched thenounproject.com on new NP API
![Page 6: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/6.jpg)
What we'll cover
• A brief history of JavaScript!
• Intro to CoffeeScript !
• Why I will never write JavaScript again* (AKA Why CoffeeScript is good for you and your team)
(AKA Why CoffeeScript isn’t just hipster crap)
![Page 7: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/7.jpg)
Wolff Storytelling Break:
![Page 8: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/8.jpg)
–CS Major
“Wait, what exactly are building your website with?”
![Page 9: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/9.jpg)
–Wolff
“Uh… well JavaScript. Of course.”
![Page 10: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/10.jpg)
–CS Major
laughing “JavaScript isn’t a programming language, it's a
half-assed scripting language.”
![Page 11: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/11.jpg)
–Wolff
😢
![Page 12: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/12.jpg)
![Page 13: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/13.jpg)
A brief history of JavaScript
1993/2014
Code Smell designed by Arthur Shlain from the Noun Project
![Page 14: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/14.jpg)
Your Grandpa’s JS (93/03)
• “This shit’s f***’d!” -pretty much everyone
![Page 15: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/15.jpg)
Medieval JS (04/08)
• Enter modern web applications:!
• Gmail
• OMFG AJAX!!!!
![Page 16: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/16.jpg)
GTFO JAVASCRIPTERS!
• JavaScript was considered a novelty
• Unwelcome at the proverbial big kids table.
• Only called upon when our skills were needed to do terrible things to the DOM.
![Page 17: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/17.jpg)
However, we're not
in 2007 anymore 😉
(*…and we all know that CS Major ended up writing Java and hates his life)
![Page 18: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/18.jpg)
Modern Day Awesomeness
JavaScript 2014
Knife designed by Nathan Driskell from the Noun Project
![Page 19: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/19.jpg)
JavaScript is FAST!!!!
High powered JS engines:!!
V8, Nitro (SquirrelFish Extreme), Rhino,
Spidermonkey etc. etc. !!
({Lots of fucking animal names})
Rocket designed by James Fenton from the Noun Project
![Page 20: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/20.jpg)
JavaScript is Glamorous
Writing Server-side JavaScript doesn’t have to
suck anymore:!!
Node, npm, yoman, Grunt, Gulp etc. etc.
!!
({install all the things})
![Page 21: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/21.jpg)
JavaScript is
still a pain in the ass
({💩});
![Page 22: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/22.jpg)
Hell is other people’s JavaScript
({This has been all of us, admit it.})
![Page 23: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/23.jpg)
Spaghetti Code
({Be honest. You’ve written some.})
![Page 24: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/24.jpg)
Modern solutions to code organization
• Unit tests
• Modularization
• Project patterns
• etc.
![Page 25: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/25.jpg)
JavaScript is improving!
• But it will be approximately 8 years before we don’t have to worry about crappy backwards compatibility.
![Page 26: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/26.jpg)
But there has to be more…
• Leaves some still wanting more organization
• What I call the human factor
• JavaScript syntax isn’t for humans
![Page 27: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/27.jpg)
Intro to CoffeeScript
Coffee designed by Jacob Halton from the Noun Project
![Page 28: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/28.jpg)
CofeeScript is Not JavaScript
• No syntactical bloat
• ({ Banish curly braces forever! });
• Write more like a human
![Page 29: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/29.jpg)
Write like a sane human
![Page 30: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/30.jpg)
CoffeeScript is Not JavaScript
• (w)rappers; (w)rappers; (w)rappers
• CoffeeScript:
!
• JavaScript:
!!
for input in form.find(“input")!$input = $(input)
_ref = form.find("input");!for (_i = 0, _len = _ref.length; _i < _len; _i++) {! input = _ref[_i];! $input = $(input);!}
![Page 31: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/31.jpg)
CoffeeScript is Not JavaScript
• Closures (OMFG!)
• handles scoping for us
• no need for var!
• all variables will be correctly scoped and declared efficiently
![Page 32: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/32.jpg)
CoffeeScript is Not JavaScript
• smarter objects (thanks to baked-in patterns)
• JavaScript doesn’t bind functions by default.
• I say: “FUCK THAT SHIT!”
![Page 33: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/33.jpg)
CoffeeScript is Not JavaScript
• Binding functions in CoffeeScript:
class Wolff!!! awesome: false!!! getPizza: =>!!! ! @awesome = true
• Otherwise use -> for private functions
![Page 34: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/34.jpg)
CoffeeScript is Not JavaScript
• Other perks
• Simple prototypal chaining
• class Array extends Array!
• super classing of methods
• Literally just include super
![Page 35: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/35.jpg)
CoffeeScript is Not JavaScript
• Compiles!
• Grunt / Gulp etc.
• ability to do imports and concatenation on multiple JS files
![Page 36: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/36.jpg)
CoffeeScript is Not JavaScript
• CoffeeScript Caveats:
• Bad for shoehorning
• "Let's get coffeescript working for our _______ CMS”
• Legacy JS can be tricky
![Page 37: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/37.jpg)
Why I will never write JavaScript ever again*
![Page 38: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/38.jpg)
*I don’t want to hate JavaScript anymore.
![Page 39: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/39.jpg)
Why I will never write JavaScript ever again*
• Readability #A.K.A. the human factor
• People might look at your code and not want to kill themselves
![Page 40: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/40.jpg)
Why I will never write JavaScript ever again*
• Machines read machine code / humans write human code
• most important thing about CoffeeScript
![Page 41: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/41.jpg)
Why I will never write JavaScript ever again*
• Machines read machine code / humans write human code
• most important thing about CoffeeScript
![Page 42: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/42.jpg)
Why I will never write JavaScript ever again*
• Standards - assets should never, NEVER be committed to version control
• machines read machine code
• code that is read by the browser should be uglified, minified, gzipped (pretty much unreadable by humans)
![Page 43: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/43.jpg)
Production JavaScript
({Optimized for machine input})
![Page 44: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/44.jpg)
Why I will never write JavaScript ever again*
• Don't be the developer that complains about a JS lib being over 10k and then then doesn't uglify/min/AND Gzip
• Much easier to have libraries handled via package management
• npm, bower, etc.
![Page 45: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/45.jpg)
Why I will never write JavaScript ever again*
• Remove the boiler-plating
• less brackets and syntactical bloat
• live ({free})
![Page 46: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/46.jpg)
You know you’re a JavaScripter when? …
![Page 47: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/47.jpg)
({We’ve all been there})
![Page 48: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/48.jpg)
Why I will never write JavaScript ever again*
• Efficiency comes built in
• Programmers can go about their day solving problems
• CoffeeScript handles efficiency under the hood
![Page 49: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/49.jpg)
Why I will never write JavaScript ever again*
• Think more like an engineer, even when you're wearing your developer hat
• JR devs can worry about solving day to day problems
• less hacking / more planning
![Page 50: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/50.jpg)
Why I will never write JavaScript ever again?
![Page 51: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/51.jpg)
CoffeeScript makes JavaScript more human for
you and your team.
![Page 52: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/52.jpg)
In Summation
• Make things simpler on yourself
• We all know you survived JSLint.
• We’ve all been there
![Page 53: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/53.jpg)
In Summation
• Focus more on what’s important
• organization
• code cleanliness
• efficiency
![Page 54: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/54.jpg)
In Summation
• Have more fun:
• The future of JavaScript is exciting!
• Worry less, enjoy more
![Page 55: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/55.jpg)
In Summation
Enjoy the future of JavaScript!
🚀
![Page 56: Why I will never write JavaScript ever again*](https://reader034.vdocuments.site/reader034/viewer/2022052508/559458f31a28ab4c2f8b47a9/html5/thumbnails/56.jpg)
Thanks!
Questions?Twitter: @seawolff
Noun Project: @thenounproject