Accepted Talks

For Lack of a Better Name(server): DNS Explained.

Lynn Root in Systems Administration

You've deployed! But your friends can't see it - what's wrong? I'm betting DNS. Maybe you've fixed a couple of entries, point some records to hostnames, waited patiently for new domains to resolve only to notice your nameservers are incorrect. But what actually goes on with DNS? Come to this talk to find out how DNS works, and how to interact and create a DNS with Python.

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

All Your Ducks In A Row: Data Structures in the Standard Library and Beyond

Brandon Rhodes in Best Practices & Patterns

Why are Python programmers crazy about lists and dictionaries, when other languages tout bitmaps, linked lists, and B+ trees? Are we missing out? Come learn how data structures are implemented on bare metal, how to select the right data structure, how the list and dictionary cover a wide swath of use cases, and when to dip into the Standard Library or a third-party package for an alternative.

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

Character encoding and Unicode in Python: How to (╯°□°)╯︵ ┻━┻ with dignity

Travis Fischer, Esther Nam in Best Practices & Patterns

Every developer will inevitably feel the pain of character encoding issues. We will cover the fundamentals every Python developer should know on character encoding and Unicode. We will teach you how to identify the types of problems that occur when dealing with character encoding and outline a set of best practices and useful libraries which can be used to avoid and fix character encoding issues.

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

Computer science fundamentals for self-taught programmers

Justin Abrahms in Other

When people talk about Big O notation do you go cross eyed? Do you not get the point of learning about implementing linked lists or depth first search? Join me as I introduce the CS fundamentals that helped me ace my Google interview, even though I didn't get a formal CS education.

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

Introduction to Regular Expressions

Luke Sneeringer in Python Core (language, stdlib, etc.)

Many developers, including quite a few experienced developers, are absolutely confounded by regular expressions. However, regular expressions aren't as difficult as many believe. In this talk, I will teach regular expressions by starting with the simple and moving toward the complex, so that you too can read and write regular expressions like a hero.

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

Kneel And Disconnect: Getting The Fastest Connection Out Of A Hostname

Ashwini Oruganti in Python Libraries

Did you know that when you resolve a hostname, you can get multiple addresses back, and pick any one to connect to? Some of these addresses will connect near instantly, while others might take a long time or time out. This talk is about a Twisted endpoint API I built that takes a hostname, and returns the connection that takes the least time to complete, from the list of resolved host addresses.

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

Creating Bomb-Proof Data Importers

Daniel Lindsley in Best Practices & Patterns

Building importers that consume other peoples' data can sometimes feel a bit like dumpster-diving. Non-compliant formats, network errors and missing data are just some of the many ways your importer is a ticking time bomb. This talk presents ways to diffuse that bomb, so when the data's broke, you can still be the hero.

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

Decorators: A Powerful Weapon in your Python Arsenal

Colton Myers in Python Core (language, stdlib, etc.)

Decorators are an invaluable addition to anyone's arsenal of python tools and tricks. We will learn what a decorator is, how decorators are created, and then explore some of the cooler applications for decorators in our everyday projects.

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

So you want to be a full-stack developer? How to build a full-stack python web application.

Kate Heddleston in Best Practices & Patterns

This is a talk about building full-stack python web applications where you manage every part of the application yourself. I will walk through how to setup a production server with your web application code, a local development environment using vagrant, and how to deploy from your local environment to production. I will also walk through python and Django libraries that will make your life easier.

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

Cache me if you can: memcached, caching patterns and best practices

Guillaume Ardaud in Best Practices & Patterns

Memcached is a popular, blazing fast in-RAM key/object store mainly used in web applications (although it can be used in virtually any software). You will walk out of this talk with a solid understanding of memcached and what it does under the hood, and become familiar with several patterns and best practices for making the most of it in your own Python applications.

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

Python Scraping Showdown: A performance and accuracy review of top scraping libraries

Katharine Jarmul in Python Libraries

Ever wondered how python web-scraping libraries compare in terms of speed and accuracy? I’ll review lxml, html5lib, BeautifulSoup and scrapy with a series of sites evaluating how quickly they can parse pages and how accurately they can find data, particularly pieces of data that render after DOM loading and other pesky bits like hidden form data, internationalized data and mobile-compliant sites.

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

