This course has been updated! We now recommend you take the Functional-Light JavaScript, v3 course.

Check out a free preview of the full Functional-Lite JavaScript course:
The "Course Introduction" Lesson is part of the full, Functional-Lite JavaScript course featured in this preview video. Here's what you'd learn in this lesson:

Kyle Simpson (@getify) begins his course on Functional Lite Programming with a brief introduction of himself. He also shares a few of his more popular open source projects like LabJS, Grips, and Asynquence.

Get Unlimited Access Now

Transcript from the "Course Introduction" Lesson

>> [MUSIC]

>> Kyle Simpson: Super huge honor to be here. For those of you that haven't heard of me before, my name's Kyle Simpson, known as @getify online and all the places that matter, you can find me at @getify, so Twitter, GitHub, Gmail, everywhere that you want. So I make all that stuff available so that I can encourage feedback.

[00:00:56] I might say something today that's particularly confusing, or I might say something that you just totally disagree with, and that's entirely great if you want to provide that sort of feedback. So in addition to, if your watching the slide, in addition to the chat room, feel free afterwards, or if you're watching these videos later, feel free to reach out with any sort of feedback about that.

[00:01:17] Actually I think I want to self correct myself so if I'm doing my counting or I, just so make sure for posterity sake I think this actually might be workshop number seven and then the next one we do is number eight. So I think I've had web performance, I've had advanced JavaScript, I've had Node, I've had JavaScript basics, I've had coercion, I've had organizing JavaScript functionality.

[00:01:41] So today makes number seven, so that's pretty awesome. It's a huge honor. I mention that not just to point out what is available, but also I wanna always give credit where it's due. That very first workshop, the web performance optimization, is the very first workshop I did as a teacher.

[00:02:00] Mark reached out to me sight unseen. He'd seen a few of my conference talks. And he said, hey, have you ever thought about doing some teaching? And he coerced me, [LAUGH] convinced me to do some teaching. I'd thought about that before but never done this long-form software development teaching.

[00:02:14] So he gave me my shot, and I am now a full-time teacher as a result of that. So it's kinda like coming home, to come back to Frontend Masters to be part of this. It's a fantastic platform and I'm thankful for it, and you all are incredibly lucky to have access to it.

[00:02:32] All right, so let's jump in. I'm gonna try to keep my intro about myself a bit brief cuz they're on all the videos. But just for those of you that haven't heard of me before or seen some of the stuff that I've done before. Just real quickly, in addition to doing this teaching thing about JavaScript, traveling all over and teaching and things like that, I also do a lot of Open Source development and I've got several dozen, a couple dozen repos out there.

[00:02:55] But just to point out a couple of ones that are representative of the things I've done, so LABjs probably the one most well known for, it's a dynamic script loader. It's been around now for six and a half years. It's been very stable. It hasn't even changed in almost five years because nothing has changed in the script loading world for five years, but that is changing.

[00:03:13] HTTP version 2 coming along, we're gonna see, I think, a renaissance or a rebirth of interest in intelligent script loading because with version 2, you're gonna want to serve everything as small and as many files as possible. So if you're looking for a performance-optimized script loader, you might check out LABjs.

[00:03:30] Grips is a templating engine. Basically I've observed that there's a bunch of problems that happen regardless of how we present our views. I think we've been fundamentally asking the wrong questions. And even the complete rethinking that has happened recently with virtual DOMS, React and Ember and all those, even those are starting to make some of the same mistakes that templating approaches made, in terms of not asking the tough questions about where where the lines really should be drawn.

[00:03:57] They've sort of played a switcheroo on us and redefined some terms, like what the notion of concern actually is, compared to what we used to say 15 years ago. And I was in the trenches when we originally did those things, but basically there's a lot of problems that occur, and I don't think that we've really asked the right fundamental questions.

[00:04:17] So grips is an attempt, an experiment, an ongoing research experiment, into asking maybe better questions about where those lines should be drawn and what we should be able to do and what we shouldn't be able to do with our views, what should be kept separate and what shouldn't be kept separate.

