Upcoming Courses in JavaScript: Vote with Your Comments

During the past year I have released what I perceive are the two most time consuming courses to develop: Learn Modern JavaScript: Getting Started and Learn Modern JavaScript: Advanced Topics.

Since the release of the Advanced Topics course I have been hard at work on adding a section to that course on functional programming concepts as well as a new course on regular expressions. And now I have begun to think about what courses should come next, and I would like your input. Here are a list of some of the courses sitting in the wings. (You can get a full list of upcoming topics here.)

  • Full course on functional programming concepts in JavaScript. Functional programming is the talk of the town in JavaScript. And it is important to know these topics.
  • Asynchronous Coding. This course is an important piece in the Learn Modern JavaScript series. These are critical topics that need to be tackled.
  • Using Node and Express. I have stayed away from node in my JavaScript courses because I think it is important to learn JavaScript on the browser side. I feel I need to add this course in order to fill in the knowledge of how JavaScript can be used.
  • jQuery. Yes, jQuery is not the darling child anymore, but it is still used extensively, so it is important to know how to use it effectively.
  • JavaScript Frameworks and Libraries. There are numerous topics here, but those that seem to drift to the top are Vue, React and Angular.

So which topics are most important to you? Let me know in the comments sections.

Functional JavaScript: Some People Love it

For the past six months or so I have been on a journey of discovering functional programming in JavaScript. When I first started, I could understand very little of the terminology or the concepts. It all seemed very foreign to me. But I persisted.

I now feel like I get it. I understand the power behind the paradigm. I understand the concepts. And…I must admit that I like it.

One thing I have noticed as I have read different articles and books on functional programming in JavaScript, is that people that are in to it are really in to it! They love it! Here is an example of one article I found recently. It is an interesting read and helps point out some of the positives of functional JavaScript. But you also lear how the author feels about functional programming.

How I rediscovered my love for JavaScript after throwing 90% of it in the trash

Reading this article caused me to ask a question: Do those that love  functional JavaScript love it because they get it? I really wonder. Help me out here. If you understand the ins and outs of functional programming in JavaScript but would rather use another paradigm like OOP, comment below. I would love to hear about it and why.

Which JavaScript Book has Taught me the Most?

I recently posed an interesting question to myself: Which JavaScript book has taught me the most?

Now I own many books on JavaScript. Some are specific to a framework, but most apply to vanilla JavaScript. But I didn’t limit my question to any subset of JavaScript. If it had anything to do with JavaScript, it was a candidate.

I enjoy books, so it was a fun exercise to go through each of my books and try to make a decision about which ones have taught me the most. Now to be fair, there are a few books I own that I have not finished reading. One I just purchased and haven’t even started yet. Now the whole process was very subjective, but the results were interesting; at least they were interesting to me.

In the end Douglas Crockford’s book JavaScript: The Good Parts didn’t make the cut for the final three. It was close, but I felt I needed to go with another book. Also, none of Kyle Simpson’s books made the top three. I have really enjoyed his books, but I was looking for the books that have taught me the most.

So here are the top three…

David Flanagan’s book JavaScript: The Definitive Guide was probably my top choice, not because I have sat down and read this book cover to cover, but just because how much I have referred to this book. This book is usually one of the first locations I go to when I have a question. It is a book I trust, so I usually weigh information on the internet with the information contained in this book. I’ve owned more than one edition of this book throughout the years. I think it was probably the first JavaScript book I purchased. Anyway, I’m pretty certain I have spent a good deal of time in this book and it has taught me a lot.

Next I chose JavaScript Patterns by Stoyan Stefanov. This book expanded my view of JavaScript and what it can do. Everything in this book is very practical. It is a concise book, but has a lot to offer. Some of the most important patterns I use, I first learned from this book.

My third choice was a bit of a surprise. I’ve been interested in functional programming of late, and I think that interest may have affected my choice. The third book is Functional Programming in JavaScript by Luis Atencio. Functional programming is a different paradigm from what I am used to, so obviously there is a lot to learn. Though this book is not the only source I have learned functional programming from, it has provided a good deal of information.

So there you have. My top three. Are there books you would add to the list? Which book taught you the most?

 

JavaScript Problems…

I’ve started a new type of tutorial on the YouTube channel: JavaScript Problems.

Every so often I want to do a tutorial which is simply presenting a problem that needs to be solved in JavaScript and then going through the process of solving it. Usually, I will present more than one way to solve the problem because I think that is great way to learn JavaScript: look at different solutions.

In the first tutorials I created, I used some problems found in some of the many JavaScript books I have access to. However, I would also like to include problems you are thinking about. So this is a chance for you to shoot me over some problems. It may end up in the next JavaScript Problem I choose to record.

To submit ideas, you can add a comment to this post, you can send an email to shancock@allthingsjavascript.com or you can add a comment to one of the YouTube videos.

