Change the future

Accepted Talks

Opening Statements

Jesse Noller in Keynote

Opening statements from Jesse Noller.

Friday 9 a.m.–9:30 a.m. in Grand Ballroom GH, Great America, Mission City, Grand Ballroom CD, Grand Ballroom EF, Grand Ballroom AB


Eben Upton in Keynote

Eben Upton is a founder and trustee of the Raspberry Pi Foundation, and serves as its Executive Director. The Raspberry Pi is an ultra-low cost, credit card-sized computer designed to fill a much-needed technological gap in communities that cannot afford more traditional computing hardware and to provide children around the world the opportunity to learn programming.

Friday 9:30 a.m.–10:10 a.m. in Grand Ballroom GH, Great America, Mission City, Grand Ballroom CD, Grand Ballroom EF, Grand Ballroom AB

How the Internet works

Jessica McKellar in Other

This talk is an introduction to the Internet's structure and protocols through fun experiments from the Python perspective. We'll use Python libraries like Scapy and Twisted to explore what happens at a networking level as you surf the Web, how coffee shop Internet access works, and more.

Friday 10:50 a.m.–11:20 a.m. in Grand Ballroom AB

Composability Through Multiple Inheritance

Łukasz Langa in Best Practices/Patterns

One of the turning points in history was when manufacturing embraced intermediate production. By creating simple components that can be integrated into complex products, manufacturers are able to build faster and cheaper, achieving better quality. In this tale of developer meets engineer,I describe how I'm using Python's inheritance model to bring this manufacturing reality to life in source code.

Friday 10:50 a.m.–11:20 a.m. in Grand Ballroom EF

Messaging at Scale at Instagram

Rick Branson in Distributed Computing

As activity accelerated from just a few thousand activities per day to hundreds of millions, Instagram needed a reliable, scalable messaging infrastructure to distribute work and messages. In this talk, I'll jump from a crash course in the abstract concepts of queueing into the implementation details & hard-earned know-how from experience building massive-scale Python-based systems.

Friday 10:50 a.m.–11:20 a.m. in Grand Ballroom CD

The Naming of Ducks: Where Dynamic Types Meet Smart Conventions

Brandon Rhodes in Best Practices/Patterns

While Java and C# use static type declarations to eliminate ambiguity, the Python programmer must survive through sheer clarity and consistency in naming variables. We will explore the deep unspoken conventions that the Python community has developed and honed over two decades to make Python code readable and meaningful within the freedom that a dynamically-typed language grants us.

Friday 10:50 a.m.–11:20 a.m. in Great America

How to Except When You're Excepting

Esther Nam in Best Practices/Patterns

This talk is an introduction to the practice of exception handling, aimed at those without a heavy CS background or years of experience, and who are thus unfamiliar with the technique. Novices to Python will learn Python-specific techniques that make use of built-in exceptions and the context manager, as well as unusual but Pythonic ways of managing the flow control of their program.

Friday 10:50 a.m.–11:20 a.m. in Grand Ballroom GH

Gittip: Inspiring Generosity

Chad Whitacre in Community

Gittip is a platform for sustainable crowd-funding. The site's primary funding mechanism is the "gift tip," a small, anonymous, weekly gift to a worthwhile person or project. These gifts are given with no strings attached, and represent a new model for funding free and open source software. Moreover, Gittip itself is funded on Gittip, with potential implications far beyond software.

Friday 10:50 a.m.–11:20 a.m. in Mission City

Rethinking Errors: Learning from Scala and Go

Bruce Eckel in Best Practices/Patterns

C++ brought exceptions to mainstream programming; Java goes further with checked exceptions. But are exceptions the one way to report all errors? Scala and Go suggest there is more than one kind of error, so there should be more than one kind of error reporting, and different responses to errors. I’ll show the Scala and Go approaches to the error problem, and how to apply this to Python.

Friday 11:30 a.m.–noon in Grand Ballroom GH

Funding and Coordinating Python Projects via Non-Profits

Bradley M. Kuhn in Community

Organizations like Software Freedom Conservancy and PSF provide essential non-profit infrastructure to the Python community. For the past few years, Conservancy specifically helped raise funds to support 3 key Python projects: Mercurial, PyPy and Twisted. This talk discusses successes and challenges of funding Python software development in non-profits, and discuss plans to expand this activity.

Friday 11:30 a.m.–noon in Mission City

Windows 8 Apps and Python (Making Money in the Windows App Store)

Steve Dower in Packaging

The latest release of Windows provides developers with a marketplace to sell apps written in C++, .NET, JavaScript… and Python. In this presentation we demonstrate just how easy it is to take advantage of new Windows functionality while using a friendly programming language to write (and sell) your app.

Friday 11:30 a.m.–noon in Great America

The End Of Object Inheritance & The Beginning Of A New Modularity

Augie Fackler, Nathaniel Manista in Best Practices/Patterns

After 15 years' combined experience developing software of all types we are done with object inheritance. Come learn about elegant, superior solutions to the problems inheritance claims to adequately solve.

Friday 11:30 a.m.–noon in Grand Ballroom EF

This Old Video Site: How PBS streams video - and you can too!

Edgar Roman in Business

Overview of how the Public Broadcasting Service streams video online. Learn how PBS uses python and other services to provide video streaming online. Talk will discuss lessons learned, explanation of video formats, and experiences with mobile device support. Talk will include recommendations for others to easily adopt similar practices to quickly host their own online video site.

Friday 11:30 a.m.–noon in Grand Ballroom CD

Scrapy: it GETs the web

Asheesh Laroia in Best Practices/Patterns

Scrapy lets you straightforwardly pull data out of the web. It helps you retry if the site is down, extract content from pages using CSS selectors (or XPath), and cover your code with tests. It downloads asynchronously with high performance. You program to a simple model, and it's good for web APIs, too.

If you use requests, mechanize, or celery for HTTP, you should probably switch to scrapy.

Friday 11:30 a.m.–noon in Grand Ballroom AB

Better Documentation Through Automation: Creating Sphinx Extensions

Doug Hellmann in Documentation