Import-ant Decisions

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

Suppose `import` didn't exist, and we had to invent it from scratch. We'll look at the problem - code sharing and reuse across modules - and different ways we could solve it. We'll come up with `import` from parallel universes and then reinvent python's actual implementation. Finally, we'll import - using python's design - without using the `import` keyword.

Friday 12:10 p.m.–12:40 p.m. in Room 520

By Your Bootstraps: Porting Your Application to Python3

Tres Seaver in Best Practices & Patterns

This talk is an experience report / best practices summary, based on work porting a very large stack to Python 3.x. The stack includes the Zope3 component architecture, ZODB, WebOb, pyramid, other dependencies, totalling ~180 KLOC Python + ~25 KLOC C.

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

Turn Your Computer Into a Server

Karen Rustad, Asheesh Laroia in Systems Administration

Learn how to let other people connect straight to your computer, so your Python web apps, email services, or anything else can be seen by the world. It starts simple, then explains when and how to use SimpleHTTPServer, ssh tunnels, Pagekite, and IPv6. You can use these tools for temporary connections, like sharing an in-progress demo, or for permanent connectivity for your home server.

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

Pickles are for Delis, not Software

Alex Gaynor in Python Core (language, stdlib, etc.)

You may have encountered the pickle or cPickle libraries, and used them to persist some state about your program. But how do they work? This talk explores how the pickle protocol works, what its advantages are, and its disadvantages

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

The Young Coder: Let's Learn Python (or, 'So, You Want to Run a Young Coders Class')

Barbara Shaurette, Katie Cunningham in Education

Since PyCon 2013, interest in the Young Coders class has intensified. Several Python conferences have run their own, and classes outside of conferences - from one-time workshops to after school clubs - have sprung up as well. With more people than ever interested in teaching Python to kids, we're here to address how to organize a class. It takes some effort to set up, but the payoff is enormous.

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

Ansible - Python-Powered Radically Simple IT Automation

Michael DeHaan in Systems Administration

Learn about Ansible -- a radically simple way to deploy applications, configure operating systems, and orchestrate IT operations including zero downtime rolling updates. Let's bring about SkyNet faster.

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

An Introduction to Twisted

Stacey Sern in Python Libraries

Twisted is an event-driven, networking library. This talk aims to explain what that means and give an overview of some of the main Twisted concepts. It will also describe some of the functionality that Twisted offers out of the box.

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

Enough Machine Learning to Make Hacker News Readable Again

Ned Jackson Lovely in Science

It's inevitable that online communities will change, and that we'll remember the community with a fondness that likely doesn't accurately reflect the former reality. We'll explore how we can take a set of articles from an online community and winnow out the stuff we feel is unworthy. We'll explore some of the machine learning tools that are just a "pip install" away, such as scikit-learn and nltk.

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

The Birth & Death of JavaScript

Gary Bernhardt in Other

This talk traces JavaScript's impact on software development tools over forty years, from 1995 until 2035. Although the language is mostly dead today, it drove the largest transformation of mainstream development tools since the creation of Unix 65 years ago.

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

How to Get Started with Machine Learning

Melanie Warrick in Education

Provide an introduction to machine learning to clarify what it is, what it's not and how it fits into this picture of all the hot topics around data analytics and big data.

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

The Python Pipeline: Why you should reach out to local teachers and how to do it

Selena Deckelmann in Education

There's a gaping hole in Python advocacy: K-12 educators. These are the front-lines of CS education, especially in countries where attending primary and secondary school is compulsory, and resources to teach CS are stretched very thin. Learn what we have to offer CS teachers and how you can help in your local area.

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

Puppet Modules: Apps for Ops

Justin Bronn in Systems Administration

Puppet modules provide reusable operations ("ops") code in a manner analogous to Django apps. This talk explores the Puppet ecosystem through the eyes of a typical Python developer, and demonstrates how to use Puppet modules effectively to deploy and secure Python web applications.

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

Straightening Out AngularJS with Python

Jeff Schenck in Web Frameworks