[00:04:32] So if you've had any pain points around those or if you feel like even with the amazingness of something like React, if you feel like you're still running into those questions about how do I know where something should be or shouldn't be, you might check out grips. I also have a CSS templating engine on top of it because CSS preprocessing is exactly the same thing with exactly the same problems.

[00:04:53] And all of the current tools, as great as they are, all fall short of answering those same questions in the same ways. They didn't really learn any of those lessons that we learned elsewhere. So that's an ongoing research experiment. It's not just a research experiment, I actually use it in production on all the sites that I've ever built, but it is obviously in flux as I figure out how to do things better.

[00:05:15] So that, and then asynquence. We're actually gonna not talk much about asynquence today in this workshop on functional programming, but it's a flow control library for promises and generators and even higher order asynchronous patterns like observables and things like that. It's designed specifically from the perspective of teaching.

[00:05:36] So it tries to take these higher order concepts, which are often pretty hard conceptually. We can barely get our heads around the APIs for these things, but to understand the concepts is really difficult. So I tried to design the API to teach the concepts. That's what this library's all about.

[00:05:51] If you don't already have something that's helping you understand not just callbacks or not just promises but even higher order patterns like observables for example. If you don't have one library that is helping you navigate all of that and understand the conceptuals. Or if you feel like, man I really just, I don't even understand what it's doing.

[00:06:07] It's a black box and I just treat it like that. I encourage you to maybe check out asynquence, see if that might help. Okay, I am the head of curriculum for Maker Square as of about three months ago from today, well, almost four months ago now. So Maker Square is a developer engineer training school.

[00:06:25] We currently have three campuses, Austin, San Francisco, and Los Angeles. Other well-known names you might have heard of like Iron Yard, General Assembly, Hack Reactor, we're actually part of the Hack Reactor network of partner schools. We're owned by Hack Reactor. So if you've heard of those sorts of schools.

[00:06:40] Flat Iron is another one, if you're from the New York area you've probably heard of that. So we sort of are trying to shift towards the upper end of this spectrum of developer engineer training schools. Kind of like to say that we're trying to become sort of like the MIT of developer training engineer schools.

[00:07:02] We're not just anybody that can commit. A lot of people apply and can't pass the entrance test, for example. So we set a very high bar, but that means that when you come out of the school you're even further along in your career. You're a full-fledged intermediate developer.

[00:07:15] So we take that very seriously. It's full stack JavaScript. And I'm newly in this post. I take it very seriously to make sure that you have absolutely the best-in-class possible education around JavaScript. So in addition to doing trainings like this, and we do corporate trainings, I also manage the curriculum for those in-person classes.

[00:07:35] So if you're listening on the video or here in person and you're interested in this, maybe you know somebody that would like to get in or maybe you yourself would be interested in something, I'd love for you to reach out and ask questions. I'd love to chat with you about that.

[00:07:49] In addition, you should also know, and many of you probably have heard, of the book series that I wrote on JavaScript called You Don't Know JS. I oftentimes get asked, where does that name come from? Obviously there's a little bit of tongue-in-cheek joke there. But where does the book come from?

[00:08:03] Where does the book title come from? Honestly, the reason for that, it was really more about myself than anybody else. The two years that I spent writing this six-book 1,100-page series, it's all available for free online so you can check it out. You can also purchase the books.

[00:08:19] But the journey that I went through caused me to realize that there is no attaining of full knowledge. It's asymptotic. You approach closer and closer to a full understanding as you learn more and more, but you never actually fully arrive and so we have to commit ourselves not to just, hey, I'm just gonna spend this month and become a master of JavaScript.

[00:08:40] I've been at this 17 years and I'm nowhere near calling myself a master of JavaScript. But what I've done is kept asking those questions and getting closer and closer and closer to that line of deeper and deeper understanding. And I regularly, regularly, week after week and day after day, run across something that I thought I understood and then I more fully understand it.

[00:08:59] And then I'm like, there's so much embarrassing code that I wish I could go back and fix. So really the title of the series is to sort of gently challenge all of us to adopt that continuous learning mindset. The workshops that I've done through Frontend Masters are the same perspective, and they track very closely to the kinds of things we talk about in the books.