top band

Accepted Talks

A **huge** thanks to the speakers, sponsors, volunteers, and attendees for such a great PyCon! Talk and tutorial videos & slides: - - & **See you next year!**

Machine Learning 101

Kyle Kastner in Education

Machine learning is a crucial part of modern software development. Libraries like pandas, scikit-learn, gensim, and Theano help developers build projects that were previously impossible, and these applications empower our users and can make fundamental improvements in daily life. This talk will show you the why, what, and how of machine learning in Python.

Friday 10:50 a.m.–11:20 a.m. in Room 511

Building secure systems

lvh in Security

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?

Friday 10:50 a.m.–11:20 a.m. in Room 710A

How to Be More Effective with Functions

Brett Slatkin in Best Practices & Patterns

Functions improve readability, encourage reuse, and facilitate refactoring. Python has many unique features that make functions significantly more powerful. This talk will show you the best ways to use functions in Python: when *args is helpful and when it'll crash your programs; how to use generators for arguments and return values; the value of keyword vs. keyword-only arguments; and more!

Friday 10:50 a.m.–11:20 a.m. in Room 710B

Exploring Minecraft and Python: Learning to Code Through Play

Kurt Grandis in Education

Interest and activity in childhood computing education continues to grow. Meanwhile, Minecraft has become a massive cultural phenomenon as a fun, motivating platform that encourages exploration and play. This talk demonstrates how Python can be used to teach programming while exploring the world of Minecraft. We will cover how to set up learning environments, curricula, and case studies.

Friday 10:50 a.m.–11:20 a.m. in Room 517D

Experimental pure mathematics using Sage

Viviane Pons in Science

Pure mathematics is not always big formulas written on endless notebooks, it can also be hidden behind python code. In combinatorics, we study classical computer science objects like trees or graphs with a mathematical perspective. This talk aims to show how computer exploration and experimentation can be used to discover and prove new mathematical results.

Friday 11:30 a.m.–noon in Room 511

Introduction to HTTPS: A Comedy of Errors

Ashwini Oruganti in Security

Given recent increases in hostile attacks on internet services and large scale surveillance operations by certain unnamed government organizations, security in our software is becoming ever more important. We'll give you an idea of how modern crypto works in web services and clients, look at some of the common flaws in these crypto implementations, and discuss recent developments in TLS.

Friday 11:30 a.m.–noon in Room 710A

What can programmers learn from pilots?

Andrew Godwin in Best Practices & Patterns

What can Python-based software teams learn from aviation? Why should software always fail hard? What's wrong with too many error logs? And why are ops people already like pilots? Learn all this, and about planes, too.

Friday 11:30 a.m.–noon in Room 710B

PyPy.js: What? How? Why?

Ryan Kelly in Other

PyPy.js is an experiment in building a fast and compliant in-browser python interpreter, by compiling PyPy into javascript and retargeting its JIT to emit javascript code at runtime. This talk will demonstrate the combination of technologies that make such a thing possible, the results achieved so far, and the challenges that still remain when taking python onto javascript's home turf.

Friday 11:30 a.m.–noon in Room 517C

"Words, words, words": Reading Shakespeare with Python

Adam Palay in Best Practices & Patterns

This talk will give an introduction to text analysis with Python by asking some questions about Shakespeare and discussing the quantitative methods that will go in to answering them. While we’ll use Shakespeare to illustrate our methodologies, we’ll also discuss how they can be ported over into more 21st century texts, like tweets or New York Times articles.

Friday 11:30 a.m.–noon in Room 517D

A Dive into TLS

Benjamin Peterson in Security

TLS is the industry standard for secure networking. This talk will give an overview of the TLS protocol and demonstrate how to create secure connections with the standard library's ssl module.

Friday 12:10 p.m.–12:40 p.m. in Room 710A

Hyperactive: HTTP/2 and Python

Cory Benfield in Other

The internet has spoken, HTTP is to get its first serious update in 15 years. In this talk we'll discuss what HTTP/2 is, why it's happening, and how it's going to affect you and everyone you love. We'll briefly talk about how you can get started with HTTP/2, and some interesting projects associated with it, including Hyper, the first Python HTTP/2 library.

Friday 12:10 p.m.–12:40 p.m. in Room 517C

Data Science in Advertising: Or a future when we love ads

Soups Ranjan in Science

This talk would give you an in-depth overview of Real-Time Bidded (RTB) advertising systems, and why with increasing sophistication in ad-tech, in the future we will wonder why we ever hated ads. In particular, this talk will discuss technical challenges in ad systems and how we use Computational Advertising and Data Science to solve problems around Click Through Rate (CTR) Prediction, Auto-Bidding systems, Traffic Prediction, etc.

Friday 12:10 p.m.–12:55 p.m. in Room 511