AngularJS is a really exciting tool for building super slick single-page apps. But if you want them to play nice with a Python backend (Django, Pyramid, Flask, etc.) you're going to have to do a little bit of wrangling. These are the design patterns that worked for us.

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

Twisted Mixing

Laurens Van Houtven in Python Libraries

A talk about mixing Twisted, an asynchronous IO framework for Python, with other Python code: blocking code, other asynchronous code...

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

Teaching Python: To Infinity and Beyond

Kushal Das in Community

Dgplug summer training is a free online IRC based course which aims to teach FOSS ideas and programming in general using Python to new programmers/stduents. In this talk we share our experiences, lesson learned, hoping that people will be able to replicate this in other parts of the world.

Friday 3:15 p.m.–3:45 p.m. in Room 520

Getting Started with SaltStack

Peter Baumgartner in Systems Administration

Salt is the new kid on the block in the configuration management space. Unlike the Ruby-based Chef and Puppet, Salt is written in Python, making it easy to debug and extend for Python developers. This talk will introduce Salt as well as explore some of the things that make it unique.

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

Getting Hy on Python: How to implement a Lisp front-end to Python

Paul Tagliamonte in Python Internals

This talk will cover the internals of Python, such AST, Import hooks, creating a console, and a very brief overview of Python internal formats (such as pyc files), by way of looking over the implementation of a Lisp called "Hy". No Lisp knowledge is required.

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

Realtime predictive analytics using scikit-learn & RabbitMQ

Michael Becker in Python Libraries

scikit-learn is an awesome tool allowing developers with little or no machine learning knowledge to predict the future! But once you've trained a scikit-learn algorithm, what now? In this talk, I describe how to deploy a predictive model in a production environment using scikit-learn and RabbitMQ. You'll see a realtime content classification system to demonstrate this design.

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

What Is Async, How Does It Work, And When Should I Use It?

A. Jesse Jiryu Davis in Web Frameworks

Python’s asynchronous frameworks, like Tulip, Tornado, and Twisted, are increasingly important for writing high-performance web applications. Even if you’re an experienced web programmer, you may lack a rigorous understanding of how these frameworks work and when to use them. Let’s see how Tulip's event loop works, and learn how to efficiently handle very large numbers of concurrent connections.

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

Distributed Computing Is Hard, Lets Go Shopping

Lewis Franklin in Best Practices & Patterns

Distributed computing is challenging. The network can be spotty. The servers can be pushed too hard. Race conditions can show up. Tasks can seem to disappear. Deployment can be messy. Celery is an excellent tool for writing distributed applications and this talk focuses on real-world challenges faced when doing those tasks.

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

The State of Crypto in Python

Jarret Raim, Paul Kehrer in Python Libraries

There are a half-dozen major Python cryptography frameworks built on at least three separate C implementations, each with their own strengths and weaknesses and in various states of maintenance. This presentation will review the current state of the art and discuss the future of crypto in Python including a new library under development, PyPy support and more.

Friday 4:15 p.m.–5 p.m. in Room 520

Application Deployment State of the Onion

Noah Kantrowitz in Systems Administration

Deploying a moderately complex web application has become quite a challenge over the years. As best-practices have evolved, it has become progressively more time-consuming to keep up with what tools exist and how to use them effectively. This talk will provide an overview of the ecosystem and provide pointers for more information about individual components or problems.

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

Blending art, technology, and light, Python for interactive and real time LED installations

Preston Holmes in Other

Blinking colored lights bring out the child in all of us. Color LED lighting technology is becoming more available and affordable. Layers of hardware, lighting protocols, and effects design can make doing anything more complex than blinking these lights tricky. Come learn about LEDs how to control them with Python, and about building real-time control of physical things.

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

Castle Anthrax: Dungeon Generation Techniques

James King in Gaming

Come and learn the techniques used for generating random dungeon-like levels for games. You don't have to know what Rogue is to enjoy this talk. Prepare yourself for a plethora of Monty Python references and we'll have some fun.

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

Fan-in and Fan-out: The crucial components of concurrency

Brett Slatkin in Best Practices & Patterns

