Good Afternoon!

Sharpening Your JS Claws

@mafinar

Alternate Title(s)

  • JavaScript: The Meta Parts
  • Understanding a misunderstood ecosystem
  • Why I hate JavaScript?
  • Not...
  • Beyond $jQuery, beyond copy-paste, beyond fatigue

... and many more

But let's not give you JS fatigue already...

How many JavaScript programmers does it take to change a light-bulb?

Counter: How many light-bulbs do you want to end up with?

In all seriousness...

  • One of the most popular programming languages in the world
  • Huge ecosystem, thousands of libraries
  • Used by all websites and apps that matters
  • Owns a non-replaceable position in a niche
  • Got some really cool ideas worth familiarizing with

Stuff I'd discuss

  • The Language
  • The Flavors
  • The Libraries & Frameworks
  • The Tools
  • The Nutshell(?)

Above all...

The attitude to start groking the culture and road towards using it...

and NO CODES :D

JavaScript As A Language

  • Family: C
  • Object Oriented: Prototypal
  • Typing: Dynamic and Weak
  • Functional: Scheme Influenced
  • Sugary Sweet (ES6)

Make sure you know the damn language!!!

and reason about its usage(s)...

Sharpen your claw...

  • Asynchronous v Synchronouse flow
  • Type Coercion
  • Prototype Inheritance
  • Functional Programming
  • Closures, Callbacks and Promises
  • Design Patterns
  • Question Everything
    • Reason the Answers

Flavors of JavaScript

On the Browser

  • Glue
  • Mediumish
  • OMG Full SPA

The Server

  • "The" Library
  • Some Libraries
  • Frameworks

Mobile

  • Hybrid Framework
  • Go Native

Everything Else...

  • There is a library for almost everything...

Languages...

  • JavaScript
  • ES{x: 1 > x > 6 || 2015 < x < 2017}
  • CoffeeScript
  • TypeScript
  • ClojureScript
  • Elm
  • ...
  • ...
  • FatigueScript

Libraries and Frameworks

But let's think for a second...

Think about flavors...

  • What are you building?
  • Why are you building what you're building?
  • Who are you building it for/with?
  • When are you shipping it?

Going meta...

  • What type of personality defines you?
  • What school of thought are you in?
  • What company do you keep (or work at?)
  • What's your aim in life?

My Personal Favorite...

  • Re-Frame/Reagent
  • React[Native]
  • MobX
  • Inferno
  • OnsenUI
  • NuclearJS

Languagewise...

  • ClojureScript
  • TypeScript
  • ES2016

Sharpen your Claw...

  • Explore frameworks within your domain
  • Once selected, stick with it
  • Know it, live it, inside out
  • Make great projects with it
  • Be loud about it
  • Know the community
  • Go to step 1

The Tools

Focus on the work at hand...

Introducing...

  • Build Tools and Task Runners
  • Boilerplates and Generators
  • Debuggers
  • Module Bundlers
  • Transpilers
  • Fatigue Relievers(?)

They exist for a reason...

Make sure you  know what you need

and ensure you do...

You don't need everything...

Stuff I use...

  • Gulp
  • Webpack
  • Brunch

Sharpen your Pencil

  • Don't Repeat Yourself, use Tasks
  • Let the tools compile it for you, or run, or test, or pretty much any non-business logic stuff
  • I think boilerplates are cool for a language like JavaScript, use them, or give us one...
  • If you're happy with your tool, use it well.

Le Nutshell...

  • JavaScript is inevitable at times, learn it well.
  • Learn it rights
  • The language is often misunderstood, understand it well
  • Embrace best practices, test, benchmark, debug and document
  • The ecosystem is overwhelming for a reason, don't let that get to you
  • Start with your use case, pick a set and go to town with it!
  • Make "reasoning about" your mantra and the path will walk itself for you

Sharpen you JavaScript Claws

By Mafinar Khan

Sharpen you JavaScript Claws

Beyond jQuery, beyond copying and pasting, there's a language... and tools, and frameworks, and libraries... and often, fatigue

  • 1,673