Beyond PEP 8 -- Best practices for beautiful intelligible code

Raymond Hettinger in Best Practices & Patterns

Distillation of knowledge gained from a decade of Python consulting, Python training, code reviews, and serving as a core developer. Learn to avoid some of the hazards of the PEP 8 style guide and learn what really matters for creating beautiful intelligible code.

Friday 12:10 p.m.–12:55 p.m. in Room 710B

Inside the Hat: Python @ Walt Disney Animation Studios

Paul Hildebrandt in Gaming

Paul will take you through the process of making of a Disney movie.  He will use examples from Big Hero 6 to explain and illustrate the steps in making a movie and explain where technology, specifically Python, is involved.  

Friday 12:10 p.m.–12:55 p.m. in Room 517D

Robots Robots Ra Ra Ra!!!

Katherine Scott in Other

Lots of people want to learn more about robotics but are unsure where to start. Turns out there is a python robotics framework, and it runs some of the most sophisticated robots in the world! It is also open source, well-documented, and has a great community. In this talk we will look at Robot Operating System ROS.

Friday 1:40 p.m.–2:25 p.m. in Room 710A

Distributed Systems 101

lvh in Best Practices & Patterns

A very brief introduction to the theory and practice of distributed systems.

Friday 1:40 p.m.–2:25 p.m. in Room 517C

Satellite mapping for everyone

Chris Waigl in Science

Concerned about urban sprawl, landscape change or ecosystem recovery? Wildfire, drought or flooding? A vast amount of satellite data, collected since the 1970s, is freely available for your next mapping project. I will demonstrate how Python helps to make sense of odd scientific data and metadata formats and produce beautiful visualization and map products.

Friday 1:55 p.m.–2:25 p.m. in Room 511

How to make your code Python 2/3 compatible

Brett Cannon in Best Practices & Patterns

You know Python 3 is an improvement over Python 2 and you want to use it. Unfortunately you have legacy Python 2 source code that needs to stay compatible. But don't fret! This talk will show you that you can make your code be Python 2/3 source-compatible using various tools to pick up the nitty-gritty work and help modernize your Python code to newer Python 2 practices.

Friday 1:55 p.m.–2:25 p.m. in Room 517D

What Python can learn from Erlang?

Benoit Chesneau in Best Practices & Patterns

What can we learn from Erlang for building reliable high concurrency services? This talk will shows some techniques used in Erlang and how they can be used to solve problems in a more efficient way in Python. It will also discuss how Python could evolve accordingly.

Friday 1:55 p.m.–2:25 p.m. in Room 710B

Make your own Smart Air Conditioner

Miriam Lauter in Other

Looking for a fun, useful Raspberry Pi project? Want to connect your household appliances to the internet? Come learn how to build your own 'smart' air conditioner using a Raspberry Pi, a bit of hardware, and, of course, Python. Plus, you can save energy and never have to come home to a sweltering bedroom again.

Friday 2:35 p.m.–3:05 p.m. in Room 710A

Smart services & smart clients: How micro-services change the way you build and deploy code.

Frank Stratton in Best Practices & Patterns

At Runscope we've standardized the idea of small independent "smart" services that can be quickly built, deployed, and scaled. This talk examines lessons learned from writing these services as well as patterns found in other platforms. We present a detailed look at the code that allow us to build dozens of services, serving billions of requests, while deploying to our cluster over 20 times a day.

Friday 2:35 p.m.–3:05 p.m. in Room 517C

My Python's a little Rust-y

Dan Callahan in Other

Rust is a new systems programming language from Mozilla that combines strong compile-time correctness guarantees with fast performance... and it plays nice with ctypes! Come learn how you can call Rust functions from Python code and finally say goodbye to hacking C!

Friday 2:35 p.m.–3:05 p.m. in Room 710B

Advanced Git

David Baumgold in Best Practices & Patterns

You know clone, commit, push, and pull. Now you're ready for the fun stuff. This talk will give you the advanced knowledge you need to take control of your git repository: rebase, cherry-pick, bisect, blame, squashing, and the reflog. You'll also get a better conceptual understanding of how git works, allowing you to chain these tools together to accomplish whatever task you need.

Friday 2:35 p.m.–3:05 p.m. in Room 517D

Grids, Streets and Pipelines: Building a linguistic street map with scikit-learn

Michelle Fullwood in Python Libraries

Have you built a classifier in scikit-learn with out-of-the-box features, been disappointed with the results, and wanted to know where to go next? This talk shows how to add your own feature Pipelines and how to tune hyperparameters using GridSearchCV. We'll apply this to the problem of classifying streetnames in Singapore by linguistic origin, and turn the results into a colour-coded street map.

Friday 2:35 p.m.–3:05 p.m. in Room 511

Stop Sucking Me Into Your Drama: A Personal Appeal For Loose Coupling