Sphinx is an incredibly useful tool for creating attractive documentation for your project, but if all you ever use it for is converting reStructuredText files to HTML you are barely scratching the surface of its power. This presentation shows how easy it is to extend Sphinx by defining new markup processors, allowing you to take your documentation to the next level.

Friday 12:10 p.m.–12:40 p.m. in Grand Ballroom EF

Making DISQUS Realtime.

Adam Hitchcock in Concurrency

What does it take to add realtime functionality to a truly “web scale” app. The result is the DISQUS realtime system, a highly concurrent system for allowing web clients to subscribe to arbitrary events in the DISQUS infrastructure.

Friday 12:10 p.m.–12:40 p.m. in Grand Ballroom CD

Kivy: Building GUI and Mobile apps with Python

Thomas Hansen, Mathieu Virbel in GUI Programming

This talk will introduce the Kivy project ( Kivy’s mission is to make building graphical user interfaces on any device fun, efficient, and pythonic.

The talk will focus on giving attendees an overview of how they can use kivy to build exiting UIs and mobile apps.

Friday 12:10 p.m.–12:40 p.m. in Great America

So you want to write an interpreter?

Alex Gaynor in Other

You're a programmer, you use interpreter and compilers every day (and twice on Sundays!). But how do these things work? Could you build one yourself? What would it take? Where would you start? This talk takes you through the process, from lexing to interpreting, and leaves you ready to start on your own language!

Friday 12:10 p.m.–12:55 p.m. in Mission City

The Magic of Metaprogramming

Jeff Rush in Best Practices/Patterns

Learn the magic of writing programs that monitor, alter and react to the execution of program code by responding to imports, changes to variables, calls to functions and invocations of the builtins. This talk goes beyond the static world of metaclasses and class decorators.

Friday 12:10 p.m.–12:55 p.m. in Grand Ballroom AB

API Design for Library Authors

Chris McDonough in Best Practices/Patterns

A library is code distributed in such a way that strangers can use it. In this talk we consider: 1) why Python developers make bad libraries and poor APIs; 2) how to make your library API maximally useful for others; 3) examples of real-world antipatterns involving APIs.

Friday 12:10 p.m.–12:55 p.m. in Grand Ballroom GH

Python 3.3: Trust Me, It's Better than 2.7

Brett Cannon in Core Python (Language, Stdlib)

In this talk I will try to convince you that Python 3.3 is superior to Python 2.7 by going over the differences between Python 2.7 and Python 3.3 along with benchmark information to show where Python 3.3 shines in comparison to Python 2.7 (and vice-versa). If I accomplish my goal, you will walk out of this talk convinced that Python 2.7 is not the final version of Python you want to support.

Friday 1:40 p.m.–2:25 p.m. in Great America

You can be a speaker at PyCon!

Anna Ravenscroft in Community

Have you ever considered submitting a proposal to speak at PyCon but weren't sure how to even get started? This session will walk you through the steps to get there, so that you'll be ready to propose a talk for next year!

Friday 1:40 p.m.–2:25 p.m. in Grand Ballroom CD

Twisted Logic: Endpoints and Why You Shouldn't Be Scared of Twisted

Ashwini Oruganti in Other

This talk will be a survey of my learning experience adding new endpoint APIs to Twisted, an event-driven networking engine (as a Google Summer of Code project), with a special focus on the analysis of some of the horror stories that surround Twisted. Right from the asynchronous I/O model to Deferreds: if it scares you, we’ll figure a way out and see what the makers of Twisted say when confronted.

Friday 1:55 p.m.–2:25 p.m. in Grand Ballroom GH

PyPy without the GIL

Armin Rigo in Concurrency

PyPy has a version without the Global Interpreter Lock (GIL). It can run multiple threads concurrently. But the real benefit is that you have other, new ways of using all your cores. In this talk I will describe how it is possible (STM) and then focus on some of these new opportunities, e.g. show how we used multiple cores in a single really big program without adding thread locks everywhere.

Friday 1:55 p.m.–2:25 p.m. in Mission City

Measuring and modeling the complexity of children's books

Jeff Elmore in Science

Researchers have been modeling text difficulty for over 50 years. A variety of models have been developed, but few have focused on books for emerging readers (Grades K-2). We used Python for nearly every aspect of the project including collecting data from reading educators, analyzing text features, and creating a predictive model. Tools used include scipy, scikit-learn, PiCloud, and others.

Friday 1:55 p.m.–2:25 p.m. in Grand Ballroom AB

sys._current_frames(): Take real-time x-rays of your software for fun and performance

Leonardo Rochael in Best Practices/Patterns

Profiling is hard. Trying to understand what is making your system slow can be very frustrating. Specially when it happens only when your clients are looking, but not you.

Friday 2:35 p.m.–3:05 p.m. in Mission City

Visualizing Github, Part I: Data to Information

Dana Bauer, Idan Gazit in Other

A treasure trove of data is captured daily by Github. What stories can that data tell us about how we think, work, and interact? How would one go about finding and telling those stories? This two-part talk is a soup-to-nuts tour of practical data visualization with Python and web technologies, covering both the extraction and display of data in illumination of a familiar dataset.

Friday 2:35 p.m.–3:05 p.m. in Grand Ballroom GH

Fighting Cancer with Python

Erik Evensen in Science

The “War on Cancer” was declared over 40 years ago. Despite tremendous advances in understanding cancer biology and developing cancer treatments, it remains a significant cause of suffering and death. We will describe Python-based data management and analysis tools and show how they have enabled a novel flow cytometry-based technology focused on studying disease biology to improve cancer outcomes.

Friday 2:35 p.m.–3:05 p.m. in Grand Ballroom AB

Using futures for async GUI programming in Python 3.3

Dino Viehland in Concurrency

In Python 3.2 a new feature was added for concurrent programming - futures. In Python 3.3 generators have been extended to allow returning from a generator with a value. In this talk we'll show how these features can be combined to create a rich and easy to use asynchronous programming model which can be used for creating highly responsive GUI applications or easy async programming.

Friday 2:35 p.m.–3:05 p.m. in Great America

