Łukasz Langa


Python committer since 2010. Chronic perfectionist. Pianist. Dad. In his free time uses Python 3 to help Facebook move fast.



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