The State of JavaScript Survey

In case you haven’t heard, the State of JavaScript 2017 is now taking survey responses. The survey is officially open! I received my notification yesterday.

The State of JavaScript report from last year was very insightful. A lot of their data is built from survey respondents, so if you haven’t done so yet, take a moment to fill out the survey.

You can access the survey here: http://stateofjs.com/

Advanced Topics Course if Finally Here

After six months, I have finally release the Advanced Topics course. The Advanced Topics course is a part of the Learn Modern JavaScript series which begins with the Getting Started course.

I love the nuances of JavaScript and therefore this new course has been exciting for me to produce. It provides a lot of opportunities to delve into those types of topics.

This brand new course has over 70 lectures, over 11 hours of video, 2 quizzes, 7 assignments, and 1 large project at the end. In this course I also felt the need to create several Think Like a Programmer sections. In these sections I address topics that come into play when you are working as a JavaScript professional. I feel these contain some valuable information.

If you are interested in taking this course, here is a link that will allow you to take the course hugely discounted on Udemy:

Take the Course

JavaScript Problems: I Need Your Help!

Today I launched a new section of tutorials on our YouTube channel. It is called JavaScript problems. The idea is that every so often the tutorial released during that week will be a JavaScript problem to which I will provide one or more solutions.

Here is the first tutorial in this section. It shows two techniques for computing a fibonacci sequence given two starting numbers and how long you want the sequence to be.

The idea isn’t so much to show how to solve a particular coding problem, but more what can be learned about JavaScript by solving the problem. For example, in this first tutorial we use a while loop and also recursion.

So here is where the help comes in. There are numerous problems on the Internet that I can use for these tutorials, but I would rather use real world problems. If you have a problem you have seen in the past or one you are working on, provide it in the comments. It might be the perfect example to use in one of the upcoming JavaScript Problem tutorials.

Functional JavaScript

Functional programming in JavaScript has been a topic of considerable discussion for some time now. Several books have been published about functional programming in JavaScript and there are developers that use this approach almost exclusively.

Whether or not JavaScript is a functional programming language is beside the point now because so many people are using it for such.

I don’t know enough about functional programming to teach the ins and outs of that particular approach. However, what I do know is that functional programming has some very valuable concepts that you can draw on to improve your code. I’m advocating a pragmatic approach to functional programming in JavaScript. In other words, use elements of functional programming that you find valuable.

So this begs the question, how to get started? Well, as mentioned there are several books published about the subject, and I will be reviewing some of those in the future. But I think a great first step is to really understand some of the methods of the Array object. These methods were designed around functional programming concepts. For example, map, forEach, every and reduce are a few that are valuable to understand. And it just so happens we have a tutorial on some of those methods.

What are your thoughts on functional programming in JavaScript?

You can find the tutorial here:

Obfuscation in JavaScript

I love the word obfuscation. It seems to reflect its own definition. To obfuscate something is to make it difficult to understand.

So why would we want obfuscation in JavaScript. Well, let me give you an example. Recently I was working on a project where we had to connect to an online system. The online system did not have the security fully implemented yet, and as a result we had to include some of the details about the system in the JavaScript code. Well, we didn’t want it to be super simple for someone to discover that information. We wanted to hide it a bit. So the solution…we obfuscated that portion of the JavaScript code.

I learned about a couple of sites that help do this. They obfuscate your JavaScript code by moving things around and converting information to Hex. I used both of these locations. I would pass the code through the first location and then pass the results through the second. Technically, someone could figure it out, but it is quite difficult. Drop some code in, obfuscate it, and then see if you can make heads or tails of it.

https://javascriptobfuscator.com/Javascript-Obfuscator.aspx

https://www.daftlogic.com/projects-online-javascript-obfuscator.htm

Objects, the Center of the JavaScript Universe

When someone says that JavaScript is not an Object Oriented Language, what they really mean is that JavaScript doesn’t use the approach to object orientation that they are used to. It doesn’t use classes. It is not necessary to create a class in order to instantiate an object. To me that is a big advantage with JavaScript.

To say that JavaScript doesn’t use objects is very far from the truth. I will put it this way: it is almost impossible to do anything of value using JavaScript without using objects. Everything but primitive values are objects. Arrays are object. Functions are objects. A regular expression definition is an object. A date value is an object. And it goes on and on.

So objects are central to everything in JavaScript. Because of this point I have started compiling (in the form of a playlist) a bunch of tutorials on objects in JavaScript. There are numerous topics that could be covered with objects, so this compilation is not complete, but that is what I would like to work towards.

If you haven’t taken the time to really sink you teeth into objects and understanding the object oriented nature of JavaScript, you need to! It needs to happen sooner rather than later. You can start with this playlist.

Then get a book on objects in JavaScript and dive deeper. I have reviewed a couple as a part of this blog. Here are two good ones.