Speaking

Note: I am not currently available for speaking engagements.

The following is a list of talks I’ve given over the years. This list is not complete, but is a good-faith effort to record my various speaking engagements.

2013

Browser Wars Episode 1 devLink, Chatanooga, TN, August 2013

Scalable JavaScript Application Architecture Code as Craft, New York, NY, August 2013 (Slides)

Enough With the JavaScript Already! Open Web Camp, San Jose, CA, July 2013 (Slides)

Enough With the JavaScript Already! Velocity, Santa Clara, CA, June 2013 (Slides)

A “Thank You” Can Change Your Life Fluent, San Francisco, CA, May 2013 (Slides)

Maintainable JavaScript HTML5DevConf, San Francisco, CA, November 2012 (Slides)

The Pointerless Web Tech Xploration, San Jose, CA, February 2013 (Slides)

2012

Maintainable JavaScript The JavaScript Summit, Online, November 2012 (Slides)

JavaScript Timers, Power Consumption, and Performance Velocity, Santa Clara, CA, June 2012 (Slides)

Maintainable JavaScript Fluent, San Francisco, CA, May 2012 (Slides)

Progressive Enhancement 2.O: Because the Web Isn’t Print Bayjax Meetup, Sunnyvale, CA, March 2012 (Slides, Video)

2011

High Performance JavaScript TripAdvisor, Boston, MA, November 2011  (Slides) (Company event, not open to the public.)

Scalable JavaScript Application Architecture Full Frontal, Brighton, England, November 2011 (Slides)

High Performance JavaScript Boston Web Performance Meetup, Boston, MA, November 2011  (Slides)

High Performance JavaScript Adobe MAX, Los Angeles, CA, October 2011  (Slides) – named Max Master for 2011

Scalable JavaScript Application Architecture OSCON, Portland, OR, July 2011  (Slides)

High Performance JavaScript San Francisco Web Performance Group, San Francisco, CA, June 23, 2011  (Slides)

Progressive Enhancement 2.0: Because the Web isn’t Print SF Tech Talks, San Francisco, CA, June 21, 2011 (Slides)

Mobile Web Speed Bumps WebDirections Unplugged, Seattle, WA, May 12, 2011 (Slides)

High Performance JavaScript Zynga, San Francisco, CA, May 6, 2011 (Slides) (Company event, not open to the public.)

Progressive Enhancement 2.0: Because the Web isn’t Print Netflix, Los Gatos, CA, May 2, 2011 (Slides) (Company event, not open to the public.)

High Performance JavaScript Amazon, Seattle, WA, May 2011 (Slides) (Company event, not open to the public.)

Progressive Enhancement 2.0: Because the Web isn’t Print jQuery Conference SF Bay Area, Mountain View, CA, April 2011 (Slides) - #1 highest rated talk at the conference

2010

YUI Test: The Next Generation YUIConf 2010, Sunnyvale, CA, November 2010 (Slides, Video)

High Performance JavaScript YUIConf 2010, Sunnyvale, CA, November 2010 (Slides)

High Performance JavaScript Fronteers 2010, Amsterdam, The Netherlands, October 2010 (Slides, Video)

High Performance JavaScript WebDirections USA, Atlanta, GA, September 2010 (Slides)

Accessibility on the Yahoo! Homepage Bayjax Meetup, Sunnyvale, CA, June 2010 (Video)

Performance on the Yahoo! Homepage Velocity, San Jose, CA,  June 2010 (Slides) – #4 highest rated talk at the conference

High Performance JavaScript jQuery Conference SF Bay Area, Mountain View, CA, April 2010 (Slides)

Responsive Interfaces – High Performance JavaScript Bayjax Meetup, April 2010 (Slides, Video)

Accessibility on the Yahoo! Homepage CSUN Accessibility Conference, San Diego, CA, March 2010

2009

Scalable JavaScript Application Architecture Bayjax Meetup, Sunnyvale, CA, September 2009 (Slides, Video)

Speed up your JavaScript Google Exponents, Mountain View, CA, June 2009 (Slides, Video)

Writing Efficient JavaScript Velocity, San Jose, CA, June 2009 (Slides)

JavaScript Variable Performance Mountain View JavaScript Meetup, Mountain View, CA, January 2009 (Slides)

2008

The New Yahoo! Homepage and YUI 3 San Francisco JavaScript Meetup, San Francisco, CA, November 2008 (Slides)

Enterprise JavaScript Error Handling The Ajax Experience, Boston, MA, September 2008 (Slides)

Test Driven Development with YUI Test The Ajax Experience, Boston, MA, September 2008 (Slides, Video)

Test Driven Development with YUI Test Yahoo! Front End Engineering Summit, Sunnyvale, CA, March 2008 (Video)

2007

Maintainable JavaScript Yahoo! Front End Engineering Summit, March 2007 (Slides, Video)

Talk Descriptions

Accessibility on the Yahoo! Homepage

Accessibility isn’t hard, and contrary to popular belief, doesn’t take a lot of extra effort. Learn how the Yahoo! homepage team built accessibility into the product development cycle with the goal of providing the best possible user experience to everyone. Using a combination of progressive enhancement, ARIA, and a little ingenuity, even the most complex and dynamic features on the new Yahoo! homepage’s are available to everyone in interesting and fun ways.

Scalable JavaScript Application Architecture

