• Asynchronous Ad Loading With Iframes

    I’ve written a few posts about working with ad servers (see here and here) and in both, the discussion in the comments sections steered into questions about ad performance. There are numerous performance issues related to ad loading but the main issue is the blocking effect caused by third-party network requests implemented with document.write(). Here’s ...

  • Tracking iOS Web App Usage

    Via a handful of meta tags and link tags, web apps on iOS can be launched from the home screen and run in fullscreen mode to enable a more native-like experience for the user. Turning your website or app into a “home screen web app” is not difficult but it does require a chunk of ...

  • Avoid unnecessary redirects on mobile sites

    Avoiding unnecessary redirects is a general performance best practice but in some cases it can be easy for unwanted redirects to sneak into your application. The performance penalty rendered by unnecessary redirects is of particular importance for mobile users who may be dealing with high-latency, low-bandwidth connections. Here’s one scenario to watch out for when developing ...

  • Interaction design pattern for brand interaction

    Github does this clever thing where if you right-click on their logo, a modal window opens with options to download Github’s brand assets. Pretty slick. It anticipates a common action (right-clicking a logo to download it as an image) and it provides the most logical, most direct path possible for accessing the logo itself: clicking ...

  • Squander

    A few weeks ago Aaron Gustafson wrote a post explaining how third-party widgets can compromise user privacy by tracking users’ browsing activity. It’s something many developers are familiar with but Aaron took the additional step of detailing a roll-your-own solution for popular third-party widgets. It’s good. If you make websites you should check it out. The ...

  • Third-Party Cookies Explained

    For reasons I don’t understand, the subject of HTTP cookies tends to attract confusion, vague understanding, and outright misinformation. For instance, you may have read that cookies are scripts, or “programs”, or software, all of which are untrue. You may have read that cookies can transmit viruses or install malware on your computer. Also untrue. ...

  • Should optional link disabling for touch interfaces be a thing?

    I don’t know if this happens to you but every now and then when I’m reading an article on my iPhone or iPad, I touch the screen to scroll and my finger inadvertently bumps into a link. Woops. Most times it’s not a problem but it can be annoying if I’m on a low-bandwidth connection, ...

  • Tracking Scroll Depth with jQuery and Google Analytics

    Scroll depth—the measure of how far a user scrolls on a particular page—is an interesting but lesser-known engagement metric. It’s not something you can find in your Google Analytics or Omniture account but you may be familiar with it from other analytics services (e.g., Chartbeat). If you’ve ever participated in an ontological debate about “the fold”, ...

  • firstImpression.js: A micro-library for detecting new visitors

    firstImpression.js is a micro/nano-library (1 kb minified) that answers the simple question, “Has this user visited this site before?” The detection doesn’t require much logic, so the majority of the code is just a Plain JavaScript port of the popular jquery.cookie plugin. Using it Writing and reading your own cookies is easy enough but if ...