Accepted Talks

Text Me Maybe: Smarter Real-World Integrations with Python

Mike Pirnat

Saturday 10:30 a.m.–11:20 a.m. in Cartoon 2

I want to text my family when I'm on my way home from work, but not when I'm going out for lunch. In this talk I'll show how I created a cloud-hosted, location-triggered SMS notifier with some decision-making smarts by combining IFTTT (If This Then That), AWS Lambda, Twilio, and just the right amount of Python, and inspire you to start experimenting with your own real-world integrations.

Integrating Python into the CLR with Python for .NET

Hussein Farran

Saturday 10:30 a.m.–11:20 a.m. in Suzanne Scharer

Python for .NET is a project dedicated to being able to call into Python from the CLR. Where IronPython has fallen off as the .NET Python prodigal son Python for .NET has picked up the slack. Python for .NET (or pythonnet for short) is an integration of the C Python engine with .NET. We'll be going through the uses and methods of integration of Python with your .NET projects.

Exchanging Data Wirelessly with Bluetooth LE and ZigBee

Zach Steindler

Saturday 10:30 a.m.–11:20 a.m. in Cartoon 1

It's really easy to write a Python program that goes over WiFi (IEEE 802.11). But what about wireless protocols that came out of IEEE 802.15 like Bluetooth or ZigBee? This presentation will familiarize you with these protocols and show you how to write Python programs that can exchange data wirelessly.

Continuous Integration For The Win!

Randy Syring

Saturday 11:30 a.m.–12:20 p.m. in Suzanne Scharer

Learn how to increase the quality of your code and improve team productivity by leveraging a CI pipeline to run tests, lint, and measure code coverage. Then, integrate all that knowledge right into a GitHub pull request for easy team review & verification before deployment.

From Flying Circus to Holy Grail: Migrating the Twilio API from PHP to Python

Sam Kitajima-Kimbrel

Saturday 11:30 a.m.–12:20 p.m. in Cartoon 2

Legacy code is a hard problem for any growing application. Complete rewrites are expensive and prone to failure, so how does one go about replacing that large, crufty codebase with something easier to maintain? We’ll discuss the strategies used at Twilio to migrate a large REST API, piece by piece, out of a monolithic PHP system into a fleet of services federated by a Python proxy layer.

An Introduction to Recursion

Rinita Gulliani

Saturday 11:30 a.m.–12:20 p.m. in Cartoon 1

Technical interviews that cover computer science theory are frequently a part of the software engineering interview process. Recursion is a topic that is often covered in these interviews, but many developers find recursion confusing. This talk will introduce the concept of recursion in a simple and detailed manner. The talk will conclude with a real coding interview problem.

Wrapping Go in Python

Marcus Willock

Saturday 2 p.m.–2:20 p.m. in Suzanne Scharer

This talk will call various shared object files (created with Go) in Python and systematically check what we can and cannot do with the functions in the shared object file. This check includes passing various types, such as int, float, lists, and dictionaries, into the shared object file function, and checking what we can and cannot return from the shared object function.

Managing Infrastructure with Python, Fabric and Ansible

Tim Henderson

Saturday 2 p.m.–2:20 p.m. in Cartoon 1

Whether managing virtual servers in the cloud or actual hardware on premise, infrastructure automation has become an essential tool for all developers. This talk will introduce the basics of managing servers with Python using Fabric and Ansible. I will give a brief background on the theory of infrastructure automation, an overview of Fabric and Ansible, and show an outline of a complete system.

Small Batch Artisanal Bots: Let's Make Friends

Elizabeth Uselton

Saturday 2 p.m.–2:50 p.m. in Cartoon 2

Bots are a fun, creative, community oriented project. They are perfect for a beginning programmer looking to build something cool, but open ended enough to hold the interest of an experienced developer. In this talk we'll go over the Python tools for building a great twitter bot, including where to find fun data sets, hosting your bot, delayed jobs, and examples of weird and wonderful bots.

Lessons learned leading teams and projects and products

Richard Harding

Saturday 2:30 p.m.–2:50 p.m. in Suzanne Scharer

I vowed never to become management and to keep on developing and building great stuff. I took a team lead position and that started my downfall of learning to take pride in leading a team, by collaborating, unblocking, mentoring, and architecting my way to building great stuff using the power of the team.

Docker as a replacement for virtualenv

David J Felix

Saturday 2:30 p.m.–2:50 p.m. in Cartoon 1

Virtualenv and/or pyenv have, for a long time, been the suggested way to begin a python project and practical necessities for production code with multiple python applications. In this talk, I'll introduce docker as a generalized alternative to virtualenv/pyenv's and try my best to convince you that Virtualenv/pyenv's reign can be usurped for most cases.

