mark nottingham

Talks

I give talks on HTTP, Web architecture, caching and other topics and at a variety of tech conferences. This page contains many (but not all) of them, grouped into themes. Note that all talks are here as given, and may so the information in them isn’t necessarily current.

Web Caching

Caching is amazing. It lets you scale something out, hides latency complexity, and incrementally add new optimisations over time. I’ve been fascinated by HTTP caching ever since I realised that it helped reduce user-perceived latency and scale our network’s capacity at the same time - both critical things on the Australian Internet in the 90’s.

That fascination has led me to deploy caches at universities, ISPs, inside Fortune 20 companies, and later to work for a number of different Content Delivery Networks. Along the way, I’ve given a few talks about it.

Web2.0 on Speed was the first public peek at what I was doing with caching and HTTP at Yahoo!. Given at XTech ‘06.

Leveraging the Web for Services at Yahoo! digs more into how we used HTTP caching in Yahoo!’s service layer to scale out the ‘big’ media properties (e.g., sports, movies). Given at QCon 2008.

Stupid Web Caching Tricks covers how caching can scale out HTTP services more generically. Given at Velocity 2010.

Browser Caching and You: A Love Story was an early look at how browser caches work, and might be improved. Later, I wrote about how they actually behave, eventually resulting in the cache-tests.fyi suite.

Internet Evolution

One of the reasons the Internet has lasted as long as it has is that it can evolve – it can change to meet new requirements, adapt to new environments, and take advantage of new developments. This isn’t easy – there is no way to have a ‘flag day’ for the Internet and simultaneously upgrade everyone’s computers – but with careful forethought (especially, appropriate extensibility in protocols), it’s possible.

I’ve been lucky enough to participate in several efforts to evolve key components of the Internet.

My first talk about these topics was What’s up with HTTP?, given at Boeing, Bell Labs and a number of other places in about 2009. After giving it at Google, Mike Belshe invited me to a dinner where we talked about SPDY, the project he and Roberto Peon were working on. That eventually begat HTTP/2 and eventually HTTP/3, spawning a number of talks including (in rough chronological order):

All of the changes in one of the most popular Internet protocols didn’t sit well with everyone, especially network operators. I talked about Internet Protocol Evolution at AUSNOG 2017 to raise the visibility of these changes to network operators and get their input on the potential impacts.

Server Push was introduced in HTTP/2 with the tantalising possibility of improving protocol performance. By 2018, it was becoming apparent that we weren’t seeing those results on the running Internet, and that there were some significant downsides to adding it to HTTP. I discussed these issues in To Push or Not To Push, given at WebDirections Summit 2018.

After HTTP/2 and HTTP/3, one of the last parts of HTTP that hasn’t been modernised is the protocol headers. Effectively free-form text (and sometimes not even text), they’re error-prone, often a security problem, and largely unoptimised. Structured Headers is a talk about an effort to modernise this last bit of the protocol. Given at London Web Perf, February 2020.

The Web and the Internet

I’ve given a few talks about the wider Internet in general, including:

Bits on the Wire was a bottom-to-top survey of how the Internet works. Given at Velocity 2013.

What’s happening in TLS? was a survey of recent developments in Transport Layer Security, given at WebDirections Code 2014.

Internet Policy and Governance

Aside from technically-focused work, I’m also increasingly interested in how the Internet is governed and how it impacts society.

For the Users is a look at the motivations for writing RFC 8890 given as a keynote at SymfonyWorld 2020.

Keeping the Watchers at Bay is an overview of the efforts to prevent pervasive monitoring in Internet protocols, given at Linux.conf.au 2020.