Talks and Presentations

AMQP and Beyond: Messaging by Extending RabbitMQ

Erlang Factory, San Francisco, 26 March 2010.

I presented an introduction to the use of messaging middleware and an overview of RabbitMQ before getting into details of the new RabbitMQ plugin system and some examples of its use, namely a real-world example of a Github commit-notification transformation and relaying system, and a last-value-cache setup for a toy stock-ticker system.

Slides, Video forthcoming.

Squeak: a Compositional System

Cambridge University Engineering Design Centre, Cambridge, 9 January 2010.

I presented the Squeak Smalltalk system to interested faculty and students at the EDC, touching on the uniform object-oriented nature of the system and its potential for exploratory cross-platform development, and discussing some of its strengths and weaknesses.

Slides (rendered directly from my Smalltalk image)

Achieving Scale with Messaging and the Cloud

Online Gaming High Scalability Special Interest Group, London, 9 July 2009.

I spoke both very generally about messaging—what it's for, why you might like to use it, and a few pointers in the directions of examples of messaging being used at scale in the cloud—and about some of the techniques me and my colleagues at RabbitMQ have been exploring for scaling up messaging-based distributed systems.

Video, Slides.

RabbitHub: RabbitMQ + Mochiweb = PubSubHubBub

Erlang Factory, London, 25 June 2009.

This talk was organised extremely late in the day, so I wasn't even billed as speaking! In the end, I managed to sandwich in my talk on RabbitHub between Alexis's introduction and Matthew's detailed presentation of our approach to high-speed persistent messaging for RabbitMQ. RabbitHub is an implementation of PubSubHubBub using Erlang, Mochiweb, and RabbitMQ.

The slides make heavy use of Keynote animation, and don't render to PDF very well. Please ask if you'd like to take a look at them, or take a look at RabbitHub's README for a bit more detail on what it is, how it works, and why it's interesting.

RabbitMQ's Internal Architecture, Federating Exchanges, and Redundancy for High Availability

Thoughtworks's London Geek Night, London, 12 May 2009.

To begin with, I gave an introduction to some of the internal architecture of the current RabbitMQ server, including a quick discussion of the way it saves messages reliably on disk, and an overview of some of the ways RabbitMQ's clusters can be arranged. The bulk of the talk covered approaches to federating AMQP servers, relaying messages between them while avoiding loops, and strategies for high data- and service-availability.

There was also quite an interesting Q-and-A session at the end, which is captured on the video linked below.

Video, Slides (alternative link), Blog.

Polling Sucks: RabbitMQ and Internet Messaging

Bay Area Functional Programmers, San Francisco, 8 April 2009.

I discussed a few different approaches to an internet-scale messaging fabric1, and a tentative architecture for use in classifying and evaluating the approaches. To begin with, I introduced RabbitMQ and gave a toy example of an application making use of its services. Then I talked in detail about the areas I've been exploring in trying to construct a model of messaging middleware that is simple, yet sufficient to describe messaging as it is actually used on the internet. Finally, I spoke about a couple of pet projects: the use of object capabilities in a RESTful manner, and my ReverseHttp project for enrolment and participation in HTTP networks.

I was actually quite ill on the day of the presentation, so the talk didn't go as well as I had hoped it would. The video of the talk below doesn't capture all of what was discussed either, which is a shame.

Video, Post.

RabbitMQ: An Open Source Messaging Broker That Just Works

Google Tech Talk, London, 25 September 2008.

Matthias, Alexis and I presented RabbitMQ to Google Engineers. My part of the talk focussed on messaging at internet scale, and the interesting relationship between data-in-motion (messages) and data-at-rest (state). I talked briefly about an ideal synthesis of all the messaging technologies in use on today's internet, and about approaches to getting a better data language for use with them. At the time, we'd just finished building the XMPP-to-RabbitMQ adapter, so I also mentioned some of the lessons I'd learned from that experience.

Video (my part starts at 33:18), Slides, Blog.

Distributed Version Control in JavaScript (or any other language that takes your fancy)

Osmosoft's Open Source Show'n'Tell, London, 5 June 2008.

I presented the results of the experiments in DVCS I'd been conducting. The essence of the talk is that DVCS is conceptually much simpler than people think, implementable in a very small amount of code that gives a very powerful synchronisation system, and that working with it was a generally instructive and entertaining experience. I also demoed the systems I'd built: a standalone Javascript DVCS for managing JSON data, that can run in the browser, and an embedding of the DVCS into TiddlyWiki, a single-page HTML+Javascript Wiki application, to give it branching and merging abilities.

The slides, linked below, are written using S5 and so can run all the demo code directly in the viewer's browser.

Video, Slides.

RabbitMQ: Open-Standard Business Messaging in 5000 lines of Erlang

Erlang Exchange, London, 2008.

This was the first public presentation of RabbitMQ's implementation, and it contains a lot of interesting technical detail on the approach to concurrency we took, the elegance of the mapping of AMQP onto Erlang/OTP's facilities, and the ways we use Erlang/OTP's built-in management and monitoring features in running and developing the system.


Lectures on Content Management Systems, Model-View-Controller architecture, and Domain-Specific Language design

These were given as part of a final-year undergraduate multimedia course at London's University of Westminster in 2005.

Notes, Materials, Blog.

  1. Other than email, and IP itself, of course!