Infrastructure as Code: from 0 to 1000 servers with Python

Eric Miller

Saturday 3 p.m.–3:50 p.m. in Cartoon 1

Follow the journey of a fictional technology startup, as they struggle to keep up with increasing infrastructure demands of their unexpectedly popular web application. Learn how to deploy and manage infrastructure as code, using familiar tools such as text editor of choice, Git, and of course lots of Python! (Level is Intermediate - Experienced)

Python Logging: A meditation on silent failures

Jess Unrein

Saturday 3 p.m.–3:50 p.m. in Cartoon 2

Logging is a part of sane, stable development. Python developers should treat logging with the same weight that we take unit tests. Logs can be just as important as test coverage for unearthing breaking changes in code. This talk will introduce the concept of logging, its use cases, and how to set up a custom log formatter you can tailor to your application's specific needs.

AWS Lambda: From Curiosity to Production

Matt Land

Saturday 3 p.m.–3:50 p.m. in Suzanne Scharer

To make Amazon Lambda production ready, it needs processes like Continuous Integration (testing) and Continuous Delivery. To achieve that, we will investigate how AWS lambda is powered. Next, we will cover creating a testing environment that can interact with AWS while allowing for inspection and exploration. Finally, lambda versions and aliases will be leveraged to accomplish ‘deployments’.

Building an Analytics Platform

Jeff Klukas

Saturday 4 p.m.–4:50 p.m. in Barbie Tootle

Let's explore how Simple, a consumer banking company, built its analytics capabilities from ad-hoc queries against production databases to a comprehensive data warehouse powering near-real time dashboards in less than a year. We'll discuss the high-level architecture, then dive into how Simple uses Python to support its warehouse with an admin interface and data transformation tools.

Let's Make Better Command Line Applications

Dave Forgac

Saturday 4 p.m.–4:50 p.m. in Cartoon 1

Python is great for making command line applications but a lot of the applications out in the world aren't that great. Why is that? Can we do better? Yes! Let's discuss how.

Static Code Analysis with Python

Andrew Wolfe

Saturday 4 p.m.–4:50 p.m. in Cartoon 2

Auditing a code base for code formatting mistakes, potential security vulnerabilities or defects can be time consuming. Static code analysis will let the computer do that for you. Learn how to use code static analysis to catch errors early and improve code quality in your Python codebase.

Using Python to Spy on Your Friends: Recon-ng and Open Source Intelligence

Brian King

Saturday 4 p.m.–4:50 p.m. in Suzanne Scharer

OSINT - Open Source Intelligence - is not (just) espionage. It's just collecting public data and extracting information from it. You can do it by hand with a lot of Google and a lot more patience, but you'll want to automate as much as you can.

Come see what OSINT is and how its being used. We'll look at some Python-based tools and how you might use and improve them.

Stronger Than Fear: Mental Health in the Developer Community

Ed Finkler

Sunday 11:30 a.m.–12:30 p.m. in Cartoon 1 and 2

Mental disorders are the largest contributor to disease burden in North America, but the stigma surrounding it prevents us from meeting this challenge. In this talk, we'll examine the state of mental health awareness in the developer workplace, why most developers feel it isn't safe to talk about mental health, and what we can do to change the culture and save lives.

Postmortem: Evolution of an Event recording solution

Michael Robellard

Sunday 1 p.m.–1:50 p.m. in Cartoon 2

Most developers have used Google Analytics to record pageviews, visits, and events on their websites. Google Analytics does not allow you to track individual users events. At Noggin we needed that information at the user level so our customer success team could now how individual users where using our software. So we set about solving this problem. This talk is the story of that solution.

Got Python I/O: IoT Development in Python via GPIO

Adam Englander

Sunday 1 p.m.–1:50 p.m. in Suzanne Scharer

Learn how to build real Internet of Things (IoT) applications with pure Python and General Purpose Input/Output (GPIO). Thanks to devices like the Raspberry Pi and Intel Edison, full Linux systems with GPIO are accessible to the masses. Learn how build a true IoT device using only hardware and core Python libraries and hardware costing less than $50 US.

For those about to Mock I salute you!

Jason Myers

Sunday 1 p.m.–1:50 p.m. in Cartoon 1

Testing python applications can be confusing, and leave you in a daze about what the proper way to test is when creating an API or accessing a remote service. Let's explore the testing world with a gentle introduction to unittest, py.test, mock, gabbi, and betamax. We'll learn how to isolate our tests from databases, APIs and third party libraries.

Snakes in a browser

Russell Keith-Magee

Sunday 2 p.m.–2:20 p.m. in Suzanne Scharer

