I regularly give talks at conferences, companies, and meetups. The list below is a good-faith effort to document the talks I’ve given so that attendees can find additional resources related to the talk they’ve seen.

If you’d like me to speak at your conference, company, or meetup, please note:

  • Companies – I charge a fee for speaking at companies. I’ll drive up to an hour to get there at no additional cost.
  • Conferences – Negotiable depending on the conference, location, amount of travel required, etc. I generally will find a way to make it to conferences if my schedule allows.
  • Meetups – No charge if I’m already in the area and able to make it.
  • OtherContact me and let’s discuss.

Upcoming

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)

2013

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.