PyOhio 2019 Talks

# TODO: Add Comments: 5 Tips for _Winning_ at Code Comments

Nik Kantar

This talk covers five unexpected pieces of advice for writing better code comments. From an editor change to some sound writing advice, it takes a brief journey into a few habits of successful commenters. Disclaimer: opinions ahead!

A Brief History of Fire Brigades

Jon Banafato

Publicly funded fire departments are critical to our society. We rely on them for fire prevention and fighting, and their influence has shaped our cities for centuries. It's time the software industry learned from history and created a public service of our own.

A Gentle Introduction to Linear Programming in Python

Bethany Poulin

Linear programming is a useful computational technique for finding minima or maxima of a complex system by breaking it into a series of linear equations which describe the systems. It has many practical applications in industry, medicine, agriculture and in retail environments. Together we will explore simple linear programming problems using Python and the module Pulp.

A Hands-On Guide to Building Interactive Command-Line Apps with cmd2

Todd Leonhardt, Kevin Van Brunt

Interactive command-line (CLI) applications are extremely popular in the DevOps and Security communities as well as for internal tooling and automation. Have you ever wanted to build an awesome CLI application using Python but don't know where to get started? This talk will show you how to use the cmd2 package to quickly and easily build feature-rich and user-friendly CLI apps in Python.

A Practical Introduction to Integer Linear Programming

Igor Ferst

Integer linear programming (ILP) is a powerful framework for solving optimization problems related to scheduling, resource allocation, vehicle routing, and many other areas. This talk will give a brief introduction to ILP and show how to solve a real-world vehicle routing problem using Google's open-source python library for ILP.

A/V Streaming Workflow in Python

Shishir Pokharel

A/V Streaming has been used widely but being able to manipulate the stream on your custom requirements has always been challenging. We discuss how we can overcome with this challenge and build custom streaming pipeline with the help of open source multimedia framework and Python libraries for Gst, Gib, and GObject.

Adopt-a-pytest

Dane Hillard

pytest is a testing framework that makes writing and running Python tests simpler. Adopting new tooling in a large system is often a burden. How can you introduce pytest gradually with minimal pain?

Automated Discovery of Cancer Types from Genes

Shruthi Ravichandran

Cancer treatment often focuses on organ of origin, but different types can occur in one organ. Gene expression provides valuable clues of the cancer type, but studying data manually is difficult. Instead, we use variational autoencoding, a deep learning method, to derive 36-dimensional feature space from 5000-dimensional gene space and show its efficacy in classification and a TSNE visualization.

Becoming a Better Curator of Your Code

Ian Zelikman

Writing code that functions correctly is only part of the development process. The majority of our time is spent reading, maintaining and refactoring our code.

In this talk we will discuss how when we see our work as code curation we actually enable our job to be much easier and productive.

Big Data with Small Computers: Building a Hadoop Cluster with Raspberry Pis

Alexandria Kalika

The Hadoop ecosystem created a wide array of amazing tools and technologies that made processing of large amounts of data easier and more fun. In this talk I will go through how to use Raspberry Pi 2s to create a distributed cluster worthy of interesting data analysis. I will use Apache Spark and other open source, easy to obtain software and hardware for data insights.

Building Docs like Code: Continuous Integration for Documentation

Mason Egger

Project documentation is easy to neglect. Keep your docs inside your source repo and learn how to automatically build and publish beautiful docs on every commit. Viewers will leave with a new mindset on how to handle documentation, tooling for this process, and an easy-to-implement method to achieve this.

Deep Learning Like a Viking: Building Convolutional Neural Networks with Keras

Guy Royse

In this session, we are going to build a Convolution Neural Network to recognize hand-written runes from the Younger Futhark. We'll be using Keras to write easy to understand Python code that creates and trains the neural network to do this. We'll wire this up to a web application using Flask and some client-side JavaScript so you can write some runes yourself and see if it recognizes them.

Demystifying Machine Learning

Nikola Novakovic

