Making Sausage: Fixing a Previous Git Commit

Let's say I'm six commits ahead of master on my work branch. I've sent out a review, and find out I need to fix something on the 3rd commit. This is my workflow for fixing up the previous git commit: Get to a clean state on the work branch. (git stash if needed) Make the […]

Shuffle Algorithms for Music

Update, March 7, 2014: Improved shuffling has been rolled out on Spotify. More details at the Spotify Labs post, How to Shuffle Songs. Lots of users complain that Spotify's shuffle algorithms aren't really random. This can best be explained by a cognitive bias called the clustering illusion. Users aren't wrong to complain, though. What people […]

Subpixel Letter-Spacing in Webkit

As of sometime in August, Chrome Canary enables subpixel CSS letter-spacing attributes. It's a beautiful thing.

Avoid Faux-Bold with Web Fonts

Only the best web fonts have a full complement of bold, italic, and bold-italic faces. Typekit provides lots of great fonts with a fleet of variants, but if you're on a budget or enjoy the freedom of Google Fonts (as I do), you'll find a lot of great fonts that don't have true bold variants. […]

Converting to Retina

These are my personal recommendations for making the switch to a high-DPI website. 1. Step one: stop working at 72 DPI This one is for the designers: get into the practice of doing everything at high-DPI. If you are working in Photoshop, get to know and love shape layers and the path tool, even for […]

Google Analytics for Backbone Apps

When you build a single-page web app with something like Backbone driving routes and managing browser history, the page load event is only going to happen once at the beginning of the session. The standard Google Analytics javascript snippet doesn't work so well for these single-page apps. You should trigger an Analytics event when the […]

Chat for the Workplace

If you have a big company with engineers in many time zones, you need to establish some rules for realtime communication. I will not address email or phone/video calls as a solution, because email is too asynchronous (you don't stare at your email waiting for responses) and phone calls are too synchronous (calls are either […]


"Click-through" is a term for being able to interact with buttons and controls on a background application without clicking first to activate it. Click-through is normally disabled in OS X. There are some exceptions where the first click is active, like iTunes player buttons, Safari UI, and Chrome UI (but not active webpage content area). […]