The eli4d Gazette – Issue 019

Issue 019: 2016-11-23

Media Pick

This comes by way of Studio Neat’s newsletter. It’s a video that explores the amazing acting ability of Anthony Hopkins through a dissection of a scene in HBO’s Westworld. You can find this video here:

Tech Pick

I’ve been noticing many ReactJS articles come across my various readings. While I have not had the opportunity to explore React (yet) I find React and these React-related articles quite interesting:

  • Dave Ceddia’s How To Learn React (and what to build along the way) and Your Timeline for Learning React articles are quite good in that:
    • The emphasis is on starting from fundamentals (i.e. JavaScript is step 0) and then focusing on getting going on React without the confusing overhead of associated technologies (i.e. Redux, Webpack, etc…).
    • The focus is on building small blocks that teach you about React.
    • Note: Dave is selling a book that covers React in the above ways. It’s on my list of things to buy/learn, so I will review it after I do that. The long and short of all of this is that his approach (as described by his articles) is a solid one for beginners, so my hope is that his book is solid in the same way.
  • A Study Plan to Cure JavaScript Fatigue: This article was created by the same developer that created the JavaScript survey (which I mentioned in issue 018). It is a good article to see where you can go with React, rather than an actual plan fo study React. In fact, the title itself states this because it’s a response to a JavaScript fatigue article. From a React learning point of view:
    • He has great images that show the evolution of JavaScript Apps (and web applications in general). I think that this is the great value of this article.

    • He glosses a bit about learning JavaScript indicating that you should only “know basic JavaScript syntax.” I disagree with this notion because JavaScript’s design is quite different from typical OO based languages (i.e. the functional aspects like functions being first class values, etc…). So sure – you should know syntax, but you also need to know how JavaScript ‘thinks’ due to its design. (Disclaimer: I do teach a JavaScript based beginner programming course but I would still state this even if I didn’t teach such a course)

    • “Bonus Week 5” jumps to GraphQL and bypasses REST altogether. GraphQL is still early days for most projects and for better or worse REST is a current standard. I would add a “Bonus Week 4.5” where you learn REST before worrying about GraphQL.

More Recent Articles

Thoughts? Feeback? Let me know – @eli4d on Twitter or eli4dcom on Snapchat (I’m still experimenting with Snapchat)

JavaScript Specifics for the “Where do I go from here?” Question

This article is a continuation of the “Where do I go from here?” article with a focus on JavaScript (this is a frequent question I get from the students in my ‘Beginning Programming with JavaScript’ class ). If you haven’t read the previously mentioned article – you should do that first since it sets up the context for what I’m going to say here.

The usual disclaimer applies. This is going to be an evolving post because everything changes in software all of the time. Feel free to contact me with any questions, suggestions, and feedback.

Assuming that you are pursuing project focused learning here are some JavaScript related ideas/approaches.

The ‘no-frills’ project iteration

I suggest that your first iteration of the project use the JavaScript concepts that you just learned. This means using the JavaScript that you know right now. This no-frills iterations will help you understand the essence of your project.

You can continue with plain old JavaScript and an expansion of the ToDo project that we started in class. Or you can choose your own project. As you can tell based on my other article I’m a big proponent of choosing your own project – something that scratches your own (software) itch.

The ‘I must pursue the latest and greatest’ JavaScript ____ \ ____

Many feel that the pace of change in JavaScript (more specifically – the frameworks and approaches to JavaScript) is a never-ending race. It can feel like you’re Charlie Brown, the football is the current must-use/best/must-have JavaScript related technology, and Lucie is that ‘other’ developer who surfs on the bleeding edge with full understanding and a new Medium article about the best framework/approach/’awesomeness’ that you are not using:

This sort of view is known as “JavaScript Fatigue”, and it connects with the two views of JavaScript. The first is that “JavaScript is great!” and the second is that “JavaScript is a mess!” (the State of JavaScript Survey shows this quite nicely on its front page).

The long and short of it is that there is no magic bullet in terms of programming language, frameworks, and technologies. What’s popular today may be gone tomorrow. JavaScript has gotten large enough that you can pick something and specialize in it.

So pick whatever piques your interest. And if you don’t want to pick, then pick a project that interests you and start coding it in plain JavaScript.

