I have given numerous conference tutorials over the years. These are typically advanced 3-hour deep-dives into some topic of interest. In some cases, conference video is available (although if a screencast is also listed, you might want to watch that instead as it gives an unobstructed view of my screen). Tutorial slides are detailed and meant to stand on their own. If you have the time to work through these, you will learn a lot. If you're looking for my conference talks, go here. You can also find older tutorials on my SpeakerDeck page.
October 14, 2019
PyCon India, Chennai • screencast
This screencast is a re-recording of a live-coded workshop I presented at PyCon India. The original session had numerous audio/visual issues. In this tutorial, I talk about the foundations of asynchronous programming and describe the inner working of working with callbacks and coroutines.
Explore the mysterious world of lambda calculus and functional programming.
A deep dive into the world of modules, packages, and the inner workings of Python's import statement. One of the goals of this tutorial is to explore some of the advanced magic used in larger frameworks and applications. Also, to explain some dark corners of import.
Part 3 of the generator/coroutine tutorial trilogy. This installment features more about concurrency, generator delegation (yield from), and the foundations of the asyncio module. Includes other magic such as the use of generators for defining context managers and eliminating deep recursion. This tutorial represents about the furthest limit one can push Python's yield statement before it turns into a singularity or it becomes the new async/await syntax in Python 3.5.
A delightfully devilish tour through various metaprogramming features of Python. Includes decorators, class decorators, descriptors, metaclasses, import hooks and more. Although most of the topics also apply to Python 2, the tutorial covers a variety of features only found in Python 3. You might get fired if you apply too many of these things to the code at work.
Improve your Python skills by playing around with some public datasets. In this tutorial, I look at the Chicago Transit System, Food Inspections, Potholes, and more.
If you're going to make the jump from Python 2 to Python 3, some of the most problematic issues are related to the new I/O system. In this tutorial, we dive into Python 3's I/O system and how it might impact your existing code. An earlier version of this tutorial was also presented at PyCon 2011 in Atlanta.
A six-hour overview of the Python programming language aimed at systems programmers. Part 1 is mostly focused on basic language features, data structures, and files. Part 2 is focused on program organization including functions, modules, and classes.
An introduction to concurrent programming in Python, primarily aimed at systems programmers. Topics include threads, thread synchronization, multiprocessing, message passing, and event-driven programming. Naturally, the global interpreter lock (GIL) is also mentioned.
A somewhat condensed version of the "Generator Tricks for Systems Programmers" and the "Curious Course on Coroutines and Concurrency" tutorials mixed together for an audience of systems programmers.
Part 2 of the generator/coroutine tutorial trilogy. In Python 2.5, the yield statement was enhanced so that it could receive values sent to it. Functions that utilized this feature were said to be "coroutines" and had new magical powers. In this tutorial, I go on a quest to explore coroutines and to find out what good are they? This tutorial is now a bit historical, but the topics form the early foundations for Python features to follow such as generator delegation (yield from) and asynchronous I/O support (async/await).
Part 1 of the generator/coroutine tutorial trilogy. This tutorial focuses on using generators as an improved way to describe iteration. A major part of the tutorial is about various forms of stream-processing, workflows, and pipelines. Ways in which generators interact with threads, network programming, and other systems programming topics are also covered. The tutorial has been recently updated and revised for Python 3.7.
The Swig project is one of the earliest tools for integrating C/C++ code with Python. It continues to have a variety of advanced features that have yet to be replicated in similar tools. In some sense, this tutorial is an advanced retrospective of the Swig project and how it actually works under the covers. If you've ever encountered Swig and had your head exploded, this tutorial might provide some answers. Or maybe it will just raise new questions.
Pssst... you should come to Chicago and take a class. Yes, you.