About Nicholas C. Zakas

Recent Posts

Speed up your JavaScript, Part 3

Recursion is the enemy of fast-running scripts. Too much recursion can cause the browser to grind to a halt or quit unexpectedly, and so must be addressed a serious performance problem in JavaScript. In part 2 of this series, I wrote briefly about handling too much recursion in a function through memoization. Memoization is a... […]

Speed up your JavaScript, Part 2

Last week, I covered the first reason why JavaScript can take too long to execute: too much happening in a loop. There’s a similar problem with functions in that sometimes they’re just doing too much. Usually this means there’s too many loops (as opposed to too much happening in a loop), too much recursion, or... […]

Free excerpt from Professional JavaScript, 2nd Edition

Just wanted to post a quick note that Eric Miraglia has posted a sample excerpt from Professional JavaScript, 2nd Edition over at the YUIBlog. The excerpt comes from a chapter called Advanced Techniques, in which I explain, well, advanced JavaScript techniques including function currying, advanced timers, and more techniques that every professional front end engineer... […]

The YUI 3 revolution

In the world of software engineering, the emphasis is typically on evolution. You build a good small thing and layer more functionality on top, slowly evolving the framework into something bigger and better than it was originally. This takes a lot of upfront planning, to make sure that the framework has enough hooks to allow... […]

Speed up your JavaScript, Part 1

In my last post, I talked about the conditions under which the dreaded long-running script dialog is displayed in browsers. Browsers will stop executing script either when they’ve executed too many statements (Internet Explorer) or when the JavaScript engine has been running for a specific amount of time (others). The problem, of course, isn’t the... […]

What determines that a script is long-running?

One of the programming barriers that web developers are constantly bumping up against is the dreaded long-running script dialog (also called a runaway script dialog). These frightening dialogs are displayed whenever your JavaScript code takes too long to execute. The cardinal rule of web programming is that a user should never see this dialog, as... […]

Now available: Professional JavaScript, Second Edition

It’s been a long time coming, but Professional JavaScript for Web Developers, Second Edition is now available! You can, of course, order it from Amazon if you’re so inclined, but you should also start seeing it show up in stores everywhere. I was informed at the beginning of this week that the book has started... […]

FireUnit extension for YUI Test

I love unit testing, especially for JavaScript, which is why I wrote YUI Test. John Resig just announced another exciting tool for unit testing called FireUnit. FireUnit is an extension to Firebug (1.2+) and adds another tab to the Firebug console in which test results are output. Also included is a small JavaScript API for... […]

JavaScript block-level variables

JavaScript developers have long bemoaned the fact that there’s no such thing as block-level variables. Block-level variables are variables that exist only within the context of a block statement (such as if) and then are destroyed immediately after the statement is finished executing. You can write code that looks like it should create block-level variables,... […]

Redesign my site contest

So, it’s been a long time since this site’s design has been updated. And I mean, a long time. The entire design is getting a bit long in the tooth and it’s time for a change. Most of my extra time has been either writing books or working on YUI stuff, so my personal site... […]