There’s a great Theodore Roosevelt quote that applies to decision making:

“In any moment of decision, the best thing you can do is the right thing. The next best thing is the wrong thing. The worst thing you can do is nothing.”

What about bootcamps?

Programming bootcamps are a huge topic that is beyond the scope of this post. Some minimal suggestions:

  1. Figure out if you are the type of personality that would work well in a bootcamp (are you the type that jumps into a cold pool of water or do you slowy wade in?).

  2. They tend to be a large commitment in terms of both cost and time.

  3. Do your research very very carefully since there are lots of questionable ones out there.

  4. If you are seriously considering a bootcamp, you should try your hand with a free one called Free Code Camp. See how well you can commit to daily and weekly work.

I know of 2 students who went to bootcamps for a career change. They completed the bootcamps successfully and did the career change that they wanted. They also found out that the grass wasn’t greener on the other side. One thing about both of these individuals is that they were driven and would have succeeded even if they didn’t go through a bootcamp. In their case the bootcamps accelerated a trajectory that they were already on.

Additional resources


The JavaScript universe is huge. It’s a big mess of awesome. I think Steve Jobs said it best:

stay hungry, stay foolish

Thoughts? Feedback? Let me know: @eli4d

The eli4d Gazette – Issue 018

Issue 018: 2016-11-09

Tech Pick

In Issue 16 of this Gazette, I mentioned a recent well done JavaScript survey. Last week I listened to Sacha Greif, the creator of the survey, on the React Native Radio podcast. There was an interesting part of the conversation where Sacha explained his view/approach to the JavaScript fatigue issue. His fundamental point, that the JavaScript ecosystem has gotten large enough for specialization, was both enlightening and reassuring. In other words, you don’t need to know every nook and cranny of JavaScript and surrounding frameworks/build-tools/fill-in-the-blank to do your job.

Media Pick

Through John Gruber’s site I came across this video where iPhone app developers are reading their 1-star reviews (note that parts of this video are NSFW). While superficially the video is funny, it fundamentally demonstrates the issues of customers and customer support. No matter how much blood, sweat, and tears is poured into software (and to any product for that matter), some customers will always show disdain and disrespect. But that’s the cost of having customers and doing business.

More Recent Articles

Thoughts? Feedback? Let me know – @eli4d on Twitter or eli4dcom on Snapchat (I’m still experimenting with Snapchat)

The eli4d Gazette – Issue 016

Issue 016: 2016-10-12

Tech Pick

I came across two interesting articles about JavaScript. The first article covers the results of a very comprehensive survey that was sent to 9,000 developers (and how can you not like an article that starts with “JavaScript is great!” and “JavaScript is a mess”). The second article is a humorous (with a large does of truth) post about learning JavaScript in 2016.

Media Pick

I came across a new podcast – Greater than Code. It is hosted by some ex-panelists from the Ruby Rogues podcast. If you’re curious about this podcast listen to episode 2 with Avdi Grimm.

The eli4d Gazette – Issue 012

Issue 012: 2016-08-17

Tech Pick

Dependency Hell applies to both real and digital life. When developing software one frequently relies on other people’s libraries. However, there is a difference between reliance on a robust well-maintained library and using a library for the most trivial of tasks.

At the beginning of 2016 there was a significant disruption in the server-side JavaScript world due to an eleven line NPM module called left-pad. You can see left-pad’s functionality on npm’s site (it just pads a string on the left side). The problem was that many small and high-profile JavaScript applications used it. I found some great perspectives on this issue here:

Last week JavaScript dependency hell was displayed through an amusing article about some high profile Node modules and some ridiculous dependencies within them (the Express hot pocket tweeting one was amazing). There’s no easy answer to dependency hell. I think that it tends to be more pervasive in JavaScript due to JavaScript’s monkey patching DNA which I’ve mentioned in another article.

Media Pick

On a friend’s recommendation, I started listening to the Exponent podcast. It’s a conversation between Ben Thompson and James Allworth about all things tech and society. This podcast is quite different than many others because Thompson’s long-term analysis is brilliant in a (good) mind breaking sort of way and Allworth helps to balance Thompson’s point of view.

Some favorites:

Student Question – JavaScript Array Usage and How to Accidentally Use it as an Associative Array