Augie Fackler, Nathaniel Manista in Best Practices & Patterns

Great software is made out of cooperating independent modules; unusable, incorrect, and bad software happen when modules don’t (or can’t) work together. What makes modules friendly or hostile? How do abusive relationships between modules happen? How can we write code that creates and maintains healthy connections to other code?

Friday 3:15 p.m.–3:45 p.m. in Room 517C

3D Print Anything with the Blender API

Jenny Cheng in Other

3D printing is an awesome manufacturing process that makes physical objects from 3D models. Want to get started with 3D printing? Let's make some models to print! Learn how to create and manipulate 3D models using Python, Blender (an open source graphics suite), and the Blender API. You'll leave this talk with the basics to help you 3D print objects for the real world.

Friday 3:15 p.m.–3:45 p.m. in Room 710A

Super considered super!

Raymond Hettinger in Best Practices & Patterns

Python's super() is well-designed and powerful, but it can be tricky to use if you don't know all the moves. This talk offers clear, practical advice with real-world use cases on how to use super() effectively and not get tripped-up by common mistakes.

Friday 3:15 p.m.–4 p.m. in Room 710B

How to interpret your own genome using (mostly) Python.

Titus Brown in Science

We’ve entered the era of the $1000 human genome, and soon it will be straightforward to get your own genome sequenced by a commercial company. But what does the data mean? What information can you get out of your genomic sequence? And what are the barriers to deeper analysis? What kinds of algorithms and databases are used in genomic analysis? All this, and more, will be revealed in this talk.

Friday 3:15 p.m.–4 p.m. in Room 511

Python Concurrency From the Ground Up: LIVE!

David Beazley in Python Core (language, stdlib, etc.)

There are currently three popular approaches to Python concurrency: threads, event loops, and coroutines. Each is shrouded by various degrees of mystery and peril. In this talk, all three approaches will be deconstructed and explained in a epic ground-up live coding battle.

Friday 3:15 p.m.–4 p.m. in Room 517D

Fire your supervisord: running Python apps on CoreOS

Dan Callahan in Systems Administration

CoreOS is a new Linux distribution that makes it easy to deploy applications on dynamically scaled clusters of computers, and which has recently been embraced by infrastructure providers like DigitalOcean, Rackspace, and Google Compute Engine. Come learn how to package and deploy a Python application on this new, Docker-based platform.

Friday 4:15 p.m.–5 p.m. in Room 710A


Miguel Grinberg in Best Practices & Patterns

Writing a fully complaint REST API is hard, so hard it is too common for APIs to violate one or more of the REST architectural principles. In this talk I will describe the six REST principles, and I will tell you what happens if you don't follow them.

Friday 4:15 p.m.–5 p.m. in Room 517C

Neural Nets for Newbies

Melanie Warrick in Other

Neural networks have regained popularity in the last decade, but they get dismissed as being too complicated to understand and implement. This talk breaks down the neural net structure as simply as possible, so you have a framework on which to grow your knowledge in the space. I will put neural nets in the context of real-world applications and share Python packages and code where you can get started building your own. Coming out this talk you won't know everything about neural nets, but you will walk away with a solid foundation and some resources on where to go next to learn more.

Friday 4:30 p.m.–5 p.m. in Room 517D

Don't Make Us Say We Told You So: virtualenv for New Pythonistas

Renee Chu, Matt Makai in Python Core (language, stdlib, etc.)

Even though it’s possible to program without using virtual environments, you can shoot yourself in the foot without them. This talk will start with an illustration of how not using virtual environments can mess you up as a programmer, and will walk you through a simple way to get started with good habits using virtualenv.

Friday 4:30 p.m.–5 p.m. in Room 710B

Losing your Loops: Fast Numerical Computing with NumPy

Jake VanderPlas in Science

NumPy, the core array computing library for Python, provides tools for flexible and powerful data analysis, and is the basis for most scientific code written in Python. Getting the most out of NumPy, though, might require slightly changing how you think about writing code: this talk will outline the basic strategies essential to performing fast numerical computations in Python with NumPy.

Friday 4:30 p.m.–5 p.m. in Room 511

The REST Ascendancy

Jeff Schenck in Web Frameworks

As frontend web frameworks like AngularJS and Backbone.js take over, is Python on the server destined to be demoted to a basic REST interface? If we embrace our new JavaScript overlords, how do we ensure Python is best positioned for this new world of REST on the server?

Friday 5:10 p.m.–5:40 p.m. in Room 517C

Using Supervisor For Fun And Profit

Chris McDonough in Systems Administration

Supervisor is a popular Python application that lets you control and monitor process state on UNIX-like systems. This talk describes what it is, and how to use it effectively to make your application deployments better.

