Various Artists
JavaScript Rap
Give me the Mic
Crockford and Eich
From Netscape to Node
It’s been quite a hike

JS in the front, REST in the back
Ain’t it time you changed your stack?
Server-side rendering? That’s just whack
Once you go Backbone, you never go back

Unobtrusive set us free
It all blew up with jQuery
Now it’s MVC with TDD
Ain’t got time for PHP

Onclick to Require was such a ride
With GitHub code ain't got no where to hide
My lack of globals is a point of pride
I’m hitting my stride on the client-side

Stop testing IE 6, it’s a trap!
Been crap since way back, everybody knows that
Standards make dev such a snap
And don’t get me started on space vs. tab. [mic drop]

Use Grunt, watch it automate on a dime
Don’t waste no coding time
AMD will make you feel cool
Loose Coupling so you won’t look like a fool

Just sit right back hear the tale
Brendan’s gonna make, we cannot fail
We ain’t got three hours, it’ll take ten days
Born from scheme and self in a lispy haze

And amp, semicolon, the rhymes, I got plenty
I got the space encoded, fool it’s percent twenty
My var’s locked in closure, that’s dope
Ain’t no bleedin or leakin’ since I’m in the right scope

Yo, JS is /the/ form
Where I code like a storm
Free from spaghetti!
Fierce like the Serengeti
If that bug’s hard to track
Console’s got your back

Code it DRY, code it right
Browser, server, world; its all in sight
Use the remote debugger
Like there ain't no other

You code in JS, but you mixing the types
And always forget the syntax for “splice”
To type “double equal” is like rolling the dice
And you scared to death … of prototypes

It’s time to stand up and get some respect
Just go to ECMA and read the fucking spec
Unpuzzle, unlock it, uncode and decrypt
And gain yourself power of true JavaScript

You add number to string and string to array
Divide it by object (you know it’s ok)
The prototype chain you can see through the code…
It was a great journey from Netscape to Node

`eval` is evil and `with` is whack
F*ck classes — you can have ’em back
This is the generation of floating math
No tail calls in this giant stack

Var i, math dot pie in the sky
Fly tries to catch zero size
Arrays with new prototypes are lies
Disguised as wise overrides
Prefix with java, ecma, mocha, and live
Script all day and all night
Microsize your JS lines
But don’t self minify
Above all else, yo, f*ck static types

Go async and then you’ll never look
(this line will run before the last’s call)
Back. Stop waiting for some slow IO
And start using four cores in your MacBook Pro
Fat arrow lambda, func’d the funky
Close over this, ya JavaScript junkie
Comma abuse, ASI hack
Truth-y compare, you'll wanna redact
Bask in the glow, open/close brace
Of any indent, Insignificant whitespace
`arguments` array? It isn’t that hard
You ain’t gotta call Captain Picard

My macros are sweet, my models aren’t fat
My build script’s complete, unit test — all that
Controllers are trim, view models fine
E.C.M.A. - TC-39b

Functional code, is what I’m rockin’
Dot foreach and map, reduce ain’t lockin’
Those mutable props, makin’ me sneeze
I think I’m allergic, object dot freeze

While cache clonin’, weakMap for me
Gimme some has-Own-Prop-er-ty
Awaiting for no one, renaming a file
Async is alright, actor callback style

Google Go code-gen, in fat reams
Don’t need no types, or agile teams
Slingin’ that node, gimme pipes, gimme streams
Gimme that Harmony, of our dreams

My code is lean, it ain’t all swollen
I love my braces and my semicolons
It’s ok now, don’t you be tight-lipped
It’s ok to say you hate CoffeeScript!

It was all a dream
I used to code vanilla JS on the scene
Now I got Backbone and Zepto all up in the IDE
JS is blowin’ up like I thought it would
New frameworks, but same language in the hood
And it’s all good
So if you don’t know, now you know, coders. Uh

Hey yo server siders clogging up the rear
Stop making it complex, I’m starting to tear
Try the frontend, that’s where it’s at
Power to the coders, got nothin’ to catch