Machine Learning is something you'll see referenced very frequently now in everything from marketing materials to sales pitches, and job postings. With so much hype it can be hard to distinguish what people mean when they say Machine Learning. In this talk we will demystify Machine Learning by understanding its core concepts and applying that knowledge to real world examples.

Distributed Deep Neural Network Training using MPI on Python

Arpan Jain, Kawthar Shafie Khorassani

Deep Learning(DL) has attracted a lot of attention in recent years, and python has been the front runner language when it comes to the framework and implementation. Training of DL models remains a challenge as it requires a huge amount of time and computational resources. We will discuss the distributed training of the Deep Neural Network using the MPI across multiple GPUs or CPUs.

Django in Production with PEX

Alexandru Barbur

This talk discusses deploying and running Django web applications in production using Twitter PEX.

Docker-Composing Your Way to a Better Development Environment

Ricardo Solano

Development environments can become cumbersome over time, with setup occasionally filling multiple pages of documentation and making onboarding new team members a difficult task. Whether you deploy your Python application using containers or not, Docker Compose is a great tool for defining development environments that closely mirror production and can be spun up with a single command.

Dynamic Data Pipelining with Luigi

Trey Hakanson

As the scale of modern data has grown, so has the need for tooling to handle its growing list of challenges. Whether performing reporting, bulk ingestion, or ETL processes, it is important to maintain flexibility and ensure proper monitoring. Luigi provides a robust toolkit to perform a wide variety of data pipelining tasks, and can be easily integrated into existing workflows with ease.

Explicit is Better than Implicit: Making Culture Visible with Team Charters

Christopher T. Miller

If you’ve ever joined a new team, you know that there are hidden rules for how the team operates: what they value in their day-today work, what is important to them.

Breaking news: teams are hard. We document our code... shouldn't we document our team's values and ideals?

Feature Engineering: An Apprentice’s Guide to the “Dark Art” of Machine Learning

Deborah Diller Harris

Why is feature engineering considered the "dark art" of machine learning? Transforming raw data into a form that your machine learning algorithm can utilize seems mysterious and downright frightening! Bring your wizard hat and join me as this machine learning apprentice shares her personal book of feature engineering incantations.

Find Your Feature Fit: How to Pick a Text Editor for Python Programming

Gregory M. Kapfhammer, Madelyn M. Kapfhammer

What is important to you when it comes to text editors? To find out, join us in comparing VS Code and Vim. From version control integration to source code highlighting, with auto-completion, testing, virtual environments, snippets, code navigation and linting in between, learn how VS Code and Vim handle each feature and decide for yourself what fits your programming preferences when using Python.

Gathering Insights from Audio Data

Ryan Bales

Data comes in many shapes and sizes. In this session, we’ll look into the process of converting audio files into valuable data. We’ll go over the different types of audio formats and how format and type of audio plays a role in the quality of the outcome. We’ll go over different transcription options available today and provide a demo of converting audio data into text. We’ll review ways of storin

How to Write Pytest Plugins

Darlene Wong

Pytest is a widely-used, full-featured Python testing tool that helps you write better programs. Did you know that you can easily enhance and customize Pytest through the use of plugins? In this talk, you will learn all about some of the useful Pytest plugins that are available, and learn how to create your own plugins.

I Lost 25 Pounds Thanks to Python: Personal Data Analytics Using Pandas and Numpy

Jack Bennett

Python provides a great set of built-in tools and third-party libraries for data analysis. Modern personal devices like smart watches or phones generate streams of data about body metrics, location, movement, and more. I describe Python-based methods for extracting and analyzing data from personal smart devices. I applied these methods to track and change habits and behaviors to lose 25 pounds.

If Statements are a Code Smell

Aly Sivji

if statements allow us to selectively execute code based on conditional logic. Overusing conditionals results in code that is hard to understand and difficult to modify. This talk will demonstrate how to refactor if statements into polymorphic classes, resulting in cleaner program design. After this session, you will be able to implement complex conditional logic using simple Python classes.

