Łukasz Langa


ambv on GitHub. Python core developer, Python 3.8 release manager, creator of Black, pianist, dad. Likes analog modular synthesizers, immersive single-player role-playing games (Fallout, Elder Scrolls), and single malt Scotch whisky.



AsyncIO and Music (2019)

Can Python help a musician play hardware instruments? Is there anything specific about AsyncIO that makes it well suited to the task? Come see how AsyncIO can be used to aid music production and realtime performance through MIDI processing.

First, we will cover the transformations of the incoming MIDI signal, that is helping the musician play his hardware instruments in new, unique ways. Examples of such transformations we will cover are arpeggiators, MIDI channel multiplexers, legato-based portamento.

Then we'll move onto generative music, that is sequences generated procedurally. The musician specifies the tempo and the music scale, and a Python program generates music progressions on its own.

We'll close with some thoughts on audio signal processing and the challenges faced there.


Gradual typing of production applications (2017)

Thanks to Python's dynamic nature and minimal boilerplate, it's easy to start a project. But how do you keep it maintainable and easy to understand as it grows beyond a million lines of code? Come learn how annotating it with types makes your program better for human readers and more robust during execution. No prior Haskell experience required!

In an hour, I'm going to demonstrate real world problems of big software projects that type annotations solve. The talk is going to explain how you can introduce typing to an already mature application, what is a sensible workflow to follow and how to solve common gotchas. No ducks were harmed in the making of this talk.


Thinking in coroutines (2017)

The wait for the killer feature of Python 3 is over! Come learn about asyncio and the beauty of event loops, coroutines, futures, executors and the mighty async/await. Practical examples. Bad puns. Pretty pictures. No prior asyncore, Twisted or Node.js experience required.

Running on every production server at Facebook, asyncio is a proven framework that lets us work with concurrent code that is shorter to write, easier to read, more friendly to test and often even faster to run.

This talk intends to demystify the core concepts behind asyncio, showing how basic they really are. We will use actual asyncio source code to explain each one, including:

  • the event loop
  • a blocking call
  • a coroutine
  • a task
  • a future
  • thread pool executors and process pool executors
  • async/await/yield from