Recent Posts

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

CSS Lint updated to 0.5.0

After a slight delay to figure out some UI changes, the 0.5.0 release of CSS Lint has now made it to As with previous releases, this release saw a mixture of bug fixes and new features. The biggest change you’ll notice on the web site is that rules are now categorized based on how... […]

Introduction to the Page Visibility API

A major pain point for web developers is knowing when users are actually interacting with the page. If a page is minimized or hidden behind another tab, it may not make sense to continue functionality such as polling the server for updates or performing an animation. The Page Visibility API aims to give developers information... […]

Quick and dirty: Spinning up a new EC2 web server in five minutes

One of the things I’ve become more adept at in my new life is dealing with the dizzying array of Amazon web services. The two parts of the Amazon kingdom that I’ve really enjoyed using are S3, their RESTful redundant storage solution, and EC2, the on-demand virtual machine system. Recently, I was in a situation... […]

Book review: Eloquent JavaScript

I’d heard a lot about Eloquent JavaScript by Marijn Haverbeke over the past few months, and so I was greatly interested when asked if I would do a book review. The first thing that struck me about the book was completely visual: the book doesn’t look scary or overwhelming at all. Indeed, everything about the... […]

Introducing CSS Lint

Not too long ago, Nicole Sullivan and I announced that we’ve started working together. Today, we’re happy to announce the release of our first collaboration effort: CSS Lint. The goal of CSS Lint, as you may guess, is to help you write better CSS code. We’ve spent huge chunks of time over the past couple... […]

On leaving Yahoo! and what’s next

After nearly five years, today is my last day at Yahoo!. It really seems like only yesterday I was blogging about my new job and packing up my Peabody, Massachusetts condo to move to California. My plan at the time was to work at Yahoo! for a year to help finish work on My Yahoo!... […]

Better JavaScript animations with requestAnimationFrame

For a long time, timers and intervals have been the state of the art for JavaScript-based animations. While CSS transitions and animations make some animations easy for web developers, little has changed in the world of JavaScript-based animation over the years. That is, until Firefox 4 was released with the first way to improve JavaScript... […]

Copyright © 2004-2016 Nicholas C. Zakas. All Rights Reserved. All code examples on all pages, unless otherwise indicated, are BSD licensed. Blog Feed