About Nicholas C. Zakas

Recent Posts

Browser detection versus feature detection

One of the more controversial chapters in my first book was the chapter on browser detection. I got flaming emails, blog comments, and reviews about the user-agent string detecting method, telling me that I was falsely promoting an outdated methodology for dealing with browser differences. Feature detection is the ideal, they all said, and that... […]

Minimizing closure usage

Been meaning to blog about this for a while, but just kept forgetting. Over at the Atlas and More Blog, Bertrand Le Roy has posted two articles on converting object definitions from using closures to using prototypes. Though the postings are mostly about using the latest version of Atlas, there is some good discussion of... […]

Congratulations to YUI team

The folks over at Linux Journal have named the Yahoo! User Interface (YUI) Library as the Editors’ Choice Software Module or Library for 2006! Congratulations to the team, they’re some of the brightest, hardest-working people in the tech industry and they consistently produce quality stuff. Even before I started at Yahoo!, the YUI Library was... […]

Adobe open sources Flash JavaScript engine

The other day, it was announced that Adobe would be submitting the source code of Tamarin, the JavaScript engine used in Flash, to Mozilla for open sourcing. In turn, Mozilla will be using it in future editions of Firefox. Why does this matter? The most important thing is that Tamarin is a just-in-time JavaScript compiler,... […]

The absorb() method

After reviewing the comments from everyone on the previous post, I’ve come up with the next generation of the absorb() function: the absorb() method. It occurred to me that this function really was begging to be a method of Object. So, without further adieu: Object.absorb = function (destination /*:Object*/, source /*:Object*/, overwrite /*:Boolean*/) /*:Object*/ {... […]

IE’s innerHTML problem

How do you remove content from an element that’s already been added? The fastest way is to use innerHTML and set it to an empty string. Boom! The content is now gone. This is much faster than going through and removing each child using removeChild(). But there’s a problem with this approach in Internet Explorer.... […]

The absorb() function

From time to time I see people blogging about their most favorite or useful functions. Here’s a little function I wrote called absorb(). Its purpose is quite simple, to have one object “absorb” another, i.e., an object receives all of the properties and methods of another object. The difference from other similar functions is that... […]

The case against Hungarian notation in JavaScript

For years, I’ve used Hungarian Notation when programming in JavaScript. Both of my books use Hungarian notation for all code examples and recommend that others do the same. Now, I’ve been aware of the arguments against using Hungarian notation for a while as well, but most just said, “don’t use it” without offering much in... […]

Update to zXml

The technical editor for Professional Ajax, Alexei Gorkov, just pinged me with some information that was put online last week: Using the right version of MSXML. Basically, the post says that we should all be using MSXML versions 6.0 or 3.0 as a fallback, but not 4.0 or 5.0. I did get an email from... […]

Avoiding plagiarism

In college, plagiarism is a dirty word. Most schools threaten expulsion for this offense, regardless of how it occurred. In the word of writing, plagiarism is also a huge concern, as it can cost firms and authors a lot of money for copyright infringement. The problem is that plagiarism is not always intentional, though that... […]