Learning Javascript through teaching Javascript.

From Hilton Head, South Carolina, I bid you all good morning and/or good evening, wherever you are in this great land of ours—from the Tahitian and Hawaiian Islands in the west, nestled in the warm trade winds of the Pacific, eastward to Caribbean and the U.S. Virgin Islands, with her own soft winds, south into South America, north all the way to the Pole, and of course hello to all our friends in the Antarctic, at McMurdough. 👋

Today we have a first time caller, long time listener, resident Javascript expert and intern, @eankeen.

@katyadee: Hey friend, happy to have you on the line. Let's start with an introduction.

@eankeen: I’m Edwin and I really like doing programming. I started maybe one and a half years ago—junior year of high school. That was sort of the time where I found Repl.it. I had found it before, but it was really junior year when I started seriously using it.

@katyadee: How’d you find Repl.it?

@eankeen: It was actually in my bookmarks, and it was bookmarked maybe three years ago because I had been doing a computer science club with my high school, and when I was researching how to start that club I found Repl.it because it was good for online coding. The club never materialized, but then I looked at my bookmarks a few years later and I realized, hey, I kind of remember this, and then I started using it.

I really like Repl.it because I can use it to experiment, usually things that are only 20 or 30 lines of code.

@katyadee: Do you find you’re testing things on a lot on Repl.it?

@eankeen: Yeah—and I categorize them into what I’m testing. If I keep them in my archive and if need it again or forget how I did something, I go back and look for it.

@katyadee: So what kind of things will you test?

@eankeen: Javascript APIs and node.js, mostly.

@katyadee: It seems like you’re definitely a front end guy taking a look at your repls. Any plans to branch out?

@eankeen: I really love front end, I really like creating user interfaces, I think that’s really fun—I leverage Javascript to do that. I realize if I want to become better at programming, I definitely need to branch out… I’m slowly starting to add other languages.

@katyadee: Do you have an interest in design at all?

@eankeen: I would say I do, but it’s hard, because I haven’t done enough of it. I don’t have the same knowledge of it. But I love thinking about UX… I love transitions. It’s kind of a fun challenge. I only actually do design outside of that when I absolutely need to right now.

On Teaching & Learning

@katyadee: Let’s pivot a little bit. I’ve noticed when it comes to the things you share with our community, you post a lot more tutorials than you do projects. What motivates you to teach other people?

@eankeen: Yeah so, I think it’s really cool to teach people. Sometimes I’ll check Twitter and noticed someone’s benefitted from my tutorial. Otherwise, a lot of the projects I’m building aren’t cool enough to share. But I really get hyped about being able to help people learn something new.

@katyadee: How do you decide what you’re going to write your tutorials about?

@eankeen: It’s usually just things I’m excited to learn about myself.

@katyadee: Oh—wait—that’s really neat. Are you learning these concepts as you’re writing them?

@eankeen: It depends. For Babylon.js, for example, I knew how to do it—but I learned how to use Intersection Observers while writing the tutorial.

@katyadee: So, you’re like, “Okay, I want to learn this, I’m going to write about it”? That’s amazing, especially having seen the quality and how much mileage people get out of it.

@eankeen: It’s kind of cool once you learn something like that, too.

@katyadee: Would you say that’s the main way you learn new skills? By writing about them?

@eankeen: That’s definitely one way—it’s either writing a tutorial or building a project.

@katyadee: Do you learn other skills the same way? Like, if you’re learning something new at school?

@eankeen: It’s a bit easier with programming… well, I guess I do it for school. I’ll do problems then explain them to myself later while studying.

@katyadee: That’s really cool. I remember being taught a similar method in AP American History, which is why I asked. I also wanted to ask—I feel like the writing in your tutorials is just good writing. Is that something you think about when you’re creating these?

@eankeen: I don’t think I’m a naturally good writer, no, haha. I kind of observed that other people who write blogs and tutorials first. I picked out the parts I liked and then I tried to copy structures that I understood. I actually don’t think I’m very good with English, like I don’t know what a prepositional phrase is… I’m not good at that kind of thing. But I tried to pick up patterns with what I thought was working. I try to be casual but succinct, I think that goes a long way.