Is This Your Card? Computer Vision for Playing Card Recognition

Steve Crow

Computer Vision aims to teach computers to interact with the visual world. It has applications navigation, automated inspection, assisting the visually impaired, and so much more. In this talk, I will explain and demonstrate how you can use Computer Vision to locate and identify a playing card in a live video feed.

Keeping Fun in Computing

Dustin Ingram

In this talk, we'll explore how maintaining a sense of fun and whimsy in science has a profound effect on discovery, innovation and progress.

We'll discuss how you and I can keep computing fun on a day-to-day basis, maintain and nurture our natural curiosity, and just be open to the unknown, all to the benefit of our field, those we work with, and ourselves.

Learn How Computers Work Between Silicon and Assembly: Build a CPU with Python

Zak Kohler

We will build a CPU focused on transparency, interactivity, and modularity. Our CPU has a configurable architecture and machine language. Yes, you can invent your own assembly instructors to add functionality. We will cover registers, data/address busses, memory‌ (ROM/RAM), IO, and assemblers.

Leave Your Inhibitions at the Database Connection

Regina Compton

It is easy to cling to the familiar to avoid the unknown – even when unfamiliar approaches better serve your work. My talk explores this fact, specifically, by looking at the technical and emotional dimensions of my less-than-easy journey from writing raw SQL to using the Django ORM.

Lessons from Zero-Defect Software

Jason R. Coombs

Writing software with no defects is extremely difficult and expensive, but the lessons learned from such ambitious projects can inform our approach for a more practical development technique. This talk looks at how principles from zero-defect engineering, functional programming, and refactoring come together to produce robust, readable, and reliable code.

Let's Build an ORM

Greg Back

Applications rely on data, and relational databases are a convenient way to organize structured information. Object-relational mappers like SQLAlchemy and Django’s ORM are complex libraries, but they aren’t black magic. De-mystify some of the magic as we build the basics of an ORM in under an hour.

