About Nicholas C. Zakas

Recent Posts

The ECMAScript 2016 change you probably don't know

Compared to ECMAScript 6 (also known as ECMAScript 2015), ECMAScript 2016 was a minor update to the language specification for JavaScript. This was due to the decision that ECMAScript editions would now move to a yearly release cycle, effectively just a snapshot of all the features that were ready. As such, most resources list only... […]

ES6 module loading: More complicated than you think

One of the most long-awaited features of ECMAScript 6 is the formal definition of modules as part of the language. For years, JavaScript developers have struggled with organizing their code and needing to decide between alternate ad-hoc module formats like RequireJS, AMD, and CommonJS. Formally defining modules as part of JavaScript will eliminate a lot... […]

Mimicking npm script in Node.js

I’m a big fan of npm scripts[1] and have been using them in all of my projects instead of a standalone build system. The feature I like the most from npm scripts is the ability to run command line executables that are installed in your project’s node_modules/.bin directory. That allows you to, for example, install... […]

Reflections on ESLint's success

It’s hard for me to believe, but I first conceived and created ESLint1 in June 2013 and first announced it’s availability in July 20132. As frequent readers might recall, the primary goal of ESLint was to create a linter with rules that could be loaded at runtime. I had seen some problems in our JavaScript... […]

React and the economics of dynamic web interfaces

I’ve been doing web development since 2000, and in that time I’ve seen eras marked by libraries and frameworks come and go. The Ajax era began around the same time as the jQuery era began, the Backbone era began several years later, and the React era really began about two years ago. Each of these... […]

Why I'm not using your open source project

When you think of open source software, you might think of a few specific projects depending on your area of interest. If you work on web applications, the term “open source” might conjure up visions of Apache or Node.js; if you’re into big data, then perhaps Hadoop comes to mind; if you care a lot... […]

Hidden performance implications of Object.defineProperty()

I’ve recently been working on a project to port Espree[1], the parser that powers ESLint[2], to use Acorn[3]. In so doing, I ran into an interesting performance problem related Object.defineProperty(). It seems that any call to Object.defineProperty() has a nontrivial negative affect on performance in V8 (both Node.js and Chrome). An investigation led to some... […]

ECMAScript 6 destructuring gotcha

With all of the new syntax in ECMAScript 6, you’re bound to periodically find something that is confusing (likely as you’re hunting down an error). Recently, I’ve seen an uptick in the reporting of a specific type of error as it relates to destructuring assignment[1] using object patterns. Destructuring basics Before you can understand the... […]

Triggering Jenkins builds by URL

As you might have read not too long ago, I recently moved my site from Wordpress to Jekyll[1]. In so doing, I ended up using Jenkins[2] to periodically build and upload my site to S3. Having a Jenkins instance running turns out to be quite useful for all sorts of tasks and so I’ve been... […]

My favorite interview question

Interviewing and hiring are more difficult tasks than they may seem. The cost of hiring the wrong person is quite high, yet companies that are hiring often want help sooner rather than later and so sometimes don’t want to wait for a good candidate to come along. I operate on the mindset that the damage... […]