Loop like a native: while, for, iterators, generators

Ned Batchelder in Core Python (Language, Stdlib)

Python provides powerful primitives for iterating over your data in ways that let you express yourself clearly and directly. But even programmers familiar with the tools don't use them as fully as they could. This talk will cover Python's iteration tools, from basic loops to generators and how to add iteration to your own classes. Come learn how looping was meant to be!

Friday 2:35 p.m.–3:05 p.m. in Grand Ballroom CD

Encapsulation with descriptors

Luciano Ramalho in Best Practices/Patterns

Python has no private fields, but the property decorator lets you replace public attributes with getters and setters without breaking client code. And the descriptor mechanism, used in Django for model field declarations, enables wide reuse of getter/setter logic via composition instead of inheritance. This talk explains how properties and descriptors work by refactoring a practical example.

Friday 2:35 p.m.–3:05 p.m. in Grand Ballroom EF

The Guts of Unicode in Python

Benjamin Peterson in Python Internals

This talk will examine how Python's internal Unicode representation has changed from its introduction through the latest major changes in Python 3.3. I'll present properties of the current Unicode implementation like algorithmic complexity and standard compliance. The talk will also compare Unicode in Python with some other languages. Finally, I'll look into the future of Python's Unicode.

Friday 3:15 p.m.–3:45 p.m. in Great America

Music Theory and Performance Analysis with Sebastian and Czerny

James Tauber in Other

This talk will discuss two open source projects for using Python for music analysis. Sebastian focuses on music theory while Czerny focuses on performance (particularly keyboard playing).

Friday 3:15 p.m.–3:45 p.m. in Grand Ballroom EF

Python Profiling

Amjith Ramanujam in Useful Libraries

This talk will give a tour of different profiling techniques available for Python applications. We'll cover specific modules in Python for doing function profiling and line level profiling. We'll show the short comings of such mechanisms in production and discuss how to do sampled profiling of specific functions. We'll finish with statistical profilers that use thread stack interrogation.

Friday 3:15 p.m.–3:45 p.m. in Grand Ballroom CD

The SQLAlchemy Session - In Depth

Mike Bayer in Databases/NoSQL

A detailed walkthrough of SQLAlchemy's Session, describing the rationale for its existence, its driving philosophies, and finally a walkthrough of Session lifecycle through the use of an animated diagram. We'll cover how the relational database refers to database rows within a transaction, and how the Session has over the years developed a tight, proxied integration with this lifecycle.

Friday 3:15 p.m.–4 p.m. in Mission City

Blame it on Caesar: What you need to know about dates, times and time zones

Lennart Regebro in Best Practices/Patterns

Time measurement is a complex area full of tricky problems and unexpected edge-cases. This fast-paced talk tells you how to avoid the pitfalls, and warn about the compromises.

Friday 3:15 p.m.–4 p.m. in Grand Ballroom AB

Visualizing Github, Part II: Information to Meaning

Idan Gazit, Dana Bauer in Other

A treasure trove of data is captured daily by Github. What stories can that data tell us about how we think, work, and interact? How would one go about finding and telling those stories? This two-part talk is a soup-to-nuts tour of practical data visualization with Python and web technologies, covering both the extraction and display of data in illumination of a familiar dataset.

Friday 3:15 p.m.–4 p.m. in Grand Ballroom GH

Deploy your Python app in 5 min with a PaaS

Nate Aune in Cloud

How can you avoid servers and get back to coding? Platform-as-a-service (PaaS) makes deployment easy. But which PaaS do you choose and how do you get started? This talk will examine several of the leading PaaS providers and discuss their pros/cons. We'll also give examples for how to deploy the same app to each of them to see the differences.

Friday 4:15 p.m.–5 p.m. in Grand Ballroom EF

Awesome Big Data Algorithms

Titus Brown in Big Data

Random algorithms and probabilistic data structures are algorithmically efficient and can provide shockingly good practical results. I will give a practical introduction, with live demos and bad jokes, to this fascinating algorithmic niche. I will conclude with some discussions of how our group has applied this to large sequencing data sets (although this will not be the focus of the talk).

Friday 4:15 p.m.–5 p.m. in Grand Ballroom CD

Transforming Code into Beautiful, Idiomatic Python

Raymond Hettinger in Best Practices/Patterns

Learn to take better advantage of Python's best features and improve existing code through a series of code transformations, "When you see this, do that instead."

Friday 4:15 p.m.–5 p.m. in Great America

EduPsych Theory for Python Hackers: A Whirlwind Overview

Mel Chua in Education

I've taken two years of graduate courses in engineering education. I save you $50k in tuition and hundreds of hours of reading and give you the short version for Pythonistas who care about education and outreach.

Friday 4:30 p.m.–5 p.m. in Grand Ballroom GH

Elasticsearch (Part 1): Indexing and Querying

Erik Rose in Big Data

Elasticsearch provides an easy path to clusterable full-text search, with synonyms, faceting, and geographic math, but there's a paucity of written wisdom beyond its API docs. This talk, part 1 of a 2-part series, surveys its capabilities and shows how its internal data structures and algorithms work. With the groundwork laid, we explore how to choose efficient indexing and the right queries to make your apps go fast.

Friday 4:30 p.m.–5 p.m. in Mission City

If You Code, You Should Write

Brian K. Jones in Community

Writing isn't just about dry project documentation or docstrings. It can actually be fun and interesting, and it's an enormous benefit to the community. This talk makes the case that writing is our civic duty to our community, and gives some tips to get started writing for various different venues & audiences.

Friday 4:30 p.m.–5 p.m. in Grand Ballroom AB

Whoosh, the open-source Python search library

Matt Chaput in Useful Libraries

From humble beginnings when I first learned Python just to write a search engine to make online help searchable, Whoosh has grown and matured to match the capabilities of much larger projects such as Lucene. This talk will explain simple uses of Whoosh to index and search documents, and demonstrate more advanced features such as faceting.

Friday 5:10 p.m.–5:40 p.m. in Mission City

Functional Programming with Python

Mike Müller in Best Practices/Patterns

