Talks
Events

PyCon 2019

Talks

Getting to Three Million Lines of Type-Annotated Python

Dropbox is a heavy user of the mypy type checker, recently passing three million lines of type-annotated Python code, with over half of that added in 2018. Type checking is helping find bugs, making code easier to under stand, enabling refactors, ...

Michael Sullivan

Python

Measuring Model Fairness

When machine learning models make decisions that affect people’s lives, how can you be sure those decisions are fair? When you build a machine learning product, how can you be sure your product isn't biased? What does it even mean for an algorithm...

J. Henry Hinnefeld

Python

The Elephant and the Serpent: Using Mastodon with Python

For the past two years, an Open Source social network has been building on the foundations laid by years of Open Web work and quietly growing to provide a viable alternative to the social network megacorps we’ve grown used to. It’s name is Mastodo...

Philip James

Python

Floats are Friends: making the most of IEEE754.00000000000000002

Floating point numbers have been given a bad rap. They're mocked, maligned, and feared; the but of every joke, the scapegoat for every rounding error. But this stigma is not deserved. Floats are friends! Friends that have been stuck between a r...

David Wolever

Python

Shipping your first Python package and automating future publishing

One of the best things about Python is the vast ecosystem of packages available on the Python Package Index. Shipping your first Python package can be intimidating. This talk aims to remove the mystery of Python packaging and enable you to share y...

Chris Wilcox

Python

Break the Cycle: Three excellent Python tools to automate repetitive tasks

Find yourself doing the same thing over and over again? Does it take more than one command to run your tests? build your docs? publish your project? deploy? It is often difficult to share your code because others can run or test it? Does your R...

Thea Flowers

Python

Making Music with Python, SuperCollider and FoxDot

Learn how to make music with Python, SuperCollider and FoxDot. We'll create a song together in this live coded adventure. Slides can be found at: https://speakerdeck.com/pycon2019 and https://github.com/PyCon/2019-slides

Jessica Garson

Python

Syntax Trees and Python - Automated Code Transformations

Manually updating a million line code base is tedious. Thankfully syntax trees provide a safe and quick way to automatically apply repetitive transformations. Leveraging syntax tree based tooling (based on lib2to3), has been a critical component ...

Joe Gordon

Python

How to Think about Data Visualization

The Python world has a staggering array of data visualization tools, and choosing which to use can seem like a daunting task. But which tool you use is far less important than how you use it. In this talk I’ll walk through some of the important co...

Jake VanderPlas

Python

Thinking Inside the Box: How Python Helped Us Adapt to An Existing Data Ingestion Pipeline

We will cover how we used Python to adapt to a large institutional processing setup. We used Python to create the definitions, configuration files, and supplementary metadata for each of the weather radars we worked with. We used a variety of cu...

Eddie Schuman

Python

Fighting Climate Change with Python

Methane, the primary component of natural gas, is a 60 times more powerful climate change agent than carbon dioxide. Current technologies for finding methane leaks in oil and gas infrastructure rely on driving well to well with a handheld camera....

Matthew Gordon

Python

8 things that happen at the dot: Attribute Access & Descriptors

We rarely think about the dot “.” between our objects and their fields, but there are quite a lot of things that happen every time we use one in Python. This talk will explore the details of what happens, how the descriptor protocol works, and how...

Andy Fundinger

Python

Account Security Patterns: How Logged-In Are you?

Speakers: Philip James, Asheesh Laroia Account security means making sure your users are only ones who can access their accounts. Account takeovers happen for a variety of reasons -- password re-use, compromised computers, guessable passwords, ...

Philip James, Asheesh Laroia

Python

What is a PLC and how do I talk Python to it?

Walk into any factory and you will see a Programmable Logic Controller (PLC). It's the small box that has a memory card and an Ethernet cable on one side, and lots of colorful wires connected to the other end. Inside runs the logic that turns inpu...

Jonas Neubert

Python

Building a Culture of Observability

Observability is often thought of as just a new word for monitoring. While it encompasses traditional devops areas such as monitoring, metrics, and infrastructure management, it’s much deeper and empowers developers at all levels of the stack. **O...

Alex Landau

Python

How to Build a Clinical Diagnostic Model in Python