Building large web applications with dozens of developers is a difficult task. Organizing the engineers around a common goal is one thing, but organizing your code so that people can work efficiently is another. Many large applications suffer from growing pains after just a few months in production due to poorly designed JavaScript with unclear upgrade and extension paths.

Learn the tips, tricks, and techniques that allowed large sites such as My Yahoo! and the Yahoo! homepage to continue to grow, scale, and change over time without throwing away previous work.

This talk isn’t specific to any JavaScript library, rather, it gives you new ways to apply the libraries you’re already using. The principles of good, loosely-coupled design apply to any system, and you’ll learn how this can help your application today.

High Performance JavaScript

For much of its existence, JavaScript has been slow. No one complained until developers created complex web applications with thousands of lines of JavaScript code. Although newer JavaScript engines have improved the situation, there’s still a lot to understand about what makes JavaScript slow and what you can do to speed up your code.

Responsive Interfaces – High Performance JavaScript

Part of an ensemble night of co-authors for the book High Performance JavaScript

  • Stoyan Stefanov on DOM Scripting – building responsive UIs by understanding the price of DOM access, updates, reflows and repaints
  • Nicholas Zakas on Responsive Interfaces – When written incorrectly, JavaScript can slow down an entire page’s user interface. Learn how JavaScript is tied to a web page’s UI, the limits that browsers place on JavaScript execution, and how to ensure a fast and responsive UI.
  • Ross Harmes on Ajax – A quick introduction to Multipart XHR, it’s strengths and it’s (possibly fatal) weaknesses.
  • Julien Lecomte – Emphasis on JavaScript build systems and it’s importance
  • Matt Sweeney – I’ll be introducing the Tools chapter, which walks through a suite of tools to help developers identify various types of bottlenecks in their system.

Performance on the Yahoo! Homepage

The new Yahoo! homepage, released in 2009, had a high bar to meet in terms of performance. The classic version of the page, a mostly static one, set lofty expectations for the newer version. Even though the new page has more options for customization and personalization, as well as being far more interactive, the performance goals remained the same. The team planned for performance from the beginning, laying groundwork that would allow us to avoid common performance pitfalls.

The team scoured Yahoo!‘s Exception Performance guidelines and went beyond them, coming up with several twists that introduced incremental performance improvements. Every byte was counted, everything measured, to ensure we could meet the previous version’s metrics.

In this talk, I’ll go over the tactics that we took and the performance differences we made. Some of the topics include:

  • How we decreased the average time to open up an application from 7 seconds to less than 2.
  • How lazy loading of resources sped up the user experience.
  • How we progressively trimmed kilobytes of data from the initial payload.
  • How we changed our page flushing strategy to alter perceived performance.

Progressive Enhancement 2.0: Because the Web isn’t Print

In the beginning, progressive enhancement was simple: HTML layered with CSS layered with JavaScript. That worked fine when there were two browsers, but in today’s world of multiple devices and multiple browsers, it’s time for a progressive enhancement reboot. At the core is the understanding that the web is not print – the same rules don’t apply. As developers and consumers we’ve been fooled into thinking about print paradigms for too long. In this talk, you’ll learn just how different the web is and how the evolution of progressive enhancement can lead to better user experiences as well as happier developers and users.

Writing Efficient JavaScript

This talk walks through several techniques for speeding up JavaScript. The information is a presentation of the topics discussed in my chapter for the book, Even Faster Web Sites. Topics include:

  • Managing scope  learn why scope is important and how to manage it for optimal performance.
  • Data access – learn what types of data access take longer in JavaScript and how to mitigate their effects.
  • Flow control – learn how to use if statements and loops efficiently.
  • Avoid long-running scripts – learn what causes the browser to stop executing your code and what to do to avoid it.

YUI Test: The Next Generation

JavaScript testing has grown by leaps and bounds over the past few years. When YUI Test was first introduced in 2007, it was just the first step in a long process of bringing test-driven development to the front end. YUI Test evolved with the release of YUI 3 to introduce mock objects as feedback indicated a need. As feedback continued to come in, YUI Test continued to evolve. Learn about the next version of YUI Test, how it makes testing any JavaScript code easier, and the brand new tools that allow you to integrate your testing into a continuous integration environment.

JavaScript Timers, Power Consumption, and Performance

setTimeout() and setInterval() are part of every web developers’ toolkit. Many use these timers for animations and for deferring actions until later, all without really understanding how timers work and their performance implications.

This talk explores the browser UI thread and how timers influence it. You’ll learn how timers actually work, why they behave the way they do, and whether you’re using them in the most efficient manner possible. Learn how timers affect power consumption (especially important on mobile devices and laptops) and how the way timers work has changed over the years to address today’s power needs.

You’ll also learn how you can use new W3C Performance APIs, requestAnimationFrame() and setImmediate(), instead of timers to get better performance and battery life.

Maintainable JavaScript

Maintainable JavaScript tackles the difficult problem of writing code as part of a large team. When you’re writing code that only you will change, there aren’t any issues. As soon as you’re writing code that someone else is going to also be changing, you need to think harder about the decisions you make. Will another developer be able to understand what you did? Did you organize your code in such a way that it’s easy to adapt and extend? Long after you’re gone, will others be able to continue using the same code, or will it need to be rewritten because no one understands it? This session shows the best practices used by teams to ensure their JavaScript is as maintainable as possible.