Python supports several functional programming concepts. The presentations shows how to use functional features such as functions as first-class objects, closures, side-effect-fee functions, currying, lazy evaluation, no mutable data structures and use of iterators instead of loops. The focus is on integration of these concepts in existing programs.

Friday 5:10 p.m.–5:40 p.m. in Great America

SimpleCV - Computer Vision using Python

Katherine Scott in Useful Libraries

This talk is a brief summary of Computer Vision tutorial we proposed for PyCon. In this talk we will discuss what computer vision is, why it's useful, what tools exist in the Python ecosystem, and how to apply it to your project. The talk will focus on the SimpleCV library but also touch upon NumPy. SciPy and iPython notebooks.

Friday 5:10 p.m.–5:40 p.m. in Grand Ballroom CD

Write the Docs

James Bennett in Documentation

The greatest piece of software in the world is useless without great documentation, but unfortunately most of us just don't write great docs. This can be fixed, though. Documentation doesn't need to be an afterthought, and doesn't have to be bad, and you, too, can learn how to write good docs and make that an integrated part of your development process.

Friday 5:10 p.m.–5:40 p.m. in Grand Ballroom AB

Make More Responsive Web Applications with SocketIO and GEvent

Luke Sneeringer in Web Frameworks

An explanation of how to implement a server in Python to serve websocket requests from browsers.

Friday 5:10 p.m.–5:40 p.m. in Grand Ballroom EF

Planning and Tending the Garden: The Future of Early Childhood Python Education

Kurt Grandis in Education

Interest and activity in computing education is on the rise. Other language communities and projects have stepped up to promote early childhood programming. What tools are available for teaching Python? How do they compare?

This talk aims to discuss current trends, examine the current education landscape, question our goals as a community, and discuss opportunities for growing young developers.

Friday 5:10 p.m.–5:40 p.m. in Grand Ballroom GH


Jessica McKellar in Keynote

Jessica McKellar is a Linux kernel engineer from Cambridge, MA. She is a Python Software Foundation board member and an organizer for the largest Python user group in the world.

Saturday 9 a.m.–9:40 a.m. in Grand Ballroom GH, Great America, Mission City, Grand Ballroom CD, Grand Ballroom EF, Grand Ballroom AB


Raymond Hettinger in Keynote

Raymond Hettinger is a freelance programmer with experience in cloud computing, high frequency trading, genomics, and optimization.

Saturday 9:40 a.m.–10:20 a.m. in Grand Ballroom GH, Great America, Mission City, Grand Ballroom CD, Grand Ballroom EF, Grand Ballroom AB


Gary Bernhardt in Best Practices/Patterns

An exploration of the boundaries between pieces of code, including: isolated testing, behavior vs. data, mutation vs. immutability, how data shape affords parallelism, transforming interface dependencies into data dependencies, and what it might look like to build systems using all of these to guide the boundaries between objects and components.

Saturday 10:50 a.m.–11:20 a.m. in Mission City

Getting started with automated testing

Carl Meyer in Testing

The hardest part of testing is getting the ball rolling. Once you've picked your tools and started writing tests, the added confidence you have in making changes to your code, and the time you save in repetitive manual testing, can quickly become addictive! If you never got over that initial speedbump, or you've tried testing but it hasn't yet clicked, this talk is for you.

Saturday 10:50 a.m.–11:20 a.m. in Grand Ballroom EF

Python for Robotics and Hardware Control

Jonathan Foote in Science

I build robots for a living and kinetic art for fun. I use Python as a front end, GUI control, and glue to talk to controllers, actuators, sensors, and peripherals. I will present some example robots and kinetic art, and give some tips that I've learned from building everything from robotic desk lamps to automated surgical systems.

Saturday 10:50 a.m.–11:20 a.m. in Grand Ballroom CD

So Easy You Can Even Do It in JavaScript: Event-Driven Architecture for Regular Programmers

Glyph in Concurrency

In this era of rich browser applications, everybody needs to know at least enough about events to write an 'onclick' handler. But events have a reputation for being confusing. In this talk I'll explain why events can be quite easy to understand if you think about them the right way, and how to scale your understanding from trivial browser JavaScript to distributed systems in Python.

Saturday 10:50 a.m.–11:20 a.m. in Great America

Python's Law

Stephen McJohn in Community

Open source software is changing intellectual property law. The talk would cover recent cases on what elements of software may be copied without infringing copyright, the scope of software patents, enforceability of licenses, damages for copyright infringement,
and how the network of community support for projects such as Python may be more potent in litigation than a patent portfolio.

Saturday 10:50 a.m.–11:20 a.m. in Grand Ballroom GH

5 powerful pyramid features

Carlos de la Guardia in Web Frameworks

Pyramid is a web framework designed to do very well the fundamentals of web applications. Even though it's minimalist in its goals, it provides strong features to let developers deal with these fundamentals. In this talk, we'll look at 5 specific Pyramid features that offer web developers unique flexibility and power.

Saturday 10:50 a.m.–11:20 a.m. in Grand Ballroom AB

Scaling community diversity outreach

Asheesh Laroia, Jessica McKellar, Dana Bauer, Daniel Choi in Community

In March '10, the Boston Python user group ran its first gender diversity outreach workshop. In the time since, the group has has moved the needle and inspired other communities to do the same. In this panel, you will hear communities like PyStar Philly, Railsbridge Boston, and the Chicago Python Workshop discuss their successes and difficulties with diversity-oriented outreach.

Saturday 11:30 a.m.–noon in Mission City

Who’s there? - Home Automation with Arduino/RaspberryPi

Rupa Dachere in Embedded Systems

Have you ever found yourself obsessively checking UPS or FedEx tracking site to see if your package finally got delivered at your doorstep? Or wondered when your contractor/gardener showed up to do their job?

Come join me to learn how to build your own gadget to notify you when your package or contractor shows up at your doorstep!

Saturday 11:30 a.m.–noon in Grand Ballroom CD

Pyramid Auth Is Hard, Let's Ride Bikes

Chris McDonough in Web Frameworks

Pyramid web framework authentication and authorization subsystems are powerful and pluggable, but using them to their max isn't always easy. This talk will discuss how to get the most out of those subsystems.

