Almost anyone who has a blog has found the entire contents of their blog copied on various blogs around the world. A startup has taken this wholesale stealingborrowingrepublishing syndicating to a new place: professional narration. Unfortunately it takes <sarcasm>a lot of work</sarcasm> to figure out how to ask for permission to reuse someone’s content, as Scott Hanselman recently found out.

There is a trait I have had for a very long time which I only recently consciously realized. It is that I aspire to be a craftsman*. Wikipedia describes a craft as “lying somewhere between an art (which relies on talent and technique) and a science (which relies on knowledge).”1 Something about being at the intersection of art and science has always been intoxicating to me.

One of the slowest things you can do with JavaScript is work with the DOM. And one of the slowest DOM operations is performing a query to find DOM elements. Caching those queries can have significant performance impacts. Here’s how you do it.

Understanding global variables and scope is very important in JavaScript. Misunderstanding what a variable’s scope is can lead odd bugs and broken code. This is made more problematic because the default scope in JavaScript is global. But what is global and how should you use it?

I have been looking for a good solution for deploying my various web projects lately. It needed to be lightweight, easy to use, allow me to revert back quickly, and didn’t require a lot of server resources. I was leaning toward using Git but ended up using BitTorrent Sync.