We all know that Python and Django can be used to write server-side software, but what about the client side? What about the browser? Can you use Python to power client-side interactions? Can you deploy Python logic (such as validation logic) on both the client and the server?

Python and Raspbery Pi in the Public Library

Qumisha Goss

Sunday 2 p.m.–2:20 p.m. in Cartoon 2

This talk is about creating diversity in the Python community and non-traditional methods of teaching and attracting a diverse population. This talk will cover the how and why of teaching python in a library to urban youth. We will talk about the current state of Detroit, as well as the benefits and challenges of educational programs in a public library.

Fake It Before You Make It: Mocking Your Way to Better HTTP APIs

Ian Zelikman, Dave Forgac

Sunday 2 p.m.–2:50 p.m. in Cartoon 1

HTTP/RESTful APIs are often designed and implemented before a client gets to see how they work. Then once an API is made public it can be hard to change. Let's discuss how we can improve this process by explicitly designing the API contract and getting client feedback before implementation. We will examine the process which promotes building HTTP APIs with a design first approach.

How To Create Your First PyPI Package

Justin Beall

Sunday 2:30 p.m.–2:50 p.m. in Suzanne Scharer

Learning how to contribute is the first fundamental step in joining the open source community. This talk will be based upon my own personal experience in creating my first PyPI package. As a seasoned developer, the task of uploading a package to PyPI seemed extremely complicated. But, in reality it is simple and anyone can do it.

Exploring Function Annotations

Adam Forsyth

Sunday 2:30 p.m.–2:50 p.m. in Cartoon 2

Python's function annotations allow you to provide metadata about a function's inputs and outputs. Most often, these annotations are used for type checking or type casting. I'll talk through examples of each, including typing from the Python 3.5 standard library and the mypy static type checker. This talk expects basic knowledge of Python but no experience with function annotations is needed.

Common asynchronous patterns in Python

Ron Martin

Sunday 3 p.m.–3:50 p.m. in Cartoon 2

This talk will analyze a small example problem and explore various ways to improve its performance using various asynchronous tools available in Python.

Modding videogames with Python and Blender

Sebastian Brachi

Sunday 3 p.m.–3:50 p.m. in Suzanne Scharer

Video games offer much more than just playing. Artists and programmers explore their internal working to modify them and offer unique new experiences. In this talk, open source 3d suite Blender is used to show how to import and export 3d models using its scripting language, Python 3.5, for both open and closed source formats, as well as tips and tricks for working with undocumented binary data

We Don’t Need No Stinkin’ PDF Library: Build PDFs with Python the Lazy Way

Philip Semanchuk

Sunday 3 p.m.–3:50 p.m. in Barbie Tootle

Python has some high-quality libraries for creating PDFs from scratch. But instead of using a library, why not let Libre/OpenOffice do most of the heavy lifting?

Advanced Python Debugging Techniques Using GDB

Colin Stolley

Sunday 3 p.m.–3:50 p.m. in Cartoon 1

This talk will examine why and how to use gdb to debug python code and walk through a live example or two.

Rules for Radicals: Changing the Culture of Python at Facebook

Jason Fried

Sunday 4 p.m.–4:50 p.m. in Cartoon 2

Today, services built on Python 3.5 using asyncio are widely used at Facebook. But as recently as May of 2014 it was actually impossible to use Python 3 at Facebook. Come learn how we cut the Gordian Knot of dependencies and social aversion to the point where new services are now being written in Python 3 and existing codebases have plans to move to Python 3.5.

Maybe I shouldn't be a programmer

Derik Pell

Sunday 4 p.m.–4:50 p.m. in Suzanne Scharer

Imposter syndrome isn't just a catch phrase, it's a real crisis of confidence that we all face as developers, one which can be especially hard for new developers who may not realize that it often comes with the job. This talk will help bring this topic to light by discussing things that can cause imposter syndrome and ways of coping and getting through these bumps.

"It will be easy" - The Trials of Updating a Product from Python 2 to 3

Zach Wick

Sunday 4 p.m.–4:50 p.m. in Barbie Tootle

This talk will be a retrospective on what was seemingly a weekend project that turned into an odyssey full of rabbit holes and dead ends. In this talk I'll touch on what was expected, what happened, what you should look out for during your own migrations, and what we learned along the way.

Peering into the black box: tips for visualizing your program's behavior

Matthew Boehm

Sunday 4 p.m.–4:50 p.m. in Cartoon 1

How many hours have you spent staring at walls of code or logs, hopping from file to file in an effort to find a bug or understand what your computer is doing? Let's explore a number of custom techniques and off-the-shelf tools you can use to see your program in a different light and better understand what's happening under the hood.