@katyadee: It’s so funny to me you say that you’re not good at English, because you’re doing a really good job with these tutorials. I wouldn’t say you’re bad at English, either—like, individual grammatical concepts, who cares if you’re producing stuff that’s legible, enjoyable to read, and also informational. Your communication is very clear—at least to me, a newbie.

@eankeen: That’s really good to hear.

@katyadee: What do you think the relationship between teaching and learning is?

@eankeen: I think that when you teach, you’re forced to learn something more thoroughly.

@katyadee: I’ve heard that, but I feel like it’s underexplored. Do you think that attitude is unique in the dev community, at least as far as you know?

@eankeen: I don’t think it’s uncommon, but a lot of people are just learning and learning and learning, and they don’t use the skills enough, so they can’t really apply them. Application is more important than just knowing facts. The thing is, teaching and applying are pretty similar. Just memorizing isn’t going to make you a better programmer.

@katyadee: Are there any tutorials you’ve abandoned? Or are there any concepts you’ve found you’ve struggled to explain?

@eankeen: Yes! I was trying to do this thing where you open up a repl on two computers, and then create a clipboard between computers… but it didn’t quite work out because the library I was using was too buggy, I must have been doing it wrong but I couldn’t figure it out. So I just abandoned it.

Babylon.js

Can you explain what Babylon.js is for people who might not be familiar?

@eankeen: Babylon.js is a 3D JS library. If you’re thinking about something that’s 3D, like any object, and you want to make it…or animate it…or make it dynamic, you’d use Babylon.

@katyadee: Have you made any projects with it?

@eankeen: Yeah, so one of the game jams, I made a small game with it. That was when I was first learning Babylon.

@katyadee: What kinds of projects would you say lend themselves best to Babylon vs. another library, like three.js?

@eankeen: I think if you want to work on a project more long term, you might want to go with Babylon, because Babylon has a Semantic versioning system… but with three.js, you can go between versions and there will be a bunch of changes, so Babylon is more friendly in that regard, because less stuff is going to break from update to update. But another thing to think about is…if you want something more lean, three.js feels more lean.

React

@katyadee: So, I’m not even going to ask why you’re interested in React because I think it goes without saying—haha. But I do want to ask.. What are some common mistakes you’ve noticed people make when they’re starting off learning it? What are some things you personally found challenging about it?

@eankeen: I think one mistake a lot of beginners make is not knowing what’s React versus what’s just JavaScript…It’s also kind of hard to work out what’s the big picture. It took me a while to get that big picture and really figure out what’s going on. One thing with Repl.it is it doesn’t really show you all the build tools, which is good for beginners—you shouldn’t have to worry about that at first.

@katyadee: You had noted somewhere that tutorials kind of gloss over the “obvious” parts of React. What did you mean by that?

@eankeen: A lot of basic stuff. For example, building your webpack integration file. Or common structures—you need a good foundation or it’ll be a little more difficult. I encountered these problems while learning Vue.js too, which is similar to React.

@eankeen: I’m just more familiar with it. I also like the aspect of your CSS coming in actual CSS files. When you’re a beginner or less experienced, it’s easier to recognize the different elements. But if you’re using React, it’s less intuitive.

@katyadee: What was your timeline like, learning Vue.js and React?

@eankeen: I started learning Vue.js when I started learning Javascript… and React a little bit after.

Empty

@eankeen: Oh my god. So @mat1 made an Empty game however long ago. It’s minimalistic. It’s in Python. I thought hey, I want to do something fun. So I wanted to create a sequel. So instead of Python, it’s Javascript. And I talked about how much better it was than @mat1’s Python repl, even though it’s blank. I spent a few hours writing something up, where I was just criticizing the most minute details. I tried to make it sort of funny and sarcastic.

@katyadee: That’s great satire—I wanted to give it some love here.

Closing

@katyadee: What advice would you give to people who want to write their own tutorials? And what would you say to people who would never write their own tutorials?

@eankeen: For people who want to write a tutorial, look at material you found really useful, and try to copy their patterns. Simplicity goes a long way. For people who would never write a tutorial, I’d say: writing turoials helps you learn things faster!