Hello again, JavaScript

31 Jan 2020

I’ve been working steadily through the “Mastering PyCharm” course from TalkPython course over the past couple of weeks and having a great time with it. It feels fantastic to be learning to use a professional-grade tool that will help me code more effectively, while getting exposure to a bunch of new concepts and skills by working through the projects and exercises. Hooray for PyCharm and TalkPython!

One of the reasons this course has been such a powerful learning experience is it’s created so many opportuntities for what I’ll call “cascading learning”. Far from the course being a simple exercise in following the video’s instructions, I’ve often needed to do considerable extra research to make the code run on my end, either because software has changed since the video was recorded, or because the underlying concepts are new to me.

While these detours can be a bit frustrating at times, for the most part it’s been an incredibly good thing for my learning. Rather than learning “just” about PyCharm, I’ve reinforced & built on the source control basics I was working on recently, learned principles of refactoring, and got my first hands-on experiences with databases and server-side web applications. So good!

It was in the most recent module on server-side web apps that I returned to JavaScript today for the first time since choosing definitively to go with Python as my all-important “first language” in late 2018 or early 2019.

As I resumed my “learn to code” mission in mid-2018, I tried out three languages:

  1. A version of Scheme used in UBC’s first programming course, CS 110, which I took as a MOOC on EdX
  2. Python, which I dug into using Nina Zacharenko’s Learn Python course and Automate the Boring Stuff with Python, and
  3. JavaScript, which was my most brief exposure. I went through only a handful of videos in the FullStack/Grace Hopper Institute’s boot camp prep materials. (At the time I think the boot camp prep materials were free; looks like they’re all pay-to-access now.)

In the end, I decided to stick with Python as I found the ABS approach of focusing on the automation use case while learning Python highly relevant and felt like I was making good progress there. So I waved goodbye to JavaScript’s semicolons, not knowing when or if we would meet again.

Today I picked up the server-side web apps module at the point where we started discussing static pages. The sequence went something like this:

Michael Kennedy (instructor): OK, let’s download BootStrap using npm.

Me: What’s BootStrap? (search, search…) What’s npm? (search, search…) Ok, I’ll run this BootStrap install command in the terminal… (tap, tap)… Whaa, I don’t have npm? What do I have to do to get it? (search, search…) Ok, guess I need to install Node! Here I go to their website…(tap, tap)… Ok, I’m downloading Node. I’m clicking to install it… Whaa, I’m getting this error, “Can’t be opened because Apple cannot check it for malicious software”! What’s up with that?? (search, search…) OK, I’ve got the workaround. Installing Node… Looks like it worked! Time to check if it installed correctly…

$ which node
/usr/bin/local/node
$ node >console.log('Node is running');
Node is running .

Me: (realizing what just happened) Whaaa! Semicolon! I’m back to JavaScript!

And that was the moment when, after months of sticking to Python, my path converged with JS again. I’m in a different place now that the last time - Im not thinking about choosing which of the two languages to learn, but rather combining both languages in the same project. I know I’ll learn a lot about both in the process!

I got BootStrap installed, and moving onwards!