The most important yet underappreciated parts of concurrent APIs are good constructs for fan-out (one thread spawns others) and fan-in (many threads join together). This talk will show examples of fan-in and fan-out. It will cover the successes and shortcomings of APIs that provide concurrency. Finally, we'll discuss how the async model of Tulip/PEP3156 is the ultimate API. The future is bright!

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

Hello Physical World: A Crash Course on the Internet of Things

Katherine Scott in Python Libraries

Live and direct from the PyCon stage learn how to connect your things to the internet! In this talk we’ll connect physical things and people to the internet. In this talk we will live code a tiny web server that interacts with the physical world via sensors, actuators, video, and audio. We will explore tools in the Python ecosystem that make this possible and show how they work together.

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

Python + Geographic Data = BFFs

Mele Sax-Barnett in Other

Python is so well-suited for processing and managing geographic data, I think they'll be best friends forever. In this talk, I'll introduce some of the best Python libraries to use with your geodata, and show you how treating GeoJSON like a Python dictionary can make cleaning and validating your data a breeze. I'll also discuss examples of using Python to add custom functionality to GIS software.

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

Advanced methods for creating decorators.

Graham Dumpleton in Best Practices & Patterns

Decorators are a simple concept, yet extremely powerful. Implementing decorators which will work in a range of contexts is however non trivial. This talk will walk through various problems which arise with the more common ways of implementing decorators and then describe how to combine a wrapper and a descriptor to build a better decorator.

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

Building and breaking a Python sandbox

Jessica McKellar in Python Core (language, stdlib, etc.)

What does it take to make a Python sandbox that can run untrusted code? Learn some surprising language features and experience security challenges first-hand as we work through building a Python sandbox from scratch. You'll leave this talk with renewed appreciation for the dynamic nature of Python, some sneaky language tricks, and a solid background in classes of sandboxing security issues.

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

Developing Flask Extensions

Rachel Sanders in Web Frameworks

You can create a web application with Flask in seven lines of code, and you can grow that app to thousands. How do you create reusable, shareable libraries? We'll use a simple but real extension I created (Flask-FeatureFlags) to look at the different ways you can make Flask awesome.

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

Track memory leaks in Python

Victor Stinner in Python Core (language, stdlib, etc.)

Memory leaks in Python cannot be analyzed with traditional tools because Python uses reference counters. I will present tools specific to Python to help you to localize your memory leaks.

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

A Scenic Drive through the Django Request-Response Cycle

Dan Langer in Web Frameworks

A simple "Hello World!" page, served via Django, passes though a surprising number of layers & components. For a newcomer to the language or the platform, this can be overwhelming at the start. Here I'll take you on a drive through Django's request-response cycle, focusing on using its layered model to understand what's going on and get things done.

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

Introduction to Docker

Amjith Ramanujam in Systems Administration

Docker is a tool for sandboxing entire application environments using Linux containers. Docker's feature set includes versioning, sharing etc. They are light-weight and fast, you can recreate a deployment environment in development or push your development containers to production. Imagine never having to worry about fragmentation of servers or syncing the versions of different libraries.

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

Games for Science: Creating interactive psychology experiments in Python with Panda3D

Jessica Hamrick, Peter Battaglia in Science

Have you ever wanted to play video games while also contributing to science? In psychology experiments developed by myself and Peter Battaglia, participants are immersed in an interactive 3D world which is experimentally well-controlled, yet also extremely fun. This talk will explain how we created these "game-like" experiments in Python using the Panda3D video game engine.

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

Designing Django's Migrations

Andrew Godwin in Web Frameworks

Django finally has built-in migrations, and they're a long way from the designs of South or django-evolution. Learn the key design decisions we made, ideas we discarded, and the unique treatment we have to give each of our four official database backends.

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

Python in the Browser: Intro to Brython

Susan Tan in Other

Have you ever wished that you can write Python in the browser? Brython is an experimental Javascript library that enables you to leverage the elegance of Python on the client side. Novice programmers who are familiar with Javascript will learn about Brython, how Brython measures up against Javascript, and why getting client-side Python adopted as a mainstream tool is really difficult.

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

Garbage Collection in Python

Benjamin Peterson in Python Internals