Diagnosing a patient requires consideration of a wide variety of factors: past medical history and comorbidities, physical exam findings, lab results, imaging, ECG findings, and in some cases, genomic testing. Clinical diagnosis and prognostic ass...

Jill Cates

Python

Understanding Python’s Debugging Internals

Knowing your enemies is as important as knowing your friends. Understanding your debugger is a little of both. Have you ever wondered how Python debugging looks on the inside? On our journey to building a Python debugger, we learned a lot about i...

Liran Haimovitch

Python

Modern solvers: Problems well-defined are problems solved

Every programmer should learn to use solvers, tools that reason directly from a description of a problem to its solution. Tools like AlphaZero can formulate winning strategies for games given only a description of the rules of the game. For ...

Raymond Hettinger

Python

Don't be a robot, build the bot

Managing a large open source project like CPython is no easy task. Learn how the Python core team automated their GitHub workflow with bots, making it easier for maintainers and contributors to collaborate together. Even if you’re not managing a l...

Mariatta Wijaya

Python

Intentional Deployment: Best Practices for Feature Flag Management

    Feature flags can be powerful tools in mitigating risk in your development cycle — _if you use them correctly_. Failing to do so can have enormous consequences for yourself and your business. In 2012 one improperly deployed...

Caitlin Rubin

Python

Dependency hell: a library author's guide

Python is known for its ""batteries included"" philosophy but no Python developer can live without the language's rich library ecosystem. Unfortunately, as the number of libraries increases, so does the risk of cross-library incompatibilities, or ...

Brian Quinlan, Yanhui Li

Python

Attracting the Invisible Contributors

Many new coders seek out open source projects, intending to contribute, and then get overwhelmed and leave. Project maintainers often want the help, but don’t realize how they are inadvertently appearing unwelcoming. I will discuss some of the mos...

Charlotte Mays

Python

Wily Python: Writing simpler and more maintainable Python

Everyone starts with the best intentions with their Python projects, ""this time it's going to be clean, simple and maintainable"". But code evolves over time, requirements change and codebases can get messy and complicated quickly. In this tal...

Anthony Shaw

Python

Does remote work really work?

With nearly nine years of experience as a remote employee across three different companies, Lauren knows the ups and downs of remote work. In this session, Lauren will dive into what the research says about remote work and share her personal stori...

Lauren Schaefer

Python

How to engage Python contributors in the long term? Tech is easy, people are hard.

The CPython project is now 28 years old. It has active core developers, but almost all of them are volunteers. It's difficult to ask someone to be committed into a project for 5 years without being paid. Helping newcomers and mentoring contributor...

Victor Stinner

Python

Statistical Profiling (and other fun with the sys module)

Profiling involves computing a set of data about how often and how long various parts of your program are executed. Profiling is useful to understand what makes your program slow and how you can improve it. After a quick review of deterministic...

Emin Martinian

Python

Help! I'm now the leader of our Meetup group!

After attending your local dev meetup for months, you suddenly get the dreaded email: ""Your Organizer just stepped down without nominating a replacement." But the community relies on this meetup! It brings together devs from all around to enga...

Faris Chebib

Python

Extracting tabular data from PDFs with Camelot & Excalibur

Extracting tables from PDFs is hard. The Portable Document Format was not designed for tabular data. Sadly, a lot of open data is shared as PDFs and getting tables out for analysis is a pain. A simple copy-and-paste from a PDF into a text file or ...

Vinayak Mehta

Python

Time to take out the rubbish: garbage collector

One of the reasons why programming in Python is very straightforward and simple is that we do not have to worry about the lifetime of our objects. That is, once it ceases to be necessary, a variable disappears from the memory ""magically"". The fa...

Pablo Galindo Salgado

Python

Lowering the Stakes of Failure with Pre-mortems and Post-mortems

Failure can be scary. There are real costs to a company and its users when software crashes, models are inaccurate, or when systems go down. The emotional stakes feel high-- no one wants to be responsible for a failure. We can lower the stakes by ...

Liz Sander

Python

Escape from auto-manual testing with Hypothesis!

If we knew all of the bugs we needed to write tests for, wouldn't we just... not write the bugs? So how can testing find bugs that nobody would think of? The answer is to have a computer *write your tests for you!* You declare what kind of in...

Zac Hatfield-Dodds

Python

Testing

How to JIT: Writing a Python JIT from scratch in pure Python