Saturday 11:30 a.m.–noon in Grand Ballroom AB

Things to make writing tests easier

Chris Withers in Testing

Writing tests is often hard enough as it is, without having to keep on writing the same boiler plate to set things up and check outcomes. I've collected a bunch of these tools that are all documented, flexible and have unit tests of their own. I'd like to share those with people interested in using them so they can spend more time writing code and less time worrying about how to test it properly.

Saturday 11:30 a.m.–noon in Grand Ballroom EF

Cython vs SWIG, Fight!

Mark Kohler in Useful Libraries

Cython and SWIG are excellent, and yet very different tools for using C libraries from Python. The goal of this talk is to introduce both tools, discuss their strengths, their weaknesses, and the situations that clearly favor one tool over the other.

Saturday 11:30 a.m.–noon in Great America

Copyright and You

Frank Siler in Community

The basics of copyright law mainly as applies to the United States but also covering the fundamental tenets that govern international law. I include quite a bit of overview material as well as talk about specific licensing schemes, including open source schemes, and some recent trends including open hardware.

Saturday 11:30 a.m.–noon in Grand Ballroom GH

Death by a thousand leaks: what statically-analysing 370 Python extensions looks like

David Malcolm in Python Internals

What happens when you run a custom C static analysis tool ("cpychecker") on hundreds of Python extensions? I'll talk about the kinds of errors that my tool found, how to run it on your own code, and how to prevent memory leaks and crasher bugs in the C code of your Python extension modules.

Saturday 12:10 p.m.–12:40 p.m. in Great America

Mobile Application Testing with Python and Selenium

Jason Carr in Testing

Selenium has grown to be a mature platform on the desktop, but with 'mobile now' being the mantra for so many companies, can we use Selenium to effectively test mobile apps? What about Native apps? This talk will cover using Python to test mobile web applications with Selenium, as well as an in depth overview of the future of Selenium to test Native iOS and Android applications.

Saturday 12:10 p.m.–12:40 p.m. in Grand Ballroom EF

Building an image processing pipeline with Python

Franck Chastagnol in Distributed Computing

This talk covers the details of how to build a highly scalable image processing pipeline using Python and third-party open source libraries and tools such as OpenCV, NumPy, Tesseract, ImageMagick, Tornado, Nginx and MySQL.

Saturday 12:10 p.m.–12:40 p.m. in Grand Ballroom CD

What teachers really need from us

Selena Deckelmann in Education

We need great resources and great teachers for the next generation of software developers. Hear about what teachers say about what they need and what the Python community has to offer K-12 classrooms.

Saturday 12:10 p.m.–12:55 p.m. in Mission City

Why you should use Python 3 for text processing

David Mertz in Core Python (Language, Stdlib)

Python is a great language for text processing. Each new version of Python--but especially the 3.x series--has enhanced this strength of the language. String (and byte) objects have grown some handy methods and some built-in functions have improved or been added. More importantly, refinements and additions have been made to the standard library to cover the most common tasks in text processing.

Saturday 12:10 p.m.–12:55 p.m. in Grand Ballroom GH

Dispatch Magic

Ben Bangert in Web Frameworks

One of the most common tasks in modern web frameworks is to ease the task of writing bits of code that are then called by the framework. Handling this task is the first major undertaking of any web framework, and the part that most web frameworks have in common.

How do frameworks locate this code? What basic patterns apply to all frameworks? How does this make me be a better web programmer?

Saturday 12:10 p.m.–12:55 p.m. in Grand Ballroom AB

Solid Python Application Deployments For Everybody

Hynek Schlawack in Systems Administration

Do you dread the moment when your shiny new application is “ready for production”; except it isn’t because deploying is hard? How about moving existing apps or deploying one app to many servers? I’ll take you on a trip of dos and don’ts of deploying Python apps on UNIXy systems. Afterwards, you will be able to find the best way to deploy your code without repeating the mistakes of many before you.

Saturday 1:40 p.m.–2:25 p.m. in Grand Ballroom EF

Panel: Directions for Packaging

Nick Coghlan, Barry Warsaw, Éric Araujo in Packaging

What needs to happen to finally offer a first-class packaging experience to Python users? Several of the people working directly on that problem will be here to answer your questions.

Saturday 1:40 p.m.–2:25 p.m. in Great America

Designers + Developers: Collaborating on your Python project

Julia Elman, Mark Lavin in Community

Working in teams is an important part of what we do as developers & designers. Whether it's desktop applications or mobile sites, we work together to create successful end products. But how do we work together in different environments? What is the best work-flow for a mix of skill sets?

We'll be talking about our various methods & work-flows that we found successful in working collaboratively.

Saturday 1:40 p.m.–2:25 p.m. in Grand Ballroom CD

How (Not) To Build An OSS Community

Daniel Lindsley in Community

A rough & tumble guide, based on the pains of experience, of what to do/not do when trying to build an OSS community.

Saturday 1:55 p.m.–2:25 p.m. in Mission City

Teaching with the IPython Notebook

Matt Davis in Education

The IPython Notebook offers a number of advantages when teaching programming. It eliminates the need to switch between the command line and an editor, provides a consistent interface for students, and provides an easy to share and reuse file format. I’ll discuss how I and others are using the IPython Notebook to reduce the mental load on students to make learning and teaching easier for everyone.

Saturday 1:55 p.m.–2:25 p.m. in Grand Ballroom GH

Who are we? A sociological analysis of the indigenous Python tribe

Jacqueline Kazil in Science

If you look at a history of programming languages, over time languages combine or diverge to form new languages. Here we are, the people of Python, but who are we? Will we survive? Will we evolve from a tribe to state? What is important to us as a people? This talk will aim at providing insight by looking at data in Python community.

Saturday 2:35 p.m.–3:05 p.m. in Mission City

Building full-stack scientific applications in Python

Luke Lee in Science

Python has a large collection of tools for scientific computing. However, finding the right pieces and assembling them into a fast and scale-able app can be a daunting task. This talk will explore common requirements of scientific apps and how to fulfill those from the Python ecosystem. It will also provide a blueprint for building apps using tools like PyQt, PyQwt, numpy, and HDF5.

