About Nicholas C. Zakas

Recent Posts

Introducing Props2Js

One of my principles of Maintainable JavaScript1 is to separate your configuration data from your application logic. Configuration data is hardcoded information that your JavaScript uses to work properly. This could be anything such as a URL or a UI string. For example: function validate(value) { if (!value) { alert("Invalid value"); location.href = "/errors/invalid.php"; }... […]

Book review: HTML & CSS

It had been a while since I’d read a book that didn’t have to do with JavaScript or something very computer-sciency, so when I was asked to review HTML & CSS: Design and Build Websites by Jon Duckett, I was interested to see how these books have changed. I learned HTML back in 1996, and honestly... […]

Timer resolution in browsers

Timer resolution refers to how frequently a clock is updated. For most of their history, web browsers used the default system timer for functionality such as setTimeout() and setInterval(). This meant browsers could only schedule code to run as frequently as the system timer would fire. Internet Explorer also used the system clock for seeding values in... […]

How content delivery networks (CDNs) work

Content delivery networks (CDNs) are an important part of Internet infrastructure that are frequently used without a full understanding of what’s happening behind the scenes. You’ll hear people saying, “oh, we put that on the CDN” or “make sure static assets go on the CDN,” when they have only a rudimentary idea of what CDNs... […]

Book review: Closure: the Definitive Guide

I have to admit that I couldn’t remember who Michael Bolin was when he first contacted me to review Closure: The Definitive Guide. The embarrassment turned worse when he reminded me that he interviewed me at Google almost five years ago, before I joined Yahoo!. Having had the chance since then to grab lunch with... […]

Setting up multi-user Apache on EC2

Not too long ago, I wrote about how to setup an EC2 instance in five minutes. I’ve grown even more enamored with the how quickly I can create a server, maybe use it for just an hour or two, and then tear it down at a cost of a few cents. In one of my... […]

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... […]