Friday 5:10 p.m.–5:40 p.m. in Room 517D

I18N: World Domination the Easy Way

Sarina Canelake in Best Practices & Patterns

Have you heard about internationalization (i18n) and wondered what it meant? Perhaps your project already has i18n of its strings but you have a nagging feeling you could be doing it better. This talk will walk through the basics of i18n’ing a Django project (but the principles apply to any project!), and how to make the process of localization (l10n) go more smoothly.

Friday 5:10 p.m.–5:40 p.m. in Room 710B

How to build a brain with Python

Trevor Bekolay in Science

Simulating the human brain is often the subject of science fiction, but how close are we really? In this talk, I'll survey cutting edge research projects that use Python to simulate the brain, focusing on Nengo, which was used to build Spaun, the largest functional brain simulation to date.

Friday 5:10 p.m.–5:40 p.m. in Room 511

Porting Python to run without an OS

Josh Triplett in Python Internals

We've ported Python to run directly on hardware, without an OS, as a testing and exploration environment for firmware, ACPI, and UEFI. This talk will explore porting Python to a new platform, embedding Python, recreating enough of libc and POSIX to run Python without an OS, and binding to platform-specific services. Includes live demo of bare-metal Python, directly driving hardware.

Friday 5:10 p.m.–5:40 p.m. in Room 710A

Investigating Python Wats

Amy Hanlon in Python Core (language, stdlib, etc.)

Many of us have experienced a "wat" in Python - some behavior that totally mystifies us. We'll look at three areas where wats arise - identity, mutability, and scope. For each of these three topics, we'll look at some common surprising behaviors, investigate the cause of the behaviors, and cover some practical tips on how to avoid related bugs.

Saturday 10:50 a.m.–11:20 a.m. in Room 710A

How to Write Reusable Code

Greg Ward in Best Practices & Patterns

Learning to write high-quality, reusable code takes years of dedicated work. Or you can take a shortcut: attend this talk and learn some of the tricks I've figured out over a couple of decades of programming.

Saturday 10:50 a.m.–11:20 a.m. in Room 517D

Good Test, Bad Test

Dan Crosta in Testing

In a highly dynamic language like Python, testing is even more critical than in compiled or more static languages. Like any other code we produce, tests can be either good or bad. This talk explores three fallacies of testing, and the mistakes and bad habits these fallacies encourage; and shows how to write good tests which help assure proper behavior without impeding development progress.

Saturday 10:50 a.m.–11:20 a.m. in Room 511

Systems programming as a swiss army knife

Julia Evans in Other

You might think of the Linux kernel as something that only kernel developers need to know about. Not so! It turns out that understanding some basics about kernels and systems programming makes you a better developer, and you can use this knowledge when debugging your normal everyday Python programs.

Saturday 10:50 a.m.–11:20 a.m. in Room 517C

How our engineering environments are killing diversity (and how we can fix it).

Kate Heddleston in Community

This talk focuses on how engineering team environments can impact employee behavior, and how environmental factors can prohibit diversity at tech companies. I will talk about some of the key problems that exist in current engineering environments and how they can be fixed.

Saturday 10:50 a.m.–11:20 a.m. in Room 710B

Finding Your Groove: Contributing to CPython and Beyond

Carol Willing in Python Core (language, stdlib, etc.)

Do you hear a jumble of jargony noise when reading Python mailing lists? Do you silently edit your dotfiles and playlists to avoid asking questions on IRC? Come see how Jazz can help you understand and contribute to Python. While both seem vast and complex, they build on simple concepts. By mixing art, knowledge, and improv, you can find your CPython contribution groove and enjoy cool cats' music.

Saturday 11:30 a.m.–noon in Room 710B

Usability Testing on the Cheap

Katie Cunningham in Best Practices & Patterns

While everyone agrees that usability testing should be an important part of your development process, not everyone has enough money laying around to pay for a dedicated team or consultants. In this talk, Katie will review a number of inexpensive options that can help any team deliver a usable product.

Saturday 11:30 a.m.–noon in Room 511

Type python, press enter. What happens?

Philip James, Asheesh Laroia in Systems Administration

This talk discusses how the Python interpreter starts, from the perspective of the operating system (OS). Together, we will see the ins & outs of processes: fork(), exec(), stdin, and stdout. It focuses on OS concepts and requires no background knowledge, using analogies to Python data structures. (The talk does not discuss Python’s own initialization, such as or global variables.)

Saturday 11:30 a.m.–noon in Room 710A

Ansible beyond YAML

Michael Scherer in Systems Administration

Ansible is a configuration management tool whose primary mode of operation involve using YAML to describe deployments and operations. However, it can do much more and be extended using python, which is what we will explore in this talk. Among others, we will see the plugins system for various part of the tool and how to reuse Ansible in a script.