This talk will explore how garbage collection is implemented in CPython and PyPy. See how CPython deals reference counting's shortcomings with a special GC for cycle collection. Then dive into PyPy's sophisticated and high-performing GC implementations. The particularly thorny issue of finalizers in reference cycles will also be addressed.

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

So You Want to Build an API?

Megan Speir in Best Practices & Patterns

You might know what an API is. Maybe you've even implemented a handful of popular APIs out there, but you are thinking about building your own and don’t know where to start. This talk will show you how easy it is to build an API into your project using Python and Flask. We’ll also discuss best practices and design patterns for great APIs.

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

Know Thy Neighbor: Scikit and the K-Nearest Neighbor Algorithm

Portia Burton in Science

One of the great features of Python is its machine learning capabilities. Scikit is a rich Python package which allows developers to create predictive apps. In this presentation, we will guess what type of music do Python programmers like to listen to, using Scikit and the k-nearest neighbor algorithm.

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

Analyzing Rap Lyrics with Python

Julie Lavoie in Other

Have you ever wondered which rapper is the most sexist? Come learn how to find out by scraping rapgenius and analyzing rap lyrics using Python with libraries like pattern and Beautiful Soup! There will be pictures of Lil' Jon.

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

Upgrade your Web Development Toolchain

Blaise Laflamme in Best Practices & Patterns

How to make our Python web development workflow less painful and more predictable? By mixing a collection of tools and best practices for both back and front ends like Buildout, Grunt, Bower and Ansible to automate tasks.

Saturday 12:10 p.m.–12:40 p.m. in Room 520

Subprocess to FFI: Memory, Performance, and Why You Shouldn't Shell Out

Christine Spang in Python Core (language, stdlib, etc.)

Sometimes, the code you need just isn't available in Python, but someone's written some code in another language that solves your problem. What options do you have for interacting with this external code from within your program? We'll examine how to call external binaries, what happens behind the scenes at a systems level, and how these implementation details affect performance and memory usage. In the second part of the talk, we'll discuss the different options for more tightly integrating external code in the form of a C library for better performance and control.

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

Designing Poetic APIs

Erik Rose in Best Practices & Patterns

