About Nicholas C. Zakas

Recent Posts

Custom types (classes) using object literals in JavaScript

This past week, Jeremy Ashkenas (of CoffeeScript fame) started a flurry of discussion around class syntax for JavaScript. ECMAScript Harmony is scheduled to have classes and the proposal has been up for a while. Of course, JavaScript has never had a true concept of classes (which is why I call them “types” instead), and the... […]

Improving Rhino CLI utility performance

Back when I worked at Yahoo!, we spent a lot of time improving our build and checkin systems. Part of that meant using JSLint for JavaScript validation and a tool I wrote for CSS validation (not related to CSS Lint). Both of these tools were run using Rhino, the Java-based command line JavaScript engine. We... […]

CSS Lint v0.8.0 now available

I’m happy to announce that version 0.8.0 of CSS Lint is now available on the web site, via GitHub, and through npm. This release focused very heavily on two things: documentation and web UI improvements. The documentation work has continued over on the wiki, where we’ve added some initial documentation on using CSS Lint in a build system (we’d love... […]

So you want to write JavaScript for a living? [repost]

In October 2007, Hans Brough published a blog post entitled, “So you want to write JavaScript for a living?” Hans put a lot of effort into the post, contacting myself as well as several others to get quotes and insights into the hiring process for JavaScript development. Through a series of unfortunate events, the article... […]

CSS Lint v0.7.0 released

I’m happy to announce that version 0.7.0 of CSS Lint is now available on the web site, via GitHub, and through npm. This release focused very heavily on two things: documentation and stabilization. For documentation, we’ve moved everything over onto a wiki, which allows us to quickly and easily update the documentation and more as... […]

Simple, maintainable templating with JavaScript

One of my principles of Maintainable JavaScript is to keep HTML out of JavaScript. The idea behind this principle is that all markup should be located in one place. It’s much easier to debug markup issues when you have only one place to check. I always cringe when I see code such as this: function... […]

When web standards fail us

From time to time, web developers rise up and grumble more loudly about the failings of the W3C and ECMA for the ways they choose to evolve (or not evolve) the technologies of the web. We talk about design by committee as a failure, browser vendors should just implement and not worry about it…unless it’s... […]

Script yielding with setImmediate

Those who have attended my talks on JavaScript performance are familiar with my propensity for using setTimeout() to break up long scripts into smaller chunks. When using setTimeout(), you’re changing the time at which certain code is executed, effectively yielding the UI thread to perform the already-queued tasks. For example, you can instruct some code... […]

Experimenting with ECMAScript 6 proxies

ECMAScript 6, aka “Harmony”, introduces a new type of object called a proxy. Proxies are objects whose default behavior in common situations can be controlled, eliminated, or otherwise changed. This includes definition what happens when the object is used in a for-in look, when its properties are used with delete, and so on. The behavior... […]

CSS Lint v0.6.0 now available

Following quickly on the heels of the v0.5.0 release, here comes the v0.6.0 release. This release saw a lot of activity around bug fixing, refactoring to make things easier, and documentation. Some of the highlights of this release: New Rule: Mike Hopley suggested we add a rule that could suggest shorthand properties when all dimensions... […]