Saturday 11:30 a.m.–noon in Room 517C

Learning from other's mistakes: Data-driven analysis of Python code

Andreas Dewes in Best Practices & Patterns

Static code analysis is an useful tool that can help to detect bugs early in the software development life cycle. I will explain the basics of static analysis and show the challenges we face when analyzing Python code. I will introduce a data-driven approach to code analysis that makes use of public code and example-based learning and show how it can be applied to analyzing Python code.

Saturday 11:30 a.m.–noon in Room 517D

Demystifying Docker

Andrew T. Baker in Systems Administration

Docker was one of last year’s most talked about open source projects - but what is it? And what does it mean for deploying applications? This talk will explain what Docker is and where it fits in with other deployment techniques. Attendees will learn the fundamentals of Docker, see some practical examples of how Docker is used, and consider if Docker could be a useful addition to their platform.

Saturday 12:10 p.m.–12:40 p.m. in Room 517C

Facts and Myths about Python names and values

Ned Batchelder in Python Core (language, stdlib, etc.)

The behavior of names and values in Python can be confusing. Like many parts of Python, it has an underlying simplicity that can be hard to discern, especially if you are used to other programming languages. Here I'll explain how it all works, and present some facts and myths along the way. Call-by-reference? Call-by-value? The answer will be clear!

Saturday 12:10 p.m.–12:40 p.m. in Room 710A

A Beginner's Guide to Test-driven Development

Itamar Turner-Trauring in Testing

Software is maintained by humans with limited memory and an unfortunate tendency to make mistakes. Test-driven development (TDD) can help you work around these design flaws by providing a permanent, automated specification for your code. Learn how to implement TDD when bug fixing and implementing new features and how this process will ensure your code is correct both now and in the future.

Saturday 12:10 p.m.–12:55 p.m. in Room 511

Technical Debt - The code monster in everyone's closet

Nina Zakharenko in Best Practices & Patterns

Technical debt is the code monster hiding in everyone's closet. If you ignore it, it will terrorize you at night. To banish it and re-gain your productivity, you'll need to face it head on.

Saturday 12:10 p.m.–12:55 p.m. in Room 517D

Open Source for Newcomers and the People Who Want to Welcome Them

Shauna Gordon-McKeon in Community

Open source can be fun and rewarding, but it can also be intimidating. This talk addresses some of the biggest technical and psychological barriers to contributing, from the perspective of both the newcomers who want to overcome them and the maintainers who want to remove them.

Saturday 12:10 p.m.–12:55 p.m. in Room 710B

Achieving Continuous Delivery: An Automation Story

James Cammarata in Systems Administration

Continuos Deployment is the act of deploying software constantly. The idea is if "release early, release often" is good, releasing very often is better. It's not trivial. Automation is part of the battle, and testing is another. Learn to use tools like Jenkins and Ansible to move from deploying software once a month to 15 times every hour, and why you'll want to.

Saturday 1:40 p.m.–2:25 p.m. in Room 517C

Bytes in the Machine: Inside the CPython interpreter

Allison Kaptur in Python Internals

Have you ever wondered how the CPython interpreter works? Do you know where to find a 1,500 line switch statement in CPython? I'll talk about the structure of the interpreter that we all use every day by explaining how Ned Batchelder and I chased down a mysterious bug in Byterun, a Python interpreter written in Python. We'll also see visualizations of the VM as it executes your code.

Saturday 1:40 p.m.–2:25 p.m. in Room 710A

The Ethical Consequences Of Our Collective Activities

Glyph in Best Practices & Patterns

As more of the world is controlled by software, software developers have an increasing obligation to serve that world well. Yet, we don't yet have a sense of what makes a good ethical standard. The fast pace, success, and youth (in both historical and demographic terms) of our industry have given us the sense that such a standard might not be required. This talk will correct that misconception.

Saturday 1:55 p.m.–2:25 p.m. in Room 710B

Other people's messy data (and how not to hate it!)

Mali Akmanalp in Python Libraries

Have you ever viscerally hated a dataset? Do you want to just get data cleaning out of the way? Are you always left wondering how it consumes most of your time? Whether you work in the sciences, work with government data or scrape websites, data cleaning is a necessary evil. We'll share our woes and check out state of the art in day to day data cleaning tools and strategies.

Saturday 1:55 p.m.–2:25 p.m. in Room 517D

Cutting Off the Internet: Testing Applications that Use Requests

Ian Cordasco in Best Practices & Patterns

A brief and opinionated view of testing applications and libraries that use requests by a core-developer of requests. You will receive an overview of testing with responses, vcr, httpretty, mock, and betamax.

Saturday 1:55 p.m.–2:25 p.m. in Room 511

Pythons are Deaf, So are Some Pythonistas

en zyme, Hakim Bouatou, Jon Henner in Community

