JavaScript Tutorials

January 29, 2017


Happy Coding now has JavaScript tutorials!

(That’s pretty much it, you can stop reading now if you want to.)

This is a pretty big step for the site, and for me in general. It wasn’t too long ago that I would have told you I was scared of JavaScript. But I eventually came out of my Java shell, and I’m hoping these new tutorials help other people do the same thing.

javascript code

I ain’t afrad of no JavaScript :ghost:

I think one of the things that makes JavaScript scary is that you have to know a bunch of stuff before things start getting interesting. It’s hard to do cool stuff if all you know how to do is call functions, which makes learning how to call functions harder than it should be. (It also makes it hard to create interesting thumbnail images!)

So I’ve purposely designed these tutorials to build on the existing Processing tutorials. A for loop or an if statement looks the same in pretty much every language, but Processing makes it easy to do cool things using those basics without knowing much of anything else. That’s one of the reasons I like it so much for people just starting out learning about programming.

So these tutorials are less “here’s what a for loop is” and more “here’s what’s different about for loops in JavaScript”. Hopefully that makes it easier for people coming from Processing to understand it.

And if you’re thinking to yourself that you just want to learn JavaScript and you don’t want to go through the extra step of learning Processing: it’s not an extra step! Like I said, learning about if statements in one language isn’t wasted time, because that knowledge will apply to pretty much every other language. Plus, one of the best ways to understand a language is by comparing it to a different language.

I might write similar “ramp up” tutorials in P5.js, depending on how their upcoming editor works. But for now I think starting out in Processing and graduating to JavaScript is the way to go.

TODO

Adding these JavaScript tutorials is just one step on the roadmap I have in my head. I still want to add Java, Android, and server tutorials. Maybe even robotics, and advanced topics like artificial intelligence. I also want to add a section designed for teachers, and expand the examples. Not to mention the JavaScript stuff I still want to cover.

With all of that in mind, writing these JavaScript tutorials taught me a lesson that I keep learning over and over again: I need to work in smaller chunks. I’ve been working on these tutorials since December, which might seem ridiculous given that there are only 10 JavaScript tutorials so far. But a lot of that time was spent on organization, stuff like: “do variables come before functions?” and “oh wait, I can’t talk about that until I cover this first”. (Not to mention starting a new job!)

That resulted in a month or so of having a big incomplete blob, which takes the fun out of it. So in the future I’m going to try to work in smaller pieces, finishing one tutorial before I start another, etc. We’ll see if I follow my own advice this time.

Examples

The next thing I need to do is add a bunch of examples for these tutorials. This will help me get back on track with my 100 days of code goal.

But like I said, it’s hard to do cool stuff in JavaScript using only the basics. So perhaps paradoxically, the simplest stuff is what I need the most help with! So if you have any ideas for projects that could be done using only what’s covered in the first couple tutorials, let me know in the comments! (Or submit your own project on GitHub!)

One More Thing

It feels weird to write a celebratory blog post with everything that’s happening, so I just want to note that I’m not writing this in a bubble.

I think everybody agrees that technology plays a huge role in, well, pretty much everything. Of course, technology can be used for evil. (Or can twist good intentions into something else.) From the echo chambers that separate people, to “share if you agree” selfie slactivism, to the onslaught of misinformation, trolls, and incessant bickering.

But technology can also be a beautiful tool for good: improving living conditions, connecting people (like donor matchers on Twitter), and the equality that comes with more open access to information.

I don’t want to get too grandiose, but what I’m trying to do with this site is my own little way of working towards the good that technology can do. I think we’re at a point where we might fix some of the problems that technology created: by visualizing data in new ways, or creating tools that solve real problems, or connecting people, or enabling accountability, or just sharing viewpoints and art and creativity and stories and diversity of thought.

I don’t have any delusions of grandeur. I don’t think I’m going to change the world. But I do think that somebody learning how to code can. I have some ideas about where this could go that I’m excited about, but that probably deserves its own blog post.

Anyway

Check out the JavaScript tutorials and let me know if you notice any typos or anything that doesn’t make sense. Also let me know if there’s anything you want to know about JavaScript, or about coding in general!