why i will never write javascript ever again*

56
Why I will never write JavaScript again* LA CoffeeScript 10/22/14

Upload: the-wolff

Post on 02-Jul-2015

199 views

Category:

Software


0 download

DESCRIPTION

A talk about the pros of an all CoffeeScript development stack.

TRANSCRIPT

Page 1: Why I will never write JavaScript ever again*

Why I will never write JavaScript again*

LA CoffeeScript 10/22/14

Page 2: Why I will never write JavaScript ever again*

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*

–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*

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*

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*

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*

Wolff Storytelling Break:

Page 8: Why I will never write JavaScript ever again*

–CS Major

“Wait, what exactly are building your website with?”

Page 9: Why I will never write JavaScript ever again*

–Wolff

“Uh… well JavaScript. Of course.”

Page 10: Why I will never write JavaScript ever again*

–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*

–Wolff

😢

Page 12: Why I will never write JavaScript ever again*
Page 13: Why I will never write JavaScript ever again*

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*

Your Grandpa’s JS (93/03)

• “This shit’s f***’d!” -pretty much everyone

Page 15: Why I will never write JavaScript ever again*

Medieval JS (04/08)

• Enter modern web applications:!

• Gmail

• OMFG AJAX!!!!

Page 16: Why I will never write JavaScript ever again*

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*

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*

Modern Day Awesomeness

JavaScript 2014

Knife designed by Nathan Driskell from the Noun Project

Page 19: Why I will never write JavaScript ever again*

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*

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*

JavaScript is

still a pain in the ass

({💩});

Page 22: Why I will never write JavaScript ever again*

Hell is other people’s JavaScript

({This has been all of us, admit it.})

Page 23: Why I will never write JavaScript ever again*

Spaghetti Code

({Be honest. You’ve written some.})

Page 24: Why I will never write JavaScript ever again*

Modern solutions to code organization

• Unit tests

• Modularization

• Project patterns

• etc.

Page 25: Why I will never write JavaScript ever again*

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*

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*

Intro to CoffeeScript

Coffee designed by Jacob Halton from the Noun Project

Page 28: Why I will never write JavaScript ever again*

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*

Write like a sane human

Page 30: Why I will never write JavaScript ever again*

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*

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*

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*

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*

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*

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*

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*

Why I will never write JavaScript ever again*

Page 38: Why I will never write JavaScript ever again*

*I don’t want to hate JavaScript anymore.

Page 39: Why I will never write JavaScript ever again*

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*

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*

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*

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*

Production JavaScript

({Optimized for machine input})

Page 44: Why I will never write JavaScript ever again*

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*

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*

You know you’re a JavaScripter when? …

Page 47: Why I will never write JavaScript ever again*

({We’ve all been there})

Page 48: Why I will never write JavaScript ever again*

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*

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*

Why I will never write JavaScript ever again?

Page 51: Why I will never write JavaScript ever again*

CoffeeScript makes JavaScript more human for

you and your team.

Page 52: Why I will never write JavaScript ever again*

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*

In Summation

• Focus more on what’s important

• organization

• code cleanliness

• efficiency

Page 54: Why I will never write JavaScript ever again*

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*

In Summation

Enjoy the future of JavaScript!

🚀

Page 56: Why I will never write JavaScript ever again*

Thanks!

Questions?Twitter: @seawolff

Noun Project: @thenounproject