ASL, like Python, is a language which is both fun and powerful. We have used Python to build a tool, ASL-CLeaR (American Sign Language Concept Learning Resource) for the DHH community which will teach STEM terminology using ASL exclusively. We are also building a summer program to teach Python in English/ASL to DHH students.

Saturday 2:35 p.m.–3:05 p.m. in Room 710B

Ship it: Deployments with Pip

Dan Tracy in Systems Administration

Gone are the days where creating system packages or scp-ing tar balls were required for deployment. With Pip, Fabric, and Jenkins we've developed a pipeline to simplify deployments and rollbacks that dove-tails into configuration management and virtualization. New machines can come fully deployed and ready to rock at a moments notice allowing you to scale out nodes quickly and painlessly.

Saturday 2:35 p.m.–3:05 p.m. in Room 517C

To ORM or not to ORM

Christine Spang in Databases

Database ORMs make it really convenient to pythonically query a database, but it's difficult to decide when to use them and when not to---and what the alternatives are. In this talk you'll learn strategies for deciding when and where to use an ORM, when to be cautious, and how to tell that you're doing the right thing, drawn from real-world lessons learned building the Inbox email platform.

Saturday 2:35 p.m.–3:05 p.m. in Room 517D

Build and test wheel packages on Linux, OSX & Windows

Olivier Grisel in Testing

Practical guide to build and test wheel packages for all platforms using free Continuous Integration services such as Travis CI (Linux and OSX) and AppVeyor (Windows).

Saturday 2:35 p.m.–3:05 p.m. in Room 511

Exploring is never boring: understanding CPython without reading the code

Allison Kaptur in Python Core (language, stdlib, etc.)

Have you started to read the source code of CPython but not gotten as far as you wanted? Maybe you want to understand more about CPython but don't know where to begin. I'll present a number of strategies for getting more familiar with Python under the hood that go beyond "just read it!" This talk isn't about contributing - it's about getting into the code base and discovering interesting things.

Saturday 2:35 p.m.–3:05 p.m. in Room 710A

Rethinking packaging, development and deployment

Domen Kožar in Systems Administration

Applying functional programming ideas to solve the problem of packaging software and configuration of systems in a stateless and deterministic way. Nix project addresses those problems in unique way based on academic research that has been applied to real world software collections in last 10 years.

Saturday 3:15 p.m.–3:45 p.m. in Room 517C

Describing Descriptors

Laura Rupprecht in Python Core (language, stdlib, etc.)

The Python library uses descriptors frequently, but most developers overlook this feature. This talk will cover what a descriptor is, the current uses in the standard library, and how custom descriptors can be used in a developer’s toolset to eliminate repeated code.

Saturday 3:15 p.m.–3:45 p.m. in Room 710A

Make web development awesome with visual diffing tools

Daniel Vanderkam in Testing

Visual diffs are a great way to check for regressions on web sites which may be missed by unit tests. In this talk you'll learn how to run end-to-end tests on your client and server web libraries using a tool called dpxdt. I'll also show how you can combine it with web-based diff tools like "git webdiff" to quickly and confidently iterate on web tools.

Saturday 3:15 p.m.–4 p.m. in Room 511

Schemas for the Real World

Carina C. Zona in Best Practices & Patterns

Development challenges us to code for users’ personal world. Users give push-back to ill-fitted assumptions about their own name, gender, sexual orientation, important relationships, & other attributes that are individually meaningful. We'll explore how to develop software that brings real world into focus & that allows individuals to authentically reflect their personhood & physical world.

Saturday 3:15 p.m.–4 p.m. in Room 710B

Graph Database Patterns in Python

Elizabeth Ramirez in Databases

Creating and using models from a graph database can be quite different to the ones used for row/column/document-oriented databases, in the sense that the same query patterns could differ significantly in structure and performance. This session will present how to create models in Python for Titan property graphs, that allow you to manipulate graphs as if you were querying with Gremlin DSL.

Saturday 3:15 p.m.–4 p.m. in Room 517D

Choose Your Own WSGI Deployment Adventure

Matt Makai, Kate Heddleston in Web Frameworks

From servers and proxies to configuration management, the Web Server Gateway Interface (WSGI) deployment ecosystem is complicated for new developers. This choose your own adventure talk contains decision points for the audience to choose topics via text and email votes. Each choice leads down a separate path to explain different confusing WSGI subjects. Bring your phone or laptop to participate!

Saturday 4:15 p.m.–5 p.m. in Room 517C

Oh, Come On. Who Needs Bytearrays?

Brandon Rhodes in Python Core (language, stdlib, etc.)

Python string operations are profligate in their use of memory — the steps necessary to parse an HTTP request often make four or five copies of every incoming byte. But does it matter? This talk explores the “bytearray”, shows how its proper use dramatically reduces copying, but then uses metrics and visualizations to determine whether any increase in performance is worth the added complexity.

