About Nicholas C. Zakas

Recent Posts

Book review: Nonviolent Communication

Those who know me or have been following this blog for a while know that I have a strong interest in communication and social interaction. I believe that poor communication is one of the largest sources of problems in the world, from interpersonal relationships to business. As such, I’m always looking for ways to tweak... […]

JavaScript error handling anti-pattern

One of the areas I feel lacks enough discussion is error handling in JavaScript. While a lot of thought typically goes into error handling in server software, complete with error logs and monitoring systems, there’s very little emphasis on the same for JavaScript. I’ve tried to raise awareness of this with my Ajax Experience talk,... […]

Computer science in JavaScript: Doubly-linked lists

In my last post, I discussed creating a linked list in JavaScript. This basic data structure is frequently used in computer science programs to teach the concept of pointers. The next step is to investigate the doubly-linked list. A doubly-linked list is similar to a single linked list except that it has bidirectional links between... […]

Computer science in JavaScript: Linked list

When I started writing the first edition of Professional JavaScript, my working title was JavaScript for Web Applications and it featured a lot of content that didn’t make the final cut. I actually have several chapters worth of content just sitting around on my computer. Several of these chapters discuss implementing common computer science patterns... […]

XPath in JavaScript, Part 3

In my previous two posts, I talked about the DOM Level 3 XPath JavaScript implementation available in Firefox, Safari, Chrome, and Opera. Internet Explorer as of version 8 still hasn’t implemented this feature set, but it does have some support for XPath. Unlike the other browsers, Internet Explorer’s XPath functionality is available on XML documents... […]

Who’s tweeting about you?

Over the past few days, I’ve seen several people tweet that they didn’t see messages referring to them in their replies list. This was one of the hard things I learned when I started using Twitter: messages only appear in your replies if your username comes first in the message. If your username comes anywhere... […]

Announcing Even Faster Web Sites

Since I’ve started writing books, I’ve always been the lead author and the main person behind the writing of the book. Trying to get a book out is a lot of work and trying to coordinate everything and write takes a lot of energy. It’s been fun, but a lot of work, and I decided... […]

XPath in JavaScript, Part 2

In my last post, I introduced DOM Level 3 XPath support in Firefox, Safari, Chrome, and Opera. Missing from that post was a discussion about namespaces and namespace resolution in XPath. If you’re simply using XPath to query an HTML document, then the namespace resolver argument for evaluate() will always be null; if you intend... […]

XPath in JavaScript, Part 1

XPath is one of those things you don’t hear too much about these days. In the days when XML ruled, XPath was very important to developers as a means of random access within a large structure. Since JSON was popularized, XPath has gotten less and less attention, but there is still fairly good support for... […]

The art of throwing JavaScript errors, Part 2

In my last post, I talked about how and when to throw JavaScript errors. I got a lot of responses and follow-up questions, so I thought I’d continue the discussion by explaining a little more about how to throw your own errors. To review, the basic syntax is: throw new Error("message"); This works in all... […]