The language you speak determines the thoughts you can think. Thus, API designers (and that includes you, if you've ever coined a function) have a great duty, as language inventors, to expand the mental canvases of those who come after. We'll concretize that into 7 hallmarks of good APIs, pulling examples (and bloopers) from popular Python libraries.

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

Django: The good parts

James Bennett in Web Frameworks

Lots of talks and tutorials try to cover Django exhaustively, going over every component and feature. But not so many take a look at the bits that let Django be Django. In this talk, we'll see exactly what those bits -- some old, some new -- are, in a way that shows why it's still a solid and popular choice for web developers nearly nine years after its initial public release.

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

Getting Started Testing

Ned Batchelder in Testing

If you've never written tests before, you probably know you *should*, but view the whole process as a bureaucratic paperwork nightmare to check off on your ready-to-ship checklist. This is the wrong way to approach testing. Tests are a solution to a problem that is important to you: does my code work? I'll show how Python tests are written, and why.

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

Writing RESTful web services with Flask

Miguel Grinberg in Web Frameworks

Flask is a web framework for Python based on Werkzeug, Jinja 2 and good intentions. It is considered a micro-framework, but don't get the "micro" part fool you; Flask can do everything the "others" can do, many times in a simpler, leaner way. This session will introduce you to Flask as an engine to build RESTful web services.

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

The Sorry State of SSL

Hynek Schlawack in Security

Those web pages with shiny lock icons boasting that your data is safe because of “256 bit encryption”? They are lying. In times of mass surveillance and commercialized Internet crime you should know why that’s the case. This talk will give you an overview that will help you to assess your personal security more realistically and to make your applications as secure as possible against all odds.

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

Diving into Open Data with IPython Notebook & Pandas

Julia Evans in Science

I'll walk you through Python's best tools for getting a grip on data: IPython Notebook and pandas. I'll show you how to read in data, clean it up, graph it, and draw some conclusions, using some open data about the number of cyclists on Montréal's bike paths as an example.

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

Introduction to SQLAlchemy Core

Jason Myers in Python Libraries

This talk provides a broad-based introduction to SQLAlchemy Core library. It is focused on someone new to SQLAlchemy Core, who has experience with other database technologies such as Django or SQLAlchemy ORM. We'll cover the differences between the domain-centric models of those tools compared to the schema-centric model and how we can use that to deal with common and unusual data sources.

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

Unit Testing Makes Your Code Better

Greg Ward in Best Practices & Patterns

Unit testing is like public transit: everyone agrees it's a good thing for other people to do. It's easier to swallow when you see how unit testing improves not only the correctness of your code, but the design as well. I'll walk through a real-life case study where adding unit tests turned a pretty good module into an even better one: easier to understand, extend, and reuse.

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

Data intensive biology in the cloud: instrumenting ALL the things

Titus Brown in Science

Cloud computing offers some great opportunities for science, but most cloud computing platforms are I/O and memory limited, and hence are poor matches for data-intensive computing. After 4 years of research software development we are now instrumenting and benchmarking our analysis pipelines; numbers, lessons learned, and future plans will be discussed. Everything is open source.

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

Quick Wins for Better Website Security

Dan Callahan in Security

Learn quick, easy, and lesser-known techniques to improve your website's security, protect against session hijacking, and defend against XSS and data injection attacks.

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

REST is not enough: Using Push Notifications to better support your mobile clients

Juan Gomez in Other

This talk will introduce you to Push Notifications, a very powerful way for your Python service to communicate information to mobile devices. You will learn how Push Notifications work, their advantages and disadvantages and how you can implement them on your Python projects.

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

Sane schema migrations with Alembic and SQLAlchemy

Selena Deckelmann in Databases

Working with developers on schema migrations is a perennial challenge for DBAs and developers. Devs tend to like a "set it and forget it" tool. This talk discusses the strategies used to move from a pure SQL and shell migration system to using SQLAlchemy and alembic for maximum DBA and developer happiness.

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

Multi-factor Authentication - Possession Factors

Ying Li in Best Practices & Patterns

A brief overview of what multifactor authentication is, focusing particularly on possession factors, including what common options are available. One-time-passwords, an important concept many possession factor types, will also be discussed.

Saturday 3:15 p.m.–3:45 p.m. in Room 520

Pushing Python: Building a High Throughput, Low Latency System

Kevin Ballard in Best Practices & Patterns

Taba is a distributed metrics aggregator, similar in concept to statsd. Built with Python using Redis, gevent, and Cython, it currently handles over 6M events/sec with strong consistency guarantees. This talk will present an overview of its design, and discuss the challenges and solutions encountered in the process of building a high throughput, low latency distributed service.

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

In Depth PDB

Nathan Yergler in Python Core (language, stdlib, etc.)

Python includes a powerful debugger, but using it well requires practice. Setting a break point and inspecting local variables is easy, but what else can you do? What if you need to set the breakpoint in one of your dependencies, or only fire it conditionally? How do you navigate calls, or change them? Join me for an in depth look at how you can better use PDB to debug and understand programs.

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

Building the App

mike bayer in Databases

In this talk we'll illustrate a simple web application using SQLAlchemy, showing off the style of development that SQLAlchemy is most geared towards, the so-called "foundational" style which provides for development and maintainance of custom conventions which then service the needs of the model declarations and use case implementations.

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

Discovering Python

David Beazley in Other

So, what happens when you lock a Python programmer in a secret vault containing 1.5 TBytes of C++ source code and no internet connection? Find out as I describe how I used Python as a secret weapon of "discovery" in an epic legal battle.

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

Software Carpentry: Lessons Learned

Greg Wilson in Education

This talk will explain how Software Carpentry has grown to run over a hundred training events a year, what we've learned along the way, and how you can do it too.

Saturday 4:15 p.m.–5 p.m. in Room 520

Python packaging simplified, for end users, app developers, and open source contributors

Asheesh Laroia in Best Practices & Patterns

This talk covers the practical use of Python packaging tools. You'll see how to keep your system clean as an end user excited about installing a Python module from the web, the purpose of, how virtualenv makes life easier (and sometimes harder), what Ubuntu/Debian tools can offer, and how to make a complex app easier for new contributors to run. It is heavy on stories and recommendations.

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

Cheap Helicopters In My Living Room

Ned Jackson Lovely in Embedded Systems

Using Python and a minimal amount of hardware hacking, it's possible to build computer controlled helicopters you can fly around your living room for surprisingly small amounts of money. This talk will describe the steps you'll need to take to start the ball rolling towards Skynet using a $20 helicopter and an Arduino.

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

Advanced techniques for Web functional testing

Julien Phalip in Testing

This talk will present multiple advanced techniques for Web functional testing. You will learn how to test a wide range of Web front-end components, such as CSS, visuals, responsive designs and user interactions — all using Python. Various practical tips will also be presented to harness your functional tests in real project workflows.

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

Fast Python, Slow Python

Alex Gaynor in Best Practices & Patterns

The common wisdom is that Python is slow. And yet people run high performance software on it. It's hard to make Python fast, and yet there are incredibly high performance Python VMs. This talk breaks down the facts and the myths of Python performance.

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

Programming an Autonomous 20 Foot Blimp with Python

Scott Lobdell in Other

This talk documents the journey of a less than conventional robotics application in which python is used as the logical controller of an autonomous 20 foot blimp. The blimp's autopilot features, prolonged air time, large size, and smooth motion make it the ideal platform for aerial photography. Giving the blimp an onboard controller reduces the overall costs and requirements of the operation.

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

What is coming in Python packaging

Noah Kantrowitz in Python Core (language, stdlib, etc.)

In the last 18 months the Python packaging world has seen an explosion of activity. Learn what improvements are available now and what is on the horizon.

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

It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech

Julie Pagano in Community

It can be hard to focus on your love of coding when you are regularly battling invisible issues like insecurity, anxiety, and lack of confidence. This talk will identify invisible issues programmers struggle with, talk about their impact, discuss personal experiences dealing with them, and share some tools useful in fighting back.

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

Performance Testing and Profiling: A Virtuous Cycle

Dan Crosta in Testing

Donald Knuth famously said that we should avoid optimization 97% of the time and focus on the "critical 3%". How can we identify that 3%? How can we best focus our optimization efforts, and avoid the "root of all evil" that is premature optimization? This talk introduces key types of performance testing, and demonstrates how they can be paired with profiling techniques in a cycle of improvement.

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

Which messaging layer should you use if you want to build a loosely coupled distributed Python app?

Narahari Allamraju in Best Practices & Patterns

The objective of this session is to give the audience an idea of how they should choose a messaging layer for their application - how to evaluate their requirements against the features of the tools and make a choice. I will use my experience with building messaging applications to present a methodology which they can use

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

My big gay adventure. Making, releasing and selling an indie game made in python.

Luke Miller in Gaming

Indie game developer Luke Miller presents a brief overview on making point-and-click adventure games using the open source pyvida gaming engine and uses his commercially released gay-themed adventure game "My Ex-Boyfriend the Space Tyrant!" as a tutorial on developing, packaging, releasing and selling a python game for Windows, Mac and Linux.

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

Deliver Your Software In An Envelope

Augie Fackler, Nathaniel Manista in Best Practices & Patterns

Guaranteed behavior makes software modules useful. Software guarantees are commonly incomplete with good reason: promises that are narrow and few are most easily kept across wide ranges of platforms and long times. We define the space of a module’s allowed behavior to be its “behavioral envelope” and show that thinking and speaking in terms of envelopes eases maintenance and makes APIs delightful.

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

Technical on-boarding, training, and mentoring.

Kate Heddleston, Nicole Zuckerman in Community

This is a talk about how to make junior and new engineers into independent and productive members of your engineering team faster and cheaper. We will focus on python specific resources and libraries that will help you create a simple but effective on boarding program, and talk about case studies of companies that have had success using these techniques.

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

Postgres Performance for Humans

Craig Kerstiens in Databases

To many developers the database is a black box. You expect to be able to put data into your database, have it to stay there, and get it out when you query it... hopefully in a performant manner. When its not performant enough the two options are usually add some indexes or throw some hardware at it. We'll walk through a bit of a clearer guide of how you can understand and manage DB performance.

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

Farewell and Welcome Home: Python in Two Genders

Naomi Ceder in Community

After half a lifetime "undercover as a man" I transitioned from male to female while staying involved in the Python community. This talk discusses that transition and explores how I found life in Python as a woman different from my former life as a man.

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

Outreach Program for Women: Lessons in Collaboration

Marina Zhurakhinskaya in Community

Since 2010, the GNOME Foundation’s Outreach Program for Women has provided 130 women with an opportunity to participate in remote internships with 23 Free Software organizations. This talk will cover the history of the program, what makes it successful, how the same strategies can be used for engaging all new contributors, and what other initiatives help increase diversity in Free Software.

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

2D/3D graphics with Python on mobile platforms

Niko Skrypnik in Gaming

Games, application with rich graphic for mobile platforms? Yes! You can do it for Android, iOS and other platforms with using Python. In this talk I speak about tools you may use for developing applications with using OpenGL ES for different platforms, the ways and concepts which are used in those tools, some tips and tricks you may use to make a cross-platform game with Python for fun and profit.

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

PostgreSQL is Web Scale (Really :) )

