Accepted Talks

Keynote: Py in the Sky

Qumisha Goss

Saturday 9 a.m.–10 a.m. in Cartoon 1 and 2

Creating a more diverse Programming community using Libraries as a gateway to reach diverse and under-served populations. How Python and Computer Science can be used to create opportunities for under served populations. Creating Diversity by meeting people where they are instead of trying to entice them to join you.

Capacity and Stability Patterns

Brian Pitts

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

At Eventbrite, engineers are tasked with building systems that can withstand dramatic spikes in load when popular events go on sale. There are patterns that help us do this. Come learn about these patterns, how Eventbrite has adopted them, and how to implement them within your own code and infrastructure.

Helping your manager be a better leader for you

Christopher H. Laco

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

How can you be a better manager? How can you help your manager be a better manager for you? In this talk we'll talk about these things and build a better bridge between developers and their managers so we can build stronger teams together from the bottom up.

How We Changed The World With Open Source

Ed Finkler

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

In June 2012, podcaster and vet web dev Ed Finkler spoke openly about his lifelong struggles with mental illness. 4 years later, a non-profit corporation with 3 dozen volunteers is working to change the tech and open source community. In this talk, Finkler tells the story of how the episode happened, the incredible response, and how it grew into a charity dedicated to changing an industry.

Hypothesis: Tests That Write Themselves

David Kua

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

Testing is generally seen as a Good Thing™ that one should do. Writing tests that are comprehensive and cover all possibilities however can be time-consuming, hard, or even downright impossible. Property-based testing is one method that can help with this. This talk will introduce the concept of property-based testing and how to do it yourself using the Python library Hypothesis.

Running Vintage Software: PyPI's Aging Codebase.

Ernest W. Durbin III

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

The Python Package Index, lovingly known as The Cheeseshop to some, has grown enormously since it's introduction in 2002. As a critical piece of the Python Community's infrastructure, it has suffered many growing pains over the years. Let's review the recent history of PyPI, lessons learned, and techniques applied to keep it running.

Building an awesome community around an open source project

Tim Abbott

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

Zulip is a beautiful open source alternative to Slack, optimized for productivity.

The Zulip project has grown from 1 to 300 contributors in about 18 months, with more commits merged per week than Docker and Django combined.

This talk will tell Zulip's story, emphasizing the specific, reusable, techniques we used to build our open source project and make the community successful.

Integration Contract Testing and its potentials for API development and maintenance

John Roach

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

You just finished a patch for your API. Your unit tests pass. You have some end to end tests that cover most of the user facing features. You merge in your code and after a smooth deployment, all hell breaks loose. The microservice that the other team was developing doesn't understand what your new patch is sending as a response! What went wrong? This is a quick talk about contract based testing.

Coffeebot 3000 - An IoT story with a RaspberryPI, Redis, LEDs, and Mario

James Alexander

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

This is a story about the creation, maintenance and on-going features built onto an IoT device to measure the amount of coffee in a coffee pot.

From Lumberjack to Python Developer

Scott Stahl

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

There's a been lot of talk over the past few years about workforce retraining and software bootcamps. So what's the reality? I will tell the story of rebooting my career at 30 from working in lumber & building materials to becoming a developer, share some thoughts on why it worked for me and some of the lessons learned from my first year on the job.

You have an API, now what? Client time!

Richard Harding

Saturday 2 p.m.–2:20 p.m. in Barbie Tootle

Client libraries for your API in the languages your users are coming from are vital to getting adoption and establishing the best practices for putting your API to work. We discuss how and why you need to provide the client libraries and why this may drive adoption more than the API itself.

Python for Java Developers

Christian Wyglendowski

Saturday 2:30 p.m.–2:50 p.m. in Barbie Tootle

Did you learn Java in school but want to get into Python? Are you a decision maker trying to choose between Java and Python for your next project? This talk will cover a variety of differences between Java and Python and why they matter.

SubTests are the Best

Dmitriy Chukhin

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