Saturday 4:15 p.m.–5 p.m. in Room 710A

Eventually Correct: Testing Async Apps

A. Jesse Jiryu Davis in Testing

Async frameworks like Tornado and asyncio scramble our usual strategies for writing sequential code. This is most problematic when writing tests: how can you validate the outcome when you don’t know when to expect it? This talk introduces you to methods and practices for unittesting async applications.

Saturday 4:30 p.m.–5 p.m. in Room 511

Techniques for Debugging Hard Problems

Alex Gaynor in Best Practices & Patterns

Sometimes your programs have bugs. Often they're shallow things, simple AttributeErrors or TypeErrors. Sometimes they're large, complex, and nearly impossible to debug. This talk explores techniques for figuring these out.

Saturday 4:30 p.m.–5 p.m. in Room 517D

Your Brain's API: Giving and Getting Technical Help

Sasha Laundy in Community

Software engineers are never done learning since our field is always changing. We are always beginners at some things and experts at others. Along the way from beginner to expert we have to ask a lot of questions, but it can be hard to get help. This talk gives concrete tools to help you ask with confidence, and highlights common expert mistakes that inadvertently make people feel foolish.

Saturday 4:30 p.m.–5 p.m. in Room 710B

So you think you can PDB?

Clayton Parker in Python Core (language, stdlib, etc.)

This talk will be an introduction to the most commonly used Python Debugger commands and what they do. Learn how to navigate and inspect code from the pdb prompt so you can better understand how it works. The Python Debugger is a valuable debugging tool for all levels of Python programmers. You should walk away being able to debug the next Python code you encounter!

Saturday 5:10 p.m.–5:40 p.m. in Room 517D

Lessons learned with asyncio ("Look ma, I wrote a distributed hash table!")

Nicholas Tollervey in Python Libraries

This talk introduces the asyncio module. I'll cover what it's for, how it works and describe how I used it to write a real-world networked application (a distributed hash table). We'll explore the event loop, co-routines, futures and networking with examples from my code. This won't be an exhaustive exposition. Rather, attendees will grasp enough of asyncio to continue with their own studies.

Saturday 5:10 p.m.–5:40 p.m. in Room 511

A Winning Strategy with The Weakest Link: how to use weak references to make your code more robust

Jim Baker in Best Practices & Patterns

Working with weak references should not just be for Python wizards. Whether you have a cache, memoizing a function, tracking objects, or various other bookkeeping needs, you definitely do not want code leaking memory or resources. In this talk, we will look at illuminating examples drawn from a variety of sources on how to use weak references to prevent such bugs.

Saturday 5:10 p.m.–5:40 p.m. in Room 710A

Managing Your Infrastructure with SaltStack

Colton Myers in Systems Administration

Are you still using SSH to manage your servers? Deploying code manually with rsync? There’s a better way. SaltStack is one of the latest and greatest tools for system management. Once you have a foundation of lightning-fast remote execution, you can build anything on top of it. Plus, it’s written in Python, and easy to extend!

Saturday 5:10 p.m.–5:40 p.m. in Room 517C

Avoiding Burnout, and other essentials of Open Source Self-Care

Kathleen Danielson in Community

As technical community managers we are faced with a unique set of challenges. We do it because we love our communities, but we also are often guilty of neglecting our own very real needs in order to serve those communities. We end up feeling guilty, run down, inadequate, and ultimately burnt out.

Saturday 5:10 p.m.–5:40 p.m. in Room 710B

Beyond grep: Practical Logging and Metrics

Hynek Schlawack in Best Practices & Patterns

Your Python server applications are running but you’re wondering what they are doing? Your only clue about their current state is the server load? Let’s have stroll through the landscape of logging and metrics so you’ll find the perfect fit for your use cases!

Sunday 1:10 p.m.–1:40 p.m. in Room 517D

Where in your RAM is "python"?

Ying Li in Security

Gumshoes, the rogue program `` is threatening to cause havok! What is it doing to hide itself? What kind of things is it doing? Who might it be communicating with? RAM is a big place - how can we even find it, much less any of this information? Stay tuned and find out!

Sunday 1:10 p.m.–1:40 p.m. in Room 517C

Free Software, Free People

Pete Fein in Community

Four years after the Arab Spring & 2 years after Snowden, little has changed. What now? This talk will remember Telecomix, an ad-hoc activist cluster that supported free communication around the world. Stories of humans and machines, reflection on 3 years of hacktivism & exploration of similarities to the free software community. It follows a 2011 Pycon lightning talk given after Tahrir Square.

Sunday 1:10 p.m.–1:40 p.m. in Room 710B

streamparse: real-time streams with Python and Apache Storm