Saturday 2:35 p.m.–3:05 p.m. in Grand Ballroom GH

Chef: Automating web application infrastructure

Kate Heddleston in Systems Administration

This talk is going to focus on using Chef to create web application projects, specifically a python project with a Django framework. Chef is a configuration tool for managing infrastructure by allowing users to automatically and reproducibly configure installations on servers. This talk will cover what is Chef, why automated server configuration is important, and how Chef can be used personally.

Saturday 2:35 p.m.–3:05 p.m. in Grand Ballroom EF

Location, Location, Location

Julia Grace in Web Frameworks

Are you building a Django application that needs to handle geographic location data? Are you unsure how to tackle using spatial databases, how to jump into using GeoDjango or how to allow users to query for data by, for example, zip code? I'll go over how to use GeoDjango, lessons learned in using spatial databases, and how I built an API exposing distance query functionality.

Saturday 2:35 p.m.–3:05 p.m. in Great America

Customizing the Django Admin: The How and the Why

Lakshman Prasad in Industry Uses

The abstraction and the flexibility the Django admin offers is matched by few software, even today after half a decade of it's introduction. The speaker has customized it in many ways over the years. This talk reminisces over how supposedly large real world problems could be solved with relatively less development by leveraging the power of django admin and using a few techniques.

Saturday 2:35 p.m.–3:05 p.m. in Grand Ballroom AB

Logical Failures

Luke Sneeringer in Best Practices/Patterns

Programmers are, by the nature of their work, logicians. However, logic can be more challenging than we sometimes think, and it's easy for us to make logical mistakes, especially when they're to justify a proposition we already believe. This is, at its core, what makes us not very good at testing our own stuff, and what makes architecting a technical system so challenging.

Saturday 2:35 p.m.–3:05 p.m. in Grand Ballroom CD

Let Them Configure!

Łukasz Langa in Best Practices/Patterns

A look at possible approaches to introducing configurability to your Python application, and a quick analysis of the most common problems.

Saturday 3:15 p.m.–3:45 p.m. in Grand Ballroom CD

Making Apache suck less for hosting Python web applications.

Graham Dumpleton in Web Frameworks

It is not hard to find developers who will tell you that Apache sucks for running Python web applications. Is there a valid basis to such claims or have they simply been misguided by the views of others? This talk will endeavor to shine a light on the realities of and limitations in working with Apache, as well as the challenges in implementing the mod_wsgi module for Apache.

Saturday 3:15 p.m.–3:45 p.m. in Grand Ballroom EF

Realtime Tracking and Mapping of Geographic Objects using Python

Ragi Burhum in Other

Non-trivial mapping and location-centric applications are a beast of their own in terms indexing/querying/analyzing. Realtime tracking geo-applications add an even greater layer of complexity.

In this talk we will give a short overview of the traditional OS web/mobile mapping architecture and datasets and extend it to include a realtime component.

Saturday 3:15 p.m.–3:45 p.m. in Great America

Beyond Passwords: Secure Authentication with Mozilla Persona

Dan Callahan in Useful Libraries

Mozilla Persona is a decentralized, cross-browser authentication system that completely eliminates website passwords. It's simple, secure, and privacy-protecting. This talk explores the design of Persona with a focus on adding it as a login option to Python-based webapps, drawing from Mozilla's own experience switching many Django (and non-Django) sites away from passwords and to Persona.

Saturday 3:15 p.m.–4 p.m. in Grand Ballroom AB

Numba: A Dynamic Python compiler for Science

Travis Oliphant, Siu Kwan Lam, Mark Florisson in High Performance Computing

Numba is a compiler for Python syntax that uses the LLVM library and llvmpy to convert specifically decorated Python functions to machine code at run-time. It allows Python syntax to be used to do scientific and numerical computing that is blazing fast yet tightly integrated with the CPython run-time.

Saturday 3:15 p.m.–4 p.m. in Grand Ballroom GH

Community Event Planning

Christie Koehler in Community

Hosting in-person events is a great way to develop and grow your local Python community. If you’ve ever thought about hosting a code sprint, hackathon, (un)conference or workshop, this talk is for you. I’ll present quick overview of what you need to know to get started planning a successful event. Event planning workbook included.

Saturday 3:15 p.m.–4 p.m. in Mission City

Crypto 101

Laurens Van Houtven in Best Practices/Patterns

An introduction to applied cryptography and information security suitable for programmers of all ages and skill levels.

Saturday 4:15 p.m.–5 p.m. in Grand Ballroom EF

All-Singing All-Dancing Python Bytecode

Larry Hastings in Core Python (Language, Stdlib)

We all know Python is a bytecode interpreter, but what does that mean? Come find out! You'll learn what Python bytecodes are, what they do, and even how you can tinker with them. By the end of the talk you'll be an expert. All code will be 100% Python 3--knowledge of C not required!

Saturday 4:15 p.m.–5 p.m. in Grand Ballroom CD

Python's Class Development Toolkit

Raymond Hettinger in Core Python (Language, Stdlib)

This is a short, but thorough tutorial on the Python's built-in toolset for creating classes. We look at commonly encountered challenges and how to solve them using Python.

Saturday 4:15 p.m.–5 p.m. in Great America

Sink or swim: 5 life jackets to throw to New Coders

Lynn Root in Education

Many want to learn to code, and many choose Python as a first language. You direct them to Learn Python the Hard Way, or Dive into Python. Great! But now what? I will present 5 digestible projects to gradually progress the Python learner from near drowning to a decent swimmer. The goal is to have new coders feeling accomplished and to continuing learning.

Saturday 4:30 p.m.–5 p.m. in Mission City

Porting Django apps to Python 3

Jacob Kaplan-Moss in Web Frameworks

Django 1.5 now supports Python 3, so now's the time to start thinking about porting your apps and sites. Come see how! I'll talk about the porting techniques that work, and present two case studies: porting a site, and porting a reusable app.

Saturday 4:30 p.m.–5 p.m. in Grand Ballroom AB

