This is a list of some of my presentations and some of the places I've presented them. This list is woefully incomplete: if there's anything missing or you have some missing talk materials, please get in touch!

Building Secure Software

How do you build secure software? Why do we see bad security track records in projects that otherwise seem to tick all the right engineering boxes? Why is communicating about security issues so painful? More importantly: how can we do all of these things better?

Slides (HTML), source repo. This is a full-length talk (30 minutes).

Presented at PyCon 2015 (video) and Geekdom.

Distributed Systems 101

An opinionated introduction to the basics of distributed systems theory and practice.

Slides (HTML), source repo. This is a keynote-length talk (45 minutes).

Presented at PyCon 2015 (video).

Clojure Intro

An introduction to Clojure, a pragmatic, modern Lisp for the JVM and other platforms. Focus on the new (and old) stuff it brings to the table, such as functional programming, pervasive immutability, strong concurrency primitives, and the unmatched flexibility of Lisp.

This lecture was part of Comparative Programming Languages (B-KUL-H0S01A), which is a part of the Master of Engineering degree. Thanks to professor Frank Piessens for the opportunity to give this lecture in his class, and Thomas Goossens of BeClojure for organizing the event.

Slides (HTML), source repo. This is a lecture-length talk (120 minutes).

Twisted Mixing

A common criticism of the Twisted framework is that it supposedly "infects" all your code. Supposedly, you're forced to use Twisted-specific code exclusively as soon as you start using it. You wouldn't be able to use the majority of Python packages. I'm convinced that's a myth; this talk attempts to debunk it.

Slides (HTML), source repo. This is a full-length talk (30 minutes).

Presented at PyCon 2014 (video) and Pykonik.

Crypto 101

This is a high-level whirlwind tour of modern cryptography, starting with a simple XOR operation and ending with an explanation of how TLS works in your browser.

(Please note that this is Crypto 101 the talk, not the introductory crypto course of the same name. I started working on the course after giving this talk.)

Slides (Keynote), source repo. This is a keynote-length talk (45 minutes).

Presented at PyCon SE 2014 (soon!), PyCon 2013 (video) and Pykonik (video).

Fractal Architectures

Traditional software architectures rely on distinct layers with separated responsibilities. Scaling those layers happens separately. Fractal architectures invert that idea, creating independent and atomic units that can be easily scaled horizontally, in order to produce highly robust low-latency systems.

Slides (Speaker Deck), slides (Keynote), source repo. This is a full-length talk (30 minutes).

I thought I lost these slides. I recovered them thanks to Speaker's Corner, the South African public speaking company that provided their services at PyCon ZA. I'd like to thank Sam Manclark and Speaker's Corner for helping me get them back.

Presented at DjangoCon EU 2013 (video), Pykonik, PyCon ZA 2012 (video) and PyCon PL 2012.

How to store passwords

Most real-world password stores are horribly broken, either completely ignoring the security concerns regarding password storage, or using outdated and flawed technology. This talk explores how to do password storage securely.

Slides (Google Docs). This is a lightning talk (5 minutes).

Presented at PyCon DE 2012, PyCon ZA 2012 and several other places.

Continuous Deployment

Modern development practices combined with flexible infrastructure allow us to turn the old multi-month development cycles into multi-minute ones. This talk explores some of the hows, whys, benefits and growing pains of building a continuous deployment system.

Slides (Google Docs). This is a full-length talk (30 minutes).

Presented at PyCon 2011 (video).