"A monad is just a monoid in the category of endofunctors".
That fact holds everything you need to know about functional programming (FP), right!? If that sentence is a jumble of confusing words to you, you're not alone.
FP is one of the most powerful programming concepts ever conceived, but it's mired in mountains of terminology and notation and often taught from the top-down. Think about it: it's much easier to think about climbing the mountain once you're already on the top and can see back down. But right now, you're standing at the base of the mountain, ready and eager to climb but all you have is a collection of fancy climbing gear and no clue how to use it to begin the climb.
Day 1 of this workshop is your primer on how to use this climbing gear to get started up the mountain. Most of the core concepts of FP are actually very intuitive and straightforward, when presented from the ground up without confusing terms or symbolic notations. Functional-light is a look at FP that helps you start the climb, not a lecture on why the climb should be easier than you think it is.
We'll look at: function parameters, side effects/purity, composition, immutability, closure, recursion, list operations, and more!
If you're ready to start using FP concepts intuitively and pragmatically to improve your code, and not just hearing confusing terms, this workshop is for you.
On Day 2, we'll move on to async…
As web applications grow in complexity and scope, writing async JS is becoming an ever more important skill to master. Unfortunately, the standard callback is only barely passable as a tool for modeling all the interconnected flows of data and behavior. But the problems of callback hell don't have anything to do with nesting and indentation, like many have claimed!
We need to rethink async from the ground up, starting with understanding what concurrency really is and what that means for how we model our software. We also need to fully understand what the problems with callbacks are, so we can motivate higher-order patterns to improve on them.
The new baseline for async competency in JS is promises+generators (aka async functions), so we'll build our way up to understand how and why to write our code in this synchronous-async pattern. But we can't stop there! Data flows in streams ever more increasingly, and we'll need better patterns for modeling those parts, like observables and CSP channels.
If your current code base is a patchwork of callbacks and promises and events -- it is for most of us! -- you need to rethink your async, day 2 of this workshop is just for you.