What is the Python Software Foundation?

Brian Curtin in Community

To a lot of people, the Python Software Foundation is a black box. After years of being on the outside of the box, a few years on the inside have given a good look at what this foundation is and why it matters. Come see what the PSF is about, what it's doing, and what you can do to help.

Saturday 5:10 p.m.–5:40 p.m. in Grand Ballroom EF

Lessons Learned in Teaching Python

Alexandra Strong, Christine Cheung in Education

Sharing what you know with others is an extremely rewarding experience, and may challenge and develop your knowledge of Python.

I will share my teaching experiences; covering venues, materials, lesson plans, technical difficulties, engagement, and more.

If you've considered teaching Python, this talk will give you insight into what it takes to keep your students engaged, and have some fun.

Saturday 5:10 p.m.–5:40 p.m. in Mission City

MTO On Blast: Using Python's Natural Language Toolkit to Model Gossip Blogs

Robert Elwell in Other

This talk describes a project that uses the Natural Language Toolkit to build a language model from a gossip blog. The tone is light-hearted, but manages to introduce some core concepts in Python's most popular NLP library as well as some basics on computational linguistics and programming in Python.

Saturday 5:10 p.m.–5:40 p.m. in Grand Ballroom CD

Dynamic Code Patterns: Extending Your Applications with Plugins

Doug Hellmann in Best Practices/Patterns

Python makes loading code dynamically easy, allowing you to configure and extend your application by discovering and loading extensions at runtime. This presentation will discuss the techniques for dynamic code loading used in several well-known applications and weigh the pros and cons of each approach.

Saturday 5:10 p.m.–5:40 p.m. in Great America

Integrating Jython with Java

Jim Baker, Shashank Bharadwaj in Core Python (Language, Stdlib)

Jython provides a nearly seamless integration when using Java code. Using Jython from Java is not nearly as seamless, at least not yet. There are also several choices, depending on what you're doing, from object factories to using Java Scripting (JSR-223) support. This talk will discuss techniques, gotchas, and ongoing work to improve integration.

Saturday 5:10 p.m.–5:40 p.m. in Grand Ballroom GH

Asset Management in Python

Robert Kluin, Beau Lyddon in Useful Libraries

With the growth of Coffeescript, Less, SASS, etc..., compiling the assets for your project is becoming more useful. This talk covers using a Python library called Webassets to automate your build process. We specifically focus on getting your Javascript and CSS compiling automatically as you work. We show examples of integrating with common web frameworks like Django and Flask.

Saturday 5:10 p.m.–5:40 p.m. in Grand Ballroom AB


Van Lindberg in Keynote

Van Lindberg is a software engineer and practicing attorney. What he does most, though, is translate - from "lawyer" to "engineer" and back. He likes working with both computer code and legal code to get things done.

Sunday 9 a.m.–9:20 a.m. in Grand Ballroom GH, Great America, Mission City, Grand Ballroom CD, Grand Ballroom EF, Grand Ballroom AB


Guido van Rossum in Keynote

Guido van Rossum is the author of the Python programming language. He continues to serve as the "Benevolent Dictator For Life" (BDFL), meaning that he continues to oversee the Python development process, making decisions where necessary. He is currently employed by Dropbox.

Sunday 9:20 a.m.–10 a.m. in Grand Ballroom GH, Great America, Mission City, Grand Ballroom CD, Grand Ballroom EF, Grand Ballroom AB

How Import Works

Brett Cannon in Core Python (Language, Stdlib)

This talk will go over how the simple from sys import version turns out to be slightly complicated. The details of imports -- from how the import statement is interpreted to deciding what object to return -- will be discussed. While the talk will discuss things from the perspective of Python 3.3 (and thus importlib), the overall semantics will (mostly) apply to older versions of Python.

Sunday 1:10 p.m.–1:40 p.m. in Grand Ballroom GH