Testing the code we write is important, so we should use available tools to write tests that are readable, thorough, and DRY (Don't Repeat Yourself). Subtests, added in Python3.4, make accomplishing each of these three goals easier. This talk goes through some examples of how subtests make testing 1) more readable, 2) more thorough, and 3) more DRY. The result: better apps and fewer bugs.

Those Who Care, Teach!

Kenneth Love

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

There's nothing better than helping someone learn a tricky concept: a complex regular expression, a build tool, or even running their first script ever! Unfortunately, though, teaching is hard! For many, going beyond the show-and-tell we do with coworkers is just too intimidating. Let me teach you tips, tricks, and tools I've collected over years of teaching Python to thousands of people.

Using Machine Learning to play chess

Aubhro Sengupta

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

Today, chess engines contain many lines of code handcrafted under the guidance of grandmasters. Are you interested in being knee deep in chess theory just to crank out a half decent engine? No? This talk is for you. Why not create an engine that learns to improve itself?

Machine learning in production with scikit-learn

Jeff Klukas

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

The Python data ecosystem provides amazing tools to quickly get up and running with machine learning models, but the path to stably serving them in production is not so clear. We'll discuss details of wrapping a minimal REST API around scikit-learn, training and persisting models in batch, and logging decisions, then compare to some other common approaches to productionizing models.

Paho Silver, Away! Saddle up to IoT with MicroPython

Greg Svoboda

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

The IoT market is set to grow to over 250 BILLION dollars by 2020- it’s time to get YOUR piece. This session will give attendees an interactive demonstration on the amazing Python IoT-stack using Mosquitto, MicroPython, and the Paho Library. You will walk away with a solid understanding of the architecture and frameworks necessary to build a complete IoT solution of your own.

Transitioning from Science to Tech: One Astrophysicist's Journey

Elizabeth Wehner

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

Changing careers can be intimidating! In this talk, I'll share how I made the transition from astronomer to full stack web developer, and built up a career in tech.

Python and Spreadsheets: 2017 Edition

Kojo Idrissa

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

Spreadsheet files are often used to share interesting & important data. But spreadsheet applications aren't always the best tool for processing that data. I'll show you how to use OpenPyXL to work with that data in a way that's better than using .csv files. I'll also discuss common problems faced when working with spreadsheets via code. "State of the art" moves fast here, thus the title.

Multimethods? In MY Python?

Lindsey Brockman

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

A benefit of using a dynamically typed language like Python is the ability to create a function that can operate on arguments of unknown types. Unfortunately, this freedom can lead to a common antipattern where the function is responsible for type-cheaking each argument before operating accordingly. This talk will explore avoiding this antipattern with multimethods.

Postgres Performance for Humans

Craig Kerstiens

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

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. We'll go from basics to the more advanced of what you need to know to keep things running smoothly.

U is for Unicode: Solving the Mystery

Greg Back

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

This talk will attempt to resolve some of the mystery and confusing behavior about Unicode (and other text encoding issues) in Python. It will cover Python handles text in general, the differences in Unicode text between Python 2 and Python 3, how various standard library APIs handle Unicode text, and a bit about detecting the encoding of unknown text.

Everything is broken, and I don't know why.

Matt Robenolt

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

We all have someone on our team who writes code with bugs in it. Not us, of course, but someone else. This code somehow gets into production and this code just maybe sometimes crashes. How can we detect these issues and extract useful information at runtime so we can fix these bugs? What kind of stuff should we even be looking for?

Sipping Web Development from a Flask

Ian Zelikman, Brad Hurley

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

This talk aims to give introduction to web development using Flask.

After an introduction to Python web development ecosystem, we will focus on developing a production ready application using Flask, a suggested structure for your application, and how to tackle some unique challenges we encountered.

To Infinity and Beyond: Computer Vision for Astronomy

Ryan Fox

Sunday 12:30 p.m.–1:20 p.m. in Suzanne Scharer

This talk is about computer vision and image processing. It covers applications in astronomy, as well as more terrestrial ones. Next, it outlines how you can use them with the photos you already take. Finally, it discusses how developers can build specialized tools to enhance their abilities, and why actually doing so is often surprising.

Introduction to Debugging with Python

Craig Maloney

Sunday 12:30 p.m.–1:20 p.m. in Cartoon 1

Ever since a moth was discovered in the Mark II computer we've dealt with bugs in software. This talk will show different methods for determining what the code is doing. We'll start with the lowly print statement and introduce advanced forms of logging. We'll also cover several Python debuggers and talk about best practices for debugging and preventing bugs in Python code.

Accessibility: It's Not Just a Client Side Problem

Stephanie Slattery

Sunday 12:30 p.m.–1:20 p.m. in Cartoon 2

Roughly 1 in 5 people in America live with a disability. It would be irresponsible to ignore the needs of all our users when developing our code, but isn't this just something for people who wrote client side code to worry about? In this talk, I'll explain the basics of accessibility and how you can advocate for it across the stack.

Creating Reproducible Data Science Workflows using Docker Containers

Aly Sivji

Sunday 1:30 p.m.–2:20 p.m. in Barbie Tootle

Jupyter notebooks make it easy to create reproducible workflows that can be distributed across groups and organizations. This is a simple process provided that our end-users have access to the data along with a compatible Python environment. Learn how to use Docker to package a shareable image containing the libraries, code, and data required to reproduce every calculation.


Tina Bell Vance, Kat Passen

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

Let's make forms accessible! We're going to make forms more accessible in Flask with Jinja templating and JavaScript. We'll go through what's possible in Jinja and what may need extra work.

Serializing Data with Google's Protocol Buffers

Paul Kerchen

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

This talk is an introduction to Google's protocol buffers (aka protobuf). Protocol buffers are a language-neutral, platform-neutral, extensible mechanism for serializing structured data – think XML, but smaller, faster, and simpler. This talk will include a demonstration of using protobuf with Python to communicate with an embedded, processing- and memory-restricted device.

Building a world class document pipeline using Python

Andrew Wolfe

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

At Brokersavant, we process large quantities of real estate assets ranging from commercial property flyers to large real estate leases and our customers expect a lightning fast turn around. Learn how we leveraged open source technologies and Python libraries to create a system that scales to millions of assets per day without missing a beat.

The Humane Technical Interview

Katie Cunningham

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

Nearly everyone in tech has to take part in a technical interview during their career, but are we doing them right?

Lazy is too hard! Use PDFs with Python the Robust Way

Kenneth Durril

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

Lazy is too hard. When I had 40,000 PDFs and needed to extract their data, I knew that the "lazy" approach was insufficient. This talk reviews tools to tame PDFs with confidence. I'll use my open-data project's workflow as an example (ETL anyone?). It's also a follow-up/response to PyOhio2016's "We Don’t Need No Stinkin’ PDF Library: Build PDFs with Python the Lazy Way". Showing the Costs of Meetings and Finding a Better Way

Drew Sullivan

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

We've all sat through boring/wasteful meetings. I wanted to find a solution. So I made a Python app that connects with the Google Calendar API, gets all the events in a period and posts the costs of each event to Slack. A following poll asks if it was worth the costs. I would like to describe how it was made and how we can make meetings valuable and engaging, instead of boring wastes of time.

Rapid Prototyping In Data Science With Big Data & Python

David Ziganto

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

Rapid prototyping in data science often hits a wall when data is too large to fit into memory. When this happens, teams are often confronted with two options: sampling techniques or porting to Apache Spark. Both have significant drawbacks. In this talk, I'll demonstrate how to leverage Dask and Scikit-learn to solve this problem.

Building Delivery Pipelines with Jenkins' Pipeline as Code

Kevin Fox

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

Jenkins is the "leading open source automation server". New in 2016, Jenkins version 2 introduced a robust, extensible approach to managing complex automation pipelines as code. Jenkins' Pipeline as Code serves as a solid foundation for a team's continuous delivery practices. Kevin Fox provides a practical overview of this important new capability for a popular open source platform.

Elasticsearch in an Hour

John Berryman

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

The use of search is ubiquitous. As a developer you need search in your technology tool belt. This talk introduces Elasticsearch, a front-running, open source search technology. We'll create an application, execute a search, and dive into internals so that you'll know where search is most useful.

Hitting the Pavement with Python: Pt1

Josh Francisco

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

Using python to interact with aftermarket engine management controllers. Part 1 will focus on the initial discovery of the controller's serial protocol, communicating with the controller over a serial port, unpacking the byte stream, and using Redis as a mechanism to store and radiate data.

The Art of Mentoring and Being Mentored (because we are all always both)

Jess Unrein

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

Let’s explore the lifecycle of a mentorship. Mentorships are relationships like any other that need to be started, maintained, and ended with intentional effort and care. We’ll talk about how to identify, grow, and gracefully end mentoring relationships.