Andrew Montalenti in Python Libraries

Real-time streams are everywhere, but does Python have a good way of processing them? Until recently, there were no good options. A new open source project, streamparse, makes working with real-time data streams easy for Pythonistas. If you have ever wondered how to process 10,000 data tuples per second with Python -- while maintaining high availability and low latency -- this talk is for you.

Sunday 1:10 p.m.–1:40 p.m. in Room 511

Interactive data for the web - Bokeh for web developers

Sarah Bird in Web Frameworks

Interactive data visualization libraries are mostly a JavaScript stronghold. The new Python library, Bokeh, provides a simple, clean way to make more shiny things. Although it comes from the data science community, it has a lot to offer web developers. For a visualization you might have built in d3.js, I'll show how to build it in Bokeh, how to test it, and how to hook it into your web app.

Sunday 1:10 p.m.–1:40 p.m. in Room 710A

Serialization formats are not toys

Tom Eastman in Security

It’s not in the OWASP Top 10, but you don’t have to look far to hear stories of security vulnerabilities involving deserialization of user input. In this talk I’ll go over what the threat is and how you might be making yourself vulnerable. I’ll cover the features (not bugs: features) of XML, YAML, and JSON that make them surprisingly dangerous, and how to protect your code from them.

Sunday 1:50 p.m.–2:20 p.m. in Room 517C

Python Performance Profiling: The Guts And The Glory

A. Jesse Jiryu Davis in Python Libraries

Your Python program is too slow, and you need to optimize it. Where do you start? With the right tools, you can optimize your code where it counts. We’ll explore the guts of the Python profiler “Yappi” to understand its features and limitations. We’ll learn how to find the maximum performance wins with minimum effort.

Sunday 1:50 p.m.–2:20 p.m. in Room 517D

Finding Spammers & Scammers through Rate Tracking with Python & Redis

Mica Swyers, Jay Chan in Best Practices & Patterns

This talk provides an introduction to rate tracking as well as an explanation of a particularly cool way to implement it. You will learn what rate tracking is, why you would want to do it, and then how you can use build a Redis-backed “velocity engine” in Python to do just that.

Sunday 1:50 p.m.–2:20 p.m. in Room 511

WebSockets from the Wire Up

Christine Spang in Web Frameworks

HTML5 WebSockets power the real-time web. Come take a deep dive into how they work, from the big picture down to what goes over the wire, including insight into the performance benefits of the protocol, via a real-world example of how WebSockets are implemented client- and server-side in Python.

Sunday 1:50 p.m.–2:20 p.m. in Room 710A

Terminal whispering

Thomas Ballinger in Python Libraries

Have you ever wanted to add a status bar to your command line program? Or maybe color the output a bit? Or do you want to write a fullscreen terminal application like ls, top, vim, or emacs? Then you need to speak a bit of terminal! This talk describes how to talk to your terminal from scratch and goes on to show why Python libraries Blessings and Urwid are so awesome.

Sunday 1:50 p.m.–2:20 p.m. in Room 710B

Getting to Jython 2.7 and beyond

Jim Baker in Python Core (language, stdlib, etc.)

So how did we get to Jython 2.7 anyway? And what are our future plans? In this talk, you will get a taste of how Jython works, some new functionality, and especially how Jython leverages both Python and Java to provide a very compatible solution.

Sunday 2:30 p.m.–3 p.m. in Room 710B

Improve your development environments with virtualization

Luke Sneeringer in Best Practices & Patterns

A talk on how to employ virtualization to make development easier, more portable, and have it more closely adhere to production environments.

Sunday 2:30 p.m.–3 p.m. in Room 710A

Hash Functions and You: Partners in Freedom

Curtis Lassam in Other

Our trusty friend, the hash function, is as crucial to programming as linked lists or recursion, but it doesn't always get the press that it deserves. We're going to talk about hash functions, some data structures involving hash functions, the stately bloom filter, and the security implications of password hashing.

Sunday 2:30 p.m.–3 p.m. in Room 517C

Zen of Quality - How PBS measures QoS for digital viewers

Mike Howsden in Python Libraries

It is extremely important to PBS that digital viewers have an awesome experience when viewing online videos. In this talk, we explain how PBS built a system to collect, analyze, and measure who's getting a good experience -- and who's not.

Sunday 2:30 p.m.–3 p.m. in Room 511

Performance by the Numbers: analyzing the performance of web applications

Geoff Gerrietts in Best Practices & Patterns

Everyone knows poor performance when they see it, and performance concerns affect every application -- web applications more than most. But finding performance problems can be extraordinarily difficult, and requires an analytical approach coupled with good instrumentation. This talk explores approaches to instrumentation and what that instrumentation can tell you.

Sunday 2:30 p.m.–3 p.m. in Room 517D

bottom band background