ApplePy: An Apple ][ emulator in Python

James Tauber in Other

ApplePy is an Apple ][ emulator written in Python. It combines emulation of the 6502 microprocessor with emulation of the keyboard, display (including graphics mode), speaker, cassette and disk drive. This talk will provide a background to Apple ][ internals then dive into the Python code and the challenges of emulating hardware.

Sunday 1:10 p.m.–1:40 p.m. in Great America

Distributed Coordination with Python

Ben Bangert in Distributed Computing

Processes in a cluster can require controlled access to shared resources, tracking available processes, and sharing state. Unfortunately most tools in this category are oriented around Java. In this talk I cover how to use Python to interact with Apache Zookeeper -- a fault-tolerant consistent data-store -- to write coordinated distributed fault-tolerant applications in Python.

Sunday 1:10 p.m.–1:40 p.m. in Grand Ballroom EF

Plover: Thought to Text at 240 WPM

Mirabai Knight in Other

Stenographic technology has been locked down to expensive, proprietary hardware and software for decades, depriving the world of the most efficient text entry system devised to date. Plover, a free, cross-platform steno engine that works with $45 hardware, offers hackers and hobbyists the ability to type at up to 240 WPM in applications ranging from wearable computing to captioning to coding.

Sunday 1:10 p.m.–1:40 p.m. in Mission City

Iteration & Generators: the Python Way

Luciano Ramalho in Best Practices/Patterns

Did you know that "for a, (b, c) in s:" is a valid Python line? From the elegant for statement through list/set/dict comprehensions and generator functions, this talk shows how the Iterator pattern is so deeply embedded in the syntax of Python, and so widely supported by its libraries, that some of its most powerful applications can be overlooked by programmers coming from other languages.

Sunday 1:10 p.m.–1:40 p.m. in Grand Ballroom AB

Going beyond the Django ORM limitations with Postgres

Craig Kerstiens in Databases/NoSQL

With most frameworks the ORM attempts to treat all databases equally, this results in developers being limited in how many advantages they can take of their database. In particular Postgres has many features which developers would love to take advantage of but are not easily accessible via the Django ORM.

Sunday 1:50 p.m.–2:20 p.m. in Grand Ballroom CD

PyNES: Python programming for Nintendo 8 bits.

Guto Maia in Gaming

This lecture describes a journey guided by hardcore gaming experiences from the past and how that lead to development of PyNES. What started as a "Python ASM compiler for Nintendo 8 bits" and is now evolving as a "Python programming for Nintendo 8 bits". All the hacks and drawbacks faced will be shown. Told as an epic tale, that should encourage others to fulfil the same path.

Sunday 1:50 p.m.–2:20 p.m. in Great America

Become a logging expert in 30 minutes

Gavin M. Roy in Core Python (Language, Stdlib)

The logging module is one of the more complex areas of the Python standard library. In this talk you will learn how to leverage loggers, formatters, handlers and filters. In addition you will learn how to use dictConfig and other formats to manage logging settings for your applications.

Sunday 1:50 p.m.–2:20 p.m. in Grand Ballroom EF

Using Python to Code by Voice

Tavis Rudd in Other

I dictate my code using a voice recognition system with Python embedded in it. In a fast paced live demo, I will code a small system and deploy it without touching the keyboard. I hope to convince you that voice recognition is no longer a crutch for the disabled or limited to plain prose.

Sunday 1:50 p.m.–2:20 p.m. in Mission City

Worry-Free Parsers with Parsley

Allen Short in Useful Libraries

Writing parsers has often been a task difficult for programmers to take on. Many of the tools available for parsing require writing grammar rules and code that work very different from everything else in Python. Parsley is a library that mixes the benefits of concise rule-based grammars with a parsing model that works the way you expect Python code to work.

Sunday 1:50 p.m.–2:20 p.m. in Grand Ballroom GH

"Good enough" is good enough!

Alex Martelli in Best Practices/Patterns

Our culture's default assumption is that everybody should always be striving for perfection -- settling for anything less is seen as a regrettable compromise. This is wrong in most software development situations: focus instead on keeping the software simple, just "good enough", launch it early, and iteratively improve, enhance, and re-factor it. This is how software success is achieved!

Sunday 1:50 p.m.–2:20 p.m. in Grand Ballroom AB

Server Log Analysis with Pandas

Taavi Burns in Other

Use iPython, matplotlib, and Pandas to slice, dice, and visualize your application's behaviour through its logs.

Sunday 2:30 p.m.–3 p.m. in Grand Ballroom GH

A Crash Course in MongoDB

Andy Dirnberger in Databases/NoSQL

This talk introduces MongoDB for developers who aren’t familiar with it through a detailed introduction to how to work with MongoDB from Python. This talk will cover the basics from installing PyMongo and connecting to a server, to creating, inserting, querying for, and updating documents. It will also briefly touch on topics such as aggregation and using MongoDB as a cache layer.

Sunday 2:30 p.m.–3 p.m. in Grand Ballroom CD

Use curses, don't swear

Sean Zicari in Useful Libraries

I find it very handy to be able to fire up the command line and make changes through a well-designed CLI tool. I'd like to show how the 3rd party urwid library or the built-in curses library can be used to build such tools easily.

Sunday 2:30 p.m.–3 p.m. in Great America

Namespaces in Python

Eric Snow in Core Python (Language, Stdlib)

In the infamous words of Tim Peters, "Namespaces are one honking great idea -- let's do more of those!" (PEP 20) Python's type system is built on the basis of well-bounded namespaces. Come look behind the curtain and you'll see Python in a whole new light. We'll also talk about how to put this knowledge to use whenever you write modules, classes, and functions.

Sunday 2:30 p.m.–3 p.m. in Grand Ballroom AB

Purely Python Imaging with Pymaging

Jonas Obrist in Useful Libraries

A little over a year ago, frustration with the state of image processing in Python led me to start a project called pymaging. Pymaging is a pure Python image processing library that works on Python 2.x and 3.x. This talk will dive into why I started this project, how I dug into the problems, what I learned about image formats and my goals for the future of this project.

Sunday 2:30 p.m.–3 p.m. in Grand Ballroom EF

Internationalization and Localization Done Right

Ruchi Varshney in Best Practices/Patterns

A short intro to all aspects of making your Python web app ready for an international audience, right from marking Python source, templates and Javascript for translation to working with translation services, maintaining and testing translation files. The talk will cover details on Python gettext and open-source packages such as Babel and Potpie. Examples are based on the Django i18n framework.

Sunday 2:30 p.m.–3 p.m. in Mission City

Closing Address

Jesse Noller in Keynote

Closing remarks from Jesse Noller.

Sunday 3:10 p.m.–4:10 p.m. in Grand Ballroom GH, Great America, Mission City, Grand Ballroom CD, Grand Ballroom EF, Grand Ballroom AB

PostgreSQL for Pythonistas

Jonathan S. Katz in Databases/NoSQL

PostgreSQL is a database that has many built-in data types to make it easier to query and process data. In this talk, we will look at the overlap between some of the built-in Python and PostgreSQL data types. We will explore the psycopg2 PostgreSQL adapter and see how it conveniently maps data types between PostgreSQL and Python, and look at how we can extend this to some popular Python ORMs.

Advanced Django Forms Usage

Daniel Greenfeld in Web Frameworks

Django forms are really powerful but there are edge cases, especially with class based views), that can cause a bit of anguish. This talk will go over how to handle many common solutions not currently described in the core documentation. It will also cover useful third-party libraries.

Getting Python and Django Through Your Java Shop Front Door (with Jython)

Frank Wierzbicki in Best Practices/Patterns

What do you do if you are a lover of Python but work in a Java only establishment? How do you convince your company that Python can fit in with the standards and conventions of a typical Java shop? Hybrid Java/Python shops are becoming increasingly common and this talk will help explain some techniques to introduce Python into a Java environment.

Using Python To Generate Art And Sound

Audrey M. Roy in Science

The trick to navigating the overwhelming Python audio/imaging landscape is understanding how the fundamentals work, using common data processing/visualization libraries, in-depth code samples, and simple math operations.

I use the stdlib, NumPy, SciPy, Matplotlib, PIL, and PyCairo to create building blocks, which I then combine to demonstrate advanced sound and image generation techniques.