Have you ever wondered how a JIT compiler works? Production quality JIT compilers are large, complicated pieces of software that can seem inscrutable at first glance. However, building a simple JIT compiler is surprisingly easy. We'll walk throug...

Matthew Page

Python

Python on Windows is Okay, Actually

Packages that won't install, encodings that don't work, installers that ask too many questions, and having to own a PC are all great reasons to just ignore Windows. Or they would be, if they were true. Despite community perception, more than ha...

Steve Dower

Python

Strategies for testing Async code

Testing code is important. Testing, primarily unit-testing async code requires heading off the the standard roadway of unit testing in python. This talk will provide a map to help you along the new path towards testing async code. Topics inclu...

Neil Chazin

Python

Testing

to GIL or not to GIL: the Future of Multi-Core (C)Python

Why come to yet another talk about CPython's GIL? [1] Sure, we'll spend a little time on what it is, who it affects (and doesn't), and how to work around it. However, what you want to come hear is what the future holds for the GIL. We'll take...

Eric Snow

Python

Python Security Tools

While high-level security concepts may transcend languages, each language has its own sets of tools and edge cases that are worth knowing. Python is one of many popular languages that is rarely the focus in security training, but that doesn't mea...

Terri Oda

Python

Terrain, Art, Python and LiDAR

Seeing the Earth from above is truly breathtaking, but it takes a lot of time, fuel and opportunity - so instead, why not make miniature art of the world's famous terrains? This talk explores using Python to take raw terrain data - from aerial ...

Andrew Godwin

Python

Supporting Engineers with Mental Health Issues

People live with mental health stigma because we learn that we're supposed to be strong and resilient. It's okay not to be strong or resilient all the time. Discussing mental illness is uncomfortable. In this talk, I will help you overcome that di...

Jenna Quindica

Python

Plugins: Adding Flexibility to Your Apps

Python is a flexible language. Your Python app, on the other hand, is usually more set in stone: buttons, functions, displays are all explicitly defined. In this talk you'll learn how to take advantage of features like decorators and functions ...

Geir Arne Hjelle

Python

Things I Wish They Told Me About The Multiprocessing Module in Python 3

If you haven't tried multiprocessing or you are trying to move beyond `multiprocessing.map()`, you will likely find that using Python's `multiprocessing` module can get quite intricate and convoluted. This talk focuses on a few techniques (starti...

Pamela McANulty

Python

Programmatic Notebooks with papermill

Notebooks have traditionally been a tool for drafting code and avoiding repeated expensive computations while exploring solutions. However, with new tools like nteract's papermill and scrapbook libraries, this technology has been expanded to make ...

Matthew Seal

Python

A Snake in the Bits: Security Automation with Python

Speakers: Moses Schwartz, Andy Culler Security incident response is an intense, high stress, high skill job that relies heavily on human judgement. Despite that, for reasons that we can't begin to understand, a big part of an incident responder...

Moses Schwartz, Andy Culler

Python

Plug-n-Stream Player Piano: Signal Processing With Python

Digital Signal Processing and Player Piano don't normally come together in the same sentance. Player Pianos that are 100+ years old are awesome artisan artifacts, but they don't play digital formats very well. This talk will show how we take a 100...

JP Bader

Python

CUDA in your Python: Effective Parallel Programming on the GPU

It’s 2019, and Moore’s Law is dead. CPU performance is plateauing, but GPUs provide a chance for continued hardware performance gains, if you can structure your programs to make good use of them. CUDA is a platform developed by Nvidia for GPGPU...

William Horton

Python

From days to minutes, from minutes to milliseconds with SQLAlchemy

Object Relational Mappers (ORMs) are awesome enhancers of developer productivity. The freedom of having the library write that SQL and give you back a useful, rich model instance (or a bunch of them) instead of just a tuple or a list of records is...

Leonardo Rochael Almeida

Python

SQLAlchemy

The Refactoring Balance Beam: When to Make Changes and When to Leave it Alone

Many developers struggle to find the balance between striving to improve existing code and letting good enough alone by accepting certain shortcomings. As a new developer to a team it can be difficult to understand existing strategies and patterns...

Amanda Sopkin

Python

Getting Started Testing in Data Science

*How do you know if your data science results are correct?* Robust software usually has tests asserting that certain conditions hold, but as a data scientist it’s often not straightforward or obvious how to integrate these best practices. Our work...

Jes Ford

Python

Testing

The Black Magic of Python Wheels

If you’ve ever `pip install`ed a Python package with C extensions on Linux, it was probably a painful experience, having to download and install development headers for libraries you’ve never even heard of. Maybe you’ve given up on pip and have sw...

Elana Hashman

Python

Building an Open Source Artificial Pancreas

Have you ever thought about what open source software or hardware could achieve? What if it could help improve people's lives by solving some of their health problems? After the medical tech industry kept promising a system to help automaticall...

Sarah Withee

Python

Maintaining a Python Project When It’s Not Your Job

PyPI is a gold mine of great packages but those packages have to be written first. More often than not, projects that millions of people depend on are written and maintained by only one person. If you’re unlucky, that person is you! So how do...

Hynek Schlawack

Python

Practical decorators

Decorators are one of Python's most powerful features. But even if you understand what they do, it's not always obvious what you can do with them. Sure, from a practical perspective, they let you remove repeated code from your callables. And se...

Reuven M. Lerner

Python

Mocking and Patching Pitfalls

Mocking and patching are powerful techniques for testing, but they can be easily abused, with negative effects on code quality, maintenance, and application architecture. These pain-points can be hard to verbalize, and consequently hard to addres...

Edwin Jung

Python

Testing

Assets in Django without losing your hair

There's one part of building a Django app I hate: setting up handling of assets and media. There are so many moving pieces — static assets, asset compilation and compression, file uploads, storage engines, etc. etc. I can never remember how it al...

Jacob Kaplan-Moss

Django

Python

Life Is Better Painted Black, or: How to Stop Worrying and Embrace Auto-Formatting

What good is a code style if it's not internally consistent? What good is a linter when it slows you down? What if you could out-source your worries about code formatting, adopt a consistent style, and make your team faster all at the same time? ...

Łukasz Langa

Python

A Guide to Software Engineering for Visually Impaired

We will look into a day in the life of a Software Engineer with limited vision to Understand their difficulties at work and how they can overcome those difficulties to become successful in their role. I am a backend Software Engineer at Yelp wh...

Abrar Ahmed Sheikh

Python

Measures and Mismeasures of algorithmic fairness

Within the last few years, researchers have come to understand that machine learning systems may display discriminatory behavior with regards to certain protected characteristics, such as gender or race. To combat these harmful behaviors, we have ...

Manojit Nandi

Python

Beyond Two Groups: Generalized Bayesian A/B[/C/D/E...] Testing

Bayesian A/B testing has gained much popularity over the years. It seems, however, that the examples stop at two groups. This begs the questions: should we not be able to do more than simple two-group, case/control comparisons? Is there a special ...

Eric Ma

Python

Testing

The Perils of Inheritance: Why We Should Prefer Composition

Inheritance is among the first concepts we learn when studying object-oriented programming. But inheritance comes with some unhappy strings attached. Inheritance, by its very nature, tends to bind a subclass to its superclass. This means that modi...

Ariel Ortiz

Python

Django Channels in practice

Django Channels allows developers to make real-time web applications using websockets while maintaining access to the full Django batteries-included model for web applications. This talk will focus on what it takes to run a channels application in...

Aaron Gee-Clough

Django

Python

Thinking like a Panda: Everything you need to know to use pandas the right way

Using the pandas python library requires a shift in thinking that is not always intuitive to those who use it. This talk will take a deep dive into the underlying data structure of pandas to explain why it performs the way it does under certain ci...

Hannah Stepanek

Python

PEP 572: The Walrus Operator

In this talk, we'll learn about a highly controversial change to Python syntax, the rationale for it, and the fallout as the result of it. Along the way we'll go in-depth on how new ideas about Python are proposed, discussed, and become part of...

Dustin Ingram

Python

One Engineer, an API, and an MVP: Or, how I spent one hour improving hiring data at my company.

"This one quick trick will help you measure the diversity of your hiring pipeline! Read on to hear how!" One challenge in improving diversity within a hiring pipeline is the struggle to measure what exists in the first place. It's hard to know...

Nicole Zuckerman

Django

Python

A Right Stitch-up: Creating embroidery patterns with Pillow

Embroidery is a technology that dates back centuries and is still popular in the present day among craftspeople around the world. Cross-stitch refers to the creation of crosses in a grid that combines to build up an image, based on a 'chart' or pa...

Katie McLaughlin

Python

Going from 2 to 3 on Windows, macOS and Linux

At Dropbox, we’ve always used Python to power our application for Windows, macOS and Linux (until recently, Python 2.7). Over the years, a growing lack of features and the need for outdated compilers/toolchains made migrating to Python 3 a necessi...

Max Bélanger, Damien DeVille

Python

Exceptional Exceptions - How to properly raise, handle and create them

Did you know there are multiple ways to raise and capture exceptions? Have you ever wondered if you should raise a built-in exception or create your own hierarchy? Did you ever find it hard to understand what an exception meant? This talk will ...

Mario Corchero

Python

Advanced asyncio: Solving Real-world Production Problems

Everyone’s talking about it. Everyone’s using it. But most likely, they’re doing it wrong, just like we did. By building a simplified chaos monkey service, we will walk through how to create a good foundation for an asyncio-based service, inclu...

Lynn Root

Python

¡Escuincla babosa!: Creating a telenovela script in three Python deep learning frameworks

Telenovelas are beloved for their over the top drama and intricate plot twists. In this talk, we’ll review popular telenovelas to synthesize a typical telenovela arc and use it to train a deep learning model. What would a telenovela script look...

Lorena Mesa

Machine Learning

Python

Ace Your Technical Interview Using Python

Do you feel overwhelmed by the prospect of having to find a new software engineering job because you dread the technical interviewing process? Have you been putting off submitting your job applications because you think you won't be ready to inter...

Erin Allard

Python

Take Back the Web with GraphQL

GraphQL is an exciting technology that can help simplify web logic. Most of the attention has been focused on client-side improvements, such as reducing payload sizes and reducing total number of requests. This talk will show how GraphQL can struc...

Robert Myers

GraphQL

Python

Type hinting (and mypy)

Type hinting for Python (as a linter tool) came out in September 2015 as part of Python 3.5 (and was championed by Guido himself). Since then, variable annotations (plus, more recently, protocols) improved its capabilities even further. Over the l...

Bernat Gabor

Python

A Medieval DSL? Parsing Heraldic Blazons with Python!

Medieval European Nobility was obsessed with Lineage. They created a Heraldic System to track families, which assigned each family a unique Coat of Arms. Any painting of the Coat of Arms was not the official version. The official version was a ...

Lady Red, Christopher Beacham

Python

Migrating Pinterest from Python2 to Python3

Speakers: Jordan Adler, Joe Gordon Over the course of nearly a year, we migrated Pinterest's primary systems from Python2 to Python3. A large, tightly coupled codebase with over 2 million lines of code, the Pinterest codebase contained nearly ...

Jordan Adler, Joe Gordon

Python

Leveraging the Type System to Write Secure Applications

Application security remains a long-term and high-stakes problem for most projects that interact with external users. Python's type system is already widely used for readability, refactoring, and bug detection — this talk will demonstrate how type...

Shannon Zhu

Python

Lessons learned from building a community of Python users among thousands of analysts

Starting a few years ago, Capital One has committed to go all-in on public cloud and open source software for many of our core business operations, processes, and machine learning models. To support this transformation, we embarked on a multi-year...

Marina Sergeeva, Ariel M'ndange-Pfupfu, I-Kang Ding

Python

Instant serverless APIs, powered by SQLite

Serverless computing is all about paying only for what you use: it can scale up to handle millions of requests, but it can also scale down to 0, costing you nothing if your application is not receiving any traffic. Serverless tends to get expen...

Simon Willison

Python

SQLite

Serverless

Getting started with Deep Learning: Using Keras & Numpy to detect voice disorders

Deep learning is a useful tool for problems in computer vision, natural language processing, and medicine. While it might seem difficult to get started in deep learning, Python libraries, such as Keras make deep learning quite accessible. In this ...

Sebastian Hanus, Deborah Hanus

Python

Machine learning model and dataset versioning practices

Python is a prevalent programming language in machine learning (ML) community. A lot of Python engineers and data scientists feel the lack of engineering practices like versioning large datasets and ML models, and the lack of reproducibility. This...

Dmitry Petrov

Python

Set Practice: learning from Python's set types

Key takeaways: 1. Set operations enable simpler and faster solutions for many tasks; 1. Python's set classes are lessons in elegant, idiomatic API design; 1. A set class is a suitable context for implementing operator overloading. Boolean ...

Luciano Ramalho

Python

The Zen of Python Teams

The Zen of Python, accessed by running `import this`, is a list of nineteen aphorisms that have guided the development of the language. It has good advice for how to organize our code, but what does it have to say about how we organize ourselves? ...

Adrienne Lowe

Python

Eita! Why Internationalization and Localization matter

According to the always trustworthy Wikipedia, there are approximately 360 million native English speakers in the world. We, as developers, are so used to write code and documentation in English that we may not realize that this number only repres...

Nicolle Cysneiros

Python

Releasing the World's Largest Python Site Every 7 Minutes

Being able to release rapidly and continuously allows businesses to react to opportunities, shorten feedback loop for product iteration cycle and reduce debug effort for erroneous changes. At Instagram, we operate the world's largest fleet of serv...

Shuhong Wong

Python

But, Why is the (Django) Admin Slow?

The admin interface that comes built-in with Django is one of the most-loved (and oft-abused) features. However, early converts are often disappointed to find that the admin doesn't seem to be scaling as their database grows in size, forcing them...

Jacinda Shelly

Django

Python

API Evolution the Right Way

If you maintain a library, how can you innovate without breaking the projects that depend on it? Follow semantic versioning, add APIs conservatively, add parameters compatibly, use DeprecationWarnings and publish a deprecation policy, guide your u...

A. Jesse Jiryu Davis

Python

Scraping a Million Pokemon Battles: Distributed Systems By Example

I love Pokemon. However, I don't love how some players make the community less welcoming towards beginners by hiding their strategies. So I did what any defiant engineer would. I signed up for a free AWS account and began (responsibly) scraping mi...

Duy Nguyen

Python

Plan your next eclipse viewing with Jupyter and geopandas

Maps are powerful tools that we use every day. Python is well-equipped to handle spatial data and with well documented robust libraries to help you perform spatial analysis and create beautiful maps. In this talk, we'll discover the fascinating wo...

Christy Heaton

Python

Thoth - how to recommend the best possible libraries for your application

Having libraries in your Python project properly locked to a specific version is a well known best practice. Dependency management tools in the Python ecosystem lock dependencies to the latest version available, but what if the latest version avai...

Fridolín Pokorný

Python

Everything at Once: Python's Many Concurrency Models

Python makes it incredibly easy to build programs that do what you want. But what happens when you want to do what you want, but with more input? One of the easiest things to do is to make a program concurrent so that you can get more performance ...

Jess Shapiro

Python

A New Era in Python Governance

In July of 2018, Guido van Rossum stepped down as “Benevolent Dictator for Life” of Python. In December, Python core developers voted on a new governance structure to guide Python going forward. This talk explores what’s changing and how it may ...

Shauna Gordon-McKeon

Python

Working with Time Zones: Everything You Wish You Didn't Need to Know

Time zones are complicated, but they are a fact of engineering life. Time zones have [skipped entire days](http://www.bbc.com/news/world-asia-16351377) and repeated others. There are time zones that switch to [DST twice per year](https://www.timea...

Paul Ganssle

Python

Put down the deep learning: When not to use neural networks and what to do instead

The deep learning hype is real, and the Python ecosystem makes it easier than ever to neural networks to everything from speech recognition to generating memes. But when picking a model architecture to apply to your work, you should consider more ...

Rachael Tatman

Machine Learning

Python

Building reproducible Python applications for secured environments

We all have to package Python based applications for various environments, starting from command line tools, to web applications. And depending on the users, it can be installed on thousands on computers or on a selected few systems. https://pypi....

Kushal Das

Python

5 Steps to Build Python Native GUI Widgets for BeeWare

Have you ever wanted to write a GUI application in Python that you can run on both your laptop and your phone? Have you been looking to contribute to an open source project, but you don't know where to start? BeeWare is a set of software librar...

Dan Yeaw

Python

Engineering Ethics and Open Source Software

It seems that every week there is a news story that prompts software developers to think about the ethical implications of their work. As individuals, teams, and communities we need to consider the impact of the code we write. But what about code ...

Hayley Denbraver

Python