In this article, I cover a question that I got from one my students in a JavaScript course that I teach at Stanford Continuing Studies. Monkey patching lies at the core of JavaScript’s DNA and this question/answer is fundamentally about the positive and negative sides of monkey patching.

The Question

The question that came up was regarding JavaScript’s Array object. It is important to remember that the ancestor of the Array is the Object and that JavaScript only has five primitive data types and one complex data type (i.e. object type).

Question phrased by student

The question that came in from the Lab 6 instructions for my class.

Question phrased by student

Clarification of Question – Does debugger show what student is claiming?

The debugger confirms the student’s question. Notice:

(1) We are indeed dealing with an Array

(2) But the length of the array is 0

(3) And yet it contains two items – “w1”, and “w2”

The student question is entirely valid – how can we have an array with 0 elements that has two elements in it (i.e. “w1” and “w2”)?

So Array is acting like an associative array not a typical array data structure.

Clarification of Question - Does debugger show what student is claiming?

Clarification of question – lab section

The question is about the use of the Array (by virtue of [] initialization). Then the use of the Element id

Clarification of question - lab section


Let’s verify – is the Element’s ID a string?

According to MDN, it is. And indeed for this code “w1” and “w2” are the element’s ID.

Let's verify - is the Element's ID a string?

So what’s going on – part 1

Let’s re-look at MDN’s Array documentation (

(I highly recommend reading the whole **description). Initially, there is usage information, and then there is the description part which includes a very interesting beginning (the “Arrays are **list-like objects“). Notice the “Some people think…” part. It refers to this article: (well worth a read too).

So what's going on - part 1

So what’s going on – part 2

Here is my description of what’s going on: so we are creating a variable that’s going to reference an Array object. The Array object is a descendent of the JavaScript Object (granddaddy of all objects in JavaScript). So this means that we can add properties to the Array object by using [ ]. In effect, we’re monkey patching the Array object to act as a regular Object (since it really is an Object).

So what’s going on – part 3 – simple code example

Let’s simplify this issue through some simple test code. Notice:

  • We’re creating an Array object
  • We’re calling it with the dot notation – just like we would access any property on an object.

So what's going on - part 3 - simple code example

So what’s going on – part 3 – simple code example

The result is that the Array itself is empty (i.e. there are no index based elements). But the Array object has been monkey patched to have the string1 and string2 properties.

So what's going on - part 3 - simple code example

So what’s going on – part 3 – simple code example

Debugger confirms the behavior experienced by the student. There’s an empty array that contains new properties within it.

So what's going on - part 3 - simple code example


Should I have used an Array for the lab exercise? Probably not. It would have been better if I had used a plain JavaScript object. This was a neat (and hopefully instructive) catch by one of my students.


My hope is that this article has been useful to learners of JavaScript (besides my students). Sometimes JavaScript feels like you’re running around with a magic wand and sometimes it feels like you’re running around with scissors. Both feelings are the result of JavaScript’s DNA: monkey patching.

The eli4d Gazette – Issue 005

Hello Friend,

Welcome to Issue 005 of the eli4d Gazette. You can find the newsletter archive at and the blog at

Have a great day!

Eli (@eli4d)

The eli4d Gazette

Issue 005: 2016-05-11

Quick note about upcoming online JavaScript: Registration is opening on this coming Monday (5/16) for my online beginning programming JavaScript course that I am teaching. I will be covering JavaScript fundamentals. For course content info – check out the syllabus.

Tech Pick

Encryption has been a topic of debate from the early Clipper Chip days to now. But is encryption the issue or is it more about device access. Steve Gibson discusses the important difference in his The “Encryption” Debate article. Encryption is math, and this (math) long been out of its bottle. Making encryption intentionally weak makes everyone vulnerable. Strong encryption with lawful and mediated access is the key (pun intended :-)).

Media Pick

So this may seem like a somewhat crazy pick, but it truly is one of the best presentations that I have ever seen (I came across this through John Gruber’s site). It is 4 minutes and 31 seconds of pure awesome with a gentleman named Joe Smith who presents a TED talk on how to use a paper towel. There’s, of course, the ‘reduce waste’ message. But there’s much more from a pedagogical point where Mr. Smith demos his point several times (the repetition concept in play that’s reinforcing and entertaining) while engaging the audience, and giving them ways to remember his approach easily.