Hannu Krosing in Databases

This talk will outline and demonstrate usage of PostgreSQL for data storage and processing scenarios where new common wisdom would usually turn to "NoSQL" databases for scalability reasons. It demonstrates both NoSQL style usage and techniques using more traditional relational storage models with required adjustments for infinite scalability.

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

Hitchhikers Guide to Participating in Open Source

Elena Williams in Community

Curious about being involved in open source, but haven't had the time to make the plunge? Involved with open source but a bit hazy on the way it all works? Open source legend Andrew Tridgell runs an annual week-long post-graduate primer course teaching "Free and Open Source Software Development ". This talk will convey as much of this course as possible in the time available.

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

See Docs Run. Run, Docs, Run!

Catherine Devlin in Education

Code executes. Docs just sit there looking pretty. Now it's time to blur that boundary! Tools like the IPython Notebook, Sphinx, dexy, and old-fashioned doctests blend code with docs, making package docs, educational materials, and system-level docs more engaging, relevant, and trustworthy.

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

Localization Revisited

Ruchi Varshney in Best Practices & Patterns

Is your web app ready for a global audience? Internationalizing your codebase with gettext ( might just be the simpler part of the puzzle. It’s hard to maintain translations in a fast paced deployment environment without constant manual intervention. This talk covers tools and strategies you can adopt to automate your localization process and ensure high translation coverage.

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

Software Engineering Research for Hackers: Bridging the Two Solitudes

Tavish Armstrong in Other

Software engineering researchers and hackers don't talk to each other as much as they ought to. This talk aims to bridge that gap, teach practitioners about what research is out there, and spark a "citizen science" movement in software engineering. I'll explain how to study your own projects and get academics to pay attention. Together, we can learn how to develop better software.

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

Smart Dumpster: Employing Python to Report Real-Time Resource Fill to Operation Managers

Bradley Angell in Testing

As U. of California campuses must reach Zero-Waste by 2020, a Smart Dumpster was designed to increase efficiency, study waste patterns, and improve refuse reduction. Using Python, a prototype has been installed into operations with tentative success since July 2013. Demonstrating real-time data reporting, the talk will focus on the success, roadblocks and campus plans for the Smart Dumpster.

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

The Day of the EXE Is Upon Us

Brandon Rhodes in Best Practices & Patterns

It was once quite painful to build your Python app as a single .exe file. Support forums filled with lamentations as users struggled with primitive tools. But today, two separate tools exist for compiling your Python to real machine language! Come learn about how one of the biggest problems in commercial and enterprise software has now been solved and how you can benefit from this achievement.

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

Set your code free: releasing and maintaining an open-source Python project

Carl Meyer in Best Practices & Patterns

Got some code that you've written that would be useful to others, but actually releasing it feels like too much new stuff to figure out? Releasing software does take some work, but this talk will take you step-by-step through the process with specific recommendations and tools. We'll cover preparing your code for release, packaging it, releasing it, and maintaining it over time.

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