Python Improvements (or This Is Not Your Teacher's Python)

Travis Risner

This session covers improvements to the Python language with 3.6 an 3.7. We will discuss aspects such as f-strings, formal typing, the various kinds of tuples, more precise timing, better hashing, etc.

Quickly Build Your Own Personal Website with Python

Vince Salvino

Haven't gotten around to building that personal blog? How about a website for your side project? Python actually has a rich ecosystem of web development tools that are easy to learn and fun to use! Bring your laptop and follow along as we build a personal blog LIVE in this talk using the pip package: CodeRed CMS (based on Wagtail and Django).

Refactor Yourself

Esther B. Gotfryd, MSN, NP-C

Do you sometimes feel like a pile of legacy code? Do you dread refactoring yourself into a "new hotness,” due to the insurmountable amount of work it may take? Do you want to break free, but are unsure of where to start? Look no further, as this session will embark on a journey to refactor you, one red-green test at a time, starting with the highest priority issues first.

Scraping Your Way to a Dataset

Alex Zharichenko

Large datasets are vital for the majority of analytic and machine learning tasks. But what happens when the data you need isn't available in some convenient and easily obtainable form? This talk will go through the process of data scraping to create a dataset that can be then used for various analytical or machine learning tasks.

Search Logs + Machine Learning = Auto-Tagged Inventory

John Berryman

Eventbrite is exploring a new machine learning approach that allows us to harvest data from customer search logs and automatically tag events based upon their content. The results have allowed us to provide users with a better inventory browsing experience.

Sipping the Nectar of Amazon from the Serverless Chalice

Ilya Gotfryd

It never seems to be the right time to enter the sweet world of microservices. Each time you use "serverless" in a conversation, it dies right there near the water-cooler. How do you produce a POC, tests, a build, and proper security if your teammates can’t come along? In this talk you will learn to: build, debug, validate, test, secure, and deploy with a build pipeline using a Python framework.

Surviving Without Python

Andrew Knight

Python is such a popular language for good reason: Its principles are strong. However, if Python is “the second-best language for everything”… that means the first-best is often chosen instead. Oh no! How can Pythonistas survive a project or workplace without our favorite language? Take a deep breath, because I’ll show you how to apply things that make Python great to other software spaces.

The Blameless Post Mortem: How Embracing Failure Makes Us Better

Chris Wilcox

In today’s world of developing services we tend to move fast and with that comes mistakes. This talk will discuss using post-mortems to turn incidents into opportunities for improvement, instead of just an opportunity to assign blame.

The Magic of Python

Darshan Markandaiah

Python has many built in magic functions that are used internally by classes for certain actions. For example, adding two numbers calls the __add__ method and iterating over a list calls the __iter__ method. I will expand on this Duck Typing principle and enumerate over a range of magic methods that you can add to your classes to have a cleaner codebase.

The Mediocre Programmer

Craig Maloney

Mediocre Programmers? What is that? Shouldn't we want to be great programmers instead? In this talk we'll discuss what it means to be a mediocre programmer. We'll consider the many pitfalls that may befall you on your journey, from self-doubt to burnout, and share tips for how to cope with the challenges of programming and when it might be time to try something new.

The Riddle of the Intersphinx: Configuration and Cross-Reference Composition

Brian Skinn

Sphinx is a documentation generator used by the core Python documentation and numerous other projects in the Python ecosystem. Sphinx supports cross-references between documentation sets via its ‘intersphinx’ extension; however, proper configuration is not always straightforward, and cross-references can be finicky to craft correctly. This talk aims to demystify these riddles of intersphinx usage.

The Value of Docstrings

Eric Appelt

Docstrings are a common convention in Python programming, but their value may be taken for granted. In the absence of docstrings, schools of thought on writing effective code involve using many comments or using few if any comments. I will argue that docstrings improve upon these approaches, and then explore how they can positively impact encapsulation, testing, documentation, and design.

Using Dash to Create Interactive Web Apps for Non-Technical Audiences

Joseph Willi

Have you ever struggled with finding ways to present data visualizations and/or results to non-technical audiences in a coherent and engaging manner? In this talk, I'll detail how I overcame such a challenge by using Dash to build an interactive app for firefighters to use during performance testing of their rescue equipment.

Using Python & R in Harmony

Matthew Brower, Krista Readout

Python and R are two of the most popular languages used for data analysis. They are often pitted against each other in pros and cons lists, where users feel forced to pick just one. Each has unique advantages, and it's now easier than ever to use them harmoniously. Python or R? Why not both?

What's the Buzz with Machine Learning

Allison Bolen

Honeybee colonies throughout North America have declined precipitously due to parasites, pesticides, and poor nutrition over the past two decades. Monitoring hive health autonomously assists beekeeper efforts. We developed a model which automatically detects events in bee hive weight data assisting data collection efforts improving data quality for future machine learning models to be developed.

Your Own Personal Bootcamp: How to Efficiently Learn Your Next Technology

Joe Erickson

Taking lessons from adult learning theory and from examples of hundreds of bootcamp students, this talk will walk through what I have learned about accelerated adult learning and tell you the what and the why around techniques that you can use to more efficiently pick up your next technology in record time.

gRPC and What, Why, How?

John Roach

You might have overheard yet another acronym "gRPC" getting thrown when talking about a replacement of REST or when mentioning microservices. In this talk, we will be looking into what gRPC is, the reasons why you would use it, how you would use it with Python and talk about considerations for running gRPC services in production.

“Who’d I Lend That Book To?” Hard Questions Answered with Python

Daniel Lindeman

I love reading books, but I love lending them out even more! In order to keep track of my personal library, a daunting task indeed, I’ve employed Python, a Raspberry Pi, and an RFID reader. Take a tour through what it’s like working with hardware, Python, and putting it all together into a useful web application. This is a beginner friendly talk, so don’t worry if you’ve never worked with hardware